...
SpecialClauseCompent 的类图为:
antlr语法定义
resultColumn
: expression (AS ID)?
;
expression
: LR_BRACKET unary=expression RR_BRACKET
| (PLUS | MINUS) unary=expression
| leftExpression=expression (STAR | DIV | MOD) rightExpression=expression
| leftExpression=expression (PLUS | MINUS) rightExpression=expression
| functionName=suffixPath LR_BRACKET expression (COMMA expression)* functionAttribute* RR_BRACKET
| suffixPath
| literal=SINGLE_QUOTE_STRING_LITERAL
;
functionAttribute
: COMMA functionAttributeKey=stringLiteral OPERATOR_EQ functionAttributeValue=stringLiteral
;
数据结构
ResultColumn
包含Expression和alias两个字段,封装了对Expression的操作。
Expression
本质是ANTLR语法树的内存镜像。
BinaryExpression
- expression (STAR | DIV | MOD) expression
- 示例:a*b, a/b, a%3
- expression (PLUS | MINUS) expression
- 示例:a+b, a-b
FunctionExpression
- suffixPath LR_BRACKET expression (COMMA expression)* functionAttribute* RR_BRACKET
- 示例: udf(a, b), count(a)
MinusExpression
- MINUS expression
- 示例: -a
TimeSeriesOperand
- PLUS expression
- suffixPath
- 示例: +a, a