描述
我正在尝试创建一种自定义语言,以便将lexer规则从解析器规则中分离出来。此外,我的目标是将词汇规则和解析器规则进一步划分为特定的文件(例如,常见的词汇规则和关键字规则)。
但我似乎没办法让它起作用。
虽然在生成解析器(.java文件)时没有收到任何错误,但是grun在Exception in thread "main" java.lang.ClassCastException中失败了。
备注
我正在针对Java在Windows7上运行ANTLR4.7.2。
代码
我创建了一组文件,这些文件与我打算实现的目标非常相似。下面的示例定义了一种名为MyLang的语言,并分离了词法和解析器语法。另外,我将lexer规则分成四个文件:
输出
下面是我从上面的代码中得到的确切输出:
ussjc-dd9vkc2 | C:\M\w\s\a\l\example
§ antlr4.bat .\MyLangL.g4
ussjc-dd9vkc2 | C:\M\w\s\a\l\example
§ antlr4.bat .\MyLang.g4
ussjc-dd9vkc2 | C:\M\w\s\a\l\example
§ javac *.java
ussjc-dd9vkc2 | C:\M\w\s\a\l\example
§ grun MyLang prog -tree
Exception in thread "main" java.lang.ClassCastException: class MyLang
at java.lang.Class.asSubclass(Unknown Source)
at org.antlr.v4.gui.TestRig.process(TestRig.java:135)
at org.antlr.v4.gui.TestRig.main(TestRig.java:119)
ussjc-dd9vkc2 | C:\M\w\s\a\l\example
§发布于 2019-04-23 10:01:10
使用MyLangParser和MyLangLexer重命名两个文件,然后运行grun MyLang prog -tree
https://stackoverflow.com/questions/54356701
复制相似问题