我试图利用LALR(1)教区发电机(Bison,但问题并非这一工具所特有的)来打上简单的语法,我打上了一场转移冲突。 The docs and other sources I ve found about fixing thesegues to provide one or more of the following:
- If the grammar is ambiguous (e.g. if-then-else ambiguity), change the language to fix the ambiguity.
- If it s an operator precedence issue, specify precedence explicitly.
- Accept the default resolution and tell the generator not to complain about it.
然而,这似乎都没有适用于我的情况:只要我能说,图马是明确的(当然,它只带有一个头盔的模棱两可),它只有一名操作员,而违约解决导致在正确知情的投入上出现错误。 是否有办法重新制定图表定义,以消除不上 above的转移冲突?
具体来说,这里的图表是:
%token LETTER
%%
%start input;
input: /* empty */ | input input_elt;
input_elt: rule | statement;
statement: successor ; ;
rule: LETTER "->" successor ; ;
successor: /* empty */ | successor LETTER;
%%
目的是将“[A-Za-z]+”或“[A-Za-z]->[A-Za-z]+”等形式的半分界线划为平线。