gpt4 book ai didi

jison - jison 中的 %lex 和/lex 行是什么?

转载 作者:行者123 更新时间:2023-12-01 01:00:48 35 4
gpt4 key购买 nike

可以在以下位置找到以下代码片段: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

最佳答案

%lex/lex标记仅分隔与扫描仪生成器相关的语法部分。 %lex标记标记开始和 /lex标志着结束。

使用时 bisonflex您可以将词法分析器的定义(Jison 用语中的“扫描仪生成器”)放在 .l.y 中的文件和语法文件。我认为不存在使用 bison 的方法和 flex (或 yacc/lex )合并两个文件。 (自从我使用 bisonflex 以来已经很长时间了,所以我不知道某些东西并非不可能。)

事实是,虽然 Jison 的灵感来自于 bisonflex ,它真的是一个独立的工具。因此,它确实包含了在 bison 中没有等效项的功能。或 flex .

关于jison - jison 中的 %lex 和/lex 行是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23622705/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com