Я хотел экспериментировать с языком программирования Shakespeare, таким образом, я загрузил его отсюда и выполнил использование Make-файла cd spl-1.2.1
Make
.
Компиляция spl2c
выполняется с парой предупреждений:
scanner.l:600: warning, rule cannot be matched
<stdout>:5808: warning: ‘yyunput’ defined but not used
И затем когда это пытается скомпилировать все примеры, все выходит из строя:
../spl/bin/spl2c < fibonacci.spl > fibonacci.c
Warning at line 19: equality expected
Warning at line 28: equality expected
Warning at line 30: comment expected
Warning at line 30: comment expected
Warning at line 30: comment expected
Warning at line 30: comment expected
Warning at line 32: comment expected
Warning at line 32: comment expected
Warning at line 32: comment expected
Warning at line 32: comment expected
Warning at line 34: comment expected
Warning at line 34: comment expected
Warning at line 34: comment expected
Warning at line 34: comment expected
Warning at line 36: comment expected
Warning at line 36: comment expected
Warning at line 37: comment expected
Warning at line 37: comment expected
Warning at line 37: comment expected
Warning at line 37: colon expected
Warning at line 40: equality expected
Warning at line 51: comment expected
Warning at line 51: comment expected
Warning at line 51: comment expected
Warning at line 51: comment expected
Warning at line 51: comment expected
Warning at line 51: colon expected
Error at line 59: 'act [roman number]' or 'scene [roman number]' expected
1 errors and 27 warnings found. No code output.
Кто-либо может указать на меня в правильном направлении для фиксации этого? Мой исходный проект был изучением spl, не склоняясь для отладки компиляторов (я на самом деле хотел бы записать свой собственный компилятор в конечном счете, но я предпочту придерживаться своего первоначального проекта на данный момент).
Я работаю OS X 10.6.2
, gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)
, flex 2.5.35
, и bison (GNU Bison) 2.3
.
Править: Для простых программ, не требующих gotos (например, hello.spl), можно обойти проблему путем удаления всех строк ACT/сцены кроме первого ACT I/SCENE I.
Первая проблема с scanner.l: 600: предупреждение, правило не может быть сопоставлено
, потому что слово гнилой
было добавлено два раза к файл include / negative_adjective.wordlist
просто удалите его оттуда, и первое предупреждение будет удалено. Однако остального это не исправляет. Загляните сюда, если я могу еще что-нибудь исправить.