irb 1.0.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.document +4 -0
  3. data/Gemfile +10 -2
  4. data/LICENSE.txt +3 -3
  5. data/README.md +3 -3
  6. data/Rakefile +17 -1
  7. data/doc/irb/irb-tools.rd.ja +184 -0
  8. data/doc/irb/irb.rd.ja +427 -0
  9. data/irb.gemspec +18 -4
  10. data/lib/irb/cmd/fork.rb +2 -4
  11. data/lib/irb/cmd/help.rb +10 -5
  12. data/lib/irb/cmd/info.rb +32 -0
  13. data/lib/irb/cmd/ls.rb +101 -0
  14. data/lib/irb/cmd/measure.rb +43 -0
  15. data/lib/irb/cmd/nop.rb +10 -4
  16. data/lib/irb/cmd/pushws.rb +0 -1
  17. data/lib/irb/cmd/show_source.rb +93 -0
  18. data/lib/irb/cmd/whereami.rb +20 -0
  19. data/lib/irb/color.rb +246 -0
  20. data/lib/irb/color_printer.rb +47 -0
  21. data/lib/irb/completion.rb +254 -55
  22. data/lib/irb/context.rb +165 -72
  23. data/lib/irb/easter-egg.rb +138 -0
  24. data/lib/irb/ext/change-ws.rb +0 -1
  25. data/lib/irb/ext/history.rb +47 -11
  26. data/lib/irb/ext/loader.rb +46 -20
  27. data/lib/irb/ext/multi-irb.rb +7 -7
  28. data/lib/irb/ext/save-history.rb +36 -11
  29. data/lib/irb/ext/tracer.rb +14 -2
  30. data/lib/irb/ext/use-loader.rb +4 -3
  31. data/lib/irb/ext/workspaces.rb +0 -1
  32. data/lib/irb/extend-command.rb +113 -63
  33. data/lib/irb/frame.rb +12 -7
  34. data/lib/irb/help.rb +0 -1
  35. data/lib/irb/init.rb +146 -26
  36. data/lib/irb/input-method.rb +287 -9
  37. data/lib/irb/inspector.rb +15 -11
  38. data/lib/irb/lc/error.rb +55 -16
  39. data/lib/irb/lc/help-message +25 -13
  40. data/lib/irb/lc/ja/error.rb +55 -14
  41. data/lib/irb/lc/ja/help-message +11 -6
  42. data/lib/irb/locale.rb +13 -4
  43. data/lib/irb/notifier.rb +12 -8
  44. data/lib/irb/output-method.rb +6 -6
  45. data/lib/irb/ruby-lex.rb +673 -992
  46. data/lib/irb/ruby_logo.aa +37 -0
  47. data/lib/irb/version.rb +2 -2
  48. data/lib/irb/workspace.rb +65 -21
  49. data/lib/irb/xmp.rb +1 -1
  50. data/lib/irb.rb +276 -96
  51. data/man/irb.1 +229 -0
  52. metadata +25 -31
  53. data/.gitignore +0 -9
  54. data/.travis.yml +0 -6
  55. data/lib/irb/lc/.document +0 -4
  56. data/lib/irb/ruby-token.rb +0 -267
  57. data/lib/irb/slex.rb +0 -282
