我已经创建了一个简单的 .g4 (Antlr4)语法和词法分析器文件。
它可以很好地生成我的词法分析器/解析器代码。 但是,在添加了一些需要Linq扩展名的自定义代码之后,我现在需要在生成的词法分析器代码文件顶部插入自定义语句“使用System.Linq;” 。
我知道有一些注入代码的选项(来自.g4文件),例如
@lexer::members {
... {custom lexer code goes here}
有人可以指出正确的(.g4)语法,该语法将在呈现的词法分析器/解析器中呈现必要的“使用”语句。
更新: LexLi提出了一个好点..我为什么需要那个?我应该在访问者或侦听器中编写代码。 对此的答案:我正在尝试在C#中实现INDENT和DEDENT令牌(类似于此处“ ANTLR4”下发布的Java代码的类似代码: ANTLR What is simpliest way to realize python like indent-depending grammar?
谢谢!
答案 0 :(得分:1)
您可以用经典方式控制写入文件的内容,
@parser::header
{
#pragma warning disable 3001, 3003, 3005, 3009, 1591
}
@lexer::header
{
#pragma warning disable 3001, 3003, 3005, 3009, 1591
}
@parser::namespace { Lextm.Namespace }
@lexer::namespace { Lextm.Namespace }
@parser::footer
{
#pragma warning restore 3001, 3003, 3005, 3009, 1591
}
@lexer::footer
{
#pragma warning restore 3001, 3003, 3005, 3009, 1591
}
因此,在您的情况下,请将using
语句添加到标题中。