2

私はレキシカルを最初から作成していて、マッチングの部分に入ってい(")[\\w]+(")ます。この正規表現^(\")[\\w]+(\")$がありますが、文字列をキャッチできません。

SSCCE:

Map<String, String> lexicalMap = new HashMap<>();
// add all regex to `lexicalMap` via `lexicalMap.put([regex], [tokentype])`

// Tokenize the string format of the syntax to `List<String> tokens`
// List<String> tokens contains ["string", "data", "=", "test"] on the syntax: string data = "test"
for(String element : tokens) {
    for(String regex : lexicalMap.keySet()) {
        if(element.matches(regex))
            System.out.print(lexicalMap.get(regex) + " ");
    }
}
System.out.println();

REGEX:

identifier = ^[\\w]+$
operator = ^(\\=)$
string = ^(\")[\\w]+(\")$ // THE PROBLEM
keyword = ^(string)$

これが私がフォローしているケースの入力/出力です:

入力:

"test"
""
test
string data = "test"

出力:

string
string
identifier
keyword identifier operator string

更新日:2013年2月22日

  • SSCCEセグメントを追加しました。
4

1 に答える 1

1

何が起こったのかわかりませんが、正規表現をから^(\")[\\w]+(\")$に変更した後^(\")[\\w]*(\")?$は正しく機能しました。

于 2013-02-22T15:31:54.600 に答える