2016-06-18 13 views
1

Ich habe Flex, Bison und Dev C++ in C: \ korrekt heruntergeladen und installiert. Dann habe ich versucht, myfile.l in der Eingabeaufforderung zu kompilieren, aber es gibt den Fehler:Wie kompiliere ich eine Lex-Datei unter Windows?

Was ist das Problem?

+1

Ganz einfach. Sie haben keine Datei namens myfile.l im aktuellen Verzeichnis. Auf jeden Fall heißt es myfile.l.txt? –

+0

Ja, es ist myfile.l.txt, ich konnte es nicht als myfile.l speichern. Wie man es mit .l Erweiterung speichert, bin ich sehr neu dazu & habe gesucht, aber keine passende Lösung bekommen. Jetzt benutze ich "Flex Windows", damit ich die Datei mit der Erweiterung .l speichern kann. – TRuwandi

Antwort

1

Ich kann von Ihrer Frage sehen, dass Sie ein Anfänger sind, der etwas Anweisung benötigt, also was folgt, ist im Tutorial-Stil. Ich hoffe, es macht dir nichts aus. Viele meiner Schüler haben das gleiche Problem wie beim ersten Start.

Die Dateien den Code für flex, Bison oder der Compiler gcc (oder g ++) sind nur Textdateien und nicht einige speziell codierte Form der Datei enthält. Sie werden nur something.l, something.y und something.c (oder something.cpp) durch Konvention benannt. Wir könnten sie einfach something.txt oder sogar something.l.txt nennen, wenn wir wollten. Der Grund dafür, dass sie so benannt werden, ist, dass alle verschiedenen Komponenten eines Programms unterschieden werden können, ohne den Namensraum zu überladen. Wenn wir also in Flex und Bison, ein Projekt, wie einige Hausaufgaben gemacht haben, können wir das Wort Hausaufgaben als Basisnamen verwenden und die folgende Datei gesetzt haben:

homework.l  <-- The lexer source file for flex created for the homework 
homework.y  <-- The parser source file for bison created for the homework 
homework.cpp <-- The C++ source file for g++ created for the homework 
homework.obj <-- The object file created by g++ 
homework.exe <-- The final windows executable created by g++ 

(Es wird noch weitere viele sein Dateien, aber ich werde das für jetzt überspringen).

Da die Quelldateien nur Formulare einer Textdatei sind, können sie von einem Texteditor erstellt werden. Sie haben angegeben, dass Sie Dev C++ verwenden, eine IDE (Integrated Development Environment), die einen Texteditor, einen Compiler und einen Debugger in einem Paket vereint. Der Textbearbeitungsteil funktioniert genau wie jeder andere Texteditor, z. B. Notepad, NotePad++, vim, emacs oder eines der unzähligen anderen Editor-Tools.

Gewöhnlich speichert ein Texteditor-Tool unter Windows standardmäßig eine Textdatei mit dem Postfix-Sprachcode .txt. Hier ist ein Beispiel Dialog eine solche Datei zu speichern:

image of notepad++ save as file browser

Sie können sehen, dass, wenn ich meine Datei gespeichert, die ich SOlexer.l genannt durch Drücken der         Speichern         Taste, Ich würde eine Datei mit dem Namen SOlexer.l.txt bekommen, weil der Standard ist, immer eine Datei mit dem Suffix .txt zu machen.

Jetzt muss dies kein Problem sein. Wenn ich versuche flex aufzurufen, wie Sie getan haben:

$ flex SOlexer.l 
flex: can't open SOlexer.l 

würde ich die gleiche Fehlermeldung.Allerdings kann ich einfach anrufen flex mit dem tatsächlichen Dateinamen verwendet, und es funktionieren würde:

$ flex SOlexer.l.txt 
$ 

Alternativ könnte ich die Datei umbenennen, und dann verwenden:

$ rename SOlexer.l.txt SOlexer.l 
$ flex SOlexer.l 
$ 

Problem gelöst!

Wie Sie jedoch herausgefunden haben, ist es am besten, die Datei zuerst mit dem gewünschten (und bequemeren) Namen zu erstellen. Um das zu tun, muss nur eine andere Auswahl treffen aus dem Menü beim Speichern der Datei, wie folgt aus:

image of notepad++ save as file browser pull down

Wenn wir klicken auf Alle Typen können wir die Datei erstellen, ohne (*. *) das .txt Suffix. Dies sollte auch für die meisten ähnlichen Tools funktionieren.

Um meinen Schülern zu helfen, die Schwierigkeiten mit Flex und Bison unter Windows hatten, habe ich eine series of video tutorials gemacht. Sie können diese auch gerne verwenden.

Abschließend, obwohl Sie Probleme hatten, Ihre Flex-Datei zu bauen, Ihr Problem hat nichts mit Flex oder Bison zu tun, aber ein einfaches Anfänger-Problem mit dem Lernen, wie man Dateien auf einem Windows-System erstellen und bearbeiten.

+0

Es ist großartig, vielen Dank – TRuwandi