public class SyntaxConverter extends Object
構文定義と文を与えると、構文定義に従い文を解析し、解析結果の 構文木をXML文字列またはJSON文字列にして返します。
構文定義法、入力解析法などの総合的な説明を パッケージ otsu.symphonieの説明 で行ってありますので、まずご覧ください。
標準的使い方
標準的な使い方は次のようになります。
SyntaxConverter syn= new SyntaxConverter(); // 変換機生成 syn.readSyntaxFile("syntax.sn","utf-8"); // 構文定義読み込み String xml= syn.parseFile("data.txt","utf-8" ,syn.AS_XML); // 文解析(XMLで取得) String json= syn.parseFile("data.txt","utf-8" ,syn.AS_JSON); // 文解析(JSONで取得)
ただしjson形式は現在試験中であり、文字列型、数値型の表現分けなどの変更 が入る可能性があります。
symphonieで用意されるその他の解析法
SyntaxConverterの他、symphonieには
(1)構文解析を行い要素毎にアプリケーションに情報を上げる
SyntaxReader
(2)構文木をXML-DOMで取得する
SyntaxDom
(3)ファイルを解析し構文木を表示するコマンド
java -jar symphonie.jar syntax-check
(4)構文解析アプレット(試験中)
SymphonieApp
などを用意してあります。。
修飾子とタイプ | フィールドと説明 |
---|---|
static int |
AS_JSON
json文字列を得る
|
static int |
AS_XML
xml文字列を得る(デフォルト)
|
static int |
KEEP_REDUNDANCY
トークン値とトークン名が同じでも表示
|
static int |
NO_ESCAPE
XMLで&を実体参照エスケープ(&)にしない
|
static int |
NO_INDENT
インデントを付けない
|
static int |
WITH_BEGIN_END
トークンをタグで囲む
|
static int |
WITH_TYPE
(未)json時に値をタイプ別に書き分ける.デフォルトでは全て文字列
|
コンストラクタと説明 |
---|
SyntaxConverter() |
修飾子とタイプ | メソッドと説明 |
---|---|
String |
parse(BufferedReader br_,
long option_)
構文解析を行い、構文木を文字列(XMLまたはjson)で得る.
|
String |
parseFile(String fileName_,
long option_)
指定ファイルの構文解析を行い、構文木を文字列(XMLまたはjson)で得る.
|
String |
parseFile(String fileName_,
String charSet_,
long option_)
指定ファイルの構文解析を行い、構文木を文字列(XMLまたはjson)で得る.
|
String |
parseString(String[] text_,
long option_)
指定文字列の構文解析を行い、構文木を文字列(XMLまたはjson)で得る.
|
String |
parseString(String text_,
long option_)
指定文字列の構文解析を行い、構文木を文字列(XMLまたはjson)で得る.
|
Object |
parseToObject(BufferedReader br_)
解析結果をObjectで得る(試験中).
|
Object |
parseToObject(String text_)
解析結果をObjectで得る(試験中).
|
static void |
printJSON(PrintWriter pr_,
SyntaxReader sr_,
long option_,
boolean dispName_)
構文解析を行いjson出力を得る(試験中)。
|
void |
readSyntax(BufferedReader br_)
構文定義を読み込む
|
void |
readSyntaxFile(String fileName_)
構文定義ファイルを読む.
|
void |
readSyntaxFile(String fileName_,
String charSet_)
構文定義ファイルを読む.
|
void |
readSyntaxString(String text_)
構文定義文字列を読む
|
void |
readSyntaxString(String[] text_)
構文定義文字列配列を読む.
|
public static final int NO_ESCAPE
public static final int WITH_BEGIN_END
public static final int WITH_TYPE
public static final int KEEP_REDUNDANCY
public static final int NO_INDENT
public static final int AS_JSON
public static final int AS_XML
public void readSyntaxFile(String fileName_) throws Exception
fileName_
- 構文定義ファイルException
- 読み込み/解析失敗public void readSyntaxFile(String fileName_, String charSet_) throws Exception
fileName_
- 構文定義ファイルcharSet_
- ファイルの文字コードException
- 読み込み/解析失敗public void readSyntaxString(String text_) throws Exception
text_
- 構文定義記述Exception
- 解析失敗public void readSyntaxString(String[] text_) throws Exception
配列の各要素は行と見なされます。文字列自体に改行は入れないでください。
text_
- 構文定義記述Exception
- 解析失敗public void readSyntax(BufferedReader br_) throws Exception
br_
- 構文定義の媒体Exception
- 解析失敗public String parseFile(String fileName_, long option_) throws Exception
予めreadSyntax関数群
でセットされた
構文定義に基づき構文解析を行い、結果を
XML文字列またはjson文字列による構文木で得ます。
option_で表示形式が指定できます。
値 | 説明 |
AS_JSON | 結果をjsonで得ます。 |
AS_XML | 結果をXMLで得ます。これはデフォルトであり、指定の必要はありません。 |
NO_ESCAPE | XML出力で&を実体参照エスケープ(&)しません。 |
WITH_BEGIN_END | XML出力でトークンをタグで囲みます。 |
KEEP_REDUNDANCY | XML出力でトークン名とトークン値が同じでもトークン値を 省略しません。WITH_BEGIN_END指定の場合常にトークン値は 出ますので、この指定は意味を持ちません。 |
NO_INDENT | XML,JSON両出力共通で、インデント無しにします。 |
fileName_
- 入力ファイル名option_
- 表示オプションException
- 解析失敗public String parseFile(String fileName_, String charSet_, long option_) throws Exception
fileName_
- 入力ファイル名charSet_
- 入力ファイルの文字コードoption_
- オプションparseFile(String,long)
参照Exception
- 解析失敗public String parseString(String text_, long option_) throws Exception
text_
- 解析すべき文字列option_
- オプションparseFile(String,long)
参照Exception
- 解析失敗public String parseString(String[] text_, long option_) throws Exception
文字列配列による文を解析します。
配列の各要素は行と解釈されます。文字列自体には改行コードを入れない
でください。
text_
- 解析すべき文字列option_
- オプションparseFile(String,long)
参照Exception
- 解析失敗public String parse(BufferedReader br_, long option_) throws Exception
br_
- 解析すべき文の媒体option_
- オプションparseFile(String,long)
参照Exception
- 解析失敗public Object parseToObject(BufferedReader br_) throws Exception
解析結果は次の型のObject構成となります。
br_
- 解析すべき文の媒体Exception
- 解析失敗public Object parseToObject(String text_) throws Exception
解析結果は次の型のObject構成となります。
text_
- 解析すべき文Exception
- 解析失敗public static void printJSON(PrintWriter pr_, SyntaxReader sr_, long option_, boolean dispName_) throws Exception
pr_
- 出力先sr_
- 構文定義と解析すべき文がセットされたSyntaxReaderoption_
- オプションparseFile(String,long)
参照dispName_
- 構造の要素として名前を出す。falseを指定することException
- 解析失敗