Kompilieren und Ausführen des Shakespeare Programmiersprachen-Übersetzers spl2c unter Mac OS X 10.6 führt zu Warnungen / Fehlern

7

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:

%Vor%

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.

    
Lawrence Johnston 22.12.2009, 18:46
quelle

3 Antworten

22

Dies ist ein Fehler in einem regulären Ausdruck im lexikalischen Parser.

Ich habe die Sprache gespalten.

Ich habe das Problem behoben.

Ich habe die ursprünglichen Autoren benachrichtigt.

Hier ist eine Version der Sprache, die den Fix zu Ihrem Vergnügen enthält.

/ p>

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.)

    
Kyle W. Cartmell 11.12.2010, 18:35
quelle
3

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.

    
rici 08.04.2017 14:51
quelle
1

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.

    
epatel 22.12.2009 21:09
quelle