用C语言写一个lisp解释器
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _node{ // 定义节点结构体,用于表示lisp语句中的每个单词
char* value; // 表示节点的值
struct _node* next; // 指向下一个节点
}Node;
Node *head = NULL;//定义一个头指针,用来存储整条lisp语句链表的头节点
/* 将传入的字符串str分割成一个单词链表 */
void split(char *str) {
Node *p, *q;//定义2个指针,p用于遍历整条字符串;q用于尾插法建立单词链表。
p = q = head;//将q和head都指向头节点。
while(*str) {//当字符不是'\0'时,即还有字符未处理时循环。
if(*str == '(' || *str == ')' || *str == ' ') {//如果是左右圆括号或者是一个空格
if(p != head && p->value[0] != '\0') {//如果p不是head(即不是从开始就出来的情况)而且上一步保存的value不是'\0'
q->next = (Node *)malloc(sizeof(Node));//就新建1个新节点并将其地址保存到上一步新增加的节
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。