Ruby 2.4参考手册
Ripper
Ripper::Filter
Parent:Object
该类只处理扫描仪事件,这些事件按“正确”顺序(与输入相同)分派。
公共类方法
new(src, filename = '-', lineno = 1) Show source
创建一个新的Ripper :: Filter实例,将参数src,filename和lineno传递给Ripper :: Lexer.new
词法分析器仅供内部使用。
# File ext/ripper/lib/ripper/filter.rb, line 23
def initialize(src, filename = '-', lineno = 1)
@__lexer = Lexer.new(src, filename, lineno)
@__line = nil
@__col = nil
end
公共实例方法
column() Show source
当前令牌的列号。该值从0开始。此方法仅在事件处理程序中有效。
# File ext/ripper/lib/ripper/filter.rb, line 44
def column
@__col
end
filename() Show source
输入的文件名。
# File ext/ripper/lib/ripper/filter.rb, line 30
def filename
@__lexer.filename
end
lineno() Show source
当前令牌的行号。该值从1开始。此方法仅在事件处理程序中有效。
# File ext/ripper/lib/ripper/filter.rb, line 37
def lineno
@__line
end
parse(init = nil) Show source
启动解析器。 init是一个数据累加器,并传递给下一个事件处理程序(从Enumerable#inject开始)。
# File ext/ripper/lib/ripper/filter.rb, line 51
def parse(init = nil)
data = init
@__lexer.lex.each do |pos, event, tok|
@__line, @__col = *pos
data = if respond_to?(event, true)
then __send__(event, tok, data)
else on_default(event, tok, data)
end
end
data
end
私有实例方法
on_default(event, token, data) Show source
当某些事件处理程序未定义时调用此方法。 事件是:on_XXX,令牌是扫描的令牌,数据是数据累加器。
此方法的返回值传递给下一个事件处理程序(从Enumerable#inject开始)。
# File ext/ripper/lib/ripper/filter.rb, line 71
def on_default(event, token, data)
data
end
Ripper相关
Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。
主页 | https://www.ruby-lang.org/ |
源码 | https://github.com/ruby/ruby |
版本 | 2.4 |
发布版本 | 2.4.1 |