Ruby中定义的关键字在哪里?

时间:2012-02-25 17:13:48

标签: ruby

我正在查看Ruby文档,我想知道如果一切都是对象,那么'关键字'也是对象,对吗?如果是这样,他们在ruby中定义了什么?

下面的页面让我很困惑,因为它显示了包含所有关键字的对象,但是这不是所有类使用的官方对象,这是不同的来自不同类的混合 -

http://ruby-doc.org/docs/keywords/1.9/Object.html

我猜上面有很多问题,主要问题是:ruby关键字如何进入ruby?

1 个答案:

答案 0 :(得分:21)

关键字不是对象,而是在解析器中定义,可以在Ruby源代码的parse.y中找到。这是该文件的相关部分:

reswords    : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
        | keyword_BEGIN | keyword_END
        | keyword_alias | keyword_and | keyword_begin
        | keyword_break | keyword_case | keyword_class | keyword_def
        | keyword_defined | keyword_do | keyword_else | keyword_elsif
        | keyword_end | keyword_ensure | keyword_false
        | keyword_for | keyword_in | keyword_module | keyword_next
        | keyword_nil | keyword_not | keyword_or | keyword_redo
        | keyword_rescue | keyword_retry | keyword_return | keyword_self
        | keyword_super | keyword_then | keyword_true | keyword_undef
        | keyword_when | keyword_yield | keyword_if | keyword_unless
        | keyword_while | keyword_until
        ;

如果您想了解有关Ruby解析器的更多信息,请查看RubyConf 2009中的演示文稿Hacking parse.y或2011年Ruby Kaigi中的Parse.y famtour

此外,在Kernel模块中定义了许多可用的方法(例如puts)。

编辑:还有list of key words in the documentation,感谢@antinome指出这一点。