具有任意数量限定符的PEG解析声明

时间:2018-07-18 08:23:18

标签: peg

我想解析例如:

const unsigned int varname;

限定词的数量未知,并且限定词的列表也未知(因为可以使用using引入新的限定词)。

但是使用PEG语法

declaration <- qualifier* varname ';'
qualifier <- identifier
varname <- identifier

不起作用,因为限定符*由于匹配而消耗了变量名。有没有办法做到这一点,还是我必须在归约规则中手动提取最后一个标识符?

1 个答案:

答案 0 :(得分:0)

好吧,我明白了。

declaration <- qualifier* varname ';'
qualifier <- !varname identifier
varname <- identifier &';'
identifier <- [a-zA-Z_] [a-zA-Z_0-9]* ws
ws <- ' '*