rdoc 5.0.0 → 6.3.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rdoc might be problematic. Click here for more details.

Files changed (158) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +4 -4
  3. data/Gemfile +9 -0
  4. data/History.rdoc +12 -2
  5. data/README.rdoc +5 -6
  6. data/Rakefile +35 -65
  7. data/lib/rdoc/alias.rb +1 -1
  8. data/lib/rdoc/anon_class.rb +1 -1
  9. data/lib/rdoc/any_method.rb +59 -15
  10. data/lib/rdoc/attr.rb +1 -1
  11. data/lib/rdoc/class_module.rb +5 -3
  12. data/lib/rdoc/code_object.rb +2 -9
  13. data/lib/rdoc/code_objects.rb +1 -1
  14. data/lib/rdoc/comment.rb +32 -11
  15. data/lib/rdoc/constant.rb +3 -3
  16. data/lib/rdoc/context/section.rb +1 -14
  17. data/lib/rdoc/context.rb +74 -21
  18. data/lib/rdoc/cross_reference.rb +33 -15
  19. data/lib/rdoc/encoding.rb +58 -30
  20. data/lib/rdoc/erb_partial.rb +2 -2
  21. data/lib/rdoc/erbio.rb +8 -4
  22. data/lib/rdoc/extend.rb +1 -1
  23. data/lib/rdoc/generator/darkfish.rb +60 -29
  24. data/lib/rdoc/generator/json_index.rb +7 -4
  25. data/lib/rdoc/generator/markup.rb +3 -13
  26. data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
  27. data/lib/rdoc/generator/pot/po.rb +3 -3
  28. data/lib/rdoc/generator/pot/po_entry.rb +11 -11
  29. data/lib/rdoc/generator/pot.rb +4 -4
  30. data/lib/rdoc/generator/ri.rb +1 -1
  31. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  32. data/lib/rdoc/generator/template/darkfish/_head.rhtml +9 -7
  33. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
  34. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
  35. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  36. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
  37. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  38. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  39. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
  40. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
  41. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
  44. data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
  45. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
  46. data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
  47. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +22 -99
  48. data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
  49. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
  51. data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
  52. data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
  53. data/lib/rdoc/generator.rb +1 -1
  54. data/lib/rdoc/ghost_method.rb +1 -1
  55. data/lib/rdoc/i18n/locale.rb +2 -2
  56. data/lib/rdoc/i18n/text.rb +5 -5
  57. data/lib/rdoc/i18n.rb +3 -3
  58. data/lib/rdoc/include.rb +1 -1
  59. data/lib/rdoc/known_classes.rb +1 -1
  60. data/lib/rdoc/markdown/entities.rb +1 -1
  61. data/lib/rdoc/markdown/literals.kpeg +1 -0
  62. data/lib/rdoc/markdown/literals.rb +19 -7
  63. data/lib/rdoc/markdown.kpeg +92 -44
  64. data/lib/rdoc/markdown.rb +1171 -610
  65. data/lib/rdoc/markup/attr_changer.rb +1 -1
  66. data/lib/rdoc/markup/attr_span.rb +9 -3
  67. data/lib/rdoc/markup/attribute_manager.rb +115 -50
  68. data/lib/rdoc/markup/attributes.rb +7 -7
  69. data/lib/rdoc/markup/blank_line.rb +1 -1
  70. data/lib/rdoc/markup/block_quote.rb +1 -1
  71. data/lib/rdoc/markup/document.rb +1 -1
  72. data/lib/rdoc/markup/formatter.rb +25 -24
  73. data/lib/rdoc/markup/hard_break.rb +1 -1
  74. data/lib/rdoc/markup/heading.rb +4 -4
  75. data/lib/rdoc/markup/include.rb +1 -1
  76. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  77. data/lib/rdoc/markup/list.rb +1 -1
  78. data/lib/rdoc/markup/list_item.rb +1 -1
  79. data/lib/rdoc/markup/paragraph.rb +1 -1
  80. data/lib/rdoc/markup/parser.rb +79 -47
  81. data/lib/rdoc/markup/pre_process.rb +11 -6
  82. data/lib/rdoc/markup/raw.rb +1 -1
  83. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  84. data/lib/rdoc/markup/rule.rb +1 -1
  85. data/lib/rdoc/markup/to_ansi.rb +1 -1
  86. data/lib/rdoc/markup/to_bs.rb +4 -4
  87. data/lib/rdoc/markup/to_html.rb +71 -26
  88. data/lib/rdoc/markup/to_html_crossref.rb +41 -26
  89. data/lib/rdoc/markup/to_html_snippet.rb +10 -10
  90. data/lib/rdoc/markup/to_joined_paragraph.rb +7 -32
  91. data/lib/rdoc/markup/to_label.rb +10 -10
  92. data/lib/rdoc/markup/to_markdown.rb +9 -9
  93. data/lib/rdoc/markup/to_rdoc.rb +35 -7
  94. data/lib/rdoc/markup/to_table_of_contents.rb +2 -1
  95. data/lib/rdoc/markup/to_test.rb +1 -1
  96. data/lib/rdoc/markup/to_tt_only.rb +3 -3
  97. data/lib/rdoc/markup/verbatim.rb +1 -1
  98. data/lib/rdoc/markup.rb +14 -17
  99. data/lib/rdoc/meta_method.rb +1 -1
  100. data/lib/rdoc/method_attr.rb +2 -2
  101. data/lib/rdoc/mixin.rb +1 -1
  102. data/lib/rdoc/normal_class.rb +3 -3
  103. data/lib/rdoc/normal_module.rb +1 -1
  104. data/lib/rdoc/options.rb +79 -21
  105. data/lib/rdoc/parser/c.rb +147 -194
  106. data/lib/rdoc/parser/changelog.rb +150 -19
  107. data/lib/rdoc/parser/markdown.rb +1 -1
  108. data/lib/rdoc/parser/rd.rb +1 -1
  109. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  110. data/lib/rdoc/parser/ruby.rb +634 -465
  111. data/lib/rdoc/parser/ruby_tools.rb +33 -34
  112. data/lib/rdoc/parser/simple.rb +3 -3
  113. data/lib/rdoc/parser/text.rb +1 -1
  114. data/lib/rdoc/parser.rb +12 -35
  115. data/lib/rdoc/rd/block_parser.rb +109 -108
  116. data/lib/rdoc/rd/block_parser.ry +3 -3
  117. data/lib/rdoc/rd/inline.rb +5 -5
  118. data/lib/rdoc/rd/inline_parser.rb +186 -185
  119. data/lib/rdoc/rd/inline_parser.ry +1 -1
  120. data/lib/rdoc/rd.rb +1 -1
  121. data/lib/rdoc/rdoc.rb +54 -41
  122. data/lib/rdoc/require.rb +1 -1
  123. data/lib/rdoc/ri/driver.rb +132 -42
  124. data/lib/rdoc/ri/formatter.rb +1 -1
  125. data/lib/rdoc/ri/paths.rb +4 -18
  126. data/lib/rdoc/ri/store.rb +1 -1
  127. data/lib/rdoc/ri/task.rb +2 -2
  128. data/lib/rdoc/ri.rb +1 -1
  129. data/lib/rdoc/rubygems_hook.rb +3 -3
  130. data/lib/rdoc/servlet.rb +21 -12
  131. data/lib/rdoc/single_class.rb +1 -1
  132. data/lib/rdoc/stats/normal.rb +24 -18
  133. data/lib/rdoc/stats/quiet.rb +1 -1
  134. data/lib/rdoc/stats/verbose.rb +1 -1
  135. data/lib/rdoc/stats.rb +1 -1
  136. data/lib/rdoc/store.rb +38 -27
  137. data/lib/rdoc/task.rb +2 -2
  138. data/lib/rdoc/text.rb +16 -21
  139. data/lib/rdoc/token_stream.rb +56 -33
  140. data/lib/rdoc/tom_doc.rb +17 -12
  141. data/lib/rdoc/top_level.rb +9 -3
  142. data/lib/rdoc/version.rb +8 -0
  143. data/lib/rdoc.rb +24 -10
  144. data/man/ri.1 +247 -0
  145. data/rdoc.gemspec +206 -15
  146. metadata +15 -64
  147. data/.document +0 -5
  148. data/.gitignore +0 -13
  149. data/.travis.yml +0 -23
  150. data/lib/gauntlet_rdoc.rb +0 -82
  151. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  152. data/lib/rdoc/markup/formatter_test_case.rb +0 -764
  153. data/lib/rdoc/markup/inline.rb +0 -2
  154. data/lib/rdoc/markup/special.rb +0 -41
  155. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
  156. data/lib/rdoc/ruby_lex.rb +0 -1367
  157. data/lib/rdoc/ruby_token.rb +0 -461
  158. data/lib/rdoc/test_case.rb +0 -204
@@ -1,461 +0,0 @@
1
- # frozen_string_literal: false
2
- #--
3
- # irb/ruby-token.rb - ruby tokens
4
- # $Release Version: 0.9.5$
5
- # $Revision: 11708 $
6
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
7
- # by Keiju ISHITSUKA(keiju@ruby-lang.org)
8
- #++
9
- # Definitions of all tokens involved in the lexical analysis.
10
- #
11
- # This class is not documented because it is so deep in the internals.
12
-
13
- module RDoc::RubyToken
14
- # :stopdoc:
15
-
16
- EXPR_BEG = :EXPR_BEG
17
- EXPR_MID = :EXPR_MID
18
- EXPR_END = :EXPR_END
19
- EXPR_ARG = :EXPR_ARG
20
- EXPR_FNAME = :EXPR_FNAME
21
- EXPR_DOT = :EXPR_DOT
22
- EXPR_CLASS = :EXPR_CLASS
23
-
24
- # for ruby 1.4X
25
- if !defined?(Symbol)
26
- Symbol = Integer
27
- end
28
-
29
- def set_token_position(line, char)
30
- @prev_line_no = line
31
- @prev_char_no = char
32
- end
33
-
34
- class Token
35
- def initialize(seek, line_no, char_no, text = nil)
36
- @seek = seek
37
- @line_no = line_no
38
- @char_no = char_no
39
- @text = text
40
- end
41
-
42
- attr_reader :seek
43
- attr_reader :line_no
44
- attr_reader :char_no
45
-
46
- attr_accessor :text
47
-
48
- def ==(other)
49
- self.class == other.class and
50
- other.line_no == @line_no and
51
- other.char_no == @char_no and
52
- other.text == @text
53
- end
54
-
55
- ##
56
- # Because we're used in contexts that expect to return a token, we set the
57
- # text string and then return ourselves
58
-
59
- def set_text(text)
60
- @text = text
61
- self
62
- end
63
-
64
- def inspect # :nodoc:
65
- klass = self.class.name.split('::').last
66
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @text]
67
- end
68
-
69
- end
70
-
71
- class TkNode < Token
72
- def initialize(seek, line_no, char_no, node = nil)
73
- super seek, line_no, char_no
74
- @node = node
75
- end
76
-
77
- attr_reader:node
78
-
79
- def ==(other)
80
- self.class == other.class and
81
- other.line_no == @line_no and
82
- other.char_no == @char_no and
83
- other.node == @node
84
- end
85
-
86
- def set_text text
87
- @node = text
88
- self
89
- end
90
-
91
- alias text node
92
-
93
- def inspect # :nodoc:
94
- klass = self.class.name.split('::').last
95
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @node]
96
- end
97
-
98
- end
99
-
100
- class TkId < Token
101
- def initialize(seek, line_no, char_no, name)
102
- super(seek, line_no, char_no)
103
- @name = name
104
- end
105
- attr_reader:name
106
-
107
- def ==(other)
108
- self.class == other.class and
109
- other.line_no == @line_no and
110
- other.char_no == @char_no and
111
- other.name == @name
112
- end
113
-
114
- def set_text text
115
- @name = text
116
- self
117
- end
118
-
119
- alias text name
120
-
121
- def inspect # :nodoc:
122
- klass = self.class.name.split('::').last
123
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @name]
124
- end
125
-
126
- end
127
-
128
- class TkKW < TkId
129
- end
130
-
131
- class TkVal < Token
132
- def initialize(seek, line_no, char_no, value = nil)
133
- super(seek, line_no, char_no)
134
- @value = value
135
- end
136
- attr_accessor :value
137
-
138
- def ==(other)
139
- self.class == other.class and
140
- other.line_no == @line_no and
141
- other.char_no == @char_no and
142
- other.value == @value
143
- end
144
-
145
- def set_text text
146
- @value = text
147
- self
148
- end
149
-
150
- alias text value
151
-
152
- def inspect # :nodoc:
153
- klass = self.class.name.split('::').last
154
- "{%s %s, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @value]
155
- end
156
-
157
- end
158
-
159
- class TkOp < Token
160
- def initialize(seek, line_no, char_no, name = nil)
161
- super seek, line_no, char_no
162
- @name = name
163
- end
164
-
165
- attr_accessor :name
166
-
167
- def ==(other)
168
- self.class == other.class and
169
- other.line_no == @line_no and
170
- other.char_no == @char_no and
171
- other.name == @name
172
- end
173
-
174
- def set_text text
175
- @name = text
176
- self
177
- end
178
-
179
- alias text name
180
-
181
- def inspect # :nodoc:
182
- klass = self.class.name.split('::').last
183
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @name]
184
- end
185
-
186
- end
187
-
188
- class TkOPASGN < TkOp
189
- def initialize(seek, line_no, char_no, op)
190
- super(seek, line_no, char_no)
191
- op = TkReading2Token[op][0] unless op.kind_of?(Symbol)
192
- @op = op
193
- @text = nil
194
- end
195
-
196
- attr_reader:op
197
-
198
- def ==(other)
199
- self.class == other.class and
200
- other.line_no == @line_no and
201
- other.char_no == @char_no and
202
- other.op == @op
203
- end
204
-
205
- def text
206
- @text ||= "#{TkToken2Reading[op]}="
207
- end
208
-
209
- def inspect # :nodoc:
210
- klass = self.class.name.split('::').last
211
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @op]
212
- end
213
-
214
- end
215
-
216
- class TkUnknownChar < Token
217
- def initialize(seek, line_no, char_no, name)
218
- super(seek, line_no, char_no)
219
- @name = name
220
- end
221
- attr_reader:name
222
-
223
- def ==(other)
224
- self.class == other.class and
225
- other.line_no == @line_no and
226
- other.char_no == @char_no and
227
- other.name == @name
228
- end
229
-
230
- def set_text text
231
- @name = text
232
- self
233
- end
234
-
235
- alias text name
236
-
237
- def inspect # :nodoc:
238
- klass = self.class.name.split('::').last
239
- "{%s %d, %d:%d %p}" % [klass, @seek, @line_no, @char_no, @name]
240
- end
241
-
242
- end
243
-
244
- class TkError < Token
245
- end
246
-
247
- def Token(token, value = nil)
248
- value ||= TkToken2Reading[token]
249
-
250
- case token
251
- when String
252
- if (tk = TkReading2Token[token]).nil?
253
- IRB.fail TkReading2TokenNoKey, token
254
- end
255
-
256
- tk = Token(tk[0], value)
257
-
258
- if tk.kind_of?(TkOp) then
259
- tk.name = token
260
- end
261
- when Symbol
262
- if (tk = TkSymbol2Token[token]).nil?
263
- IRB.fail TkSymbol2TokenNoKey, token
264
- end
265
-
266
- tk = Token(tk[0], value)
267
- else
268
- if token.instance_method(:initialize).arity == 3 then
269
- tk = token.new(@prev_seek, @prev_line_no, @prev_char_no)
270
- tk.set_text value
271
- else
272
- tk = token.new(@prev_seek, @prev_line_no, @prev_char_no, value)
273
- end
274
- end
275
-
276
- tk
277
- end
278
-
279
- TokenDefinitions = [
280
- [:TkCLASS, TkKW, "class", :EXPR_CLASS],
281
- [:TkMODULE, TkKW, "module", :EXPR_BEG],
282
- [:TkDEF, TkKW, "def", :EXPR_FNAME],
283
- [:TkUNDEF, TkKW, "undef", :EXPR_FNAME],
284
- [:TkBEGIN, TkKW, "begin", :EXPR_BEG],
285
- [:TkRESCUE, TkKW, "rescue", :EXPR_MID],
286
- [:TkENSURE, TkKW, "ensure", :EXPR_BEG],
287
- [:TkEND, TkKW, "end", :EXPR_END],
288
- [:TkIF, TkKW, "if", :EXPR_BEG, :TkIF_MOD],
289
- [:TkUNLESS, TkKW, "unless", :EXPR_BEG, :TkUNLESS_MOD],
290
- [:TkTHEN, TkKW, "then", :EXPR_BEG],
291
- [:TkELSIF, TkKW, "elsif", :EXPR_BEG],
292
- [:TkELSE, TkKW, "else", :EXPR_BEG],
293
- [:TkCASE, TkKW, "case", :EXPR_BEG],
294
- [:TkWHEN, TkKW, "when", :EXPR_BEG],
295
- [:TkWHILE, TkKW, "while", :EXPR_BEG, :TkWHILE_MOD],
296
- [:TkUNTIL, TkKW, "until", :EXPR_BEG, :TkUNTIL_MOD],
297
- [:TkFOR, TkKW, "for", :EXPR_BEG],
298
- [:TkBREAK, TkKW, "break", :EXPR_MID],
299
- [:TkNEXT, TkKW, "next", :EXPR_END],
300
- [:TkREDO, TkKW, "redo", :EXPR_END],
301
- [:TkRETRY, TkKW, "retry", :EXPR_END],
302
- [:TkIN, TkKW, "in", :EXPR_BEG],
303
- [:TkDO, TkKW, "do", :EXPR_BEG],
304
- [:TkRETURN, TkKW, "return", :EXPR_MID],
305
- [:TkYIELD, TkKW, "yield", :EXPR_END],
306
- [:TkSUPER, TkKW, "super", :EXPR_END],
307
- [:TkSELF, TkKW, "self", :EXPR_END],
308
- [:TkNIL, TkKW, "nil", :EXPR_END],
309
- [:TkTRUE, TkKW, "true", :EXPR_END],
310
- [:TkFALSE, TkKW, "false", :EXPR_END],
311
- [:TkAND, TkKW, "and", :EXPR_BEG],
312
- [:TkOR, TkKW, "or", :EXPR_BEG],
313
- [:TkNOT, TkKW, "not", :EXPR_BEG],
314
- [:TkIF_MOD, TkKW],
315
- [:TkUNLESS_MOD, TkKW],
316
- [:TkWHILE_MOD, TkKW],
317
- [:TkUNTIL_MOD, TkKW],
318
- [:TkALIAS, TkKW, "alias", :EXPR_FNAME],
319
- [:TkDEFINED, TkKW, "defined?", :EXPR_END],
320
- [:TklBEGIN, TkKW, "BEGIN", :EXPR_END],
321
- [:TklEND, TkKW, "END", :EXPR_END],
322
- [:Tk__LINE__, TkKW, "__LINE__", :EXPR_END],
323
- [:Tk__FILE__, TkKW, "__FILE__", :EXPR_END],
324
-
325
- [:TkIDENTIFIER, TkId],
326
- [:TkFID, TkId],
327
- [:TkGVAR, TkId],
328
- [:TkCVAR, TkId],
329
- [:TkIVAR, TkId],
330
- [:TkCONSTANT, TkId],
331
-
332
- [:TkINTEGER, TkVal],
333
- [:TkFLOAT, TkVal],
334
- [:TkSTRING, TkVal],
335
- [:TkHEREDOC, TkVal],
336
- [:TkXSTRING, TkVal],
337
- [:TkREGEXP, TkVal],
338
- [:TkSYMBOL, TkVal],
339
- [:TkCHAR, TkVal],
340
-
341
- [:TkDSTRING, TkNode],
342
- [:TkDXSTRING, TkNode],
343
- [:TkDREGEXP, TkNode],
344
- [:TkNTH_REF, TkNode],
345
- [:TkBACK_REF, TkNode],
346
-
347
- [:TkUPLUS, TkOp, "+@"],
348
- [:TkUMINUS, TkOp, "-@"],
349
- [:TkPOW, TkOp, "**"],
350
- [:TkCMP, TkOp, "<=>"],
351
- [:TkEQ, TkOp, "=="],
352
- [:TkEQQ, TkOp, "==="],
353
- [:TkNEQ, TkOp, "!="],
354
- [:TkGEQ, TkOp, ">="],
355
- [:TkLEQ, TkOp, "<="],
356
- [:TkANDOP, TkOp, "&&"],
357
- [:TkOROP, TkOp, "||"],
358
- [:TkMATCH, TkOp, "=~"],
359
- [:TkNMATCH, TkOp, "!~"],
360
- [:TkDOT2, TkOp, ".."],
361
- [:TkDOT3, TkOp, "..."],
362
- [:TkAREF, TkOp, "[]"],
363
- [:TkASET, TkOp, "[]="],
364
- [:TkLSHFT, TkOp, "<<"],
365
- [:TkRSHFT, TkOp, ">>"],
366
- [:TkCOLON2, TkOp, '::'],
367
- [:TkCOLON3, TkOp, '::'],
368
- #[:OPASGN, TkOp], # +=, -= etc. #
369
- [:TkASSOC, TkOp, "=>"],
370
- [:TkQUESTION, TkOp, "?"], #?
371
- [:TkCOLON, TkOp, ":"], #:
372
-
373
- [:TkfLPAREN, Token, "("], # func( #
374
- [:TkfLBRACK, Token, "["], # func[ #
375
- [:TkfLBRACE, Token, "{"], # func{ #
376
- [:TkSYMBEG, Token, ":"], # :SYMBOL
377
-
378
- [:TkAMPER, TkOp, "&"],
379
- [:TkGT, TkOp, ">"],
380
- [:TkLT, TkOp, "<"],
381
- [:TkPLUS, TkOp, "+"],
382
- [:TkSTAR, TkOp, "*"],
383
- [:TkMINUS, TkOp, "-"],
384
- [:TkMULT, TkOp, "*"],
385
- [:TkDIV, TkOp, "/"],
386
- [:TkMOD, TkOp, "%"],
387
- [:TkBITOR, TkOp, "|"],
388
- [:TkBITXOR, TkOp, "^"],
389
- [:TkBITAND, TkOp, "&"],
390
- [:TkBITNOT, TkOp, "~"],
391
- [:TkNOTOP, TkOp, "!"],
392
-
393
- [:TkBACKQUOTE, TkOp, "`"],
394
-
395
- [:TkASSIGN, Token, "="],
396
- [:TkDOT, Token, "."],
397
- [:TkLPAREN, Token, "("], #(exp)
398
- [:TkLBRACK, Token, "["], #[arry]
399
- [:TkLBRACE, Token, "{"], #{hash}
400
- [:TkRPAREN, Token, ")"],
401
- [:TkRBRACK, Token, "]"],
402
- [:TkRBRACE, Token, "}"],
403
- [:TkCOMMA, Token, ","],
404
- [:TkSEMICOLON, Token, ";"],
405
-
406
- [:TkCOMMENT, TkVal],
407
- [:TkSPACE, Token, " "],
408
- [:TkNL, Token, "\n"],
409
- [:TkEND_OF_SCRIPT],
410
-
411
- [:TkBACKSLASH, TkUnknownChar, "\\"],
412
- [:TkAT, TkUnknownChar, "@"],
413
- [:TkDOLLAR, TkUnknownChar, "$"],
414
- ]
415
-
416
- # {reading => token_class}
417
- # {reading => [token_class, *opt]}
418
- TkReading2Token = {}
419
- TkToken2Reading = {}
420
- TkSymbol2Token = {}
421
-
422
- def self.def_token(token_n, super_token = Token, reading = nil, *opts)
423
- token_n = token_n.id2name if token_n.kind_of?(Symbol)
424
- if const_defined?(token_n)
425
- IRB.fail AlreadyDefinedToken, token_n
426
- end
427
- token_c = eval("class #{token_n} < #{super_token}; end; #{token_n}")
428
-
429
- if reading
430
- TkToken2Reading[token_c] = reading
431
-
432
- return if TkReading2Token[reading]
433
-
434
- if opts.empty?
435
- TkReading2Token[reading] = [token_c]
436
- else
437
- TkReading2Token[reading] = [token_c].concat(opts)
438
- end
439
- end
440
- TkSymbol2Token[token_n.intern] = token_c
441
- end
442
-
443
- for defs in TokenDefinitions
444
- def_token(*defs)
445
- end
446
-
447
- def_token :TkRD_COMMENT, TkCOMMENT
448
-
449
- NEWLINE_TOKEN = TkNL.new 0, 0, 0, "\n"
450
-
451
- class TkSYMBOL
452
-
453
- def to_sym
454
- @sym ||= text[1..-1].intern
455
- end
456
-
457
- end
458
-
459
- # :startdoc:
460
- end
461
-