我目前正在制作一个用C ++编写的MFC程序。我想要做的是,我想创建一个函数来读取特定索引中的字符串。这是我正在处理的代码:
void CMFCApplication1Dlg::formatting(int start, int end, char *content, BinTreeNode *node){
char *temp1 = "", *temp2 = "", *temp3 = "";
int var1, var2;
sscanf(&(content[start]), "%s %s %s", temp1, temp2, temp3);
if (strcmp(temp1, "minus") == 0 || strcmp(temp1, "if") == 0){
if (strcmp(temp1, "minus") == 0){
node->isMinus = TRUE;
var1 = atoi(temp2);
var2 = atoi(temp3);
node->operand1 = var1;
node->operand2 = var2;
}
else if (strcmp(temp1, "if") == 0)
{
node->isIf = TRUE;
var1 = atoi(temp2);
var2 = atoi(temp3);
node->operand1 = var1;
node->operand2 = var2;
}
}
else if (strcmp(temp3, "minus") == 0 || strcmp(temp3, "if") == 0){
if (strcmp(temp3, "minus") == 0){
node->isMinus = TRUE;
var1 = atoi(temp1);
var2 = atoi(temp2);
node->operand1 = var1;
node->operand2 = var2;
}
else if (strcmp(temp3, "if") == 0)
{
node->isIf = TRUE;
var1 = atoi(temp1);
var2 = atoi(temp2);
node->operand1 = var1;
node->operand2 = var2;
}
}
else{
MessageBox(_T("Invalid Format"), _T("Error"), MB_OK);
}
}
问题在于它会出现一些错误的指针。我不知道为什么代码会出现这种问题并需要一些帮助。请你成为我的救世主?
答案 0 :(得分:0)
请查看此实施:http://howtowriteaprogram.blogspot.ru/2010/11/lisp-interpreter-in-90-lines-of-c.html
语言翻译有两部分:
解析:解析组件采用以下形式的输入程序 一系列字符,根据句法进行验证 语言规则,并将程序翻译成内部 表示。在简单的解释器中的内部表示 是一种树结构(通常称为抽象语法树) 密切镜像语句或表达式的嵌套结构 该程序。在一个叫做编译器的语言翻译器中 通常是一系列内部表征,从一个开始 抽象语法树,并进展到一系列指令 可以直接由计算机执行。请参阅提供的实现中的 read(), read_from()和 tokenize()函数。
执行:然后根据内部表示进行处理 语言的语义规则,从而执行 计算。执行函数称为 eval()。