2010-11-29 3 views
1

で検索する:答えで提案されているようにJavaの正規表現を使用すると、次の文字列を進みますどのように文字列

​​

は、ノードのリストを取得します。

+0

どの文字列のリストを取得するには? p( 'と')の間の値は?ユニークでもユニークでもない? –

+0

これは文字列のようには見えません。それは二重引用符で囲まれていますか? – Skilldrick

+0

探している出力はどれくらいですか?あなたが与えたあなたの事例に必要な正確な出力を与えることができますか? –

答えて

4

表現がどの程度複雑になるかによって異なります。私は間違いなく適切なパーサを書くでしょう。それだけで、私はそれを正しく行ったと確信できるからです。さらに、文字列を抽象構文ツリーに解析し、最後にオブジェクトのツリーを自動的に作成します。

class Node { ... } 

class StringLiteral extends Node { 
    public String getValue() { ... } 
} 

class Term extends Node { 
    public String getName() { ... } 
    public int getArity() { ... } 
    public Node getArgument(int index) { ... } 
} 
+0

はい、あなたは正しいです。しかし、今ではどのようにこれらのノードを得るために文字列を解析するのですか? –

+0

基本的な考え方は、あなたが興味を持っている構文要素ごとに1つのメソッドを持つ 'Parser'クラスを書くことです。' List parseArray() '、' Term parseTerm() '、' StringLiteral parseStringLiteral() ' 、 'Node parseExpression()' 'parseArray'の実装は' read '(' [])と似ています。 while(next()!= ']'){parseExpression();} } read( ')'); '。これらのメソッドは、基本的にこれらの操作のシーケンスまたは大きなスイッチ文を含み、入力からの次の文字に応じて、次に解析する内容を決定します。 –

関連する問題