首页 > 解决方案 > 具有任意数量限定符的 PEG 解析声明

问题描述

我想解析例如:

const unsigned int varname;

其中限定符的数量是未知的,限定符关键字的列表也是未知的(因为可以使用 引入新的关键字using)。

但是使用 PEG 语法

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

不起作用,因为 qualifier* 使用变量名称,因为它匹配。有没有办法做到这一点,还是我必须在缩减规则中手动提取最后一个标识符?

标签: peg

解决方案


好,我知道了。

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

推荐阅读