私はこのプロジェクトをどこから始めるべきかを理解しようとしています。おそらく、誰かが私を正しい方向に導くことができます。
通訳を書かなければならない小さな言語が与えられました。言語は、括弧内の式のいずれかで構成されます。
(integer integer operator)
または、次の形式の式で構成される算術 IF ステートメント:
IF exp1 exp2 exp3 exp4
ここで、exp1 が負の場合は exp2 が返され、exp1 がゼロの場合は exp3 が返され、exp1 が正の場合は exp4 が返されます。
演算子は + または x (それぞれ加算と乗算) です。
スキャナー/パーサーを一緒に実装し、次に結果を出力するインタープリターを実装する必要があります。インタープリターの部分は難しくありませんが、スキャン/解析プロセスを開始する方法がわかりません。
私は Java を使用して開始し、入力を収集して文字列に格納する Scanner オブジェクトを用意しました。次に、区切り文字として何も使用せずに String を String 配列に分割します (これにより、各文字、記号、スペースなどが文字列の独自のインデックスに格納されます)。ここからどこへ行くべきか分からないので、これはこれを行う最善の方法ではないかもしれません。私が把握できない部分は、この構文に従わない場合にエラーを返す方法、または括弧や IF などを検出する方法です。
前の段落で説明したコードのスニペットを次に示します。
public void run() {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String sLine = sc.nextLine();
String[] scanned = sLine.split("");
入力例:
(7 2 +)
Output: 9
IF (2 -2 +) (5 2 +) (5 -2 x) (5 2 x)
Output: -10
誰かが私にとって良い方向性を持っているなら、共有してください. :)