UNPKG

@appthreat/atom-parsetools

Version:

Parsing tools that complement the @appthreat/atom project.

1,796 lines (1,650 loc) 129 kB
errors: - ALIAS_ARGUMENT - ALIAS_ARGUMENT_NUMBERED_REFERENCE - AMPAMPEQ_MULTI_ASSIGN - ARGUMENT_AFTER_BLOCK - ARGUMENT_AFTER_FORWARDING_ELLIPSES - ARGUMENT_BARE_HASH - ARGUMENT_BLOCK_FORWARDING - ARGUMENT_BLOCK_MULTI - ARGUMENT_CONFLICT_AMPERSAND - ARGUMENT_CONFLICT_STAR - ARGUMENT_CONFLICT_STAR_STAR - ARGUMENT_FORMAL_CLASS - ARGUMENT_FORMAL_CONSTANT - ARGUMENT_FORMAL_GLOBAL - ARGUMENT_FORMAL_IVAR - ARGUMENT_FORWARDING_UNBOUND - ARGUMENT_NO_FORWARDING_AMPERSAND - ARGUMENT_NO_FORWARDING_ELLIPSES - ARGUMENT_NO_FORWARDING_STAR - ARGUMENT_NO_FORWARDING_STAR_STAR - ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT - ARGUMENT_SPLAT_AFTER_SPLAT - ARGUMENT_TERM_PAREN - ARGUMENT_UNEXPECTED_BLOCK - ARRAY_ELEMENT - ARRAY_EXPRESSION - ARRAY_EXPRESSION_AFTER_STAR - ARRAY_SEPARATOR - ARRAY_TERM - BEGIN_LONELY_ELSE - BEGIN_TERM - BEGIN_UPCASE_BRACE - BEGIN_UPCASE_TERM - BEGIN_UPCASE_TOPLEVEL - BLOCK_PARAM_LOCAL_VARIABLE - BLOCK_PARAM_PIPE_TERM - BLOCK_TERM_BRACE - BLOCK_TERM_END - CANNOT_PARSE_EXPRESSION - CANNOT_PARSE_STRING_PART - CASE_EXPRESSION_AFTER_CASE - CASE_EXPRESSION_AFTER_WHEN - CASE_MATCH_MISSING_PREDICATE - CASE_MISSING_CONDITIONS - CASE_TERM - CLASS_IN_METHOD - CLASS_NAME - CLASS_SUPERCLASS - CLASS_TERM - CLASS_UNEXPECTED_END - CLASS_VARIABLE_BARE - CONDITIONAL_ELSIF_PREDICATE - CONDITIONAL_IF_PREDICATE - CONDITIONAL_PREDICATE_TERM - CONDITIONAL_TERM - CONDITIONAL_TERM_ELSE - CONDITIONAL_UNLESS_PREDICATE - CONDITIONAL_UNTIL_PREDICATE - CONDITIONAL_WHILE_PREDICATE - CONSTANT_PATH_COLON_COLON_CONSTANT - DEF_ENDLESS - DEF_ENDLESS_PARAMETERS - DEF_ENDLESS_SETTER - DEF_NAME - DEF_PARAMS_TERM - DEF_PARAMS_TERM_PAREN - DEF_RECEIVER - DEF_RECEIVER_TERM - DEF_TERM - DEFINED_EXPRESSION - EMBDOC_TERM - EMBEXPR_END - EMBVAR_INVALID - END_UPCASE_BRACE - END_UPCASE_TERM - ESCAPE_INVALID_CONTROL - ESCAPE_INVALID_CONTROL_REPEAT - ESCAPE_INVALID_HEXADECIMAL - ESCAPE_INVALID_META - ESCAPE_INVALID_META_REPEAT - ESCAPE_INVALID_UNICODE - ESCAPE_INVALID_UNICODE_CM_FLAGS - ESCAPE_INVALID_UNICODE_LIST - ESCAPE_INVALID_UNICODE_LITERAL - ESCAPE_INVALID_UNICODE_LONG - ESCAPE_INVALID_UNICODE_SHORT - ESCAPE_INVALID_UNICODE_TERM - EXPECT_ARGUMENT - EXPECT_EOL_AFTER_STATEMENT - EXPECT_EXPRESSION_AFTER_AMPAMPEQ - EXPECT_EXPRESSION_AFTER_COMMA - EXPECT_EXPRESSION_AFTER_EQUAL - EXPECT_EXPRESSION_AFTER_LESS_LESS - EXPECT_EXPRESSION_AFTER_LPAREN - EXPECT_EXPRESSION_AFTER_OPERATOR - EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ - EXPECT_EXPRESSION_AFTER_QUESTION - EXPECT_EXPRESSION_AFTER_SPLAT - EXPECT_EXPRESSION_AFTER_SPLAT_HASH - EXPECT_EXPRESSION_AFTER_STAR - EXPECT_FOR_DELIMITER - EXPECT_IDENT_REQ_PARAMETER - EXPECT_IN_DELIMITER - EXPECT_LPAREN_AFTER_NOT_LPAREN - EXPECT_LPAREN_AFTER_NOT_OTHER - EXPECT_LPAREN_REQ_PARAMETER - EXPECT_MESSAGE - EXPECT_RBRACKET - EXPECT_RPAREN - EXPECT_RPAREN_AFTER_MULTI - EXPECT_RPAREN_REQ_PARAMETER - EXPECT_SINGLETON_CLASS_DELIMITER - EXPECT_STRING_CONTENT - EXPECT_WHEN_DELIMITER - EXPRESSION_BARE_HASH - EXPRESSION_NOT_WRITABLE - EXPRESSION_NOT_WRITABLE_ENCODING - EXPRESSION_NOT_WRITABLE_FALSE - EXPRESSION_NOT_WRITABLE_FILE - EXPRESSION_NOT_WRITABLE_LINE - EXPRESSION_NOT_WRITABLE_NIL - EXPRESSION_NOT_WRITABLE_NUMBERED - EXPRESSION_NOT_WRITABLE_SELF - EXPRESSION_NOT_WRITABLE_TRUE - FLOAT_PARSE - FOR_COLLECTION - FOR_IN - FOR_INDEX - FOR_TERM - GLOBAL_VARIABLE_BARE - HASH_EXPRESSION_AFTER_LABEL - HASH_KEY - HASH_ROCKET - HASH_TERM - HASH_VALUE - HEREDOC_IDENTIFIER - HEREDOC_TERM - INCOMPLETE_QUESTION_MARK - INCOMPLETE_VARIABLE_CLASS - INCOMPLETE_VARIABLE_CLASS_3_3 - INCOMPLETE_VARIABLE_INSTANCE - INCOMPLETE_VARIABLE_INSTANCE_3_3 - INSTANCE_VARIABLE_BARE - INVALID_BLOCK_EXIT - INVALID_CHARACTER - INVALID_COMMA - INVALID_ENCODING_MAGIC_COMMENT - INVALID_ESCAPE_CHARACTER - INVALID_FLOAT_EXPONENT - INVALID_LOCAL_VARIABLE_READ - INVALID_LOCAL_VARIABLE_WRITE - INVALID_MULTIBYTE_CHAR - INVALID_MULTIBYTE_CHARACTER - INVALID_MULTIBYTE_ESCAPE - INVALID_NUMBER_BINARY - INVALID_NUMBER_DECIMAL - INVALID_NUMBER_FRACTION - INVALID_NUMBER_HEXADECIMAL - INVALID_NUMBER_OCTAL - INVALID_NUMBER_UNDERSCORE_INNER - INVALID_NUMBER_UNDERSCORE_TRAILING - INVALID_PERCENT - INVALID_PERCENT_EOF - INVALID_PRINTABLE_CHARACTER - INVALID_RETRY_AFTER_ELSE - INVALID_RETRY_AFTER_ENSURE - INVALID_RETRY_WITHOUT_RESCUE - INVALID_SYMBOL - INVALID_VARIABLE_GLOBAL - INVALID_VARIABLE_GLOBAL_3_3 - INVALID_YIELD - IT_NOT_ALLOWED_NUMBERED - IT_NOT_ALLOWED_ORDINARY - LAMBDA_OPEN - LAMBDA_TERM_BRACE - LAMBDA_TERM_END - LIST_I_LOWER_ELEMENT - LIST_I_LOWER_TERM - LIST_I_UPPER_ELEMENT - LIST_I_UPPER_TERM - LIST_W_LOWER_ELEMENT - LIST_W_LOWER_TERM - LIST_W_UPPER_ELEMENT - LIST_W_UPPER_TERM - MALLOC_FAILED - MIXED_ENCODING - MODULE_IN_METHOD - MODULE_NAME - MODULE_TERM - MULTI_ASSIGN_MULTI_SPLATS - MULTI_ASSIGN_UNEXPECTED_REST - NESTING_TOO_DEEP - NO_LOCAL_VARIABLE - NON_ASSOCIATIVE_OPERATOR - NOT_EXPRESSION - NUMBER_LITERAL_UNDERSCORE - NUMBERED_PARAMETER_INNER_BLOCK - NUMBERED_PARAMETER_IT - NUMBERED_PARAMETER_ORDINARY - NUMBERED_PARAMETER_OUTER_BLOCK - OPERATOR_MULTI_ASSIGN - OPERATOR_WRITE_ARGUMENTS - OPERATOR_WRITE_BLOCK - PARAMETER_ASSOC_SPLAT_MULTI - PARAMETER_BLOCK_MULTI - PARAMETER_CIRCULAR - PARAMETER_FORWARDING_AFTER_REST - PARAMETER_METHOD_NAME - PARAMETER_NAME_DUPLICATED - PARAMETER_NO_DEFAULT - PARAMETER_NO_DEFAULT_KW - PARAMETER_NUMBERED_RESERVED - PARAMETER_ORDER - PARAMETER_SPLAT_MULTI - PARAMETER_STAR - PARAMETER_UNEXPECTED_FWD - PARAMETER_UNEXPECTED_NO_KW - PARAMETER_WILD_LOOSE_COMMA - PATTERN_ARRAY_MULTIPLE_RESTS - PATTERN_CAPTURE_DUPLICATE - PATTERN_CAPTURE_IN_ALTERNATIVE - PATTERN_EXPRESSION_AFTER_BRACKET - PATTERN_EXPRESSION_AFTER_COMMA - PATTERN_EXPRESSION_AFTER_HROCKET - PATTERN_EXPRESSION_AFTER_IN - PATTERN_EXPRESSION_AFTER_KEY - PATTERN_EXPRESSION_AFTER_PAREN - PATTERN_EXPRESSION_AFTER_PIN - PATTERN_EXPRESSION_AFTER_PIPE - PATTERN_EXPRESSION_AFTER_RANGE - PATTERN_EXPRESSION_AFTER_REST - PATTERN_FIND_MISSING_INNER - PATTERN_HASH_IMPLICIT - PATTERN_HASH_KEY - PATTERN_HASH_KEY_DUPLICATE - PATTERN_HASH_KEY_INTERPOLATED - PATTERN_HASH_KEY_LABEL - PATTERN_HASH_KEY_LOCALS - PATTERN_IDENT_AFTER_HROCKET - PATTERN_LABEL_AFTER_COMMA - PATTERN_REST - PATTERN_TERM_BRACE - PATTERN_TERM_BRACKET - PATTERN_TERM_PAREN - PIPEPIPEEQ_MULTI_ASSIGN - REGEXP_ENCODING_OPTION_MISMATCH - REGEXP_INCOMPAT_CHAR_ENCODING - REGEXP_INVALID_UNICODE_RANGE - REGEXP_NON_ESCAPED_MBC - REGEXP_PARSE_ERROR - REGEXP_TERM - REGEXP_UNKNOWN_OPTIONS - REGEXP_UTF8_CHAR_NON_UTF8_REGEXP - RESCUE_EXPRESSION - RESCUE_MODIFIER_VALUE - RESCUE_TERM - RESCUE_VARIABLE - RETURN_INVALID - SCRIPT_NOT_FOUND - SINGLETON_FOR_LITERALS - STATEMENT_ALIAS - STATEMENT_POSTEXE_END - STATEMENT_PREEXE_BEGIN - STATEMENT_UNDEF - STRING_CONCATENATION - STRING_INTERPOLATED_TERM - STRING_LITERAL_EOF - STRING_LITERAL_TERM - SYMBOL_INVALID - SYMBOL_TERM_DYNAMIC - SYMBOL_TERM_INTERPOLATED - TERNARY_COLON - TERNARY_EXPRESSION_FALSE - TERNARY_EXPRESSION_TRUE - UNARY_DISALLOWED - UNARY_RECEIVER - UNDEF_ARGUMENT - UNEXPECTED_BLOCK_ARGUMENT - UNEXPECTED_INDEX_BLOCK - UNEXPECTED_INDEX_KEYWORDS - UNEXPECTED_LABEL - UNEXPECTED_MULTI_WRITE - UNEXPECTED_PARAMETER_DEFAULT_VALUE - UNEXPECTED_RANGE_OPERATOR - UNEXPECTED_SAFE_NAVIGATION - UNEXPECTED_TOKEN_CLOSE_CONTEXT - UNEXPECTED_TOKEN_IGNORE - UNTIL_TERM - VOID_EXPRESSION - WHILE_TERM - WRITE_TARGET_IN_METHOD - WRITE_TARGET_READONLY - WRITE_TARGET_UNEXPECTED - XSTRING_TERM warnings: - AMBIGUOUS_BINARY_OPERATOR - AMBIGUOUS_FIRST_ARGUMENT_MINUS - AMBIGUOUS_FIRST_ARGUMENT_PLUS - AMBIGUOUS_PREFIX_AMPERSAND - AMBIGUOUS_PREFIX_STAR - AMBIGUOUS_PREFIX_STAR_STAR - AMBIGUOUS_SLASH - COMPARISON_AFTER_COMPARISON - DOT_DOT_DOT_EOL - EQUAL_IN_CONDITIONAL - EQUAL_IN_CONDITIONAL_3_3 - END_IN_METHOD - DUPLICATED_HASH_KEY - DUPLICATED_WHEN_CLAUSE - FLOAT_OUT_OF_RANGE - IGNORED_FROZEN_STRING_LITERAL - INDENTATION_MISMATCH - INTEGER_IN_FLIP_FLOP - INVALID_CHARACTER - INVALID_MAGIC_COMMENT_VALUE - INVALID_NUMBERED_REFERENCE - KEYWORD_EOL - LITERAL_IN_CONDITION_DEFAULT - LITERAL_IN_CONDITION_VERBOSE - SHAREABLE_CONSTANT_VALUE_LINE - SHEBANG_CARRIAGE_RETURN - UNEXPECTED_CARRIAGE_RETURN - UNREACHABLE_STATEMENT - UNUSED_LOCAL_VARIABLE - VOID_STATEMENT tokens: # The order of the tokens at the beginning is important, because we use them # for a lookup table. - name: EOF value: 1 comment: final token in the file - name: BRACE_RIGHT comment: "}" - name: COMMA comment: "," - name: EMBEXPR_END comment: "}" - name: KEYWORD_DO comment: "do" - name: KEYWORD_ELSE comment: "else" - name: KEYWORD_ELSIF comment: "elsif" - name: KEYWORD_END comment: "end" - name: KEYWORD_ENSURE comment: "ensure" - name: KEYWORD_IN comment: "in" - name: KEYWORD_RESCUE comment: "rescue" - name: KEYWORD_THEN comment: "then" - name: KEYWORD_WHEN comment: "when" - name: NEWLINE comment: "a newline character outside of other tokens" - name: PARENTHESIS_RIGHT comment: ")" - name: PIPE comment: "|" - name: SEMICOLON comment: ";" # Tokens from here on are not used for lookup, and can be in any order. - name: AMPERSAND comment: "&" - name: AMPERSAND_AMPERSAND comment: "&&" - name: AMPERSAND_AMPERSAND_EQUAL comment: "&&=" - name: AMPERSAND_DOT comment: "&." - name: AMPERSAND_EQUAL comment: "&=" - name: BACKTICK comment: "`" - name: BACK_REFERENCE comment: "a back reference" - name: BANG comment: "! or !@" - name: BANG_EQUAL comment: "!=" - name: BANG_TILDE comment: "!~" - name: BRACE_LEFT comment: "{" - name: BRACKET_LEFT comment: "[" - name: BRACKET_LEFT_ARRAY comment: "[ for the beginning of an array" - name: BRACKET_LEFT_RIGHT comment: "[]" - name: BRACKET_LEFT_RIGHT_EQUAL comment: "[]=" - name: BRACKET_RIGHT comment: "]" - name: CARET comment: "^" - name: CARET_EQUAL comment: "^=" - name: CHARACTER_LITERAL comment: "a character literal" - name: CLASS_VARIABLE comment: "a class variable" - name: COLON comment: ":" - name: COLON_COLON comment: "::" - name: COMMENT comment: "a comment" - name: CONSTANT comment: "a constant" - name: DOT comment: "the . call operator" - name: DOT_DOT comment: "the .. range operator" - name: DOT_DOT_DOT comment: "the ... range operator or forwarding parameter" - name: EMBDOC_BEGIN comment: "=begin" - name: EMBDOC_END comment: "=end" - name: EMBDOC_LINE comment: "a line inside of embedded documentation" - name: EMBEXPR_BEGIN comment: "#{" - name: EMBVAR comment: "#" - name: EQUAL comment: "=" - name: EQUAL_EQUAL comment: "==" - name: EQUAL_EQUAL_EQUAL comment: "===" - name: EQUAL_GREATER comment: "=>" - name: EQUAL_TILDE comment: "=~" - name: FLOAT comment: "a floating point number" - name: FLOAT_IMAGINARY comment: "a floating pointer number with an imaginary suffix" - name: FLOAT_RATIONAL comment: "a floating pointer number with a rational suffix" - name: FLOAT_RATIONAL_IMAGINARY comment: "a floating pointer number with a rational and imaginary suffix" - name: GLOBAL_VARIABLE comment: "a global variable" - name: GREATER comment: ">" - name: GREATER_EQUAL comment: ">=" - name: GREATER_GREATER comment: ">>" - name: GREATER_GREATER_EQUAL comment: ">>=" - name: HEREDOC_END comment: "the end of a heredoc" - name: HEREDOC_START comment: "the start of a heredoc" - name: IDENTIFIER comment: "an identifier" - name: IGNORED_NEWLINE comment: "an ignored newline" - name: INSTANCE_VARIABLE comment: "an instance variable" - name: INTEGER comment: "an integer (any base)" - name: INTEGER_IMAGINARY comment: "an integer with an imaginary suffix" - name: INTEGER_RATIONAL comment: "an integer with a rational suffix" - name: INTEGER_RATIONAL_IMAGINARY comment: "an integer with a rational and imaginary suffix" - name: KEYWORD_ALIAS comment: "alias" - name: KEYWORD_AND comment: "and" - name: KEYWORD_BEGIN comment: "begin" - name: KEYWORD_BEGIN_UPCASE comment: "BEGIN" - name: KEYWORD_BREAK comment: "break" - name: KEYWORD_CASE comment: "case" - name: KEYWORD_CLASS comment: "class" - name: KEYWORD_DEF comment: "def" - name: KEYWORD_DEFINED comment: "defined?" - name: KEYWORD_DO_LOOP comment: "do keyword for a predicate in a while, until, or for loop" - name: KEYWORD_END_UPCASE comment: "END" - name: KEYWORD_FALSE comment: "false" - name: KEYWORD_FOR comment: "for" - name: KEYWORD_IF comment: "if" - name: KEYWORD_IF_MODIFIER comment: "if in the modifier form" - name: KEYWORD_MODULE comment: "module" - name: KEYWORD_NEXT comment: "next" - name: KEYWORD_NIL comment: "nil" - name: KEYWORD_NOT comment: "not" - name: KEYWORD_OR comment: "or" - name: KEYWORD_REDO comment: "redo" - name: KEYWORD_RESCUE_MODIFIER comment: "rescue in the modifier form" - name: KEYWORD_RETRY comment: "retry" - name: KEYWORD_RETURN comment: "return" - name: KEYWORD_SELF comment: "self" - name: KEYWORD_SUPER comment: "super" - name: KEYWORD_TRUE comment: "true" - name: KEYWORD_UNDEF comment: "undef" - name: KEYWORD_UNLESS comment: "unless" - name: KEYWORD_UNLESS_MODIFIER comment: "unless in the modifier form" - name: KEYWORD_UNTIL comment: "until" - name: KEYWORD_UNTIL_MODIFIER comment: "until in the modifier form" - name: KEYWORD_WHILE comment: "while" - name: KEYWORD_WHILE_MODIFIER comment: "while in the modifier form" - name: KEYWORD_YIELD comment: "yield" - name: KEYWORD___ENCODING__ comment: "__ENCODING__" - name: KEYWORD___FILE__ comment: "__FILE__" - name: KEYWORD___LINE__ comment: "__LINE__" - name: LABEL comment: "a label" - name: LABEL_END comment: "the end of a label" - name: LAMBDA_BEGIN comment: "{" - name: LESS comment: "<" - name: LESS_EQUAL comment: "<=" - name: LESS_EQUAL_GREATER comment: "<=>" - name: LESS_LESS comment: "<<" - name: LESS_LESS_EQUAL comment: "<<=" - name: METHOD_NAME comment: "a method name" - name: MINUS comment: "-" - name: MINUS_EQUAL comment: "-=" - name: MINUS_GREATER comment: "->" - name: NUMBERED_REFERENCE comment: "a numbered reference to a capture group in the previous regular expression match" - name: PARENTHESIS_LEFT comment: "(" - name: PARENTHESIS_LEFT_PARENTHESES comment: "( for a parentheses node" - name: PERCENT comment: "%" - name: PERCENT_EQUAL comment: "%=" - name: PERCENT_LOWER_I comment: "%i" - name: PERCENT_LOWER_W comment: "%w" - name: PERCENT_LOWER_X comment: "%x" - name: PERCENT_UPPER_I comment: "%I" - name: PERCENT_UPPER_W comment: "%W" - name: PIPE_EQUAL comment: "|=" - name: PIPE_PIPE comment: "||" - name: PIPE_PIPE_EQUAL comment: "||=" - name: PLUS comment: "+" - name: PLUS_EQUAL comment: "+=" - name: QUESTION_MARK comment: "?" - name: REGEXP_BEGIN comment: "the beginning of a regular expression" - name: REGEXP_END comment: "the end of a regular expression" - name: SLASH comment: "/" - name: SLASH_EQUAL comment: "/=" - name: STAR comment: "*" - name: STAR_EQUAL comment: "*=" - name: STAR_STAR comment: "**" - name: STAR_STAR_EQUAL comment: "**=" - name: STRING_BEGIN comment: "the beginning of a string" - name: STRING_CONTENT comment: "the contents of a string" - name: STRING_END comment: "the end of a string" - name: SYMBOL_BEGIN comment: "the beginning of a symbol" - name: TILDE comment: "~ or ~@" - name: UAMPERSAND comment: "unary &" - name: UCOLON_COLON comment: "unary ::" - name: UDOT_DOT comment: "unary .. operator" - name: UDOT_DOT_DOT comment: "unary ... operator" - name: UMINUS comment: "-@" - name: UMINUS_NUM comment: "-@ for a number" - name: UPLUS comment: "+@" - name: USTAR comment: "unary *" - name: USTAR_STAR comment: "unary **" - name: WORDS_SEP comment: "a separator between words in a list" - name: __END__ comment: "marker for the point in the file at which the parser should stop" - name: MISSING comment: "a token that was expected but not found" - name: NOT_PROVIDED comment: "a token that was not present but it is okay" flags: - name: ArgumentsNodeFlags values: - name: CONTAINS_FORWARDING comment: "if the arguments contain forwarding" - name: CONTAINS_KEYWORDS comment: "if the arguments contain keywords" - name: CONTAINS_KEYWORD_SPLAT comment: "if the arguments contain a keyword splat" - name: CONTAINS_SPLAT comment: "if the arguments contain a splat" - name: CONTAINS_MULTIPLE_SPLATS comment: "if the arguments contain multiple splats" comment: Flags for arguments nodes. - name: ArrayNodeFlags values: - name: CONTAINS_SPLAT comment: "if array contains splat nodes" comment: Flags for array nodes. - name: CallNodeFlags values: - name: SAFE_NAVIGATION comment: "&. operator" - name: VARIABLE_CALL comment: "a call that could have been a local variable" - name: ATTRIBUTE_WRITE comment: "a call that is an attribute write, so the value being written should be returned" - name: IGNORE_VISIBILITY comment: "a call that ignores method visibility" comment: Flags for call nodes. - name: EncodingFlags values: - name: FORCED_UTF8_ENCODING comment: "internal bytes forced the encoding to UTF-8" - name: FORCED_BINARY_ENCODING comment: "internal bytes forced the encoding to binary" comment: Flags for nodes that have unescaped content. - name: IntegerBaseFlags values: - name: BINARY comment: "0b prefix" - name: DECIMAL comment: "0d or no prefix" - name: OCTAL comment: "0o or 0 prefix" - name: HEXADECIMAL comment: "0x prefix" comment: Flags for integer nodes that correspond to the base of the integer. - name: InterpolatedStringNodeFlags values: - name: FROZEN comment: "frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal`; only for adjacent string literals like `'a' 'b'`" - name: MUTABLE comment: "mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal`; only for adjacent string literals like `'a' 'b'`" comment: Flags for interpolated string nodes that indicated mutability if they are also marked as literals. - name: KeywordHashNodeFlags values: - name: SYMBOL_KEYS comment: "a keyword hash which only has `AssocNode` elements all with symbol keys, which means the elements can be treated as keyword arguments" comment: Flags for keyword hash nodes. - name: LoopFlags values: - name: BEGIN_MODIFIER comment: "a loop after a begin statement, so the body is executed first before the condition" comment: Flags for while and until loop nodes. - name: ParameterFlags values: - name: REPEATED_PARAMETER comment: "a parameter name that has been repeated in the method signature" comment: Flags for parameter nodes. - name: ParenthesesNodeFlags values: - name: MULTIPLE_STATEMENTS comment: "parentheses that contain multiple potentially void statements" comment: Flags for parentheses nodes. - name: RangeFlags values: - name: EXCLUDE_END comment: "... operator" comment: Flags for range and flip-flop nodes. - name: RegularExpressionFlags values: - name: IGNORE_CASE comment: "i - ignores the case of characters when matching" - name: EXTENDED comment: "x - ignores whitespace and allows comments in regular expressions" - name: MULTI_LINE comment: "m - allows $ to match the end of lines within strings" - name: ONCE comment: "o - only interpolates values into the regular expression once" - name: EUC_JP comment: "e - forces the EUC-JP encoding" - name: ASCII_8BIT comment: "n - forces the ASCII-8BIT encoding" - name: WINDOWS_31J comment: "s - forces the Windows-31J encoding" - name: UTF_8 comment: "u - forces the UTF-8 encoding" - name: FORCED_UTF8_ENCODING comment: "internal bytes forced the encoding to UTF-8" - name: FORCED_BINARY_ENCODING comment: "internal bytes forced the encoding to binary" - name: FORCED_US_ASCII_ENCODING comment: "internal bytes forced the encoding to US-ASCII" comment: Flags for regular expression and match last line nodes. - name: ShareableConstantNodeFlags values: - name: LITERAL comment: "constant writes that should be modified with shareable constant value literal" - name: EXPERIMENTAL_EVERYTHING comment: "constant writes that should be modified with shareable constant value experimental everything" - name: EXPERIMENTAL_COPY comment: "constant writes that should be modified with shareable constant value experimental copy" comment: Flags for shareable constant nodes. - name: StringFlags values: - name: FORCED_UTF8_ENCODING comment: "internal bytes forced the encoding to UTF-8" - name: FORCED_BINARY_ENCODING comment: "internal bytes forced the encoding to binary" - name: FROZEN comment: "frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal`" - name: MUTABLE comment: "mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal`" comment: Flags for string nodes. - name: SymbolFlags values: - name: FORCED_UTF8_ENCODING comment: "internal bytes forced the encoding to UTF-8" - name: FORCED_BINARY_ENCODING comment: "internal bytes forced the encoding to binary" - name: FORCED_US_ASCII_ENCODING comment: "internal bytes forced the encoding to US-ASCII" comment: Flags for symbol nodes. nodes: - name: AliasGlobalVariableNode fields: - name: new_name type: node kind: - GlobalVariableReadNode - BackReferenceReadNode - NumberedReferenceReadNode comment: | Represents the new name of the global variable that can be used after aliasing. alias $foo $bar ^^^^ - name: old_name type: node kind: - GlobalVariableReadNode - BackReferenceReadNode - NumberedReferenceReadNode - on error: SymbolNode # alias $a b - on error: MissingNode # alias $a 42 comment: | Represents the old name of the global variable that can be used before aliasing. alias $foo $bar ^^^^ - name: keyword_loc type: location comment: | The location of the `alias` keyword. alias $foo $bar ^^^^^ comment: | Represents the use of the `alias` keyword to alias a global variable. alias $foo $bar ^^^^^^^^^^^^^^^ - name: AliasMethodNode fields: - name: new_name type: node kind: - SymbolNode - InterpolatedSymbolNode comment: | Represents the new name of the method that will be aliased. alias foo bar ^^^ alias :foo :bar ^^^^ alias :"#{foo}" :"#{bar}" ^^^^^^^^^ - name: old_name type: node kind: - SymbolNode - InterpolatedSymbolNode - on error: GlobalVariableReadNode # alias a $b - on error: MissingNode # alias a 42 comment: | Represents the old name of the method that will be aliased. alias foo bar ^^^ alias :foo :bar ^^^^ alias :"#{foo}" :"#{bar}" ^^^^^^^^^ - name: keyword_loc type: location comment: | Represents the location of the `alias` keyword. alias foo bar ^^^^^ comment: | Represents the use of the `alias` keyword to alias a method. alias foo bar ^^^^^^^^^^^^^ - name: AlternationPatternNode fields: - name: left type: node kind: pattern expression comment: | Represents the left side of the expression. foo => bar | baz ^^^ - name: right type: node kind: pattern expression comment: | Represents the right side of the expression. foo => bar | baz ^^^ - name: operator_loc type: location comment: | Represents the alternation operator location. foo => bar | baz ^ comment: | Represents an alternation pattern in pattern matching. foo => bar | baz ^^^^^^^^^ - name: AndNode fields: - name: left type: node kind: non-void expression comment: | Represents the left side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). left and right ^^^^ 1 && 2 ^ - name: right type: node kind: Node comment: | Represents the right side of the expression. left && right ^^^^^ 1 and 2 ^ - name: operator_loc type: location comment: | The location of the `and` keyword or the `&&` operator. left and right ^^^ comment: | Represents the use of the `&&` operator or the `and` keyword. left and right ^^^^^^^^^^^^^^ - name: ArgumentsNode flags: ArgumentsNodeFlags fields: - name: arguments type: node[] kind: non-void expression comment: | The list of arguments, if present. These can be any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo(bar, baz) ^^^^^^^^ comment: | Represents a set of arguments to a method or a keyword. return foo, bar, baz ^^^^^^^^^^^^^ - name: ArrayNode flags: ArrayNodeFlags fields: - name: elements type: node[] kind: non-void expression comment: Represent the list of zero or more [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression) within the array. - name: opening_loc type: location? comment: | Represents the optional source location for the opening token. [1,2,3] # "[" %w[foo bar baz] # "%w[" %I(apple orange banana) # "%I(" foo = 1, 2, 3 # nil - name: closing_loc type: location? comment: | Represents the optional source location for the closing token. [1,2,3] # "]" %w[foo bar baz] # "]" %I(apple orange banana) # ")" foo = 1, 2, 3 # nil comment: | Represents an array literal. This can be a regular array using brackets or a special array using % like %w or %i. [1, 2, 3] ^^^^^^^^^ - name: ArrayPatternNode fields: - name: constant type: node? kind: - ConstantPathNode - ConstantReadNode comment: | Represents the optional constant preceding the Array foo in Bar[] ^^^ foo in Bar[1, 2, 3] ^^^ foo in Bar::Baz[1, 2, 3] ^^^^^^^^ - name: requireds type: node[] kind: pattern expression comment: | Represents the required elements of the array pattern. foo in [1, 2] ^ ^ - name: rest type: node? kind: pattern expression comment: | Represents the rest element of the array pattern. foo in *bar ^^^^ - name: posts type: node[] kind: pattern expression comment: | Represents the elements after the rest element of the array pattern. foo in *bar, baz ^^^ - name: opening_loc type: location? comment: | Represents the opening location of the array pattern. foo in [1, 2] ^ - name: closing_loc type: location? comment: | Represents the closing location of the array pattern. foo in [1, 2] ^ comment: | Represents an array pattern in pattern matching. foo in 1, 2 ^^^^^^^^^^^ foo in [1, 2] ^^^^^^^^^^^^^ foo in *bar ^^^^^^^^^^^ foo in Bar[] ^^^^^^^^^^^^ foo in Bar[1, 2, 3] ^^^^^^^^^^^^^^^^^^^ - name: AssocNode fields: - name: key type: node kind: non-void expression comment: | The key of the association. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). { a: b } ^ { foo => bar } ^^^ { def a; end => 1 } ^^^^^^^^^^ - name: value type: node kind: non-void expression comment: | The value of the association, if present. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). { foo => bar } ^^^ { x: 1 } ^ - name: operator_loc type: location? comment: | The location of the `=>` operator, if present. { foo => bar } ^^ comment: | Represents a hash key/value pair. { a => b } ^^^^^^ - name: AssocSplatNode fields: - name: value type: node? kind: non-void expression comment: | The value to be splatted, if present. Will be missing when keyword rest argument forwarding is used. { **foo } ^^^ - name: operator_loc type: location comment: | The location of the `**` operator. { **x } ^^ comment: | Represents a splat in a hash literal. { **foo } ^^^^^ - name: BackReferenceReadNode fields: - name: name type: constant comment: | The name of the back-reference variable, including the leading `$`. $& # name `:$&` $+ # name `:$+` comment: | Represents reading a reference to a field in the previous match. $' ^^ - name: BeginNode fields: - name: begin_keyword_loc type: location? comment: | Represents the location of the `begin` keyword. begin x end ^^^^^ - name: statements type: node? kind: StatementsNode comment: | Represents the statements within the begin block. begin x end ^ - name: rescue_clause type: node? kind: RescueNode comment: | Represents the rescue clause within the begin block. begin x; rescue y; end ^^^^^^^^ - name: else_clause type: node? kind: ElseNode comment: | Represents the else clause within the begin block. begin x; rescue y; else z; end ^^^^^^ - name: ensure_clause type: node? kind: EnsureNode comment: | Represents the ensure clause within the begin block. begin x; ensure y; end ^^^^^^^^ - name: end_keyword_loc type: location? comment: | Represents the location of the `end` keyword. begin x end ^^^ newline: false comment: | Represents a begin statement. begin foo end ^^^^^ - name: BlockArgumentNode fields: - name: expression type: node? kind: non-void expression comment: | The expression that is being passed as a block argument. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo(&args) ^^^^^ - name: operator_loc type: location comment: | Represents the location of the `&` operator. foo(&args) ^ comment: | Represents a block argument using `&`. bar(&args) ^^^^^^^^^^ - name: BlockLocalVariableNode flags: ParameterFlags fields: - name: name type: constant comment: | The name of the block local variable. a { |; b| } # name `:b` ^ comment: | Represents a block local variable. a { |; b| } ^ - name: BlockNode fields: - name: locals type: constant[] comment: | The local variables declared in the block. [1, 2, 3].each { |i| puts x } # locals: [:i] ^ - name: parameters type: node? kind: - BlockParametersNode - NumberedParametersNode - ItParametersNode comment: | The parameters of the block. [1, 2, 3].each { |i| puts x } ^^^ [1, 2, 3].each { puts _1 } ^^^^^^^^^^^ [1, 2, 3].each { puts it } ^^^^^^^^^^^ - name: body type: node? kind: - StatementsNode - BeginNode comment: | The body of the block. [1, 2, 3].each { |i| puts x } ^^^^^^ - name: opening_loc type: location comment: | Represents the location of the opening `|`. [1, 2, 3].each { |i| puts x } ^ - name: closing_loc type: location comment: | Represents the location of the closing `|`. [1, 2, 3].each { |i| puts x } ^ comment: | Represents a block of ruby code. [1, 2, 3].each { |i| puts x } ^^^^^^^^^^^^^^ - name: BlockParameterNode flags: ParameterFlags fields: - name: name type: constant? comment: | The name of the block parameter. def a(&b) # name `:b` ^ end - name: name_loc type: location? comment: | Represents the location of the block parameter name. def a(&b) ^ - name: operator_loc type: location comment: | Represents the location of the `&` operator. def a(&b) ^ end comment: | Represents a block parameter of a method, block, or lambda definition. def a(&b) ^^ end - name: BlockParametersNode fields: - name: parameters type: node? kind: ParametersNode comment: | Represents the parameters of the block. -> (a, b = 1; local) { } ^^^^^^^^ foo do |a, b = 1; local| ^^^^^^^^ end - name: locals type: node[] kind: BlockLocalVariableNode comment: | Represents the local variables of the block. -> (a, b = 1; local) { } ^^^^^ foo do |a, b = 1; local| ^^^^^ end - name: opening_loc type: location? comment: | Represents the opening location of the block parameters. -> (a, b = 1; local) { } ^ foo do |a, b = 1; local| ^ end - name: closing_loc type: location? comment: | Represents the closing location of the block parameters. -> (a, b = 1; local) { } ^ foo do |a, b = 1; local| ^ end comment: | Represents a block's parameters declaration. -> (a, b = 1; local) { } ^^^^^^^^^^^^^^^^^ foo do |a, b = 1; local| ^^^^^^^^^^^^^^^^^ end - name: BreakNode fields: - name: arguments type: node? kind: ArgumentsNode comment: | The arguments to the break statement, if present. These can be any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). break foo ^^^ - name: keyword_loc type: location comment: | The location of the `break` keyword. break foo ^^^^^ comment: | Represents the use of the `break` keyword. break foo ^^^^^^^^^ - name: CallAndWriteNode flags: CallNodeFlags fields: - name: receiver type: node? kind: non-void expression comment: | The object that the method is being called on. This can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo.bar &&= value ^^^ - name: call_operator_loc type: location? comment: | Represents the location of the call operator. foo.bar &&= value ^ - name: message_loc type: location? comment: | Represents the location of the message. foo.bar &&= value ^^^ - name: read_name type: constant comment: | Represents the name of the method being called. foo.bar &&= value # read_name `:bar` ^^^ - name: write_name type: constant comment: | Represents the name of the method being written to. foo.bar &&= value # write_name `:bar=` ^^^ - name: operator_loc type: location comment: | Represents the location of the operator. foo.bar &&= value ^^^ - name: value type: node kind: non-void expression comment: | Represents the value being assigned. foo.bar &&= value ^^^^^ comment: | Represents the use of the `&&=` operator on a call. foo.bar &&= value ^^^^^^^^^^^^^^^^^ - name: CallNode flags: CallNodeFlags fields: - name: receiver type: node? kind: non-void expression comment: | The object that the method is being called on. This can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo.bar ^^^ +foo ^^^ foo + bar ^^^ - name: call_operator_loc type: location? comment: | Represents the location of the call operator. foo.bar ^ foo&.bar ^^ - name: name type: constant comment: | Represents the name of the method being called. foo.bar # name `:foo` ^^^ - name: message_loc type: location? comment: | Represents the location of the message. foo.bar ^^^ - name: opening_loc type: location? comment: | Represents the location of the left parenthesis. foo(bar) ^ - name: arguments type: node? kind: ArgumentsNode comment: | Represents the arguments to the method call. These can be any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo(bar) ^^^ - name: closing_loc type: location? comment: | Represents the location of the right parenthesis. foo(bar) ^ - name: equal_loc type: location? comment: | Represents the location of the equal sign, in the case that this is an attribute write. foo.bar = value ^ foo[bar] = value ^ - name: block type: node? kind: - BlockNode - BlockArgumentNode comment: | Represents the block that is being passed to the method. foo { |a| a } ^^^^^^^^^ comment: | Represents a method call, in all of the various forms that can take. foo ^^^ foo() ^^^^^ +foo ^^^^ foo + bar ^^^^^^^^^ foo.bar ^^^^^^^ foo&.bar ^^^^^^^^ - name: CallOperatorWriteNode flags: CallNodeFlags fields: - name: receiver type: node? kind: non-void expression comment: | The object that the method is being called on. This can be either `nil` or any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo.bar += value ^^^ - name: call_operator_loc type: location? comment: | Represents the location of the call operator. foo.bar += value ^ - name: message_loc type: location? comment: | Represents the location of the message. foo.bar += value ^^^ - name: read_name type: constant comment: | Represents the name of the method being called. foo.bar += value # read_name `:bar` ^^^ - name: write_name type: constant comment: | Represents the name of the method being written to. foo.bar += value # write_name `:bar=` ^^^ - name: binary_operator type: constant comment: | Represents the binary operator being used. foo.bar += value # binary_operator `:+` ^ - name: binary_operator_loc type: location comment: | Represents the location of the binary operator. foo.bar += value ^^ - name: value type: node kind: non-void expression comment: | Represents the value being assigned. foo.bar += value ^^^^^ comment: | Represents the use of an assignment operator on a call. foo.bar += baz ^^^^^^^^^^^^^^ - name: CallOrWriteNode flags: CallNodeFlags fields: - name: receiver type: node? kind: non-void expression comment: | The object that the method is being called on. This can be either `nil` or any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo.bar ||= value ^^^ - name: call_operator_loc type: location? comment: | Represents the location of the call operator. foo.bar ||= value ^ - name: message_loc type: location? comment: | Represents the location of the message. foo.bar ||= value ^^^ - name: read_name type: constant comment: | Represents the name of the method being called. foo.bar ||= value # read_name `:bar` ^^^ - name: write_name type: constant comment: | Represents the name of the method being written to. foo.bar ||= value # write_name `:bar=` ^^^ - name: operator_loc type: location comment: | Represents the location of the operator. foo.bar ||= value ^^^ - name: value type: node kind: non-void expression comment: | Represents the value being assigned. foo.bar ||= value ^^^^^ comment: | Represents the use of the `||=` operator on a call. foo.bar ||= value ^^^^^^^^^^^^^^^^^ - name: CallTargetNode flags: CallNodeFlags fields: - name: receiver type: node kind: non-void expression comment: | The object that the method is being called on. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). foo.bar = 1 ^^^ - name: call_operator_loc type: location comment: | Represents the location of the call operator. foo.bar = 1 ^ - name: name type: constant comment: | Represents the name of the method being called. foo.bar = 1 # name `:foo` ^^^ - name: message_loc type: location comment: | Represents the location of the message. foo.bar = 1 ^^^ comment: | Represents assigning to a method call. foo.bar, = 1 ^^^^^^^ begin rescue => foo.bar ^^^^^^^ end for foo.bar in baz do end ^^^^^^^ - name: CapturePatternNode fields: - name: value type: node kind: pattern expression comment: | Represents the value to capture. foo => bar ^^^ - name: target type: node kind: LocalVariableTargetNode comment: | Represents the target of the capture. foo => bar ^^^ - name: operator_loc type: location comment: | Represents the location of the `=>` operator. foo => bar ^^ comment: | Represents assigning to a local variable in pattern matching. foo => [bar => baz] ^^^^^^^^^^^^ - name: CaseMatchNode fields: - name: predicate type: node? kind: non-void expression comment: | Represents the predicate of the case match. This can be either `nil` or any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). case true; in false; end ^^^^ - name: conditions type: node[] kind: InNode comment: | Represents the conditions of the case match. case true; in false; end ^^^^^^^^ - name: else_clause type: node? kind: ElseNode comment: | Represents the else clause of the case match. case true; in false; else; end ^^^^ - name: case_keyword_loc type: location comment: | Represents the location of the `case` keyword. case true; in false; end ^^^^ - name: end_keyword_loc type: location comment: | Represents the location of the `end` key