C++ 如何在ANTLR3标题部分中转义左/右大括号?
我有一个ANTLR3树语法,目标语言是C。此树语法实际上生成C++对象,因此需要包括这些类的头(S)。我使用C++ 如何在ANTLR3标题部分中转义左/右大括号?,c++,c,header-files,antlr3,tree-grammar,C++,C,Header Files,Antlr3,Tree Grammar,我有一个ANTLR3树语法,目标语言是C。此树语法实际上生成C++对象,因此需要包括这些类的头(S)。我使用@header部分来进行此操作。但是,在输出中,有一个extern C{和}块也包含头段输出。这会导致错误,因为标头包含无法声明为具有“C”链接的模板。我希望在标题部分输出的开头关闭该块,并在结尾重新打开它。不幸的是,在@header部分中写入大括号会破坏ANTLR3语法-大括号标记@header部分的开始和结束 我怎样才能摆脱这些牙套 TLDR: 我需要将左括号和右括号写入ANTLR3树
@header
部分来进行此操作。但是,在输出中,有一个extern C{
和}
块也包含头段输出。这会导致错误,因为标头包含无法声明为具有“C”链接的模板。我希望在标题部分输出的开头关闭该块,并在结尾重新打开它。不幸的是,在@header
部分中写入大括号会破坏ANTLR3语法-大括号标记@header
部分的开始和结束
我怎样才能摆脱这些牙套
TLDR:
我需要将左括号和右括号写入ANTLR3树语法的@header
部分。这样做会破坏@标题
部分的语法。如何转义左/右括号,以便生成的输出的标题部分可以包含左/右括号
在每次输出完成后手动编辑它们。。。令人讨厌。只是一个想法:将定义RBACE作为},使用LBRACE作为{并使用宏……不知道它是否能工作,而且它不漂亮。我不知道它们是否会工作,但是C++和C++接受了带括号的有向图:<代码> <代码>是<代码> } /代码>。