2017-10-02 1 views
0

Gibt es eine Möglichkeit, die Scanner-Klasse zum Lesen einer Grammatik zu verwenden?Wie kann man mit dem Scanner eine rekursive Grammatik lesen?

Sagen wir, wir haben diese Datei.

Gibt es einen logischen Weg, der es mir ermöglicht, ein Klassenobjekt zu erstellen und auch seine Attribute und Operationen zu füllen. Ich habe versucht, mit dem useDelimiter (";"), aber die volle Klasse zurückgibt, ohne es gut zu trennen, sollte ich zurücksetzen? Was ist der praktische Weg, dies zu behandeln?

CLASS Team 
ATTRIBUTES 
     name: String 
OPERATIONS 
     nb_players() : Integer, 
     trainer() : String 
; 

CLASS AUDIENCE 
ATTRIBUTES 
     name : String 
OPERATIONS 
; 

ich habe bereits die Objekte, zum Beispiel meiner Klasse Klasse hat diese Attribute

public final String Identifier; 
public final Class_Content class_content; 

class_content die Attribute und Operationen (eine rekursive Art und Weise, Dinge zu tun) enthält

Antwort

1

Sind Gibt es eine Möglichkeit, die Scanner-Klasse zum Lesen einer Grammatik zu verwenden?

Sie wollen fast sicher keine Grammatik lesen. Es ist am wahrscheinlichsten , dass Sie eine Datei lesen möchten, die zu einer Grammatik entspricht.

Sie können Text, der einer inhärent rekursiven Grammatik entspricht, nicht mit einem einfachen Anruf oder unter java.util.Scanner lesen. Sie müssen einen Parser erstellen.

Das Beispiel, das Sie angegeben haben, sieht nicht so aus, als brauche es eine rekursive Grammatik, um es zu beschreiben. Ich denke jedoch, dass das Schreiben oder Generieren eines Parsers wahrscheinlich die beste Lösung ist.

Wenn Sie einen schreiben möchten, gibt es Tutorials/Beispiele auf dem Netz:

Wenn Sie eine erstellen möchten, können Sie lernen und verwenden Parser-Generator-Tool wie JavaCC oder AntLR.


1 - Aber in dem Fall, dass Sie wirklich wollen, eine Grammatik (G) lesen, dann ist das Problem ist im Grunde das gleiche. Die Grammatik muss in einer Sprache ausgedrückt sein, und diese Sprache hat eine Grammatik (GG). Sie müssen Ihre Grammatik G mit einem Parser für die Grammatik GG lesen/analysieren. Zum Beispiel hat die EBNF-Notation eine einfache Grammatik. Um eine in EBNF ausgedrückte Grammatik zu lesen, benötigen Sie einen Parser für EBNF.

+0

Da Sie denken, dass es ohne Wiederholung getan werden könnte, haben Sie eine bestimmte Seite, wo es erklärt wird? Wenn ich sagte, dass es rekursiv ist, ist es so, als ob alles etwas anderes gibt. – hehexd

+0

Lesen Sie die Links, die ich zur Verfügung gestellt habe. Ein Parser für eine nicht-rekursive Grammatik ist nur eine vereinfachte Form eines RD-Parsers ohne die rekursiven Aufrufe. –

Verwandte Themen