?? calc.cpp
字號:
/*************************************************** file: calc.cpp* date: 2006-06-30* author: ideawu* describe: a really small and simple caculator.* with known bugs.**************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "Parser.h"float calc(SyntaxTree *tree);int main(int argc, char* argv[]){ char buf[1024] = "a="; SyntaxTree *tree = NULL; Lexer *lexer = new Lexer(); Parser *parser = new Parser(); lexer->setSrc(buf, 1024); parser->setLexer(lexer); printf(">>"); scanf("%s", &buf[2]); while(strcmp(buf, "a=quit") != 0){ tree = parser->parse(); if(tree!=NULL){ //tree->display(); printf("%g\n", calc(tree->getRight())); }else{ parser->printError(); } printf(">>"); scanf("%s", &buf[2]); parser->reset(); } printf("\n"); return 0;}float calc(SyntaxTree *tree){ float a=0, b=0, val=0; if(tree != NULL){ if(tree->getRootNode()->getType() == NUM){ return tree->getRootNode()->getValue(); } a = calc(tree->getLeft()); b = calc(tree->getRight()); switch(tree->getRootNode()->getType()){ case PLUS: val = a + b; break; case MINUS: val = a - b; break; case MUL: val = a * b; break; case DIV: if(b != 0){ val = a / b; } break; default: break; } } return val; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -