rltk3 3.0.2

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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +1 -0
  3. data/LICENSE +27 -0
  4. data/README.md +852 -0
  5. data/Rakefile +197 -0
  6. data/lib/rltk/ast.rb +573 -0
  7. data/lib/rltk/cfg.rb +683 -0
  8. data/lib/rltk/cg/basic_block.rb +157 -0
  9. data/lib/rltk/cg/bindings.rb +151 -0
  10. data/lib/rltk/cg/builder.rb +1127 -0
  11. data/lib/rltk/cg/context.rb +48 -0
  12. data/lib/rltk/cg/contractor.rb +51 -0
  13. data/lib/rltk/cg/execution_engine.rb +194 -0
  14. data/lib/rltk/cg/function.rb +237 -0
  15. data/lib/rltk/cg/generated_bindings.rb +8118 -0
  16. data/lib/rltk/cg/generic_value.rb +95 -0
  17. data/lib/rltk/cg/instruction.rb +519 -0
  18. data/lib/rltk/cg/llvm.rb +150 -0
  19. data/lib/rltk/cg/memory_buffer.rb +75 -0
  20. data/lib/rltk/cg/module.rb +451 -0
  21. data/lib/rltk/cg/pass_manager.rb +252 -0
  22. data/lib/rltk/cg/support.rb +29 -0
  23. data/lib/rltk/cg/target.rb +230 -0
  24. data/lib/rltk/cg/triple.rb +58 -0
  25. data/lib/rltk/cg/type.rb +554 -0
  26. data/lib/rltk/cg/value.rb +1272 -0
  27. data/lib/rltk/cg.rb +32 -0
  28. data/lib/rltk/lexer.rb +372 -0
  29. data/lib/rltk/lexers/calculator.rb +44 -0
  30. data/lib/rltk/lexers/ebnf.rb +38 -0
  31. data/lib/rltk/parser.rb +1702 -0
  32. data/lib/rltk/parsers/infix_calc.rb +43 -0
  33. data/lib/rltk/parsers/postfix_calc.rb +34 -0
  34. data/lib/rltk/parsers/prefix_calc.rb +34 -0
  35. data/lib/rltk/token.rb +90 -0
  36. data/lib/rltk/version.rb +11 -0
  37. data/lib/rltk.rb +16 -0
  38. data/test/cg/tc_basic_block.rb +83 -0
  39. data/test/cg/tc_control_flow.rb +191 -0
  40. data/test/cg/tc_function.rb +54 -0
  41. data/test/cg/tc_generic_value.rb +33 -0
  42. data/test/cg/tc_instruction.rb +256 -0
  43. data/test/cg/tc_llvm.rb +25 -0
  44. data/test/cg/tc_math.rb +88 -0
  45. data/test/cg/tc_module.rb +89 -0
  46. data/test/cg/tc_transforms.rb +68 -0
  47. data/test/cg/tc_type.rb +69 -0
  48. data/test/cg/tc_value.rb +151 -0
  49. data/test/cg/ts_cg.rb +23 -0
  50. data/test/tc_ast.rb +332 -0
  51. data/test/tc_cfg.rb +164 -0
  52. data/test/tc_lexer.rb +216 -0
  53. data/test/tc_parser.rb +711 -0
  54. data/test/tc_token.rb +34 -0
  55. data/test/ts_rltk.rb +47 -0
  56. metadata +317 -0
