📄 yreflex.l
字号:
%{
(* 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,
{$ifdef fpc}@{$endif}lookup,
{$ifdef fpc}@{$endif}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]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -