home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
compcomp
/
tpyacc
/
yreflex.l
< prev
next >
Wrap
Text File
|
1991-04-30
|
1KB
|
84 lines
%{
(* Lexical analyzer for the YREF program, V1.1 4-30-91 AG
implements a lexical analyzer for Yacc grammars *)
function yywrap : Boolean;
begin
yywrap := true; (* files are closed by main program *)
end(*yywrap*);
%}
L [A-Za-z_]
D [0-9]
Q \\([0-7]{1,3}|.)
P [\\%]
%%
%{
var c : Char;
%}
(* whitespace: *)
[ \t\n] ;
(* comments: *)
"/*" skip('*/');
(* identifiers, literals and numbers: *)
{L}({L}|{D})* begin
symlineno := yylineno;
yylval := key(yytext, max_syms, lookup, entry);
scan(c);
if c=':' then
return(C_ID)
else
return(ID);
end;
'([^'\n\\]|{Q})+' |
\"([^"\n\\]|{Q})+\" return(LITERAL);
{D}+ return(NUMBER);
(* keywords (various synonyms): *)
{P}token |
{P}term |
{P}0 return(PTOKEN);
{P}left |
{P}< return(PLEFT);
{P}right |
{P}> return(PRIGHT);
{P}nonassoc |
{P}binary |
{P}2 return(PNONASSOC);
{P}type return(PTYPE);
{P}start return(PSTART);
{P}prec |
{P}= return(PPREC);
{P}{P} return(PP);
{P}\{ return(LCURL);
{P}\} return(RCURL);
(* others: *)
. returnc(yytext[1]);