CSV データのパーサーを生成する必要があります。どういうわけか、CSVデータのBNF、EBNFを書くことができましたが、これをANTLR文法(パーサージェネレーター)に変換する方法がわかりません。たとえば、EBNF では次のように記述します。
[{header entry}newline]newline
しかし、これを ANTLR で記述してパーサーを生成すると、エラーが発生し、括弧が使用されません。私は ANTLR の専門家ではありません。
こんにちは、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
,...