下面的代码片段可以在:http: //zaach.github.io/jison/demos/calc/以及 jison 文档页面上找到。阅读 jison、lex 和 flex 文档后——我仍然不完全理解 %lex 和 /lex 语法。它是特定于 jison 扫描仪生成器的吗?意思是它提供稍后在文档中显示的 json 输出的唯一功能?我之所以问,是因为 jison 文档没有明确解释其用途,而且 flex/lex 规则似乎不允许这种语法。
/* description: Parses end executes mathematical expressions. */
/* lexical grammar */
%lex
%%
\s+ /* skip whitespace */
[0-9]+("."[0-9]+)?\b return 'NUMBER';
"*" return '*';
"/" return '/';
"-" return '-';
"+" return '+';
"^" return '^';
"(" return '(';
")" return ')';
"PI" return 'PI';
"E" return 'E';
<<EOF>> return 'EOF';
/lex