我是 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(")");
}
在 main 方法中,我得到第一个令牌并调用:
打印列表(令牌);
我再次测试了子列表的值,我认为它正在工作。但是,我需要一种方法来遍历整个结构。请再次查看我的 printList 代码。打印调用是我必须输入的,以手动获取 (a (bc)) 列表值。所以我得到这个输出:
第一价值?一种
第一价值?b
第一价值?C
这是我想要的,但我想要一种使用循环的方法,无论结构多么复杂,还要在适当的地方添加括号,所以最后,我应该得到:
(a (bc))
这与输入相同。
谁能帮我解决这个问题?