私はJavaで簡単なPrologインタープリターを書くことに取り組んでいます。
「リスト構文」で文字列のhead要素またはtail要素の最初の要素の最後の文字インデックスを見つけるにはどうすればよいですか?
リストの構文は次のようになります。
(X)
(pab)
(func(func2 a)(func3 XY))
(equal eve(mother cain))
これらの各文字列のヘッドは、次のとおりです。
ヘッド: "X"、インデックス:1
ヘッド: "p"、インデックス:1
ヘッド: "func"、インデックス:4
ヘッド: "等しい"、インデックス:5
基本的に、最初の「(」の直後にあり、スペースまたは終了「)」のいずれか早い方で終わる文字列を一致させる必要があります。head要素の最後の文字の文字インデックスが必要です。
Javaでこのインデックスを照合して取得するにはどうすればよいですか?
ブラブスターのソリューションは本当に近いです。ただし、次の場合を考えてみましょう:
((b X)Y)
ヘッド要素は(bx)です。スキャナーの区切り文字から「(」を削除して修正しようとしましたが、「b」と「x」の間にスペースがあるため、問題が発生します。
同様に:((((b W)X)Y)Z)
頭は(((bw)x)Y)です。