Ich wollte mit der Shakespeare-Programmiersprache experimentieren, also habe ich sie von hier und führte das Makefile mit cd spl-1.2.1
Make
aus.
Die Kompilierung von spl2c
wird mit einigen Warnungen ausgeführt:
Und dann, wenn es versucht, alle Beispiele zu kompilieren, geht alles drunter und drüber:
%Vor%Kann mir jemand in die richtige Richtung zeigen, um das zu beheben? Mein ursprüngliches Projekt war, spl zu lernen, und lehnte es nicht ab, Compiler zu debuggen (ich würde eigentlich gerne meinen eigenen Compiler schreiben, aber ich würde es vorziehen, bei meinem anfänglichen Projekt zu bleiben).
Ich verwende OS X 10.6.2
, gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)
, flex 2.5.35
und bison (GNU Bison) 2.3
.
EDIT: Für einfache Programme, die gotos nicht benötigen (z. B. hello.spl), können Sie das Problem umgehen, indem Sie alle ACT / SCENE-Zeilen außer der ersten ACT I / SCENE I löschen.
Dies ist ein Fehler in einem regulären Ausdruck im lexikalischen Parser.
Ich habe die Sprache gespalten.
Ich habe die ursprünglichen Autoren benachrichtigt.
Hier ist eine Version der Sprache, die den Fix zu Ihrem Vergnügen enthält.
Es gibt immer noch ein paar Warnungen , aber sie tun nicht t scheint etwas zu beeinflussen. Lassen Sie es mich wissen , wenn Sie irgendwelche anderen funktionellen Probleme entdecken und ich werde sehen, was ich mit ihnen machen kann.
(Roffel - das wäre Nekromantie, wenn nicht, dass sich niemand für dieses Problem interessiert.)
Dieses Problem resultiert aus einem Fehler in Flex, der zwischen den Versionen 2.5.4 und 2.5.33 eingeführt wurde. das heißt, zwischen der Zeit, als der Shakespeare-Prozessor geschrieben wurde, und dieser Frage wurde gefragt. Der Fehler beinhaltet die Verwendung des gestaffelten Wiederholungsoperators mit Einzelzeichenargumenten in einem regulären Ausdruck ohne Berücksichtigung der Groß- / Kleinschreibung (z. B. i{1,3}
, der Teil der Shakespeare-Flex-Spezifikation für römische Ziffern ist); Die Konsequenz des Fehlers ist, dass die Groß- / Kleinschreibung verloren geht, so dass i{1,3}
so erweitert wird, als wäre es [iI]i?i?
anstatt [iI][iI]?[iI]?
. Das bedeutet, dass römische Großbuchstaben mit wiederholten Zeichen (die im Shakespeare-Quellcode normal sind) nicht korrekt identifiziert werden.
Kyle Cartmells Änderung in Marlowe verwendet Großbuchstaben in der Regex anstelle von Kleinbuchstaben, was das Problem so umkehrt, dass nur römische Zahlen in Großbuchstaben zuverlässig funktionieren.
Ich habe den Flex-Fehler als Ссылка gemeldet. Es ist ein One-Line-Patch für Flex, wenn jemand es vor der offiziellen Veröffentlichung benötigt.
Das erste Problem mit scanner.l:600: warning, rule cannot be matched
liegt darin, dass das Wort rotten
zweimal zur Datei include/negative_adjective.wordlist
hinzugefügt wurde. Entfernen Sie es einfach von dort und die erste Warnung wird entfernt. Dies behebt jedoch den Rest nicht. Schauen Sie hier nach, wenn ich noch etwas reparieren kann.
Tags und Links bison flex-lexer macos yacc shakespeare-lang