远程版本的flex曲解我的规则

我写了一个使用flex和bison的小汇编器,在我的机器上构build和运行OK(ubuntu 10.10)。 其他人现在正试图在arch linux上构build它,而他们的flex安装产生了一个不同的lex.yy.c,这是不匹配的规则。 两个版本都报告了相同的lex 2.5.35版本,但是我已经看到了我和Mac OSX上的另一个flex之间的区别,这些区别并不好(?i模式,所以我不太相信版本string。

我没有访问远程机器,所以我正在寻找一些lex –debug输出,我有远程用户生成。

我的汇编程序的完整源代码在这里github上 。

这是我的规则中的一个片段:

 letter [A-Za-z] digit [0-9] hexdigit [0-9a-fA-F] symbolchar {letter}|[\.$_] symbol {symbolchar}({symbolchar}|{digit})* gpreg [ABCXYZIJabcxyzij] xreg SP|PC|EX|POP|PEEK|PUSH|PICK|sp|pc|ex|pop|peek|push|pick op2 SET|ADD|SUB|MUL|MLI|DIV|DVI|MOD|MDI|AND|[BX]OR|SH[LR]|ASR|IF[BCENGALU]|ADX|SBX|ST[ID] op2_lc set|add|sub|mul|mli|div|dvi|mod|mdi|and|[bx]or|sh[lr]|asr|if[bcengalu]|adx|sbx|st[id] op1 JSR|HCF|INT|RFI|IA[GSQ]|HW[NQI] op1_lc jsr|hcf|int|rfi|ia[gsq]|hw[nqi] %% \.set|\.equ return EQU; :{symbol} { yylval.string = yytext + 1; return LABEL; } {symbol}: { yylval.string = yytext; yytext[strlen(yytext) - 1] = 0; return LABEL; } 0x{hexdigit}+ return get_constant(); {digit}+ return get_constant(); {gpreg}|{xreg} { yylval.integer = str2reg(yytext); return REG; } {op2}|{op2_lc} { yylval.integer = str2opcode(yytext); return OP2; } {op1}|{op1_lc} { yylval.integer = str2opcode(yytext); return OP1; } DAT|dat { return DAT; } {symbol} { yylval.string = yytext; return SYMBOL; } 

以下是一个input行示例:

  SET A, 0x30 ; 7c01 0030 

远程词法分析器符合规则{symbol}:代替{gpreg}|{xreg} 。 难道这是因为我在symbol定义中有一个通配符? 为什么这对我的灵活而不是远程工作?

从我的本地(良好)构build–debug输出:

 --accepting rule at line 52 (" ") --accepting rule at line 42 ("SET") --accepting rule at line 52 (" ") --accepting rule at line 41 ("A") --accepting rule at line 50 (",") --accepting rule at line 52 (" ") --accepting rule at line 39 ("0x30") --accepting rule at line 52 (" ") --accepting rule at line 53 ("; 7c01 0030") --accepting rule at line 50 (" ") 

并从有问题的远程构builddebugging输出(包括yacc投诉)。 注意与“A”匹配的不同规则

 --accepting rule at line 52 (" ") --accepting rule at line 42 ("SET") --accepting rule at line 52 (" ") --accepting rule at line 34 ("A") line 4: syntax error line 3: parse error: bad instruction line 3: parse error: bad instruction --accepting rule at line 50 (",") line 3: parse error: bad instruction --accepting rule at line 52 (" ") --accepting rule at line 39 ("0x30") line 3: parse error: bad instruction --accepting rule at line 52 (" ") --accepting rule at line 53 ("; 7c01 0030") --accepting rule at line 50 (" ") 

我应该如何解决这个问题,有什么类似的问题可以用不同的弹性版本呢?