|
|
|
@ -370,9 +370,12 @@ Block = |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
Expression = |
|
|
|
Expression = |
|
|
|
SimpleExpressionWithSuffix { BinaryOperator SimpleExpressionWithSuffix } |
|
|
|
(. nextTokenIsPotentialStartOfXmlMode = true; .) |
|
|
|
/* TODO: operators */ |
|
|
|
( |
|
|
|
|
|
|
|
SimpleExpressionWithSuffix { BinaryOperator SimpleExpressionWithSuffix } |
|
|
|
|
|
|
|
/* TODO: operators */ |
|
|
|
|
|
|
|
| NewExpression |
|
|
|
|
|
|
|
) |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
BinaryOperator = |
|
|
|
BinaryOperator = |
|
|
|
@ -380,14 +383,20 @@ BinaryOperator = |
|
|
|
| "=" | "<>" | "<" | ">" | "<=" | ">=" |
|
|
|
| "=" | "<>" | "<" | ">" | "<=" | ">=" |
|
|
|
| "Like" | "&" | "And" | "AndAlso" | "Or" | "OrElse" |
|
|
|
| "Like" | "&" | "And" | "AndAlso" | "Or" | "OrElse" |
|
|
|
| "Xor" | "<<" | ">>" | "Is" | "IsNot" |
|
|
|
| "Xor" | "<<" | ">>" | "Is" | "IsNot" |
|
|
|
| "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" |
|
|
|
| "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" | "To" | ":=" |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
UnaryOperator = |
|
|
|
UnaryOperator = |
|
|
|
"+" | "-" | "Not" | "AddressOf" |
|
|
|
"+" | "-" | "Not" | "AddressOf" |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
SimpleExpressionWithSuffix = (. nextTokenIsPotentialStartOfXmlMode = true; .) { UnaryOperator } SimpleExpression { ExpressionSuffix } . |
|
|
|
SimpleExpressionWithSuffix = |
|
|
|
|
|
|
|
(. nextTokenIsPotentialStartOfXmlMode = true; .) |
|
|
|
|
|
|
|
{ UnaryOperator } |
|
|
|
|
|
|
|
( |
|
|
|
|
|
|
|
SimpleExpression { ExpressionSuffix } |
|
|
|
|
|
|
|
| "TypeOf" SimpleExpressionWithSuffix "Is" TypeName |
|
|
|
|
|
|
|
). |
|
|
|
|
|
|
|
|
|
|
|
SimpleExpression = |
|
|
|
SimpleExpression = |
|
|
|
(. nextTokenIsPotentialStartOfXmlMode = true; .) |
|
|
|
(. nextTokenIsPotentialStartOfXmlMode = true; .) |
|
|
|
@ -397,11 +406,22 @@ SimpleExpression = |
|
|
|
| ( "." | "!" ) IdentifierOrKeyword |
|
|
|
| ( "." | "!" ) IdentifierOrKeyword |
|
|
|
| "GetType" "(" TypeName ")" |
|
|
|
| "GetType" "(" TypeName ")" |
|
|
|
| "GetXmlNamespace" "(" (. readXmlIdentifier = true; .) Identifier ")" |
|
|
|
| "GetXmlNamespace" "(" (. readXmlIdentifier = true; .) Identifier ")" |
|
|
|
| "TypeOf" SimpleExpressionWithSuffix "Is" TypeName |
|
|
|
|
|
|
|
| XmlLiteral |
|
|
|
| XmlLiteral |
|
|
|
) |
|
|
|
) |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NewExpression = |
|
|
|
|
|
|
|
"New" [ TypeName [ "From" CollectionInitializer ] ] [ "With" ObjectInitializer ] |
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ObjectInitializer = |
|
|
|
|
|
|
|
"{" [ "Key" ] "." IdentifierOrKeyword "=" Expression { "," [ "Key" ] "." IdentifierOrKeyword "=" Expression } "}" |
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CollectionInitializer = |
|
|
|
|
|
|
|
"{" ( Expression | CollectionInitializer ) { "," ( Expression | CollectionInitializer ) } "}" |
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
ExpressionSuffix = |
|
|
|
ExpressionSuffix = |
|
|
|
"(" (. nextTokenIsPotentialStartOfXmlMode = true; .) ( "Of" TypeName { "," TypeName } ")" | ArgumentList ")" ) |
|
|
|
"(" (. nextTokenIsPotentialStartOfXmlMode = true; .) ( "Of" TypeName { "," TypeName } ")" | ArgumentList ")" ) |
|
|
|
| ( "." | "!" ) IdentifierOrKeyword |
|
|
|
| ( "." | "!" ) IdentifierOrKeyword |
|
|
|
@ -438,7 +458,7 @@ PrimitiveTypeName = |
|
|
|
|
|
|
|
|
|
|
|
TypeName = ( "Global" | Identifier | PrimitiveTypeName ) { TypeSuffix } { "." IdentifierOrKeyword { TypeSuffix } } . |
|
|
|
TypeName = ( "Global" | Identifier | PrimitiveTypeName ) { TypeSuffix } { "." IdentifierOrKeyword { TypeSuffix } } . |
|
|
|
|
|
|
|
|
|
|
|
TypeSuffix = "(" ( "Of" [ TypeName ] { "," [ TypeName ] } | { "," /*[ EOL ]*/ } ) ")" . |
|
|
|
TypeSuffix = "(" ( "Of" [ TypeName ] { "," [ TypeName ] } | [ ArgumentList ] ) ")" . |
|
|
|
|
|
|
|
|
|
|
|
IdentifierOrKeyword = ANY . |
|
|
|
IdentifierOrKeyword = ANY . |
|
|
|
|
|
|
|
|
|
|
|
@ -489,7 +509,7 @@ InvocationStatement = |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
ArgumentList = |
|
|
|
ArgumentList = |
|
|
|
Expression { "," Expression [ ":=" Expression ] } |
|
|
|
Expression { "," Expression } |
|
|
|
. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
/* This production handles pseudo keywords that are needed in the grammar */ |
|
|
|
/* This production handles pseudo keywords that are needed in the grammar */ |
|
|
|
|