我希望能够以编程方式定义词法分析器应该切换到哪种模式。假如我有一个解析PHP代码之类的语法。
foo bar <?php ... ?>
但在我的情况下,它会支持多种语言,比如说
foo bar <?php ... ?>
baz <?cpp ... ?>
blah <?java ... ?>
问题是我希望默认使用其中一种语言,但是哪种语言只能以编程方式确定,比如基于文件扩展名。或者如果文件是something.cpp-tmpl
<? ... ?>
切换到cpp模式,对于名称为something.java-tmpl
的文件中的相同构造,切换到java模式。
我可以,如果是的话,我该怎么做?
答案 0 :(得分:0)
简短的回答是肯定的。查看org.antlr.v4.runtime.Lexer.java
以获取以编程方式管理词法分析器模式的完整方法。这些隐式地是在Antlr词法分析器语法中出现的模式控制语句。