home *** CD-ROM | disk | FTP | other *** search
-
- %{
-
- (* 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]);
-