我真的是Antlr4的新手。我正在尝试为BGP社区创建解析器。 我的第一个输入可以是:
[Action] NO_EXPORT SET
[Action] NO_EXPORT RUN
这是我的代码
grammar AUX;
start : configSections;
configSections: configSection+
EOF;
configSection: defined_actions
| undefined_actions
;
undefined_actions: 'NOT KNOWN'
;
defined_actions: '[Action]'
action_define*;
action_define: no_export | local_preference | as_padding;
no_export: 'NO_EXPORT'
verbs_no_export*;
local_preference: '[Verbs LOCAL_PREFERENCE]'
verbs_local_preference*;
as_padding: '[Verbs AS_PADDING]'
verbs_as_padding*;
verbs_no_export: ('DO NOT'|'SET'|'RUN')+;
其余代码可以忽略。 这是我的树输出:
(start (configSections (configSection (defined_actions [Action] (action_define (no_export NO_EXPORT (verbs_no_export SET))))) (configSection (defined_actions [Action] (action_define (no_export NO_EXPORT (verbs_no_export RUN))))) <EOF>))
问题是,对于该输入,我只希望一棵只有两片不同叶子的树,即动词(SET,RUN)
谢谢