data/man/irb.1 ADDED
@@ -0,0 +1,229 @@
1
+ .\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
2
+ .Dd August 11, 2019
3
+ .Dt IRB \&1 "Ruby Programmer's Reference Guide"
4
+ .Os UNIX
5
+ .Sh NAME
6
+ .Nm irb
7
+ .Nd Interactive Ruby Shell
8
+ .Sh SYNOPSIS
9
+ .Nm
10
+ .Op Fl -version
11
+ .Op Fl dfUw
12
+ .Op Fl I Ar directory
13
+ .Op Fl r Ar library
14
+ .Op Fl E Ar external Ns Op : Ns Ar internal
15
+ .Op Fl W Ns Op Ar level
16
+ .Op Fl - Ns Oo no Oc Ns inspect
17
+ .Op Fl - Ns Oo no Oc Ns multiline
18
+ .Op Fl - Ns Oo no Oc Ns singleline
19
+ .Op Fl - Ns Oo no Oc Ns echo
20
+ .Op Fl - Ns Oo no Oc Ns colorize
21
+ .Op Fl - Ns Oo no Oc Ns autocomplete
22
+ .Op Fl - Ns Oo no Oc Ns verbose
23
+ .Op Fl -prompt Ar mode
24
+ .Op Fl -prompt-mode Ar mode
25
+ .Op Fl -inf-ruby-mode
26
+ .Op Fl -simple-prompt
27
+ .Op Fl -noprompt
28
+ .Op Fl -tracer
29
+ .Op Fl -back-trace-limit Ar n
30
+ .Op Fl -
31
+ .Op program_file
32
+ .Op argument ...
33
+ .Pp
34
+ .Sh DESCRIPTION
35
+ .Nm
36
+ is the REPL(read-eval-print loop) environment for Ruby programs.
37
+ .Pp
38
+ .Sh OPTIONS
39
+ .Bl -tag -width "1234567890123" -compact
40
+ .Pp
41
+ .It Fl -version
42
+ Prints the version of
43
+ .Nm .
44
+ .Pp
45
+ .It Fl E Ar external Ns Op : Ns Ar internal
46
+ .It Fl -encoding Ar external Ns Op : Ns Ar internal
47
+ Same as `ruby -E' .
48
+ Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:).
49
+ .Pp
50
+ You can omit the one for internal encodings, then the value
51
+ .Pf ( Li "Encoding.default_internal" ) will be nil.
52
+ .Pp
53
+ .It Fl I Ar path
54
+ Same as `ruby -I' .
55
+ Specifies
56
+ .Li $LOAD_PATH
57
+ directory
58
+ .Pp
59
+ .It Fl U
60
+ Same as `ruby -U' .
61
+ Sets the default value for internal encodings
62
+ .Pf ( Li "Encoding.default_internal" ) to UTF-8.
63
+ .Pp
64
+ .It Fl d
65
+ Same as `ruby -d' .
66
+ Sets
67
+ .Li $DEBUG
68
+ to true.
69
+ .Pp
70
+ .It Fl f
71
+ Suppresses read of
72
+ .Pa ~/.irbrc .
73
+ .Pp
74
+ .It Fl w
75
+ Same as `ruby -w' .
76
+ .Pp
77
+ .Pp
78
+ .It Fl W
79
+ Same as `ruby -W' .
80
+ .Pp
81
+ .It Fl h
82
+ .It Fl -help
83
+ Prints a summary of the options.
84
+ .Pp
85
+ .It Fl r Ar library
86
+ Same as `ruby -r'.
87
+ Causes irb to load the library using require.
88
+ .Pp
89
+ .It Fl -inspect
90
+ Uses `inspect' for output (default except for bc mode)
91
+ .Pp
92
+ .It Fl -noinspect
93
+ Doesn't use inspect for output
94
+ .Pp
95
+ .It Fl -multiline
96
+ Uses multiline editor module.
97
+ .Pp
98
+ .It Fl -nomultiline
99
+ Doesn't use multiline editor module.
100
+ .Pp
101
+ .It Fl -singleline
102
+ Uses singleline editor module.
103
+ .Pp
104
+ .It Fl -nosingleline
105
+ Doesn't use singleline editor module.
106
+ .Pp
107
+ .Pp
108
+ .It Fl -extra-doc-dir
109
+ Add an extra doc dir for the doc dialog.
110
+ .Pp
111
+ .Pp
112
+ .It Fl -echo
113
+ Show result (default).
114
+ .Pp
115
+ .It Fl -noecho
116
+ Don't show result.
117
+ .Pp
118
+ .Pp
119
+ .It Fl -echo-on-assignment
120
+ Show result on assignment.
121
+ .Pp
122
+ .It Fl -noecho-on-assignment
123
+ Don't show result on assignment.
124
+ .Pp
125
+ .It Fl -truncate-echo-on-assignment
126
+ Show truncated result on assignment (default).
127
+ .Pp
128
+ .Pp
129
+ .It Fl -colorize
130
+ Use colorization.
131
+ .Pp
132
+ .It Fl -nocolorize
133
+ Don't use colorization.
134
+ .Pp
135
+ .Pp
136
+ .It Fl -autocomplete
137
+ Use autocompletion.
138
+ .Pp
139
+ .It Fl -noautocomplete
140
+ Don't use autocompletion.
141
+ .Pp
142
+ .Pp
143
+ .It Fl -verbose
144
+ Show details.
145
+ .Pp
146
+ .It Fl -noverbose
147
+ Don't show details.
148
+ .Pp
149
+ .It Fl -prompt Ar mode
150
+ .It Fl -prompt-mode Ar mode
151
+ Switch prompt mode. Pre-defined prompt modes are
152
+ `default', `simple', `xmp' and `inf-ruby'.
153
+ .Pp
154
+ .It Fl -inf-ruby-mode
155
+ Uses prompt appropriate for inf-ruby-mode on emacs.
156
+ Suppresses --multiline and --singleline.
157
+ .Pp
158
+ .It Fl -simple-prompt
159
+ Makes prompts simple.
160
+ .Pp
161
+ .It Fl -noprompt
162
+ No prompt mode.
163
+ .Pp
164
+ .It Fl -tracer
165
+ Displays trace for each execution of commands.
166
+ .Pp
167
+ .It Fl -back-trace-limit Ar n
168
+ Displays backtrace top
169
+ .Ar n
170
+ and tail
171
+ .Ar n Ns .
172
+ The default value is 16.
173
+ .El
174
+ .Pp
175
+ .Sh ENVIRONMENT
176
+ .Bl -tag -compact
177
+ .It Ev IRBRC
178
+ .Pp
179
+ .El
180
+ .Pp
181
+ Also
182
+ .Nm
183
+ depends on same variables as
184
+ .Xr ruby 1 .
185
+ .Pp
186
+ .Sh FILES
187
+ .Bl -tag -compact
188
+ .It Pa ~/.irbrc
189
+ Personal irb initialization.
190
+ .Pp
191
+ .El
192
+ .Pp
193
+ .Sh EXAMPLES
194
+ .Dl % irb
195
+ .Dl irb(main):001:0> Ic 1 + 1
196
+ .Dl 2
197
+ .Dl irb(main):002:0> Ic def t(x)
198
+ .Dl irb(main):003:1> Ic x + 1
199
+ .Dl irb(main):004:1> Ic end
200
+ .Dl => :t
201
+ .Dl irb(main):005:0> Ic t(3)
202
+ .Dl => 4
203
+ .Dl irb(main):006:0> Ic if t(3) == 4
204
+ .Dl irb(main):007:1> Ic p :ok
205
+ .Dl irb(main):008:1> Ic end
206
+ .Dl :ok
207
+ .Dl => :ok
208
+ .Dl irb(main):009:0> Ic quit
209
+ .Dl %
210
+ .Pp
211
+ .Sh SEE ALSO
212
+ .Xr ruby 1 .
213
+ .Pp
214
+ .Sh REPORTING BUGS
215
+ .Bl -bullet
216
+ .It
217
+ Security vulnerabilities should be reported via an email to
218
+ .Mt security@ruby-lang.org .
219
+ Reported problems will be published after being fixed.
220
+ .Pp
221
+ .It
222
+ Other bugs and feature requests can be reported via the
223
+ Ruby Issue Tracking System
224
+ .Pq Lk https://bugs.ruby-lang.org/ .
225
+ Do not report security vulnerabilities
226
+ via this system because it publishes the vulnerabilities immediately.
227
+ .El
228
+ .Sh AUTHORS
229
+ Written by Keiju ISHITSUKA.
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: irb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiju ISHITSUKA
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2021-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: reline
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
19
+ version: 0.3.0
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: 0.3.0
41
27
  description: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
42
28
  email:
43
29
  - keiju@ruby-lang.org
@@ -46,26 +32,35 @@ executables:
46
32
  extensions: []
47
33
  extra_rdoc_files: []
48
34
  files:
49
- - ".gitignore"
50
- - ".travis.yml"
35
+ - ".document"
51
36
  - Gemfile
52
37
  - LICENSE.txt
53
38
  - README.md
54
39
  - Rakefile
55
40
  - bin/console
56
41
  - bin/setup
42
+ - doc/irb/irb-tools.rd.ja
43
+ - doc/irb/irb.rd.ja
57
44
  - exe/irb
58
45
  - irb.gemspec
59
46
  - lib/irb.rb
60
47
  - lib/irb/cmd/chws.rb
61
48
  - lib/irb/cmd/fork.rb
62
49
  - lib/irb/cmd/help.rb
50
+ - lib/irb/cmd/info.rb
63
51
  - lib/irb/cmd/load.rb
52
+ - lib/irb/cmd/ls.rb
53
+ - lib/irb/cmd/measure.rb
64
54
  - lib/irb/cmd/nop.rb
65
55
  - lib/irb/cmd/pushws.rb
56
+ - lib/irb/cmd/show_source.rb
66
57
  - lib/irb/cmd/subirb.rb
58
+ - lib/irb/cmd/whereami.rb
59
+ - lib/irb/color.rb
60
+ - lib/irb/color_printer.rb
67
61
  - lib/irb/completion.rb
68
62
  - lib/irb/context.rb
63
+ - lib/irb/easter-egg.rb
69
64
  - lib/irb/ext/change-ws.rb
70
65
  - lib/irb/ext/history.rb
71
66
  - lib/irb/ext/loader.rb
@@ -80,7 +75,6 @@ files:
80
75
  - lib/irb/init.rb
81
76
  - lib/irb/input-method.rb
82
77
  - lib/irb/inspector.rb
83
- - lib/irb/lc/.document
84
78
  - lib/irb/lc/error.rb
85
79
  - lib/irb/lc/help-message
86
80
  - lib/irb/lc/ja/encoding_aliases.rb
@@ -91,18 +85,19 @@ files:
91
85
  - lib/irb/notifier.rb
92
86
  - lib/irb/output-method.rb
93
87
  - lib/irb/ruby-lex.rb
94
- - lib/irb/ruby-token.rb
95
- - lib/irb/slex.rb
88
+ - lib/irb/ruby_logo.aa
96
89
  - lib/irb/src_encoding.rb
97
90
  - lib/irb/version.rb
98
91
  - lib/irb/workspace.rb
99
92
  - lib/irb/ws-for-case-2.rb
100
93
  - lib/irb/xmp.rb
94
+ - man/irb.1
101
95
  homepage: https://github.com/ruby/irb
102
96
  licenses:
97
+ - Ruby
103
98
  - BSD-2-Clause
104
99
  metadata: {}
105
- post_install_message:
100
+ post_install_message:
106
101
  rdoc_options: []
107
102
  require_paths:
108
103
  - lib
@@ -110,16 +105,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
105
  requirements:
111
106
  - - ">="
112
107
  - !ruby/object:Gem::Version
113
- version: '0'
108
+ version: '2.5'
114
109
  required_rubygems_version: !ruby/object:Gem::Requirement
115
110
  requirements:
116
111
  - - ">="
117
112
  - !ruby/object:Gem::Version
118
113
  version: '0'
119
114
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.6
122
- signing_key:
115
+ rubygems_version: 3.2.22
116
+ signing_key:
123
117
  specification_version: 4
124
118
  summary: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
125
119
  test_files: []
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- Gemfile.lock
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.1
5
- - ruby-head
6
- before_install: gem install bundler -v 1.16.2
data/lib/irb/lc/.document DELETED
@@ -1,4 +0,0 @@
1
- # hide help-message files which contain usage information
2
- error.rb
3
- ja/encoding_aliases.rb
4
- ja/error.rb
@@ -1,267 +0,0 @@
1
- # frozen_string_literal: false
2
- #
3
- # irb/ruby-token.rb - ruby tokens
4
- # $Release Version: 0.9.6$
5
- # $Revision$
6
- # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
- #
8
- # --
9
- #
10
- #
11
- #
12
- # :stopdoc:
13
- module RubyToken
14
- EXPR_BEG = :EXPR_BEG
15
- EXPR_MID = :EXPR_MID
16
- EXPR_END = :EXPR_END
17
- EXPR_ARG = :EXPR_ARG
18
- EXPR_FNAME = :EXPR_FNAME
19
- EXPR_DOT = :EXPR_DOT
20
- EXPR_CLASS = :EXPR_CLASS
21
-
22
- class Token
23
- def initialize(seek, line_no, char_no)
24
- @seek = seek
25
- @line_no = line_no
26
- @char_no = char_no
27
- end
28
- attr_reader :seek, :line_no, :char_no
29
- end
30
-
31
- class TkNode < Token
32
- def initialize(seek, line_no, char_no)
33
- super
34
- end
35
- attr_reader :node
36
- end
37
-
38
- class TkId < Token
39
- def initialize(seek, line_no, char_no, name)
40
- super(seek, line_no, char_no)
41
- @name = name
42
- end
43
- attr_reader :name
44
- end
45
-
46
- class TkVal < Token
47
- def initialize(seek, line_no, char_no, value = nil)
48
- super(seek, line_no, char_no)
49
- @value = value
50
- end
51
- attr_reader :value
52
- end
53
-
54
- class TkOp < Token
55
- attr_accessor :name
56
- end
57
-
58
- class TkOPASGN < TkOp
59
- def initialize(seek, line_no, char_no, op)
60
- super(seek, line_no, char_no)
61
- op = TkReading2Token[op][0] unless op.kind_of?(Symbol)
62
- @op = op
63
- end
64
- attr_reader :op
65
- end
66
-
67
- class TkUnknownChar < Token
68
- def initialize(seek, line_no, char_no, id)
69
- super(seek, line_no, char_no)
70
- @name = name
71
- end
72
- attr_reader :name
73
- end
74
-
75
- class TkError < Token
76
- end
77
-
78
- def Token(token, value = nil)
79
- case token
80
- when String
81
- if (tk = TkReading2Token[token]).nil?
82
- IRB.fail TkReading2TokenNoKey, token
83
- end
84
- tk = Token(tk[0], value)
85
- if tk.kind_of?(TkOp)
86
- tk.name = token
87
- end
88
- return tk
89
- when Symbol
90
- if (tk = TkSymbol2Token[token]).nil?
91
- IRB.fail TkSymbol2TokenNoKey, token
92
- end
93
- return Token(tk[0], value)
94
- else
95
- if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
96
- token.new(@prev_seek, @prev_line_no, @prev_char_no)
97
- else
98
- token.new(@prev_seek, @prev_line_no, @prev_char_no, value)
99
- end
100
- end
101
- end
102
-
103
- TokenDefinitions = [
104
- [:TkCLASS, TkId, "class", EXPR_CLASS],
105
- [:TkMODULE, TkId, "module", EXPR_BEG],
106
- [:TkDEF, TkId, "def", EXPR_FNAME],
107
- [:TkUNDEF, TkId, "undef", EXPR_FNAME],
108
- [:TkBEGIN, TkId, "begin", EXPR_BEG],
109
- [:TkRESCUE, TkId, "rescue", EXPR_MID],
110
- [:TkENSURE, TkId, "ensure", EXPR_BEG],
111
- [:TkEND, TkId, "end", EXPR_END],
112
- [:TkIF, TkId, "if", EXPR_BEG, :TkIF_MOD],
113
- [:TkUNLESS, TkId, "unless", EXPR_BEG, :TkUNLESS_MOD],
114
- [:TkTHEN, TkId, "then", EXPR_BEG],
115
- [:TkELSIF, TkId, "elsif", EXPR_BEG],
116
- [:TkELSE, TkId, "else", EXPR_BEG],
117
- [:TkCASE, TkId, "case", EXPR_BEG],
118
- [:TkWHEN, TkId, "when", EXPR_BEG],
119
- [:TkWHILE, TkId, "while", EXPR_BEG, :TkWHILE_MOD],
120
- [:TkUNTIL, TkId, "until", EXPR_BEG, :TkUNTIL_MOD],
121
- [:TkFOR, TkId, "for", EXPR_BEG],
122
- [:TkBREAK, TkId, "break", EXPR_END],
123
- [:TkNEXT, TkId, "next", EXPR_END],
124
- [:TkREDO, TkId, "redo", EXPR_END],
125
- [:TkRETRY, TkId, "retry", EXPR_END],
126
- [:TkIN, TkId, "in", EXPR_BEG],
127
- [:TkDO, TkId, "do", EXPR_BEG],
128
- [:TkRETURN, TkId, "return", EXPR_MID],
129
- [:TkYIELD, TkId, "yield", EXPR_END],
130
- [:TkSUPER, TkId, "super", EXPR_END],
131
- [:TkSELF, TkId, "self", EXPR_END],
132
- [:TkNIL, TkId, "nil", EXPR_END],
133
- [:TkTRUE, TkId, "true", EXPR_END],
134
- [:TkFALSE, TkId, "false", EXPR_END],
135
- [:TkAND, TkId, "and", EXPR_BEG],
136
- [:TkOR, TkId, "or", EXPR_BEG],
137
- [:TkNOT, TkId, "not", EXPR_BEG],
138
- [:TkIF_MOD, TkId],
139
- [:TkUNLESS_MOD, TkId],
140
- [:TkWHILE_MOD, TkId],
141
- [:TkUNTIL_MOD, TkId],
142
- [:TkALIAS, TkId, "alias", EXPR_FNAME],
143
- [:TkDEFINED, TkId, "defined?", EXPR_END],
144
- [:TklBEGIN, TkId, "BEGIN", EXPR_END],
145
- [:TklEND, TkId, "END", EXPR_END],
146
- [:Tk__LINE__, TkId, "__LINE__", EXPR_END],
147
- [:Tk__FILE__, TkId, "__FILE__", EXPR_END],
148
-
149
- [:TkIDENTIFIER, TkId],
150
- [:TkFID, TkId],
151
- [:TkGVAR, TkId],
152
- [:TkCVAR, TkId],
153
- [:TkIVAR, TkId],
154
- [:TkCONSTANT, TkId],
155
-
156
- [:TkINTEGER, TkVal],
157
- [:TkFLOAT, TkVal],
158
- [:TkSTRING, TkVal],
159
- [:TkXSTRING, TkVal],
160
- [:TkREGEXP, TkVal],
161
- [:TkSYMBOL, TkVal],
162
-
163
- [:TkDSTRING, TkNode],
164
- [:TkDXSTRING, TkNode],
165
- [:TkDREGEXP, TkNode],
166
- [:TkNTH_REF, TkNode],
167
- [:TkBACK_REF, TkNode],
168
-
169
- [:TkUPLUS, TkOp, "+@"],
170
- [:TkUMINUS, TkOp, "-@"],
171
- [:TkPOW, TkOp, "**"],
172
- [:TkCMP, TkOp, "<=>"],
173
- [:TkEQ, TkOp, "=="],
174
- [:TkEQQ, TkOp, "==="],
175
- [:TkNEQ, TkOp, "!="],
176
- [:TkGEQ, TkOp, ">="],
177
- [:TkLEQ, TkOp, "<="],
178
- [:TkANDOP, TkOp, "&&"],
179
- [:TkOROP, TkOp, "||"],
180
- [:TkMATCH, TkOp, "=~"],
181
- [:TkNMATCH, TkOp, "!~"],
182
- [:TkDOT2, TkOp, ".."],
183
- [:TkDOT3, TkOp, "..."],
184
- [:TkAREF, TkOp, "[]"],
185
- [:TkASET, TkOp, "[]="],
186
- [:TkLSHFT, TkOp, "<<"],
187
- [:TkRSHFT, TkOp, ">>"],
188
- [:TkCOLON2, TkOp],
189
- [:TkCOLON3, TkOp],
190
- [:TkASSOC, TkOp, "=>"],
191
- [:TkQUESTION, TkOp, "?"], #?
192
- [:TkCOLON, TkOp, ":"], #:
193
-
194
- [:TkfLPAREN], # func( #
195
- [:TkfLBRACK], # func[ #
196
- [:TkfLBRACE], # func{ #
197
- [:TkSTAR], # *arg
198
- [:TkAMPER], # &arg #
199
- [:TkSYMBEG], # :SYMBOL
200
-
201
- [:TkGT, TkOp, ">"],
202
- [:TkLT, TkOp, "<"],
203
- [:TkPLUS, TkOp, "+"],
204
- [:TkMINUS, TkOp, "-"],
205
- [:TkMULT, TkOp, "*"],
206
- [:TkDIV, TkOp, "/"],
207
- [:TkMOD, TkOp, "%"],
208
- [:TkBITOR, TkOp, "|"],
209
- [:TkBITXOR, TkOp, "^"],
210
- [:TkBITAND, TkOp, "&"],
211
- [:TkBITNOT, TkOp, "~"],
212
- [:TkNOTOP, TkOp, "!"],
213
-
214
- [:TkBACKQUOTE, TkOp, "`"],
215
-
216
- [:TkASSIGN, Token, "="],
217
- [:TkDOT, Token, "."],
218
- [:TkLPAREN, Token, "("], #(exp)
219
- [:TkLBRACK, Token, "["], #[arry]
220
- [:TkLBRACE, Token, "{"], #{hash}
221
- [:TkRPAREN, Token, ")"],
222
- [:TkRBRACK, Token, "]"],
223
- [:TkRBRACE, Token, "}"],
224
- [:TkCOMMA, Token, ","],
225
- [:TkSEMICOLON, Token, ";"],
226
-
227
- [:TkCOMMENT],
228
- [:TkRD_COMMENT],
229
- [:TkSPACE],
230
- [:TkNL],
231
- [:TkEND_OF_SCRIPT],
232
-
233
- [:TkBACKSLASH, TkUnknownChar, "\\"],
234
- [:TkAT, TkUnknownChar, "@"],
235
- [:TkDOLLAR, TkUnknownChar, "$"],
236
- ]
237
-
238
- # {reading => token_class}
239
- # {reading => [token_class, *opt]}
240
- TkReading2Token = {}
241
- TkSymbol2Token = {}
242
-
243
- def RubyToken.def_token(token_n, super_token = Token, reading = nil, *opts)
244
- token_n = token_n.id2name if token_n.kind_of?(Symbol)
245
- if RubyToken.const_defined?(token_n)
246
- IRB.fail AlreadyDefinedToken, token_n
247
- end
248
- token_c = eval("class #{token_n} < #{super_token}; end; #{token_n}")
249
-
250
- if reading
251
- if TkReading2Token[reading]
252
- IRB.fail TkReading2TokenDuplicateError, token_n, reading
253
- end
254
- if opts.empty?
255
- TkReading2Token[reading] = [token_c]
256
- else
257
- TkReading2Token[reading] = [token_c].concat(opts)
258
- end
259
- end
260
- TkSymbol2Token[token_n.intern] = token_c
261
- end
262
-
263
- for defs in TokenDefinitions
264
- def_token(*defs)
265
- end
266
- end
267
- # :startdoc: