4

CSV データのパーサーを生成する必要があります。どういうわけか、CSVデータのBNF、EBNFを書くことができましたが、これをANTLR文法(パーサージェネレーター)に変換する方法がわかりません。たとえば、EBNF では次のように記述します。

[{header entry}newline]newline

しかし、これを ANTLR で記述してパーサーを生成すると、エラーが発生し、括弧が使用されません。私は ANTLR の専門家ではありません。

4

1 に答える 1

6

こんにちは、CSV データのパーサーを生成する必要があります ...

私が知っているほとんどの言語では、適切なサードパーティの CSV パーサーが既に存在します。つまり、車輪を再発明している可能性があります。

たとえば、EBNF では [{header entry}newline]newline を書きます。

ANTLR で同等のものは次のようになります。

((header entry)* newline)? newline

言い換えると:

                 | (E)BNF | ANTLR
-----------------+--------+------
'a' zero or once | [a]    | a?
'a' zero or more | {a}    | a*
'a' once or more | a {a}  | a+

括弧を使用してルールをグループ化できることに注意してください (サブルールと呼ばれるものです)。

'a' 'b'+

一致: ab, abb, abbb, ..., ながら:

('a' 'b')+

一致: ab, abab, ababab,...

于 2010-07-12T17:49:58.617 に答える