THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
6.1 字符串型:单引号引用表示字符串常量。
```
STRING_LITERAL
: SQUOTE_STRING
;
QUOTED_STRING_LITERAL
: DQUOTE_STRING
| BQUOTE_STRING
;
fragment DQUOTE_STRING
: '"' ('\\' . | ~'"' )*? '"'
;
fragment SQUOTE_STRING
: '\'' ('\\' . | ~'\'' )*? '\''
;
fragment BQUOTE_STRING
: '`' ('\\' . | ~'`' )*? '`'
;
```
6.2 日期时间型
```
DURATIONDURATION_LITERAL
: (DECIMALINTEGER_LITERAL+ (Y|M O|W|D|H|M|S|M S|U S|N S))+
;
DATETIME
DATETIME_LITERAL
: DECIMALINTEGER_LITERAL ('-'|'/') DECIMALINTEGER_LITERAL ('-'|'/') DECIMALINTEGER_LITERAL ((T | WS)
DECIMALINTEGER_LITERAL ':' DECIMALINTEGER_LITERAL ':' DECIMALINTEGER_LITERAL (DOT DECIMALINTEGER_LITERAL)?
(('+' | '-') DECIMALINTEGER_LITERAL ':' DECIMALINTEGER_LITERAL)?)?
| NOW LR_BRACKET RR_BRACKET
;
```
由于语法分析器中对这一部分的使用比较灵活,因此在语法分析器中还设计了datetimeLiteral。后续可以研究一下这一部分是否可以继续优化。
```
datetimeLiteral
: DATETIME_LITERAL
| dateExpression
| INTEGER_LITERAL
;
dateExpression
: DATETIME_LITERAL ((PLUS | MINUS) DURATION_LITERAL)*
;
```
6.3 数字型
```
INTEGER_LITERAL
: DEC_DIGIT+
;
EXPONENT
EXPONENT_NUM_PART
: DEC_DIGIT+ ('e'|'E') ('+'|'-')? DEC_DIGIT+
;
fragment
fragment DEC_DIGIT:
: [0-9]
;
```
另外,实数型字面量定义在语法分析中。这是因为 EXPONENT_NUM_PART 允许出行在路径中(如root.1e-3),后续可以讨论一下路径中节点命名的规范问题,看看这里能不能优化掉。
...
```
singleStatement
: DEBUG? statement SEMI? EOF
;
statement
: ddlStatement | dmlStatement | dclStatement | utilityStatement
;
ddlStatement
: setStorageGroup | createStorageGroup | createTimeseries
| createFunction | createTrigger | createContinuousQuery | createSnapshot
| alterTimeseries | deleteStorageGroup | deleteTimeseries | deletePartition
| dropFunction | dropTrigger | dropContinuousQuery
| setTTL | unsetTTL | startTrigger | stopTrigger
| showStorageGroup | showDevices | showTimeseries | showChildPaths | showChildNodes
| showFunctions | showTriggers | showContinuousQueries | showTTL | showAllTTL
| countStorageGroup | countDevices | countTimeseries | countNodes
;
dmlStatement
: selectStatement | insertStatement | deleteStatement;
dclStatement
: createUser | createRole | alterUser | grantUser | grantRole | grantRoleToUser
| revokeUser | revokeRole | revokeRoleFromUser | dropUser | dropRole
| listUser | listRole | listPrivilegesUser | listPrivilegesRole
| listUserPrivileges | listRolePrivileges | listAllRoleOfUser | listAllUserOfRole
;
utilityStatement
: merge | fullMerge | flush | clearCache | clearCachesettle
| setSystemStatus | showVersion | showFlushInfo | showLockInfo | showMergeInfo
| showQueryProcesslist | killQuery | grantWatermarkEmbedding | revokeWatermarkEmbedding
| loadConfiguration | loadTimeseries | loadFile | removeFile | unloadFile;
```
...
```
nodeName
: ID wildcard?
| wildcard
| (ID | OPERATOR_IN)? LS_BRACKET DECIMAL_LITERAL? ID? RS_BRACKET? ID?
| literalCanBeNodeName
| keywordsCanBeNodeName
;
nodeNameWithoutWildcard
: ID
| (ID | OPERATOR_IN)? LS_BRACKET DECIMAL_LITERAL? ID? RS_BRACKET? ID?
| literalCanBeNodeName
| keywordsCanBeNodeName
;
wildcard
: STAR
| DOUBLE_STAR
;
literalCanBeNodeName
: QUOTED_STRING_LITERAL
| datetimeLiteral
| (MINUS|PLUS)? INTEGER_LITERAL
| (MINUS|PLUS)? EXPONENT_NUM_PART
| BOOLEAN_LITERAL
;
keywordsCanBeNodeName
: DATATYPE_VALUE
| ENCODING_VALE
| COMPRESSOR_VALUE
| PRIVILEGE_VALUE
| ... ...
: DATATYPE_VALUE
| ENCODING_VALE
| COMPRESSOR_VALUE
| ASC
| DESC
| DEVICE
;
```
常量/字面量
```
constant
: STRING_LITERAL
| dateExpression
| (MINUS|PLUS)? INTEGER_LITERAL
| (MINUS|PLUS)? realLiteral
| BOOLEAN_LITERAL
| NULL_LITERAL
| NAN_LITERAL
;
realLiteral
: DECIMALINTEGER_LITERAL DOT (INTEGER_LITERAL|EXPONENT_NUM_PART)?
| DOT (INTEGER_LITERAL|EXPONENT_NUM_PART)
| EXPONENT_NUM_PART
;
datetimeLiteral
: DATETIME_LITERAL
| dateExpression
| INTEGER_LITERAL
;
```
...
SHOW MERGE -> SHOW MERGE INFO
SHOWSHOW FLUSH TASK INFO -> SHOW FLUSH INFO
SHOW LOCK INFO 不变
- 删除已经不支持的语法
UPDATE prefixPath setClause whereClause? #updateStatement
SHOW METADATA #showMetadata
DESCRIBE prefixPath #describePath
CREATE INDEX ON prefixPath whereClause? indexWithClause #createIndex
DROP INDEX indexName=ID ON prefixPath #dropIndex
TRACING ON #tracingOn
TRACING OFF #tracingOff
3 需进一步讨论的点
- nodeName 命名规范命名规范:
- 引用符号的使用引用符号的使用:
4
...