class Prism::Translation::RubyParser

这个模块是将 prism 语法树转换为 seattlerb/ruby_parser gem 的语法树的入口点。

公共类方法

parse(source, filepath = "(string)") 点击以切换源代码

解析给定的源代码并将其转换为 seattlerb/ruby_parser gem 的 Sexp 格式。

# File prism/translation/ruby_parser.rb, line 1620
def parse(source, filepath = "(string)")
  new.parse(source, filepath)
end
parse_file(filepath) 点击以切换源代码

解析给定的文件并将其转换为 seattlerb/ruby_parser gem 的 Sexp 格式。

# File prism/translation/ruby_parser.rb, line 1626
def parse_file(filepath)
  new.parse_file(filepath)
end

公共实例方法

parse(source, filepath = "(string)") 点击以切换源代码

解析给定的源代码并将其转换为 seattlerb/ruby_parser gem 的 Sexp 格式。

# File prism/translation/ruby_parser.rb, line 1607
def parse(source, filepath = "(string)")
  translate(Prism.parse(source, filepath: filepath, partial_script: true), filepath)
end
parse_file(filepath) 点击以切换源代码

解析给定的文件并将其转换为 seattlerb/ruby_parser gem 的 Sexp 格式。

# File prism/translation/ruby_parser.rb, line 1613
def parse_file(filepath)
  translate(Prism.parse_file(filepath, partial_script: true), filepath)
end

私有实例方法

translate(result, filepath) 点击以切换源代码

将给定的解析结果和文件路径转换为 seattlerb/ruby_parser gem 的 Sexp 格式。

# File prism/translation/ruby_parser.rb, line 1635
def translate(result, filepath)
  if result.failure?
    error = result.errors.first
    raise ::RubyParser::SyntaxError, "#{filepath}:#{error.location.start_line} :: #{error.message}"
  end

  result.value.accept(Compiler.new(filepath))
end