Module: Parser

Defined in:
lib/parser.rb,
lib/parser/base.rb,
lib/parser/meta.rb,
lib/parser/runner.rb,
lib/parser/ruby22.rb,
lib/parser/version.rb,
lib/parser/current.rb,
lib/parser/messages.rb,
lib/parser/rewriter.rb,
lib/parser/ast/node.rb,
lib/parser/diagnostic.rb,
lib/parser/source/map.rb,
lib/parser/syntax_error.rb,
lib/parser/source/range.rb,
lib/parser/source/buffer.rb,
lib/parser/lexer/literal.rb,
lib/parser/ast/processor.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/clobbering_error.rb,
lib/parser/builders/default.rb,
lib/parser/runner/ruby_parse.rb,
lib/parser/diagnostic/engine.rb,
lib/parser/lexer/stack_state.rb,
lib/parser/lexer/explanation.rb,
lib/parser/source/map/ternary.rb,
lib/parser/static_environment.rb,
lib/parser/source/map/keyword.rb,
lib/parser/source/map/heredoc.rb,
lib/parser/runner/ruby_rewrite.rb,
lib/parser/source/map/operator.rb,
lib/parser/source/map/constant.rb,
lib/parser/source/map/variable.rb,
lib/parser/source/map/condition.rb,
lib/parser/source/map/definition.rb,
lib/parser/source/map/collection.rb,
lib/parser/source/map/rescue_body.rb,
lib/parser/source/rewriter/action.rb,
lib/parser/source/comment/associator.rb

Defined Under Namespace

Modules: AST, Builders, Source Classes: Base, ClobberingError, Diagnostic, Rewriter, SyntaxError

Constant Summary

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)',

  # 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',
  :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}',

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

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

Class Method Summary (collapse)

Class Method Details

+ (Object) check_for_encoding_support

Verify that the current Ruby implementation supports Encoding.

Raises:

  • (RuntimeError)


74
75
76
77
78
# File 'lib/parser.rb', line 74

def self.check_for_encoding_support
  unless defined?(Encoding)
    raise RuntimeError, 'Parsing 1.9 and later versions of Ruby is not supported on 1.8 due to the lack of Encoding support'
  end
end