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

导入使用不同模式的ANTLR4 lexer语法

白昊东
2023-03-14

我试图将一个lexer语法导入到另一个lexer语法中。导入的语法使用不同的模式(在XMLLexer示例中,mode INSIDE和PROC_INSTR)。

lexer grammar HTMLLexer;
import XMLLexer;
C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143: 
  error: cannot find symbol
  case 6: more(); pushMode(PROC_INSTR);  break;
                         ^
  symbol:   variable PROC_INSTR
  location: class HTMLLexer
1 error

如果我将导入的部分内联到主lexer定义中,解析器就可以工作,但我希望使用导入功能来进行干净的分离。(不是针对XML/HTML示例,而是在另一种情况下。)

是否有可能让它工作使用进口或这是一个ANTLR4的限制?

共有1个答案

微生德泽
2023-03-14

ANTLR4中还不支持导入多模式lexer语法。以下问题将跟踪此功能的进展:

支持导入多模式lexer文法

 类似资料:
  • 问题内容: 当前,我需要将一个大型CSV文件推送到mongo数据库中,值的顺序需要确定数据库条目的键: CSV文件示例: 将其解析为数组的代码: 代码输出: 如何将数组插入我的Mongoose模式中以进入mongo db? 架构: 数组的顺序需要与架构的顺序匹配,例如在数组中,第一个数字9始终需要保存,因为它们键为“ serverid”,依此类推。我正在使用Node.JS 问题答案: 您可以通过从

  • 如果我有的话 在< code>b.py中,我可以< code >导入a 但如果我有 在<code>c中。pydo,突然出现在我得到 怎么了?我看不出第二种情况与第一种情况有什么不同 因此...在最初启动的模块的目录中搜索模块。我只是不明白其中的道理。 我不是在问如何解决问题。而是首先问为什么会有问题...... (在Python 3.8.8上测试)

  • 问题内容: 例如,我想在一个源文件中同时使用text / template和html / template。但是下面的代码会引发错误。 问题答案: 在规范中阅读有关它的更多信息。

  • 我有一个由两个gradle项目组成的项目,在构建中定义如下。格雷德尔档案。 和 问题是,我不能从客户端模块中导入任何在核心模块中定义的类。然而,反过来也行。这可能是因为我们提到了编译项目(:客户端)作为“核心”模块的依赖项。当我把编译项目(: core)作为客户端模块的依赖项时,IntelliJ允许我将核心模块中的类导入客户端。然而,gradle随后正确地声称这两个模块之间存在循环构建依赖关系。

  • 试图将用户模型中的“uuid”作为

  • 在测试其中一个功能时,我遇到了这种错误。到底是什么问题? /用户/user/websprojects/hsu/src/path finding/path finding。spec.js:1从'chai'导入{expect}^^^^^^ 语法错误:无法在WrapSafe(节点:内部/模块/cjs/加载器: 1018:16)的模块外使用导入语句。_compile(节点:内部/模块/cjs/加载器: 1