"123456abcd9876az45678"のような文字列を解析できるようにしたいと考えています。 BNFはこのようなものです:、これは得られるはず理想的デリミタなしのスキャナ
Scanner s = new Scanner("-123456abcd9876az45678");
System.out.println(s.nextInt());
while (s.hasNext("[a-z]+")) {
System.out.println(s.next("[a-z]+"));
System.out.println(s.nextInt());
}
:
number: ? definition of an int ?
word: letter { , letter }
expression: number { , word , number }
しかしクラスjava.util.scannerは私が次の操作を行うことはできません
-123456
abcd
987
az
45678
私は本当にjava.util.Scannerが私を助けてくれることを望んでいましたが、自分のスキャナを作成する必要があるように見えます。 Java APIに既に存在するものはありますか?
質問が多すぎます。したがって、すべての回答は質問には有効ですが、私の問題には有効ではありません。
私はこのコードが行うことになっているのか分からないが、私はあなたが[AZ] *の代わりに持っている必要があります想像[AZ]は –
大丈夫、完全な一般的なケースは以下の通りです「4D8 - 1D4 + 20」 2つのダイスロール+定数として解析されます。より多くのサイコロがあるかもしれませんが、スペースがないかもしれません。要するに、デリミタなしでオンザフライでトークンを変更したいのです。私はまた、すべてのこれらの評価関数を使用して私を助けていないので、通常のダイス表記スレッドにリダイレクトされることは望ましくありません。私はサイコロの表現の木を作りたいと思っています。 –