我目前正在使用yecc在erlang中编写一个小解析器,并遇到了一些问题。当我用'lbrack'解析规则时会出现问题。以下规则 是我的问题的一个例证:
program -> 'char' 'ident' 'lbrack' 'int_constant' 'rbrack' 'semi'
它编译正常,但是当我尝试解析以下标记时:
[{char,1},
{ident,1,1,t},
{lbrack,1},
{int_constant,1,10},
{rbrack,1},
{semi,1}]
解析器崩溃
{error,
{1,parser,["syntax error before: ","lbrack"]}}}
答案 0 :(得分:3)
我尝试使用以下yecc文件,yt.yrl:
Nonterminals
program.
Terminals
char ident lbrack int_constant rbrack semi.
Rootsymbol
program.
program -> 'char' 'ident' 'lbrack' 'int_constant' 'rbrack' 'semi'.
与您的输入,它工作正常。它没有返回任何东西,好'$undefined'
,但这应该是因为我的例子不返回任何东西。请注意,您的终端符号都不需要引用,因为它们只是具有“普通”名称的普通原子。