primaryExpression
- Throws:
antlr.RecognitionExceptionantlr.TokenStreamException
GroovyTokenTypesstatic final String[]static final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic final antlr.collections.impl.BitSetstatic booleanastFactory, inputState, returnAST, tokenNames, tokenTypeToASTClassMap, traceDepthABSTRACT, ANNOTATION, ANNOTATION_ARRAY_INIT, ANNOTATION_DEF, ANNOTATION_FIELD_DEF, ANNOTATION_MEMBER_VALUE_PAIR, ANNOTATIONS, ARRAY_DECLARATOR, ASSIGN, AT, BAND, BAND_ASSIGN, BIG_SUFFIX, BLOCK, BNOT, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, CASE_GROUP, CLASS_DEF, CLOSABLE_BLOCK, CLOSABLE_BLOCK_OP, CLOSURE_LIST, COLON, COMMA, COMPARE_TO, CTOR_CALL, CTOR_IDENT, DEC, DIGIT, DIV, DIV_ASSIGN, DOLLAR, DOLLAR_REGEXP_CTOR_END, DOLLAR_REGEXP_LITERAL, DOLLAR_REGEXP_SYMBOL, DOT, DYNAMIC_MEMBER, ELIST, ELVIS_OPERATOR, EMPTY_STAT, ENUM_CONSTANT_DEF, ENUM_DEF, EOF, EQUAL, ESC, ESCAPED_DOLLAR, ESCAPED_SLASH, EXPONENT, EXPR, EXTENDS_CLAUSE, FINAL, FLOAT_SUFFIX, FOR_CONDITION, FOR_EACH_CLAUSE, FOR_IN_ITERABLE, FOR_INIT, FOR_ITERATOR, GE, GT, HEX_DIGIT, IDENT, IDENTICAL, IMPLEMENTS_CLAUSE, IMPLICIT_PARAMETERS, IMPORT, INC, INDEX_OP, INSTANCE_INIT, INTERFACE_DEF, LABELED_ARG, LABELED_STAT, LAND, LBRACK, LCURLY, LE, LETTER, LIST_CONSTRUCTOR, LITERAL_as, LITERAL_assert, LITERAL_boolean, LITERAL_break, LITERAL_byte, LITERAL_case, LITERAL_catch, LITERAL_char, LITERAL_class, LITERAL_continue, LITERAL_def, LITERAL_default, LITERAL_double, LITERAL_else, LITERAL_enum, LITERAL_extends, LITERAL_false, LITERAL_finally, LITERAL_float, LITERAL_for, LITERAL_if, LITERAL_implements, LITERAL_import, LITERAL_in, LITERAL_instanceof, LITERAL_int, LITERAL_interface, LITERAL_long, LITERAL_native, LITERAL_new, LITERAL_null, LITERAL_package, LITERAL_private, LITERAL_protected, LITERAL_public, LITERAL_return, LITERAL_short, LITERAL_static, LITERAL_super, LITERAL_switch, LITERAL_synchronized, LITERAL_this, LITERAL_threadsafe, LITERAL_throw, LITERAL_throws, LITERAL_transient, LITERAL_true, LITERAL_try, LITERAL_void, LITERAL_volatile, LITERAL_while, LNOT, LOR, LPAREN, LT, MAP_CONSTRUCTOR, MEMBER_POINTER, METHOD_CALL, METHOD_DEF, MINUS, MINUS_ASSIGN, ML_COMMENT, MOD, MOD_ASSIGN, MODIFIERS, NLS, NOT_EQUAL, NOT_IDENTICAL, NULL_TREE_LOOKAHEAD, NUM_BIG_DECIMAL, NUM_BIG_INT, NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG, OBJBLOCK, ONE_NL, OPTIONAL_DOT, PACKAGE_DEF, PARAMETER_DEF, PARAMETERS, PLUS, PLUS_ASSIGN, POST_DEC, POST_INC, QUESTION, RANGE_EXCLUSIVE, RANGE_INCLUSIVE, RBRACK, RCURLY, REGEX_FIND, REGEX_MATCH, REGEXP_CTOR_END, REGEXP_LITERAL, REGEXP_SYMBOL, RPAREN, SELECT_SLOT, SEMI, SH_COMMENT, SL, SL_ASSIGN, SL_COMMENT, SLIST, SPREAD_ARG, SPREAD_DOT, SPREAD_MAP_ARG, SR, SR_ASSIGN, STAR, STAR_ASSIGN, STAR_STAR, STAR_STAR_ASSIGN, STATIC_IMPORT, STATIC_INIT, STRICTFP, STRING_CH, STRING_CONSTRUCTOR, STRING_CTOR_END, STRING_CTOR_MIDDLE, STRING_CTOR_START, STRING_LITERAL, STRING_NL, SUPER_CTOR_CALL, TRIPLE_DOT, TYPE, TYPE_ARGUMENT, TYPE_ARGUMENTS, TYPE_LOWER_BOUNDS, TYPE_PARAMETER, TYPE_PARAMETERS, TYPE_UPPER_BOUNDS, TYPECAST, UNARY_MINUS, UNARY_PLUS, UNUSED_CONST, UNUSED_DO, UNUSED_GOTO, VARIABLE_DEF, VARIABLE_PARAMETER_DEF, VOCAB, WILDCARD_TYPE, WS GroovyRecognizer(antlr.ParserSharedInputState state) GroovyRecognizer(antlr.TokenBuffer tokenBuf) protected GroovyRecognizer(antlr.TokenBuffer tokenBuf,
int k) GroovyRecognizer(antlr.TokenStream lexer) protected GroovyRecognizer(antlr.TokenStream lexer,
int k) final voidaCase()final voidadditiveExpression(int lc_stmt) voidaddWarning(String warning,
String solution) final voidandExpression(int lc_stmt) final voidfinal voidfinal voidfinal voidannotationDefinition(antlr.collections.AST modifiers) final voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidappendedBlock(antlr.collections.AST callee) final voidargList()final byteargument()final voidfinal voidfinal voidassignmentExpression(int lc_stmt) final voidfinal voidfinal voidfinal voidblockBody(int prevToken) final voidprotected voidfinal voidfinal voidbuiltInTypeArraySpec(boolean addImagNode) final voidbuiltInTypeSpec(boolean addImagNode) final voidfinal voidfinal voidcheckSuspiciousExpressionStatement(int prevToken) final voidfinal voidclassDefinition(antlr.collections.AST modifiers) final voidfinal voidclassOrInterfaceType(boolean addImagNode) final voidclassTypeSpec(boolean addImagNode) antlr.TokencloneToken(antlr.Token t) final voidfinal voidfinal voidfinal voidclosableBlockParamsOpt(boolean addImplicit) final voidfinal voidfinal voidfinal voidcommandArguments(antlr.collections.AST head) final voidcommandArgumentsGreedy(antlr.collections.AST head) final voidfinal voidfinal voidfinal voidconditionalExpression(int lc_stmt) final voidconstant()final voidfinal voidfinal voidconstructorDefinition(antlr.collections.AST mods) final voidfinal voidantlr.collections.ASTantlr.collections.ASTantlr.collections.ASTantlr.collections.ASTfinal voidfinal voidfinal voiddeclaratorBrackets(antlr.collections.AST typ) final voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidenumDefinition(antlr.collections.AST modifiers) final voidequalityExpression(int lc_stmt) final voidexclusiveOrExpression(int lc_stmt) final voidfinal voidexpression(int lc_stmt) final voidexpressionStatement(int prevToken) final voidfinal voidfinal voidforCond()final voidfinal voidforInit()final voidforIter()final voidfinal voidfinal voidgetLexer()final voidhandler()final voidfinal voidfinal voidfinal voidfinal voidfinal voidinclusiveOrExpression(int lc_stmt) final voidindexPropertyArgs(antlr.collections.AST indexee) final voidfinal voidinterfaceDefinition(antlr.collections.AST modifiers) final voidfinal voidfinal voidfinal voidlistOfVariables(antlr.collections.AST mods,
antlr.collections.AST t,
antlr.Token first) final voidfinal voidlogicalAndExpression(int lc_stmt) final voidlogicalOrExpression(int lc_stmt) static GroovyRecognizermake(antlr.InputBuffer in) static GroovyRecognizermake(antlr.LexerSharedInputState in) static GroovyRecognizermake(InputStream in) static GroovyRecognizerstatic GroovyRecognizermake(GroovyLexer lexer) voidmatchGenericTypeBracketsFailed(String problem,
String solution) final voidmethodCallArgs(antlr.collections.AST callee) final voidmodifier()final voidfinal voidfinal voidfinal voidmultipleAssignment(int lc_stmt) final voidfinal voidfinal voidmultiplicativeExpression(int lc_stmt) final voidnamePart()final voidfinal voidfinal voidnls()final voidnlsWarn()final voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidfinal voidpathChain(int lc_stmt,
antlr.collections.AST prefix) final voidpathElement(antlr.collections.AST prefix) final voidfinal voidpathExpression(int lc_stmt) final voidpostfixExpression(int lc_stmt) final voidpowerExpression(int lc_stmt) final voidpowerExpressionNotPlusMinus(int lc_stmt) final voidfinal voidfinal voidregexExpression(int lc_stmt) final voidrelationalExpression(int lc_stmt) voidrequireFailed(String problem,
String solution) final voidsep()voidvoidsetSourceBuffer(SourceBuffer sourceBuffer) final voidshiftExpression(int lc_stmt) final voidfinal voidfinal voidsingleVariable(antlr.collections.AST mods,
antlr.collections.AST t) final voidfinal voidstatement(int prevToken) final voidfinal booleanstrictContextExpression(boolean allowDeclaration) final voidfinal voidfinal voidfinal voidfinal voidvoidvoidfinal voidtryBlock()final voidtype()final voidfinal voidfinal voidfinal voidprotected final voidfinal voidfinal voidprotected final voidtypeDefinitionInternal(antlr.collections.AST mods) final voidtypeNamePairs(antlr.collections.AST mods,
antlr.Token first) final voidfinal voidfinal voidfinal voidtypeSpec(boolean addImagNode) final voidunaryExpression(int lc_stmt) final voidunaryExpressionNotPlusMinus(int lc_stmt) final voidfinal voidvariableDeclarator(antlr.collections.AST mods,
antlr.collections.AST t,
antlr.Token first) final voidvariableDefinitions(antlr.collections.AST mods,
antlr.collections.AST t) final voidfinal voidfinal voidconsume, LA, LTaddMessageListener, addParserListener, addParserMatchListener, addParserTokenListener, addSemanticPredicateListener, addSyntacticPredicateListener, addTraceListener, consumeUntil, consumeUntil, defaultDebuggingSetup, getAST, getASTFactory, getFilename, getInputState, getTokenName, getTokenNames, getTokenTypeToASTClassMap, isDebugMode, mark, match, match, matchNot, panic, recover, removeMessageListener, removeParserListener, removeParserMatchListener, removeParserTokenListener, removeSemanticPredicateListener, removeSyntacticPredicateListener, removeTraceListener, reportError, reportError, reportWarning, rewind, setASTFactory, setASTNodeClass, setASTNodeType, setDebugMode, setIgnoreInvalidDebugCalls, setInputState, setTokenBuffer, traceIndentsetFilename in class antlr.ParsertraceIn in class antlr.LLkParserantlr.TokenStreamExceptiontraceOut in class antlr.LLkParserantlr.TokenStreamExceptionantlr.SemanticExceptionantlr.SemanticExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionAST effect: Create a separate Type/Var tree for each var in the var list. Must be guarded, as in (declarationStart) => declaration.
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionfor (int x in y) (up to the in keyword).antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionwhile statements.antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamException
(In the absence of explicit method-call parens, we assume a capitalized name is a type name.
Yes, this is a little hacky. Alternatives are to complicate the declaration or command
syntaxes, or to have the parser query the symbol table. Parse-time queries are evil.
And we want both {String x} and {println x}. So we need a syntactic razor-edge to slip
between 'println' and 'String'.)
*TODO* The declarationStart production needs to be strengthened to recognize
things like {List
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionAn expression statement can also be a command, which is a simple method call in which the outermost parentheses are omitted.
Certain "suspicious" looking forms are flagged for the user to disambiguate.
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionAlso, if the expression starts with a closure, it needs to have an explicit parameter list, in order to avoid the appearance of a compound statement. This is a hard error.
These rules are different from Java's "dumb expression" restriction. Unlike Java, Groovy blocks can end with arbitrary (even dumb) expressions, as a consequence of optional 'return' and 'continue' tokens.
To make the programmer's intention clear, a leading closure must have an explicit parameter list, and must not follow a previous statement separated only by newlines.
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptiontypeArguments is handled by the caller of namePart.antlr.RecognitionExceptionantlr.TokenStreamExceptionIf the methodCallArgs are absent, it is a property reference. If there is no property, it is treated as a field reference, but never a method reference.
Arguments in the (...) can be labeled, and the appended block can be labeled also. If there is a mix of unlabeled and labeled arguments, all the labeled arguments must follow the unlabeled arguments, except that the closure (labeled or not) is always a separate final argument. Labeled arguments are collected up and passed as a single argument to a formal of type Map.
Therefore, f(x,y, a:p, b:q) {s} is equivalent in all ways to f(x,y, [a:p,b:q], {s}). Spread arguments of sequence type count as unlabeled arguments, while spread arguments of map type count as labeled arguments. (This distinction must sometimes be checked dynamically.) A plain unlabeled argument is allowed to match a trailing Map or Closure argument: f(x, a:p) {s} === f(*[ x, [a:p], {s} ])
antlr.RecognitionExceptionantlr.TokenStreamExceptionReturned AST is [INDEX_OP, indexee, ELIST].
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionA map constructor is an argument list enclosed in square brackets, with labels everywhere, except on spread arguments, which stand for whole maps spliced in. A colon alone between the brackets also forces the expression to be an empty map constructor. Examples: [:], [a:1], [a:1,b:2], [a:1,*:m1,b:2], [*:m1,*:m2] (The m1, m2 must be a map or null.) Values associated with identical keys overwrite from left to right: [a:1,a:2] === [a:2]
Some malformed constructor expressions are not detected in the parser, but in a post-pass. Bad examples: [1,b:2], [a:1,2], [:1]. (Note that method call arguments, by contrast, can be a mix of keyworded and non-keyworded arguments.)
antlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamExceptionantlr.RecognitionExceptionantlr.TokenStreamException