Module: Parser

Defined in:
lib/parser.rb,
lib/parser/base.rb,
lib/parser/runner.rb,
lib/parser/current.rb,
lib/parser/version.rb,
lib/parser/ast/node.rb,
lib/parser/rewriter.rb,
lib/parser/diagnostic.rb,
lib/parser/source/map.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/source/map/for.rb,
lib/parser/source/map/send.rb,
lib/parser/source/rewriter.rb,
lib/parser/builders/default.rb,
lib/parser/source/map/block.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/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/map/collection.rb,
lib/parser/source/map/definition.rb,
lib/parser/source/map/rescue_body.rb,
lib/parser/source/rewriter/action.rb

Overview

Library namespace

Defined Under Namespace

Modules: AST, Builders, Source Classes: Base, Diagnostic, Lexer, Rewriter, Runner, StaticEnvironment, SyntaxError

Constant Summary collapse

VERSION =
'1.4.2'
ERRORS =
{
  # Lexer errors
  :unicode_point_too_large => "invalid Unicode codepoint (too large)",
  :invalid_escape          => "invalid escape character syntax",
  :invalid_escape_use      => "invalid character syntax; use ?%{escape}",
  :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_underscore     => "trailing `_' 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 meats end of file (and they embark on a romantic journey)",

  # Lexer warnings
  :ambiguous_literal       => "ambiguous first argument; parenthesize arguments or add whitespace to the right",
  :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",

  # Parser warnings
  :end_in_method           => "END in method; use at_exit",
  :space_before_lparen     => "don't put space before argument parentheses",
  :useless_else            => "else without rescue is useless",
}.freeze

Class Method Summary collapse

Class Method Details

.check_for_encoding_supportObject



109
110
111
112
113
# File 'lib/parser.rb', line 109

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

.warn_syntax_deviation(feature, version) ⇒ Object



3
4
5
6
# File 'lib/parser/current.rb', line 3

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}."
end