yecc语法的问题

时间:2011-06-10 11:20:53

标签: erlang

我目前正在使用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"]}}}

1 个答案:

答案 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',但这应该是因为我的例子不返回任何东西。请注意,您的终端符号都不需要引用,因为它们只是具有“普通”名称的普通原子。