私は C が初めてで、Scheme のインタープリターの作成に取り組んでいます。構造体を通過する適切な printList メソッドを取得しようとしています。
プログラムは次のような入力を受け取ります。
(a (bc))
内部的には次のように表します。
[""][ ][ ]--> [""][ ][/]
| |
["A"][/][/] [""][ ][ ]--> [""][ ][/]
| |
["B"][/][/] ["C"][/][/]
今のところ、プログラムに入力を取り込ませ、適切なセル構造を内部で作成し、セル構造を出力して、それによって取得したいだけです。
(a (bc))
最後に。
ここに私の構造体があります:
typedef struct conscell *List;
struct conscell {
char symbol;
struct conscell *first;
struct conscell *rest;
};
void printList(char token[20]){
List current = S_Expression(token, 0);
printf("(");
printf("First Value? %c \n", current->first->symbol);
printf("Second value? %c \n", current->rest->first->first->symbol);
printf("Third value? %c \n", current->rest->first->rest->first->symbol);
printf(")");
}
メイン メソッドでは、最初のトークンを取得して呼び出します。
printList(トークン);
サブリストの値を再度テストしましたが、機能していると思います。ただし、構造全体をトラバースする方法が必要になります。私のprintListコードをもう一度見てください。(a (bc)) リストの値を手動で取得するには、印刷呼び出しを入力する必要があります。したがって、次の出力が得られます。
最初の値?a
最初の値?b
最初の値?c
それは私が望むものですが、構造がどれほど複雑であっても、ループを使用してそれを実行するメソッドが必要であり、適切な場所にブラケットを追加する必要があるため、最終的には次のようになります。
(a (bc))
これは入力と同じです。
誰でもこれで私を助けてもらえますか?