【发布时间】:2010-12-11 20:03:52
【问题描述】:
我想解析一个 lambda 演算。我不知道如何解析术语并尊重括号优先级。例如:
(lx ly (x(xy)))(lx ly xxxy)
我无法找到执行此操作的好方法。我只是看不到适应的算法。 术语由具有类型(APPLICATION、ABSTRACTION、VARIABLE)的结构表示,并且 “结构术语”类型的左右组件。
知道怎么做吗?
编辑
很抱歉再次打扰您,但我真的很想了解。你能检查一下函数“表达式()”,让我知道我是否正确。
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);
}
}
谢谢
【问题讨论】:
标签: c parsing lambda lambda-calculus