当前位置: 首页 > 知识库问答 >
问题:

如何组合antlr解析器和lexer文件

宋嘉禧
2023-03-14

基本上,我想结合这些g4文件:

https://github.com/apache/groovy/tree/master/src/antlr

进入一个文件,我可以使用这个clojure库:

https://github.com/aphyr/clj-antlr

它目前需要一个组合的解析器/词法器文件。如何破解这些文件,使它们以正确的语法存在于单个文件中?我已经排除了连接文件和删除lexer和parase gammar前缀的可能性,如下所述:https://github.com/antlr/antlr4/blob/master/doc/grammars.md

共有1个答案

吕峰
2023-03-14

不能将这些语法组合起来,因为lexer语法使用自己的超类和lexer模式。这两种方法都不可能使用组合语法。

 类似资料:
  • 我使用ANTLR Version4创建编译器。第一阶段是Lexer部分。我创建了“compilerlexer.g4”文件,并在其中输入了lexer规则。 compilerlexer.g4: null 有几十个这样的警告和错误。病因是什么? 一般问题:使用组合语法和单独使用lexer和parser有什么不同?如何连接单独的语法和lexer文件?

  • 我正在尝试使用ANTLRV4为一个简单的自定义语法生成一个lexer和解析器。问题是,当我运行Antlr.jar实用程序时,它生成了一个Lexer文件,而不是一个解析器文件,我认为它应该生成。 简单语法 hellolexer.js hellolexer.tokens 所需输出 hellolexer.js helloparser.js hellolistener.js hellovisitor.js

  • 有没有可能实现经典的Yacc lexer hack来在由ANTLR4生成的C解析器中区分标识符名和类型名,使用标准的C语法(就像在官方的ANTLR4 GitHub repo上找到的一样)? 可以插入到ANTLR4 lexer中的ad-hoc代码似乎相当有限。Terrence Parr在《最终的ANTLR4参考》一书中说: “一直存在的一种常见做法是将解析器的反馈发送给lexer,这样lexer就可

  • 我有Antlr4中的语法,用来解析和验证定制语言。在其他方面,我的语法应该认为以下是“有效的” //将字符串值赋给变量 //带有字符串参数的函数 //带有特定格式(日期)的函数 下面是我语法中的相关部分

  • 本文向大家介绍ANTLR Lexer命令,包括了ANTLR Lexer命令的使用技巧和注意事项,需要的朋友参考一下 示例 词法分析器规则可以具有关联的命令: ->在规则末尾的a之后定义命令。 skip:跳过匹配的文本,不会发出令牌 channel(n):在其他频道上发出令牌 type(n):更改发出的令牌类型 mode(n),pushMode(n),popMode,more:控制词法分析器模式

  • ANTLR语法中解析器和词法分析器规则的调用顺序是什么?例如,在以下语法中,输入 223 始终标识为APLHANUMERIC而不是数字