4.4 表达式解析expression
expression.h中的 static const OPERATOR operators[]中定义了各种运算符的操作数、入栈优先级、出栈优先级、结合性、运算符编号
主要函数
Expression parseExpressionRD(ParserT parser);d
使用递归下降法解析表达式,将表达式解析为内建类型Expression
int printTermExpression(char exprs, TermExpr term);
从后序表达式产生中序表达式字符串,需要多次调用
const char *getOperatorDesc(TokenType type);
表达式中opType是运算类型,是TokenType类型,通过传入该参数,返回相应的运算符
Expression newExpression(TokenType type, Expression nextexpr);
创建一个表达式结构体,并为其分配空间、初始化赋值
TermExpr *newTermExpr();
创建一个后序表达式类型,并为其分配空间、初始化赋值
char getExpressionNamesTitle(arraylist fields);
将一个Expression的arraylist中的所有内容用\t
连接成字符串并返回
主要用于select查询字段的输出
int expression_free(Expression *expr);
释放表达式占用的资源(为空)
int expression_free_list(arraylist *exprlist);
释放表达式列表占用的资源(为空)
Expression expression_print(Expression expr, char *desc);
输出中序表达式
int expression_print_list(arraylist *exprlist);
输出表达式列表
Expression concatExpression(Expression expr0, Expression *expr1);
将两个表达式连接起来
Expression parseReadArgument(ParserT parser);
解析内建函数的参数,如sqrt(),pow()
Expression parseReadBuiltin(ParserT parser);
解析内建函数 sqrt(),pow()等
Expression parseReadParen(ParserT parser);
解析括号内的表达式
Expression parseReadUnary(ParserT parser);
解析单目运算符
Expression parseReadPower(ParserT parser);
解析指数表达式
Expression parseReadTerm(ParserT parser);
解析终结符表达式,获得后缀表达式
Expression parseReadExpr(ParserT parser);
处理正负号
Expression parseReadBooleanComparison(ParserT parser);
解析比较表达式
Expression parseReadBooleanEquality(ParserT parser);
解析bool等式
Expression parseReadBooleanAnd(ParserT parser);
解析and 表达式
Expression parseReadBooleanOr(ParserT parser);
解析or表达式