以编程方式获取Ruby关键字

时间:2015-01-04 23:19:02

标签: ruby keyword

我在Ruby中有一个包含所有关键字的数组。

例如:

RUBY_KEYWORDS = %w(

  alias and BEGIN begin break case class def defined 
  do else elsif END end ensure false for if in module 
  next nil not or redo rescue retry return self super 
  then true undef unless until when while yield

)

我的问题很简单:

是否有以内置方式以编程方式访问所有关键字?

我的一些项目需要针对用户输入运行查询, 并且必须在中定义相同的数组有点烦人 所有这些项目。

2 个答案:

答案 0 :(得分:7)

试试这段代码:)

RubyToken::TokenDefinitions.select { |definition| definition[1] == RubyToken::TkId }
                           .map { |definition| definition[2] }
                           .compact
                           .sort

# returns :
# ["BEGIN", "END", "__FILE__", "__LINE__", "alias", "and", "begin", "break", "case", "class", "def", "defined?", "do", "else", "elsif", "end", "ensure", "false", "for", "if", "in", "module", "next", "nil", "not", "or", "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", "until", "when", "while", "yield"]

答案 1 :(得分:0)

我认为你不能,因为它将在解析器中定义。

您可以选择查看源代码:https://github.com/ruby/ruby/blob/ruby_2_1/defs/keywords