ラムダ計算を解析したいと思います。用語を解析し、括弧の優先順位を尊重する方法がわかりません。元:
(lx ly (x(xy)))(lx ly xxxy)
これを行う良い方法を見つけることができません。適応されたアルゴリズムが見えません。タームは、タイプ (APPLICATION、ABSTRACTION、VARIABLE) とタイプ「struc term」の右コンポーネントと左コンポーネントを持つ構造体によって表されます。
これを行う方法はありますか?
編集
何度もお邪魔して申し訳ありませんが、本当に理解したいです。関数「expression()」をチェックして、私が正しいかどうかを教えてもらえますか。
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);
}
}
ありがとう