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表达式