Antlr4以编程方式切换词法模式

时间:2014-08-04 00:59:25

标签: antlr4

我希望能够以编程方式定义词法分析器应该切换到哪种模式。假如我有一个解析PHP代码之类的语法。

foo bar <?php ...   ?>

但在我的情况下,它会支持多种语言,比如说

foo bar <?php ... ?> 
baz <?cpp ... ?> 
blah <?java ... ?>

问题是我希望默认使用其中一种语言,但是哪种语言只能以编程方式确定,比如基于文件扩展名。或者如果文件是something.cpp-tmpl

<? ... ?> 

切换到cpp模式,对于名称为something.java-tmpl的文件中的相同构造,切换到java模式。

我可以,如果是的话,我该怎么做?

1 个答案:

答案 0 :(得分:0)

简短的回答是肯定的。查看org.antlr.v4.runtime.Lexer.java以获取以编程方式管理词法分析器模式的完整方法。这些隐式地是在Antlr词法分析器语法中出现的模式控制语句。