irb 1.1.0.pre.3 → 1.1.0.pre.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: