Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
cleaning & fix typos
  • Loading branch information
ezrahaleva-msft committed Oct 21, 2022
commit 9384e51294ab2c7f31c172663b1575c5592f18ed
224 changes: 112 additions & 112 deletions Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
grammar sql;

program
: sql_query EOF
;
: sql_query EOF
;

sql_query : select_clause from_clause? where_clause? group_by_clause? order_by_clause? offset_limit_clause? ;

Expand All @@ -12,10 +12,10 @@ sql_query : select_clause from_clause? where_clause? group_by_clause? order_by_c
select_clause : K_SELECT K_DISTINCT? top_spec? selection ;
top_spec : K_TOP (NUMERIC_LITERAL | PARAMETER);
selection
: select_star_spec
| select_value_spec
| select_list_spec
;
: select_star_spec
| select_value_spec
| select_list_spec
;
select_star_spec : '*' ;
select_value_spec : K_VALUE scalar_expression ;
select_list_spec : select_item ( ',' select_item )* ;
Expand All @@ -27,20 +27,20 @@ select_item : scalar_expression (K_AS identifier)? ;
/*--------------------------------------------------------------------------------*/
from_clause : K_FROM collection_expression ;
collection_expression
: collection (K_AS? identifier)? #AliasedCollectionExpression
| identifier K_IN collection #ArrayIteratorCollectionExpression
| collection_expression K_JOIN collection_expression #JoinCollectionExpression
;
: collection (K_AS? identifier)? #AliasedCollectionExpression
| identifier K_IN collection #ArrayIteratorCollectionExpression
| collection_expression K_JOIN collection_expression #JoinCollectionExpression
;
collection
: identifier path_expression? #InputPathCollection
| '(' sql_query ')' #SubqueryCollection
;
: identifier path_expression? #InputPathCollection
| '(' sql_query ')' #SubqueryCollection
;
path_expression
: path_expression'.'identifier #IdentifierPathExpression
| path_expression'[' NUMERIC_LITERAL ']' #NumberPathExpression
| path_expression'[' STRING_LITERAL ']' #StringPathExpression
| /*epsilon*/ #EpsilonPathExpression
;
: path_expression'.'identifier #IdentifierPathExpression
| path_expression'[' NUMERIC_LITERAL ']' #NumberPathExpression
| path_expression'[' STRING_LITERAL ']' #StringPathExpression
| /*epsilon*/ #EpsilonPathExpression
;
/*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------*/
Expand All @@ -62,9 +62,9 @@ order_by_clause : K_ORDER K_BY order_by_items ;
order_by_items : order_by_item (',' order_by_item)* ;
order_by_item : scalar_expression sort_order? ;
sort_order
: K_ASC
| K_DESC
;
: K_ASC
| K_DESC
;
/*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------*/
Expand All @@ -79,66 +79,66 @@ limit_count : NUMERIC_LITERAL | PARAMETER;
/* SCALAR EXPRESSIONs */
/*--------------------------------------------------------------------------------*/
scalar_expression
: scalar_expression '?' scalar_expression ':' scalar_expression #ConditionalScalarExpression
| scalar_expression '??' scalar_expression #CoalesceScalarExpression
| logical_scalar_expression #LogicalScalarExpression
| binary_scalar_expression K_NOT? K_BETWEEN binary_scalar_expression K_AND binary_scalar_expression #BetweenScalarExpression
;
: scalar_expression '?' scalar_expression ':' scalar_expression #ConditionalScalarExpression
| scalar_expression '??' scalar_expression #CoalesceScalarExpression
| logical_scalar_expression #LogicalScalarExpression
| binary_scalar_expression K_NOT? K_BETWEEN binary_scalar_expression K_AND binary_scalar_expression #BetweenScalarExpression
;

logical_scalar_expression
: binary_scalar_expression
| in_scalar_expression
| like_scalar_expression
| logical_scalar_expression K_AND logical_scalar_expression
| logical_scalar_expression K_OR logical_scalar_expression
;
: binary_scalar_expression
| in_scalar_expression
| like_scalar_expression
| logical_scalar_expression K_AND logical_scalar_expression
| logical_scalar_expression K_OR logical_scalar_expression
;

in_scalar_expression
: binary_scalar_expression K_NOT? K_IN '(' scalar_expression_list ')'
;
: binary_scalar_expression K_NOT? K_IN '(' scalar_expression_list ')'
;

like_scalar_expression
: binary_scalar_expression K_NOT? K_LIKE binary_scalar_expression escape_expression?
;
: binary_scalar_expression K_NOT? K_LIKE binary_scalar_expression escape_expression?
;

escape_expression
: K_ESCAPE STRING_LITERAL
;
: K_ESCAPE STRING_LITERAL
;

binary_scalar_expression
: unary_scalar_expression
| binary_scalar_expression multiplicative_operator binary_scalar_expression
| binary_scalar_expression additive_operator binary_scalar_expression
| binary_scalar_expression relational_operator binary_scalar_expression
| binary_scalar_expression equality_operator binary_scalar_expression
| binary_scalar_expression bitwise_and_operator binary_scalar_expression
| binary_scalar_expression bitwise_exclusive_or_operator binary_scalar_expression
| binary_scalar_expression bitwise_inclusive_or_operator binary_scalar_expression
| binary_scalar_expression string_concat_operator binary_scalar_expression
;
: unary_scalar_expression
| binary_scalar_expression multiplicative_operator binary_scalar_expression
| binary_scalar_expression additive_operator binary_scalar_expression
| binary_scalar_expression relational_operator binary_scalar_expression
| binary_scalar_expression equality_operator binary_scalar_expression
| binary_scalar_expression bitwise_and_operator binary_scalar_expression
| binary_scalar_expression bitwise_exclusive_or_operator binary_scalar_expression
| binary_scalar_expression bitwise_inclusive_or_operator binary_scalar_expression
| binary_scalar_expression string_concat_operator binary_scalar_expression
;

multiplicative_operator
: '*'
| '/'
| '%'
;
: '*'
| '/'
| '%'
;

additive_operator
: '+'
| '-'
;
: '+'
| '-'
;

relational_operator
: '<'
| '>'
| '>='
| '<='
;
: '<'
| '>'
| '>='
| '<='
;

equality_operator
: '='
| '!='
;
: '='
| '!='
;

bitwise_and_operator : '&' ;

Expand All @@ -149,32 +149,32 @@ bitwise_inclusive_or_operator : '|';
string_concat_operator : '||';

unary_scalar_expression
: primary_expression
| unary_operator unary_scalar_expression
;
: primary_expression
| unary_operator unary_scalar_expression
;

unary_operator
: '-'
| '+'
| '~'
| K_NOT
;
: '-'
| '+'
| '~'
| K_NOT
;

primary_expression
: identifier #PropertyRefScalarExpressionBase
| PARAMETER #ParameterRefScalarExpression
| literal #LiteralScalarExpression
| '[' scalar_expression_list? ']' #ArrayCreateScalarExpression
| '{' object_property_list? '}' #ObjectCreateScalarExpression
| (K_UDF '.')? identifier '(' scalar_expression_list? ')' #FunctionCallScalarExpression
| '(' scalar_expression ')' #ParenthesizedScalarExperession
| '(' sql_query ')' #SubqueryScalarExpression
| primary_expression '.' identifier #PropertyRefScalarExpressionRecursive
| primary_expression '[' scalar_expression ']' #MemberIndexerScalarExpression
| K_EXISTS '(' sql_query ')' #ExistsScalarExpression
| K_ARRAY '(' sql_query ')' #ArrayScalarExpression
| K_ALL '(' sql_query ')' #AllScalarExpression
;
: identifier #PropertyRefScalarExpressionBase
| PARAMETER #ParameterRefScalarExpression
| literal #LiteralScalarExpression
| '[' scalar_expression_list? ']' #ArrayCreateScalarExpression
| '{' object_property_list? '}' #ObjectCreateScalarExpression
| (K_UDF '.')? identifier '(' scalar_expression_list? ')' #FunctionCallScalarExpression
| '(' scalar_expression ')' #ParenthesizedScalarExperession
| '(' sql_query ')' #SubqueryScalarExpression
| primary_expression '.' identifier #PropertyRefScalarExpressionRecursive
| primary_expression '[' scalar_expression ']' #MemberIndexerScalarExpression
| K_EXISTS '(' sql_query ')' #ExistsScalarExpression
| K_ARRAY '(' sql_query ')' #ArrayScalarExpression
| K_ALL '(' sql_query ')' #AllScalarExpression
;