data/test/tc_token.rb ADDED
@@ -0,0 +1,34 @@
1
+ # Author: Chris Wailes <chris.wailes@gmail.com>
2
+ # Project: Ruby Language Toolkit
3
+ # Date: 2011/04/06
4
+ # Description: This file contains unit tests for the RLTK::Token class.
5
+
6
+ ############
7
+ # Requires #
8
+ ############
9
+
10
+ # Gems
11
+ require 'minitest/autorun'
12
+
13
+ # Ruby Language Toolkit
14
+ require 'rltk/token'
15
+
16
+ #######################
17
+ # Classes and Modules #
18
+ #######################
19
+
20
+ class TokenTester < Minitest::Test
21
+ def test_equal
22
+ t0 = RLTK::Token.new(:FOO, 0)
23
+ t1 = RLTK::Token.new(:FOO, 0)
24
+ t2 = RLTK::Token.new(:FOO, 1)
25
+ t3 = RLTK::Token.new(:BAR, 0)
26
+ t4 = RLTK::Token.new(:BAR, 1)
27
+
28
+ assert_equal(t0, t1)
29
+
30
+ refute_equal(t0, t2)
31
+ refute_equal(t0, t3)
32
+ refute_equal(t0, t4)
33
+ end
34
+ end
data/test/ts_rltk.rb ADDED
@@ -0,0 +1,47 @@
1
+ # Author: Chris Wailes <chris.wailes@gmail.com>
2
+ # Project: Ruby Language Toolkit
3
+ # Date: 2011/04/06
4
+ # Description: This file contains the test suit for RLTK. It requires the
5
+ # individual tests from their respective files.
6
+
7
+ ############
8
+ # Requires #
9
+ ############
10
+
11
+ # Filigree
12
+ require 'filigree/request_file'
13
+
14
+ request_file('simplecov', 'SimpleCov is not installed.') do
15
+ SimpleCov.start do
16
+ add_filter 'tc_*'
17
+ add_filter 'generated*'
18
+ end
19
+ end
20
+
21
+ # Gems
22
+ require 'ffi'
23
+
24
+ # Ruby Language Toolkit
25
+ require 'rltk/version'
26
+
27
+ # Test cases
28
+ require 'tc_token'
29
+ require 'tc_ast'
30
+ require 'tc_cfg'
31
+ require 'tc_lexer'
32
+ require 'tc_parser'
33
+
34
+ begin
35
+ # Check to make sure the target LLVM library is present.
36
+ class Tester
37
+ extend FFI::Library
38
+
39
+ ffi_lib("LLVM-#{RLTK::LLVM_TARGET_VERSION}")
40
+ end
41
+
42
+ # The test suite for the LLVM bindings
43
+ require 'cg/ts_cg'
44
+
45
+ rescue LoadError
46
+ puts "Unable to test LLVM bindings. Library LLVM-#{RLTK::LLVM_TARGET_VERSION} not found."
47
+ end
metadata ADDED
@@ -0,0 +1,317 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rltk3
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Chris Wailes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: filigree
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.0
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 0.4.0
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.0
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.4.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: ffi_gen
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.1.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.1.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: flay
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: flog
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: minitest
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: pry
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rake-notes
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: reek
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubygems-tasks
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: simplecov
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: yard
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 0.8.1
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: 0.8.1
215
+ description: The Ruby Language Toolkit provides classes for creating context-free
216
+ grammars, lexers, parsers, and abstract syntax trees.
217
+ email: chris.wailes+rltk@gmail.com
218
+ executables: []
219
+ extensions: []
220
+ extra_rdoc_files: []
221
+ files:
222
+ - AUTHORS
223
+ - LICENSE
224
+ - README.md
225
+ - Rakefile
226
+ - lib/rltk.rb
227
+ - lib/rltk/ast.rb
228
+ - lib/rltk/cfg.rb
229
+ - lib/rltk/cg.rb
230
+ - lib/rltk/cg/basic_block.rb
231
+ - lib/rltk/cg/bindings.rb
232
+ - lib/rltk/cg/builder.rb
233
+ - lib/rltk/cg/context.rb
234
+ - lib/rltk/cg/contractor.rb
235
+ - lib/rltk/cg/execution_engine.rb
236
+ - lib/rltk/cg/function.rb
237
+ - lib/rltk/cg/generated_bindings.rb
238
+ - lib/rltk/cg/generic_value.rb
239
+ - lib/rltk/cg/instruction.rb
240
+ - lib/rltk/cg/llvm.rb
241
+ - lib/rltk/cg/memory_buffer.rb
242
+ - lib/rltk/cg/module.rb
243
+ - lib/rltk/cg/pass_manager.rb
244
+ - lib/rltk/cg/support.rb
245
+ - lib/rltk/cg/target.rb
246
+ - lib/rltk/cg/triple.rb
247
+ - lib/rltk/cg/type.rb
248
+ - lib/rltk/cg/value.rb
249
+ - lib/rltk/lexer.rb
250
+ - lib/rltk/lexers/calculator.rb
251
+ - lib/rltk/lexers/ebnf.rb
252
+ - lib/rltk/parser.rb
253
+ - lib/rltk/parsers/infix_calc.rb
254
+ - lib/rltk/parsers/postfix_calc.rb
255
+ - lib/rltk/parsers/prefix_calc.rb
256
+ - lib/rltk/token.rb
257
+ - lib/rltk/version.rb
258
+ - test/cg/tc_basic_block.rb
259
+ - test/cg/tc_control_flow.rb
260
+ - test/cg/tc_function.rb
261
+ - test/cg/tc_generic_value.rb
262
+ - test/cg/tc_instruction.rb
263
+ - test/cg/tc_llvm.rb
264
+ - test/cg/tc_math.rb
265
+ - test/cg/tc_module.rb
266
+ - test/cg/tc_transforms.rb
267
+ - test/cg/tc_type.rb
268
+ - test/cg/tc_value.rb
269
+ - test/cg/ts_cg.rb
270
+ - test/tc_ast.rb
271
+ - test/tc_cfg.rb
272
+ - test/tc_lexer.rb
273
+ - test/tc_parser.rb
274
+ - test/tc_token.rb
275
+ - test/ts_rltk.rb
276
+ homepage: https://github.com/SlashScreen/RLTK3
277
+ licenses:
278
+ - University of Illinois/NCSA Open Source License
279
+ metadata: {}
280
+ post_install_message:
281
+ rdoc_options: []
282
+ require_paths:
283
+ - lib
284
+ required_ruby_version: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: 2.0.0
289
+ required_rubygems_version: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ requirements: []
295
+ rubygems_version: 3.3.26
296
+ signing_key:
297
+ specification_version: 4
298
+ summary: The Ruby Language Toolkit
299
+ test_files:
300
+ - test/cg/tc_basic_block.rb
301
+ - test/cg/tc_control_flow.rb
302
+ - test/cg/tc_function.rb
303
+ - test/cg/tc_generic_value.rb
304
+ - test/cg/tc_instruction.rb
305
+ - test/cg/tc_llvm.rb
306
+ - test/cg/tc_math.rb
307
+ - test/cg/tc_module.rb
308
+ - test/cg/tc_transforms.rb
309
+ - test/cg/tc_type.rb
310
+ - test/cg/tc_value.rb
311
+ - test/cg/ts_cg.rb
312
+ - test/tc_ast.rb
313
+ - test/tc_cfg.rb
314
+ - test/tc_lexer.rb
315
+ - test/tc_parser.rb
316
+ - test/tc_token.rb
317
+ - test/ts_rltk.rb