◐ Shell
clean mode source ↗

allow [$:] as prefix and plain ? for prepared statements by oger000 · Pull Request #15 · JavaScriptor/js-sql-parser

Expand Up @@ -10,10 +10,12 @@ [-][-]\s.*\n /* skip sql comments */ [#]\s.*\n /* skip sql comments */ \s+ /* skip whitespace */
[`][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*[`] return 'IDENTIFIER' [\w]+[\u4e00-\u9fa5]+[0-9a-zA-Z_\u4e00-\u9fa5]* return 'IDENTIFIER' [\u4e00-\u9fa5][0-9a-zA-Z_\u4e00-\u9fa5]* return 'IDENTIFIER' [\$:][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]* return 'PREP_TERM' [?] return 'PREP_TERM' SELECT return 'SELECT' ALL return 'ALL' ANY return 'ANY' Expand Down Expand Up @@ -116,7 +118,7 @@ LIMIT return 'LIMIT' "{" return '{' "}" return '}' ";" return ';'
['](\\.|[^'])*['] return 'STRING' ["](\\.|[^"])*["] return 'STRING' [0][x][0-9a-fA-F]+ return 'HEX_NUMERIC' Expand All @@ -126,7 +128,7 @@ LIMIT return 'LIMIT' [a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]* return 'IDENTIFIER' \. return 'DOT' ['"][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*["'] return 'QUOTED_IDENTIFIER'
<<EOF>> return 'EOF' . return 'INVALID'
Expand Down Expand Up @@ -164,7 +166,7 @@ main ;
selectClause : SELECT : SELECT distinctOpt highPriorityOpt maxStateMentTimeOpt Expand Down Expand Up @@ -203,7 +205,7 @@ selectClause ;
distinctOpt : ALL { $$ = $1 } : ALL { $$ = $1 } | DISTINCT { $$ = $1 } | DISTINCTROW { $$ = $1 } | { $$ = null } Expand Down Expand Up @@ -295,6 +297,7 @@ function_call_param identifier : IDENTIFIER { $$ = { type: 'Identifier', value: $1 } } | identifier DOT IDENTIFIER { $$ = $1; $1.value += '.' + $3 } | PREP_TERM { $$ = { type: 'Identifier', value: $1 } } ; identifier_list : identifier { $$ = { type: 'IdentifierList', value: [ $1 ] } } Expand Down Expand Up @@ -336,7 +339,7 @@ simple_expr ; bit_expr : simple_expr { $$ = $1 } | bit_expr '|' bit_expr { $$ = { type: 'BitExpression', operator: '|', left: $1, right: $3 } } | bit_expr '|' bit_expr { $$ = { type: 'BitExpression', operator: '|', left: $1, right: $3 } } | bit_expr '&' bit_expr { $$ = { type: 'BitExpression', operator: '&', left: $1, right: $3 } } | bit_expr '<<' bit_expr { $$ = { type: 'BitExpression', operator: '<<', left: $1, right: $3 } } | bit_expr '>>' bit_expr { $$ = { type: 'BitExpression', operator: '>>', left: $1, right: $3 } } Expand Down Expand Up @@ -446,6 +449,7 @@ limit : LIMIT NUMERIC { $$ = { type: 'Limit', value: [ $2 ] } } | LIMIT NUMERIC ',' NUMERIC { $$ = { type: 'Limit', value: [ $2, $4 ] } } | LIMIT NUMERIC OFFSET NUMERIC { $$ = { type: 'Limit', value: [ $4, $2 ], offsetMode: true } } | LIMIT PREP_TERM { $$ = { type: 'Limit', value: [ $2 ] } } ; limit_opt : { $$ = null } Expand Down