2
我想解析一個lambda微積分。我不知道如何解析這個詞並尊重括號的優先級。例如:如何解析lambda項
(lx ly (x(xy)))(lx ly xxxy)
我無法找到這樣做的好方法。我只是看不到適應的算法。 術語由具有類型(APPLICATION,ABSTRACTION,VARIABLE)和類型爲「struc term」的右側和左側組件的結構表示。
任何想法如何做到這一點?
編輯
不好意思打擾你,但我真的想了解。你可以檢查函數「表達式()」讓我知道我是否正確。
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 2010-12-11 20:38:42
好的,但我真的看不到這個訣竅。你可以給我一個例子嗎。請。 – 2010-12-11 22:04:23
給出一個更詳細的例子幾乎等於編寫代碼。是否有一個特定的部分導致你的麻煩? – 2010-12-11 22:13:35