我正在扩展 baseClass 侦听器并尝试读取一些值,但是顺序中似乎没有任何层次结构。
我的语法的精简版如下:
start: config_options+
config_options: (KEY) EQUALS^ (PATH | ALPHANUM) (' '|'\r'|'\n')* ;
KEY: 'key' ;
EQUALS: '=' ;
ALPHANUM: [0-9a-zA-Z]+ ;
然而,这个实现的解析树在 config_options 级别(终端级别)是平坦的,即规则开始有许多 config_options 的子节点,但 EQUALS 不是 config_options 子树的根,所有 TOKENS 都将规则 config_options 作为根节点。如何使其中一个终端成为根节点?
在这个特定的规则中,我不希望捕获任何空格,我知道有 -> skip 是针对词法分析器的,但是在某些情况下我确实想要空格。即在字符串 '"'(ALPHANUM|' ')'"'
(注意: ^ 似乎不起作用)
输入示例是:
键=abcdefg
键=90weata
键=acbefg9
我要做的就是提取键和值对。我希望“=”是根,两个孩子是键和值。