Где ключевые слова определены в Ruby? - PullRequest
10 голосов
/ 25 февраля 2012

Я просматривал документацию по Ruby, и мне интересно, если все является объектом, тогда «ключевые слова» также являются объектами, верно?И если да, то где они определены в ruby?

Следующая страница полностью смутила меня, потому что она показала объект со всеми ключевыми словами в нем, однако это не официальный объект, который используется всеми классами,это как-то смешано из другого класса ??

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

Я думаю, что естьвыше много вопросов, главный из которых: как ключевые слова ruby ​​попадают в ruby?

1 Ответ

22 голосов
/ 25 февраля 2012

Ключевые слова не являются объектами, но определены в анализаторе, который можно найти в parse.y в источнике Ruby.Вот соответствующая часть этого файла:

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, посмотрите презентацию Взлом parse.y из RubyConf 2009 или Parse.y famtour от Ruby Kaigi 2011.

Кроме того, множество методов, которые доступны везде (например, puts), определены в модуле Kernel .

РЕДАКТИРОВАТЬ: Существует также список ключевых слов в документации , спасибо @antinome за указание на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...