2017-04-17 1 views
2

Ich versuche, ein Java-Programm, das mein eigenes Format in Java-Datei analysieren. Zum Beispiel, wenn ich eine Datei mitWie eigene Sprache zu Java-Datei zu analysieren

show("Hello World"); 

und speichern Sie diese Datei als hallo. [My_own_extension] und las von meinem Programm und Export so etwas schreiben,

class Hello { 
public static void main(String[] args) { 
    System.out.println("Hello World"); 
    } 
} 

lese ich viele Artikel über Web . Aber sie schreiben über javacc, kompilierende Technik, lexikalische Analyse und so weiter. Aber das einzige, was ich tun möchte, ist
1. Lesen Sie die Datei
2. Test, ob die Datei Übereinstimmung mit meinen Regeln
3. Schreib (Ausgang) .java-Datei und .class-Datei ist
Wie kann ich tun Dies?
Kann ich das mit der folgenden Art und Weise,
1. Verwendung java.io oder java.nio Pakete (lesen oder eine Datei schreiben)
2. meine eigene Logik für meine Regeln schreiben (können einfache Java-Code sein)
Ich meine nicht, ich erstelle eine neue Programmiersprache und ich bin kein Java-Guru. Ich will nur wissen.

+0

Sie würden die Datei genauso lesen, wie Sie eine Textdatei lesen. Nehmen wir an, Sie Datei ext ist .me2 dann würden Sie "theNameOfYourFile.me2" beim Lesen der Datei verwenden. – Sedrick

+2

Es klingt, als ob Sie einen Parser/Compiler irgendeiner Art erstellen möchten. Dies könnte eine zu weite Frage sein. –

+0

@TimBiegeleisen Kann ich mein eigenes Programm schreiben, um einen Parser ohne Werkzeuge wie javcc zu erstellen? –

Antwort

1

Kann ich mein eigenes Programm schreiben, um einen Parser ohne Werkzeuge wie javcc zu erstellen?

Ja, Sie können . Tatsächlich hat uns der Dozent in meinem Honours-Kurs (vor fast 40 Jahren) den Auftrag gegeben, einen rekursiven Descent-Parser für Pascal von Grund auf zu implementieren. IIRC es war eine Menge Arbeit.

Aber wenn Sie es ernst meinen, ein Parser-Generator wird Ihnen einen viel besseren Parser für viel weniger Aufwand geben.

Die Übung, die ich oben erwähnte, war Teil eines ca. 10-wöchigen "Honours" -Level-Kurses über Compiler Construction. Stellen Sie sich also nicht vor, dass Sie einen Parser von Grund auf neu lernen müssen, um javacc lesen zu können.


1 - Alle Aufgaben, die ein Computer, ein Mensch tun kann ... oder groß genug Team von Menschen ... kann auch tun. Es könnte unrealistisch lange dauern und eine unrealistische Menge Geld kosten, aber es ist möglich. In dieser Fall ist es eine realistische Aufgabe. So wurden alle Parser erstellt, bevor die first parser generators erfunden wurden. In der Tat dauerte es auch danach lange, bis sich die PGs durchgesetzt hatten.

+0

Das Lernen von javacc oder einem Parser-Generator ist geeigneter als das Erstellen von Grund auf neu? –

+0

Es hängt davon ab, was Ihr Ziel ist ... –