2017-10-02 10 views
0

Scannerクラスを使用して文法を読む方法はありますか?スキャナを使用して再帰文法を読む方法

このファイルがあるとします。

私はクラスオブジェクトを作成し、その属性と操作を満たすことができる論理的な方法がありますか。 私はuseDelimiter( ";")を使ってみましたが、完全に分離せずにクラスを返します。リセットする必要がありますか?これを処理する実際の方法は何ですか?

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

CLASS AUDIENCE 
ATTRIBUTES 
     name : String 
OPERATIONS 
; 

は、私はすでにオブジェクトを作成している、例えば私のクラスのクラスは、これらの属性

public final String Identifier; 
public final Class_Content class_content; 

class_contentは属性と操作(物事の再帰的な方法)

答えて

1

が含まれていますですScannerクラスを使って文法を読む方法がありますか?

ほとんどの場合、文法は読んでいません。たぶんのファイルを読んで、が文法に合致するのはです。

簡単な呼び出しや、java.util.Scannerへの呼び出しで、本質的に再帰的な文法に準拠したテキストを読むことはできません。パーサを構築する必要があります。

あなたが与えた例は、それを記述するために再帰的文法が必要ないように見えます。しかし、私はパーサーを書くか生成するのがおそらく最善の解決策だと思います。

あなたは1を書きたい場合は、ウェブ上のチュートリアル/例があります

あなたは1を生成したい場合は、あなたが学び、使用することができますJavaCCやAntLRなどのパーサジェネレータツール。


1 - しかし、あなたが実際に文法(G)を読みたいんイベントでは、問題は基本的に同じです。文法はある言語で表現されなければならず、その言語には文法(GG)があります。文法GGのパーサーを使って、文法Gを読み/解析する必要があります。例えば、EBNF表記法は簡単な文法を持っているので、EBNFで表現された文法を読むためには、EBNFのパーサーが必要です。

+0

あなたはそれが再考なしで行われる可能性があるので、説明されている特定のサイトがありますか?私はそれが再帰的だと言ったとき、それはすべてのものが別のものを与えるようなものです。 – hehexd

+0

私が提供したリンクを読んでください。非再帰文法用のパーサは、再帰呼び出しがないRDパーサの単純化された形式です。 –

関連する問題