1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# frozen_string_literal: true
module Unparser
# All unparser constants maybe included in other libraries.
module Constants
# All unary operators of the ruby language
UNARY_OPERATORS = %i[
! ~ -@ +@
].to_set.freeze
# All binary operators of the ruby language
BINARY_OPERATORS = %i[
+ - * / & | && || << >> ==
=== != <= < <=> > >= =~ !~ ^
** %
].to_set.freeze
# Keywords
K_DO = 'do'
K_DEF = 'def'
K_END = 'end'
K_BEGIN = 'begin'
K_CASE = 'case'
K_CLASS = 'class'
K_SELF = 'self'
K_ENSURE = 'ensure'
K_DEFINE = 'define'
K_MODULE = 'module'
K_RESCUE = 'rescue'
K_RETURN = 'return'
K_UNDEF = 'undef'
K_DEFINED = 'defined?'
K_PREEXE = 'BEGIN'
K_POSTEXE = 'END'
K_SUPER = 'super'
K_BREAK = 'break'
K_RETRY = 'retry'
K_REDO = 'redo'
K_NEXT = 'next'
K_FALSE = 'false'
K_TRUE = 'true'
K_IF = 'if'
K_AND = 'and'
K_ALIAS = 'alias'
K_ELSE = 'else'
K_ELSIF = 'elsif'
K_FOR = 'for'
K_NIL = 'nil'
K_NOT = 'not'
K_IN = 'in'
K_OR = 'or'
K_UNLESS = 'unless'
K_WHEN = 'when'
K_WHILE = 'while'
K_UNTIL = 'until'
K_YIELD = 'yield'
K_ENCODING = '__ENCODING__'
K_EEND = '__END__'
K_FILE = '__FILE__'
K_THEN = 'then'
KEYWORDS = constants.each_with_object([]) do |name, keywords|
value = const_get(name).freeze
next unless name.to_s.start_with?('K_')
keywords << value.to_sym
end.to_set.freeze
end # Constants
end # Unparser
|