【发布时间】:2012-05-31 02:18:12
【问题描述】:
我正在使用 ANTLR 来解析自定义数据定义语言。我使用 C 作为语言,我正在输出一个抽象语法树。到目前为止一切顺利,但现在我需要添加文档并且我需要允许表单块:
DOC
Free text here
ENDDOC
我尝试添加规则:
docstm : 'DOC' ContentDoc=(.*) 'ENDDOC' -> ^(T_DOCCLASS $ContentDoc);
其中T_DOCCLASS 是tokens {...} 部分中定义的虚构标记。不幸的是,虽然 DOC ... ENDDOC 块的解析没有失败,但树只有 T_DOCCLASS 没有任何子节点。
其他附加信息:我正在使用 ANTLR 3.2 和以下前奏:
options {
output = AST;
language = C;
ASTLabelType = pANTLR3_BASE_TREE;
}
我还有另一个跳过空格的规则:
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
提前感谢您能给我的任何建议。
【问题讨论】:
-
问题是什么?尝试用问号结束至少一个句子。
-
@ceving,虽然没有实际的问号,但很清楚 OP 想要做什么(至少,如果你对 ANTLR 有一点了解,那就很清楚了)。