@appthreat/atom-parsetools
Version:
Parsing tools that complement the @appthreat/atom project.
1,796 lines (1,650 loc) • 129 kB
YAML
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