0
ファイルの次の行を解析して、学生名と年齢を別々に識別したいと考えています。ANTLRの中間にスペースを含む文字列を扱う方法
Student Tim Jonh (25)
Student Mack Woo (30)
年齢は数字で、名前には空白が含まれている場合とそうでない場合があります。私は上記のANTLR文法の後に作成しました。
しかし、これは複数の単語として名前を解析します。しかし、私はそれを "Tim Jonh"や "Mack Woo"と同じように中央のスペースで取りたいと思っています。つまり、途中に2つのスペースがあれば、それをそのまま読むべきです。
私は文法をどのように変更するべきかアドバイスしてください。
これは質問のために用意されたものであり、実際にはアプリケーションに複数の単語が読み込まれていると考えてください。
代わりに 'studentname::WORD +;'を使用します。これは簡単で、任意の数の空白にも対応します。任意の2つの名前部分の間に2番目のスペース文字を追加すると、指定されたソリューションが失敗します。 –
@MikeLischkeこれは学生名ごとに2つのトークンを生成します。それともOPが最初に投稿したものと違うでしょうか?また、 'WS'が' 1..n'の繰り返しとして定義されているので、第2のスペースはそれを壊さないでしょう。 –
あなたは正しいです、そして、すべてが1つのトークンにとどまらなければならないかどうかは、OPの使用シナリオに依存します。スペースはほぼすべての言語区切りになっているので、それはまれです。 –