ラムダ計算を解析したいと思います。私はその用語を解析し、括弧の優先順位を尊重する方法を知らない。例:ラムダの構文解析方法
(lx ly (x(xy)))(lx ly xxxy)
私はこれを行う良い方法を見つけることはできません。私は適応アルゴリズムを見ることができません。 用語は、タイプ(APPLICATION、ABSTRACTION、VARIABLE)およびタイプ「struc term」の右と左のコンポーネント を持つ構造で表されます。
どうすればいいですか?
EDIT
再びお邪魔して申し訳ありませんが、私は本当に理解したいです。あなたが正しいかどうか私に知らせるために関数 "式()"を調べることができますか?
Term* expression(){
if(current==LINKER){
Term* t = create_node(ABSTRACTION);
get_next_symbol();
t->right = create_node_variable();
get_next_symbol();
t->left = expression();
}
else if(current==OPEN_PARENTHESIS){
application();
get_next_symbol();
if(current != CLOSE_PARENTHESIS){
printf("Error\n");
exit(1);
}
}
else if(current==VARIABLE){
return create_node_variable();
}
else if(current==END_OF_TERM)
{
printf("Error");
exit(1);
}
}
おかげ
+1:再帰がここでのトリックです。 – Puppy
しかし、私は本当にそのトリックを見ることはできません。あなたは私に例を挙げることができますか?お願いします。 –
より詳細な例を挙げると、コードを記述するのにかなりの量が必要になります。問題の原因となっている特定の部分はありますか? –