【问题标题】:Trying to get yacc code to compile试图让 yacc 代码编译
【发布时间】:2011-09-10 08:41:52
【问题描述】:

我正在尝试从不再存在的项目中编译一些代码。它包含一些 yacc/lex 代码。我尝试使用 bison、bison++ 和 bisonc++ 中的 yacc 进行编译。但他们似乎都无法编译它。我真的不知道 bison/yacc/lex,所以任何提示将不胜感激。

这是错误信息:

lex -t generator/parse_testvectors.l            \
    > generator/parse_testvectors.lex.c
yacc -o generator/parse_testvectors.C           \
    generator/parse_testvectors.y
generator/parse_testvectors.y:75.51-99: syntax error, unexpected {...}
generator/parse_testvectors.y:88.124-173: syntax error, unexpected {...}
generator/parse_testvectors.y:98.9-102.9: syntax error, unexpected {...}
generator/parse_testvectors.y:105.9-113.9: syntax error, unexpected {...}
generator/parse_testvectors.y:138.9-142.9: syntax error, unexpected {...}
...

代码如下:

   ...
68 %token  MEMORY_KEYWORD
69 %token  STACK_KEYWORD
70 %token  STACK_TOP_KEYWORD
71 %token  FRAME_POINTER_KEYWORD
72
73 %%
74 main         :       testvector { i386_seq::num_testvectors = cur_testvector+1; }
75                          |       testvector main ; { i386_seq::num_testvectors =   cur_testvector+1; }
76
77 testvector               :       testvector_begin assignments testvector_end ;
78
79 assignments              :       register_assignments flag_assignments stack_assignment memory_assignment
80            {
   ...

【问题讨论】:

    标签: compiler-errors bison yacc lex


    【解决方案1】:

    ; 错误 - 它应该在操作代码之后,而不是之前。

    例如。这里,分号放错了位置:

    testvector main ; { i386_seq::num_testvectors =   cur_testvector+1; }
    ----------------^
    

    【讨论】:

    • 是的,成功了!!!谢谢。这很奇怪,因为这段代码应该按原样工作。
    • 如果这个答案解决了你的问题,psiphi75,你应该把它标记为正确的答案。否则 Stack Overflow 用户将来可能会拒绝回答您的问题。
    • 感谢 librik,我没有意识到这一点。
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多