Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

SpecialClauseCompent 的类图为:




Select 子句

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语法树的内存镜像。

Image Added

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