首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jison中的%lex和/lex行是什么?

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

Stack Overflow用户
提问于 2014-05-13 04:16:33
回答 1查看 399关注 0票数 5

下面的代码片段可以在:http://zaach.github.io/jison/demos/calc/和jison文档页面上找到。在阅读了jison、lex和flex文档之后,我仍然不完全理解%lex和/lex语法。是针对jison扫描仪生成器的吗?这意味着它唯一的功能是提供稍后在文档中显示的json输出?我之所以这样问,只是因为jison文档没有明确解释它的用途,而flex/lex规则似乎不允许这样的语法。

代码语言:javascript
复制
/* 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-13 12:23:12

%lex/lex标记仅限定与扫描器生成器相关的语法部分。%lex标记标记开始,/lex标记标记结束。

在使用bisonflex时,您会将lexer的定义( Jison术语中的“扫描器生成器”)放在.l文件中,语法放在.y文件中。我认为不存在使用bisonflex (或yacc/lex)组合这两个文件的方法。(我已经很久没有使用bisonflex了,所以有些事情我不知道并不是不可能的。)

事实是,尽管Jison从bisonflex获得了灵感,但它实际上是一个独立的工具。因此,它确实包含了在bisonflex中没有同等功能的特性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23622705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档