Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在ANTLR3标题部分中转义左/右大括号?_C++_C_Header Files_Antlr3_Tree Grammar - Fatal编程技术网

C++ 如何在ANTLR3标题部分中转义左/右大括号?

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树

我有一个ANTLR3树语法,目标语言是C。此树语法实际上生成C++对象,因此需要包括这些类的头(S)。我使用
@header
部分来进行此操作。但是,在输出中,有一个
extern C{
}
块也包含头段输出。这会导致错误,因为标头包含无法声明为具有“C”链接的模板。我希望在标题部分输出的开头关闭该块,并在结尾重新打开它。不幸的是,在
@header
部分中写入大括号会破坏ANTLR3语法-大括号标记
@header
部分的开始和结束

我怎样才能摆脱这些牙套

TLDR: 我需要将左括号和右括号写入ANTLR3树语法的
@header
部分。这样做会破坏
@标题
部分的语法。如何转义左/右括号,以便生成的输出的标题部分可以包含左/右括号


在每次输出完成后手动编辑它们。。。令人讨厌。

只是一个想法:将定义RBACE作为},使用LBRACE作为{并使用宏……不知道它是否能工作,而且它不漂亮。我不知道它们是否会工作,但是C++和C++接受了带括号的有向图:<代码> <代码>是<代码> } /代码>。