Module: Parser

Defined in:
lib/parser.rb,
lib/parser/base.rb,
lib/parser/meta.rb,
lib/parser/runner.rb,
lib/parser/context.rb,
lib/parser/current.rb,
lib/parser/version.rb,
lib/parser/ast/node.rb,
lib/parser/messages.rb,
lib/parser/rewriter.rb,
lib/parser/diagnostic.rb,
lib/parser/source/map.rb,
lib/parser/deprecation.rb,
lib/parser/source/range.rb,
lib/parser/syntax_error.rb,
lib/parser/ast/processor.rb,
lib/parser/lexer/literal.rb,
lib/parser/source/buffer.rb,
lib/parser/tree_rewriter.rb,
lib/parser/lexer/dedenter.rb,
lib/parser/source/comment.rb,
lib/parser/source/map/for.rb,
lib/parser/source/map/send.rb,
lib/parser/source/rewriter.rb,
lib/parser/builders/default.rb,
lib/parser/clobbering_error.rb,
lib/parser/diagnostic/engine.rb,
lib/parser/lexer/explanation.rb,
lib/parser/lexer/stack_state.rb,
lib/parser/runner/ruby_parse.rb,
lib/parser/source/map/heredoc.rb,
lib/parser/source/map/keyword.rb,
lib/parser/source/map/ternary.rb,
lib/parser/static_environment.rb,
lib/parser/runner/ruby_rewrite.rb,
lib/parser/source/map/constant.rb,
lib/parser/source/map/operator.rb,
lib/parser/source/map/variable.rb,
lib/parser/source/map/condition.rb,
lib/parser/source/tree_rewriter.rb,
lib/parser/source/map/collection.rb,
lib/parser/source/map/definition.rb,
lib/parser/source/map/objc_kwarg.rb,
lib/parser/source/map/rescue_body.rb,
lib/parser/source/rewriter/action.rb,
lib/parser/source/comment/associator.rb,
lib/parser/source/tree_rewriter/action.rb

Defined Under Namespace

Modules: AST, Builders, Deprecation, Meta, Source Classes: Base, ClobberingError, Context, Diagnostic, Rewriter, Runner, StaticEnvironment, SyntaxError, TreeRewriter

Constant Summary

VERSION =
'2.4.0.2'
MESSAGES =

Diagnostic messages (errors, warnings and notices) that can be generated.

See Also:

{
  # Lexer errors
  :unicode_point_too_large => 'invalid Unicode codepoint (too large)',
  :invalid_escape          => 'invalid escape character syntax',
  :incomplete_escape       => 'incomplete character syntax',
  :invalid_hex_escape      => 'invalid hex escape',
  :invalid_unicode_escape  => 'invalid Unicode escape',
  :unterminated_unicode    => 'unterminated Unicode escape',
  :escape_eof              => 'escape sequence meets end of file',
  :string_eof              => 'unterminated string meets end of file',
  :regexp_options          => 'unknown regexp options: %{options}',
  :cvar_name               => "`%{name}' is not allowed as a class variable name",
  :ivar_name               => "`%{name}' is not allowed as an instance variable name",
  :trailing_in_number      => "trailing `%{character}' in number",
  :empty_numeric           => 'numeric literal without digits',
  :invalid_octal           => 'invalid octal digit',
  :no_dot_digit_literal    => 'no .<digit> floating literal anymore; put 0 before dot',
  :bare_backslash          => 'bare backslash only allowed before newline',
  :unexpected              => "unexpected `%{character}'",
  :embedded_document       => 'embedded document meets end of file (and they embark on a romantic journey)',
  :heredoc_id_has_newline  => 'here document identifier across newlines, never match',
  :heredoc_id_ends_with_nl => 'here document identifier ends with a newline',

  # Lexer warnings
  :invalid_escape_use      => 'invalid character syntax; use ?%{escape}',
  :ambiguous_literal       => 'ambiguous first argument; put parentheses or a space even after the operator',
  :ambiguous_prefix        => "`%{prefix}' interpreted as argument prefix",

  # Parser errors
  :nth_ref_alias           => 'cannot define an alias for a back-reference variable',
  :begin_in_method         => 'BEGIN in method',
  :backref_assignment      => 'cannot assign to a back-reference variable',
  :invalid_assignment      => 'cannot assign to a keyword',
  :module_name_const       => 'class or module name must be a constant literal',
  :unexpected_token        => 'unexpected token %{token}',
  :argument_const          => 'formal argument cannot be a constant',
  :argument_ivar           => 'formal argument cannot be an instance variable',
  :argument_gvar           => 'formal argument cannot be a global variable',
  :argument_cvar           => 'formal argument cannot be a class variable',
  :duplicate_argument      => 'duplicate argument name',
  :empty_symbol            => 'empty symbol literal',
  :odd_hash                => 'odd number of entries for a hash',
  :singleton_literal       => 'cannot define a singleton method for a literal',
  :dynamic_const           => 'dynamic constant assignment',
  :const_reassignment      => 'constant re-assignment',
  :module_in_def           => 'module definition in method body',
  :class_in_def            => 'class definition in method body',
  :unexpected_percent_str  => '%{type}: unknown type of percent-literal',
  :block_and_blockarg      => 'both block argument and literal block are passed',
  :masgn_as_condition      => 'multiple assignment in conditional context',
  :block_given_to_yield    => 'block given to yield',
  :invalid_regexp          => '%{message}',
  :invalid_return          => 'Invalid return in class/module body',

  # Parser warnings
  :useless_else            => 'else without rescue is useless',

  # Parser errors that are not Ruby errors
  :invalid_encoding        => 'literal contains escape sequences incompatible with UTF-8',

  # Rewriter diagnostics
  :invalid_action          => 'cannot %{action}',
  :clobbered               => 'clobbered by: %{action}',

  # Rewriter diagnostics
  :different_replacements        => 'different replacements: %{replacement} vs %{other_replacement}',
  :swallowed_insertions          => 'this replacement:',
  :swallowed_insertions_conflict => 'swallows some inner rewriting actions:',
  :crossing_deletions            => 'the deletion of:',
  :crossing_deletions_conflict   => 'is crossing:',
  :crossing_insertions           => 'the rewriting action on:',
  :crossing_insertions_conflict  => 'is crossing that on:',
}.freeze

Class Method Summary collapse

Class Method Details

.warn_syntax_deviation(feature, version) ⇒ Object



5
6
7
8
9
# File 'lib/parser/current.rb', line 5

def warn_syntax_deviation(feature, version)
  warn "warning: parser/current is loading #{feature}, which recognizes"
  warn "warning: #{version}-compliant syntax, but you are running #{RUBY_VERSION}."
  warn "warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri."
end