scalar_expression_list : scalar_expression (',' scalar_expression)*;

Expand All @@ -183,9 +183,9 @@ object_property_list : object_property (',' object_property)* ;
object_property : STRING_LITERAL ':' scalar_expression ;

identifier
: LEX_IDENTIFIER
| K_ALL
;
: LEX_IDENTIFIER
| K_ALL
;
/*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------*/
Expand Down Expand Up @@ -231,27 +231,27 @@ WS
/* LITERALS */
/*--------------------------------------------------------------------------------*/
literal
: STRING_LITERAL
| NUMERIC_LITERAL
| K_TRUE
| K_FALSE
| K_NULL
| K_UNDEFINED
;
: STRING_LITERAL
| NUMERIC_LITERAL
| K_TRUE
| K_FALSE
| K_NULL
| K_UNDEFINED
;

NUMERIC_LITERAL
: ( '+' | '-' )? DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )?
| ( '+' | '-' )? '.' DIGIT+ ( E [-+]? DIGIT+ )?
;
: ( '+' | '-' )? DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )?
| ( '+' | '-' )? '.' DIGIT+ ( E [-+]? DIGIT+ )?
;

STRING_LITERAL
: '"' (ESC | SAFECODEPOINTWITHDOUBLEQUOTATION)* '"'
| '\'' (ESC | SAFECODEPOINTWITHSINGLEQUOTATION)* '\''
;
: '"' (ESC | SAFECODEPOINTWITHDOUBLEQUOTATION)* '"'
| '\'' (ESC | SAFECODEPOINTWITHSINGLEQUOTATION)* '\''
;

fragment ESC
: '\\' (["\\/bfnrt] | UNICODE)
;
: '\\' (["\\/bfnrt] | UNICODE)
;

fragment UNICODE
: 'u' HEX HEX HEX HEX
Expand All @@ -262,21 +262,21 @@ fragment HEX
;

fragment SAFECODEPOINTWITHSINGLEQUOTATION
: ~ ['\\\u0000-\u001F]
;
: ~ ['\\\u0000-\u001F]
;

fragment SAFECODEPOINTWITHDOUBLEQUOTATION
: ~ ["\\\u0000-\u001F]
;
: ~ ["\\\u0000-\u001F]
;

LEX_IDENTIFIER
:
| [a-zA-Z_]([a-zA-Z_]|DIGIT)*
;
:
| [a-zA-Z_]([a-zA-Z_]|DIGIT)*
;

PARAMETER
: '@'LEX_IDENTIFIER
;
: '@'LEX_IDENTIFIER
;
/*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ public override SqlObject Visit(SqlAliasedCollectionExpression sqlAliasedCollect
sqlAliasedCollectionExpression.Alias.Accept(this) as SqlIdentifier);
}

public override SqlObject Visit(SqlAllScalarExpression sqlExistsScalarExpression)
public override SqlObject Visit(SqlAllScalarExpression sqlAllScalarExpression)
{
return SqlExistsScalarExpression.Create(sqlExistsScalarExpression.Subquery.Accept(this) as SqlQuery);
return SqlExistsScalarExpression.Create(sqlAllScalarExpression.Subquery.Accept(this) as SqlQuery);
}

public override SqlObject Visit(SqlArrayCreateScalarExpression sqlArrayCreateScalarExpression)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ public override void Visit(SqlAliasedCollectionExpression sqlAliasedCollectionEx
}
}

public override void Visit(SqlAllScalarExpression sqlExistsScalarExpression)
public override void Visit(SqlAllScalarExpression sqlAllScalarExpression)
{
this.writer.Write("ALL");
this.WriteStartContext("(");
sqlExistsScalarExpression.Subquery.Accept(this);
sqlAllScalarExpression.Subquery.Accept(this);
this.WriteEndContext(")");
}

Expand Down