Shakespeare, esotherische Programmiersprache



  • pyhax schrieb:

    Das sind warnings. Das Programm sollte troztdem funktionieren. Teste es mal, in dem du folgendes eingibts:
    1. cd /Users/Manu/Desktop/spl-1.2.1/examples/ <ENTER>
    2. ./hello

    Das sind mega Warnings 😮 aber es gibt mir das Gleiche aus 😞

    Ich kann zwar zum Ordner navigieren, aber die Fehler im SPL Code behebts mir nicht. Kann da nix öffnen 😞

    Wie soll das dann eigentlich aussehen? Also öffnet sich dann ein neues Fenster mit dem kompilieren SPL-Code?

    Habs gerade nochmal mit dem ./hello am Ende des gcc Befehls probiert...Da kommt dann nochmal ne andere Fehlermeldung vom SPL Code. Ich krieg ihn einfach nicht zum Laufen. " spl.h " liegt auf jeden Fall definitiv in diesem Verzeichnis, wird aber trotzdem nicht gefunden. 🙄 Ach ja: danke für den Tip mit " sudo -i ", das tut 🙂

    MacBP:examples root# gcc hello.c -lspl -o ./hello
    hello.c:7:17: error: spl.h: No such file or directory
    hello.c: In function ‘main’:
    hello.c:15: error: ‘CHARACTER’ undeclared (first use in this function)
    hello.c:15: error: (Each undeclared identifier is reported only once
    hello.c:15: error: for each function it appears in.)
    hello.c:15: error: ‘romeo’ undeclared (first use in this function)
    hello.c:16: error: ‘juliet’ undeclared (first use in this function)
    hello.c:17: error: ‘ophelia’ undeclared (first use in this function)
    hello.c:18: error: ‘hamlet’ undeclared (first use in this function)
    hello.c:37: error: ‘second_person’ undeclared (first use in this function)
    hello.c:49: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:59: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:73: error: duplicate label ‘act_i’
    hello.c:29: error: previous definition of ‘act_i’ was here
    hello.c:75: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:93: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    MacBP:examples root#
    


  • Könnte es sein, dass in Zeile 7 der hello.c "#include <spl.h>" steht? Weil wenn es im gleichen Ordner ist, müsste da "#include "spl.h"" stehen. Könnte bedeuten, dass du nur noch die spl.h in das Verzeichnis kopieren musst, in dem er bei <> sucht. Allerdings weiß ich nicht, welches das unter Unix/GCC ist. Zudem: Das ./hello ist zum ausführen, das kommt doch nicht da hin!

    1. cd /Users/Manu/Desktop/spl-1.2.1/examples/ <ENTER>
    2. spl2c < hello.spl > hello.c <ENTER>
    3. gcc hello.c -lspl -o hello <ENTER>
    4. ./hello <ENTER>



  • cooky451 schrieb:

    Könnte es sein, dass in Zeile 7 der hello.c "#include <spl.h>" steht? Weil wenn es im gleichen Ordner ist, müsste da "#include "spl.h"" stehen. Könnte bedeuten, dass du nur noch die spl.h in das Verzeichnis kopieren musst, in dem er bei <> sucht. Allerdings weiß ich nicht, welches das unter Unix/GCC ist. Zudem: Das ./hello ist zum ausführen, das kommt doch nicht da hin!

    Also ich habs in der hello.c angepasst. Da steht jetzt "#include "spl.h"". Allerdings bekomm ich dennoch folgende Fehlermeldungen:

    Nach 2.: Das übliche mit "comment expected"

    31 warnings found. Code may be defective.
    

    Nach 3.: Und das obwohl ich die spl.h in den examples Ordner kopiert hab.

    hello.c:7:17: error: spl.h: No such file or directory
    hello.c: In function ‘main’:
    hello.c:15: error: ‘CHARACTER’ undeclared (first use in this function)
    hello.c:15: error: (Each undeclared identifier is reported only once
    hello.c:15: error: for each function it appears in.)
    hello.c:15: error: ‘romeo’ undeclared (first use in this function)
    hello.c:16: error: ‘juliet’ undeclared (first use in this function)
    hello.c:17: error: ‘ophelia’ undeclared (first use in this function)
    hello.c:18: error: ‘hamlet’ undeclared (first use in this function)
    hello.c:37: error: ‘second_person’ undeclared (first use in this function)
    hello.c:49: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:59: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:73: error: duplicate label ‘act_i’
    hello.c:29: error: previous definition of ‘act_i’ was here
    hello.c:75: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    hello.c:93: error: duplicate label ‘act_i_scene_i’
    hello.c:31: error: previous definition of ‘act_i_scene_i’ was here
    

    Nach 4.: Und das obwohl die hello.c in dem examples Ordner liegt.

    -bash: ./hello: No such file or directory
    

    Man man...zwei Wochen hab ich noch, dann muss es laufen 😃



  • Das bei 2. sind ja nur Warnungen, das muss nicht unbedingt etwas heißen. Bei 3. sind das aber Fehler, da geht's nicht weiter. Und natürlich wird deshalb auch kein Output produziert, den du mit 4. aufrufen könntest.
    Der erste Fehler ist aber immernoch "spl.h: No such file or directory". Kann gut sein, dass die ganzen Fehler danach darauf zurückzuführen sind. In der Zeile 7 der hello.c steht also

    #include "spl.h"
    

    und sowohl hello.c als auch spl.h sind im Ordner /Users/Manu/Desktop/spl-1.2.1/examples/?
    Dann verstehe ich nicht so ganz, warum er die Datei nicht findet. Bin etwas ratlos. Ich nutze GCC aber normalerweise auch nicht. Jemand anders eine Idee?



  • Das ganze hat mich jetzt interessiert. Unter OS X scheint SPL kaputt zu sein.
    Es gibt aber einen Fork der den Bug fixt:

    https://bitbucket.org/kcartmell/marlowe/downloads



  • Shade Of Mine schrieb:

    Das ganze hat mich jetzt interessiert. Unter OS X scheint SPL kaputt zu sein.
    Es gibt aber einen Fork der den Bug fixt:

    https://bitbucket.org/kcartmell/marlowe/downloads

    Und unter Linux ist es auch kaputt:

    ... Einige Warnings ...
    Error at line 90: 'act [roman number]' or 'scene [roman number]' expected
    

    Der angebliche Fix:

    gcc  grammar.tab.o scanner.o strutils.o -O2 -Wall -lfl -o spl2c
    grammar.tab.o: In function `report_warning':
    grammar.tab.c:(.text+0x8): undefined reference to `yylineno'
    grammar.tab.o: In function `report_error':
    grammar.tab.c:(.text+0x38): undefined reference to `yylineno'
    grammar.tab.o: In function `yyparse':
    grammar.tab.c:(.text+0x4d9): undefined reference to `yylex'
    grammar.tab.c:(.text+0x636): undefined reference to `yylineno'
    grammar.tab.c:(.text+0x6d0): undefined reference to `yylineno'
    grammar.tab.c:(.text+0x7b3): undefined reference to `yylineno'
    grammar.tab.c:(.text+0x880): undefined reference to `yylineno'
    grammar.tab.c:(.text+0x904): undefined reference to `yylineno'
    grammar.tab.o:grammar.tab.c:(.text+0x9d1): more undefined references to `yylineno' follow
    collect2: Fehler: ld gab 1 als Ende-Status zurück
    make: *** [spl2c] Fehler 1
    

    WTF?! 😕



  • Shade Of Mine schrieb:

    Das ganze hat mich jetzt interessiert. Unter OS X scheint SPL kaputt zu sein.
    Es gibt aber einen Fork der den Bug fixt:

    https://bitbucket.org/kcartmell/marlowe/downloads

    Ich weiß, ich hab das schon mal gefragt,ist aber keiner mehr drauf eingegangen. Was genau macht dieser Fork? Habs runtergeladen, hat mir nach dem entpacken einen Ordner erstellt der fast die Struktur meines spl Ordners aufweist. Ich muss dann quasi in diesen neuen Ordner navigieren oder? Hab ich probiert, geht auch nicht 😞

    Würde SPL dann unter Windows (hab leider nur Bootcamp) laufen, wenn schon nicht unter OSX?

    Wär echt sch*** wenn ich das nicht hin krieg fürs Referat 😞 Aber wenns nicht geht, gehts eben nicht 😞



  • Ok, mach mal folgendes im Terminal
    1. Navigiere dich mit cd zu dem Ordner, der durch das Entpacken des Forks erstellt wurde (du weißt inzwischen wie das geht, oder?) 1
    2. Gib "ls <ENTER>" ein. Nun solltest du mehrere Dateien aufgelistet bekommen, unter anderem auch eine Datei mit dem Name "Makefile". ( Das ist nur ein Test, ob du im richtigen Verzeichnis bist. )
    3. Tippe: make <ENTER>
    4. Falls bei Schritt 3 Fehlermeldungen auftreten, poste alles, was nach dem Eingeben von "make" ausgegeben wird.
    5. Du solltest nun einen Ordner mit dem Namen "spl" haben, der sich in dem Verzeichnis befindet, in das du die Dateien entpackt hast. Darunter befinden sich 3 Unterordner: lib, bin und include. Ich weiß leider nicht, wohin man die Dateien unter Mac OSX kopieren muss.

    ~[h]1[/h]Falls du es noch nicht weißt, es funktioniert so: du gibst cd PFAD <ENTER> ein, wobei du PFAD durch den Pfad zu dem Ordner, wohin du dich navigieren willst, ersetzt.~



  • pyhax schrieb:

    Ok, mach mal folgendes im Terminal
    (du weißt inzwischen wie das geht, oder?

    Ja, das weiß ich 😋 So viel hab ich schon mitbekommen 😃

    pyhax schrieb:

    2. Gib "ls <ENTER>" ein. Nun solltest du mehrere Dateien aufgelistet bekommen, unter anderem auch eine Datei mit dem Name "Makefile". ( Das ist nur ein Test, ob du im richtigen Verzeichnis bist. )

    Tut perfekt, Makefile ist auch vorhanden 🙂

    pyhax schrieb:

    3. Tippe: make <ENTER>

    MacBP:marlowe-1.0 Manu$ make
    mkdir -p spl/bin spl/include spl/lib
    cp -pf spl2c spl/bin
    cp -pf spl.h spl/include
    cp -pf libspl.a spl/lib
    make -C examples all
    make[1]: Nothing to be done for `all'.
    MacBP:marlowe-1.0 Manu$
    

    scheinbar wird trotz vorhandenem Makefile nichts ausgeführt 😞

    pyhax schrieb:

    5. Du solltest nun einen Ordner mit dem Namen "spl" haben, der sich in dem Verzeichnis befindet, in das du die Dateien entpackt hast. Darunter befinden sich 3 Unterordner: lib, bin und include. Ich weiß leider nicht, wohin man die Dateien unter Mac OSX kopieren muss.

    den hab ich 🙂 Ich muss die Dateien des spl-Ordners doch dann durch dies ersetzen oder nicht?



  • Dann bist du fertig.

    Wie schon weiter vorne im thread beschrieben: mit spl2c die .c Datei erstellen und mit gcc diese kompilieren.

    im ordner examples liegen uebrigens alle Beispiele als .spl und .c und executeable.

    Der Fork fixt den Code. SPL ist naemlich kaputt und wird nicht gewartet.



  • Shade Of Mine schrieb:

    Dann bist du fertig.

    Wie schon weiter vorne im thread beschrieben: mit spl2c die .c Datei erstellen und mit gcc diese kompilieren.

    im ordner examples liegen uebrigens alle Beispiele als .spl und .c und executeable.

    Dann sollte ich jedenfalls fertig sein...Krieg aber immer noch diese Meldung:

    hello.c:7:17: error: spl.h: No such file or directory
    

    Bei mir liegt in dem Ordner nach wie vor nur die hello.c und alle andere als spl.



  • Füge mal dem Aufruf vom GCC noch -I/Pfad/zu/Ordner/in/dem/sich/spl.h/befindet hinzu.



  • pyhax schrieb:

    Füge mal dem Aufruf vom GCC noch -I/Pfad/zu/Ordner/in/dem/sich/spl.h/befindet hinzu.

    Also nur mal zur Zusammenfassung, das Ganze schaut dann so aus:

    1.  ls
    2.  make
    3.  sudo -i
    4.  cd /Users/Manu/Desktop/spl-1.2.1/examples
    5.  spl2c < hello.spl > hello.c
    6.  gcc hello.c -lspl -o hello -I//Users/Manu/Desktop/spl-1.2.1
    7.  ./hello
    

    Komischerweise habe ich nachdem ich den oben genannten Aufruf hinzugefügt hab, die Dateien "fibonacci", "fibonacci2" und "guess" als Ausführbare Unix-Dateien in dem examples Ordner.

    Gebe ich

    ./guess
    

    ein, wird mir "500?" im Terminal ausgegeben.
    Bei den beiden fibonacci erhalte ich nur Leerzeilen.

    Was genau soll aus dem spl Code eigentlich rauskommen? Hab da ja mal ganz am Anfang dieses Video gepostet und über den Aufbau gelesen. Werden mir Wörter in die mathematischen Vorgänge umgewandelt oder was genau kommt da raus?



  • Update: Öffne ich die Dateien im spl Ordner mit Rechtsklick - öffnen mit Terminal, dann krieg ich folgende Dinge:

    Für fibonacci:

    /Users/Manu/Desktop/spl-1.2.1/examples/fibonacci ; exit;
    MacBP:~ Manu$ /Users/Manu/Desktop/spl-1.2.1/examples/fibonacci ; exit;
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 logout
    
    [Prozess beendet]
    

    Für fibonacci2

    MacBP:~ Manu$ /Users/Manu/Desktop/spl-1.2.1/examples/fibonacci2 ; exit;
    0
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    89
    144
    233
    377
    610
    987
    1597
    2584
    4181
    6765
    10946
    17711
    28657
    46368
    75025
    121393
    196418
    317811
    514229
    832040
    1346269
    2178309
    3524578
    5702887
    9227465
    14930352
    24157817
    39088169
    63245986
    102334155
    165580141
    267914296
    433494437
    701408733
    logout
    
    [Prozess beendet]
    

    und für guess noch immer

    500?
    

    Ist das dann das endgültige Ergebnis? 😮



  • Tja, hättest du nicht so oft die Schule geschwänzt, wüsstest du was die Fibonacci-Reihe ist und wüsstest dass der Output korrekt ist.



  • Ethon schrieb:

    Tja, hättest du nicht so oft die Schule geschwänzt, wüsstest du was die Fibonacci-Reihe ist und wüsstest dass der Output korrekt ist.

    Meine Fehltage haben sich eher auf Mathe beschränkt 😉 Spaß 😃 Au man...fertig...dann hab ich ja was zum zeigen. Aber wer so ne Sprache schreibt, muss schon auch bissl krass drauf sein 😃 Wisst ihr, ob man damit richtige Programme schreiben kann? Bei diesem Fibonacci Code wird ja jetzt im Prinzip nur der Shakespeare Text (gute/schlecht Nomen, Adjektive und dazugehörige Regeln) in Zahlen umgewandelt und ausgegeben oder nicht?

    Sorry für eure strapazierten Nerven bei dieser schweren Geburt 😃
    Ihr seid hammer!!! 👍 👍 👍

    DANKE! 🙂



  • Glückwunsch.

    Ne, der Text wird nicht in Zahlen umgewandelt. Das spl2c Programm wandelt ihn in C um, und GCC wandelt C in Instruktionen für den Computer um. Ich rechne einfach mal damit, dass Shakespeare "turing-vollständig" ist, man also alles damit berechnen kann. (Was berechenbar ist.) Das bedeutet auch, dass man theoretisch* wohl so ziemlich alles damit programmieren kann. Ob man das will, ist aber eine andere Frage. 😉

    * Tja, auf beliebige OS Schnittstellen zugreifen wird wohl schwer. Ob man mit Shakespeare ein eigenes OS basteln kann?



  • Vielen Dank (nochmal an euch alle) 🤡

    Mein nächster Plan ist dann ein OS 😃 Spaß beiseite, aber ich fand das Video, das ich am Anfang gepostet hab ziemlich cool. Glaub, das zeig ich evtl sogar im Referat weil es ziemlich gut repräsentiert,wie die Sprache aufgebaut ist. Mal sehen...Es läuft 😃


Anmelden zum Antworten