expression4.l
来自「语法分析 语法分析」· L 代码 · 共 56 行
L
56 行
%{ {* 下面的例子改编自lex和yacc第二版 识别简单算术表达式的lex 用法:Lex Expression4 ExpressionL4 *}unit ExpressionL4;interface uses SysUtils, LexLib, Yacclib;const NUMBER=258; NAME=257;//注意这里的token必须是hard-coding的常数,yacc生成的和lex生成的是不匹配的function yylex: Integer;type TOneParamFunc = function (argc: extended): Extended; TSymtab=class(TObject) Name:string; Value:double; FuncPtr:TOneParamFunc;//函数指针 end;var sp:TSymtab;implementationuses ExpressionY4;%}%%([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) begin yylval.yyreal := StrToFloat(yytext); return(NUMBER); end;[ \t] ; {/* 忽略空格 */}[A-Za-z][A-Za-z0-9]* begin //返回一个符号对象 sp := symlook(yytext); yylval.yyinteger := integer(sp); return(NAME); end;"$" return(0);\n |. returnc(yytext[1]);%%end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?