Попытка получить код YACC для компиляции - PullRequest
0 голосов
/ 10 сентября 2011

Я пытаюсь скомпилировать некоторый код из проекта, которого больше нет. Содержит код yacc / lex. Я попытался скомпилировать с YACC из Bison, Bison ++ и Bisonc ++. Но ни один из них, кажется, не в состоянии скомпилировать это. Я действительно не знаю, бизон / 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            {
   ...

1 Ответ

1 голос
/ 10 сентября 2011

Вы ошиблись ; - это должно быть после кода действия, а не перед ним.

Например. здесь точка с запятой неуместна:

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