rltk 2.2.1 → 3.0.0
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.
- checksums.yaml +7 -0
- data/LICENSE +12 -12
- data/README.md +458 -285
- data/Rakefile +99 -92
- data/lib/rltk/ast.rb +221 -126
- data/lib/rltk/cfg.rb +218 -239
- data/lib/rltk/cg/basic_block.rb +1 -1
- data/lib/rltk/cg/bindings.rb +9 -26
- data/lib/rltk/cg/builder.rb +40 -8
- data/lib/rltk/cg/context.rb +1 -1
- data/lib/rltk/cg/contractor.rb +51 -0
- data/lib/rltk/cg/execution_engine.rb +45 -8
- data/lib/rltk/cg/function.rb +12 -2
- data/lib/rltk/cg/generated_bindings.rb +2541 -575
- data/lib/rltk/cg/generic_value.rb +2 -2
- data/lib/rltk/cg/instruction.rb +104 -83
- data/lib/rltk/cg/llvm.rb +44 -3
- data/lib/rltk/cg/memory_buffer.rb +22 -5
- data/lib/rltk/cg/module.rb +85 -36
- data/lib/rltk/cg/old_generated_bindings.rb +6152 -0
- data/lib/rltk/cg/pass_manager.rb +87 -43
- data/lib/rltk/cg/support.rb +2 -4
- data/lib/rltk/cg/target.rb +158 -28
- data/lib/rltk/cg/triple.rb +8 -8
- data/lib/rltk/cg/type.rb +69 -25
- data/lib/rltk/cg/value.rb +107 -66
- data/lib/rltk/cg.rb +16 -17
- data/lib/rltk/lexer.rb +21 -11
- data/lib/rltk/lexers/calculator.rb +1 -1
- data/lib/rltk/lexers/ebnf.rb +8 -7
- data/lib/rltk/parser.rb +300 -247
- data/lib/rltk/parsers/infix_calc.rb +1 -1
- data/lib/rltk/parsers/postfix_calc.rb +2 -2
- data/lib/rltk/parsers/prefix_calc.rb +2 -2
- data/lib/rltk/token.rb +1 -2
- data/lib/rltk/version.rb +3 -3
- data/lib/rltk.rb +6 -6
- data/test/cg/tc_basic_block.rb +83 -0
- data/test/cg/tc_control_flow.rb +191 -0
- data/test/cg/tc_function.rb +54 -0
- data/test/cg/tc_generic_value.rb +33 -0
- data/test/cg/tc_instruction.rb +256 -0
- data/test/cg/tc_llvm.rb +25 -0
- data/test/cg/tc_math.rb +88 -0
- data/test/cg/tc_module.rb +89 -0
- data/test/cg/tc_transforms.rb +68 -0
- data/test/cg/tc_type.rb +69 -0
- data/test/cg/tc_value.rb +151 -0
- data/test/cg/ts_cg.rb +23 -0
- data/test/tc_ast.rb +105 -8
- data/test/tc_cfg.rb +63 -48
- data/test/tc_lexer.rb +84 -96
- data/test/tc_parser.rb +224 -52
- data/test/tc_token.rb +6 -6
- data/test/ts_rltk.rb +12 -15
- metadata +149 -75
- data/lib/rltk/cg/generated_extended_bindings.rb +0 -287
- data/lib/rltk/util/abstract_class.rb +0 -25
- data/lib/rltk/util/monkeys.rb +0 -129
data/Rakefile
CHANGED
@@ -8,85 +8,114 @@
|
|
8
8
|
##############
|
9
9
|
|
10
10
|
# Gems
|
11
|
-
require '
|
12
|
-
require 'bundler'
|
11
|
+
require 'filigree/request_file'
|
13
12
|
|
13
|
+
# RLTK
|
14
14
|
require File.expand_path("../lib/rltk/version", __FILE__)
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
###########
|
17
|
+
# Bundler #
|
18
|
+
###########
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
request_file('bundler', 'Bundler is not installed.') do
|
21
|
+
Bundler::GemHelper.install_tasks
|
22
|
+
end
|
23
|
+
|
24
|
+
########
|
25
|
+
# Flay #
|
26
|
+
########
|
27
|
+
|
28
|
+
request_file('flay', 'Flay is not installed.') do
|
29
|
+
desc 'Analyze code for similarities with Flay'
|
30
|
+
task :flay do
|
31
|
+
flay = Flay.new
|
32
|
+
flay.process(*Dir['lib/**/*.rb'])
|
33
|
+
flay.report
|
33
34
|
end
|
34
|
-
|
35
|
-
rescue LoadError
|
36
|
-
warn 'Yard is not installed. `gem install yard` to build documentation.'
|
37
35
|
end
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
37
|
+
########
|
38
|
+
# Flog #
|
39
|
+
########
|
40
|
+
|
41
|
+
request_file('flog_cli', 'Flog is not installed.') do
|
42
|
+
desc 'Analyze code complexity with Flog'
|
43
|
+
task :flog do
|
44
|
+
whip = FlogCLI.new
|
45
|
+
whip.flog('lib')
|
46
|
+
whip.report
|
47
|
+
end
|
43
48
|
end
|
44
49
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
t.test_files = FileList['test/tc_*.rb']
|
54
|
-
end
|
55
|
-
|
56
|
-
rescue LoadError
|
57
|
-
warn 'Rcov not installed.'
|
50
|
+
############
|
51
|
+
# MiniTest #
|
52
|
+
############
|
53
|
+
|
54
|
+
request_file('rake/testtask', 'Minitest is not installed.') do
|
55
|
+
Rake::TestTask.new do |t|
|
56
|
+
t.libs << 'test'
|
57
|
+
t.test_files = FileList['test/ts_rltk.rb']
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
|
62
|
-
|
61
|
+
#########
|
62
|
+
# Notes #
|
63
|
+
#########
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
request_file('rake/notes/rake_task', 'Rake-notes is not installed.')
|
66
|
+
|
67
|
+
########
|
68
|
+
# Reek #
|
69
|
+
########
|
70
|
+
|
71
|
+
request_file('reek/rake/task', 'Reek is not installed.') do
|
72
|
+
Reek::Rake::Task.new do |t|
|
73
|
+
t.fail_on_error = false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
##################
|
78
|
+
# Rubygems Tasks #
|
79
|
+
##################
|
80
|
+
|
81
|
+
request_file('rubygems/tasks', 'Rubygems-tasks is not installed.') do
|
68
82
|
Gem::Tasks.new do |t|
|
69
83
|
t.console.command = 'pry'
|
70
84
|
end
|
71
|
-
|
72
|
-
rescue LoadError
|
73
|
-
'rubygems-tasks not installed.'
|
74
85
|
end
|
75
86
|
|
87
|
+
########
|
88
|
+
# YARD #
|
89
|
+
########
|
90
|
+
|
91
|
+
request_file('yard', 'Yard is not installed.') do
|
92
|
+
YARD::Rake::YardocTask.new do |t|
|
93
|
+
yardlib = File.join(File.dirname(__FILE__), 'yardlib/rltk.rb')
|
94
|
+
|
95
|
+
t.options = [
|
96
|
+
'-e', yardlib,
|
97
|
+
'--title', 'The Ruby Language Toolkit',
|
98
|
+
'-m', 'markdown',
|
99
|
+
'-M', 'redcarpet',
|
100
|
+
'--private'
|
101
|
+
]
|
102
|
+
|
103
|
+
t.files = Dir['lib/**/*.rb'] +
|
104
|
+
['-'] +
|
105
|
+
Dir['examples/kazoo/**/*.md'].sort
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
##############
|
110
|
+
# RLTK Tasks #
|
111
|
+
##############
|
112
|
+
|
76
113
|
desc 'Generate the bindings for LLVM.'
|
77
114
|
task :gen_bindings do
|
78
115
|
require 'ffi_gen'
|
79
116
|
|
80
117
|
# Generate the standard LLVM bindings.
|
81
118
|
|
82
|
-
blacklist = [
|
83
|
-
'LLVMGetMDNodeOperand',
|
84
|
-
'LLVMGetMDNodeNumOperands',
|
85
|
-
'LLVMInitializeAllTargetInfos',
|
86
|
-
'LLVMInitializeAllTargets',
|
87
|
-
'LLVMInitializeNativeTarget'
|
88
|
-
]
|
89
|
-
|
90
119
|
deprecated = [
|
91
120
|
# BitReader.h
|
92
121
|
'LLVMGetBitcodeModuleProviderInContext',
|
@@ -115,51 +144,29 @@ task :gen_bindings do
|
|
115
144
|
'llvm-c/Disassembler.h',
|
116
145
|
'llvm-c/ExecutionEngine.h',
|
117
146
|
'llvm-c/Initialization.h',
|
147
|
+
'llvm-c/IRReader.h',
|
148
|
+
'llvm-c/Linker.h',
|
149
|
+
'llvm-c/LinkTimeOptimizer.h',
|
118
150
|
'llvm-c/Object.h',
|
151
|
+
'llvm-c/Support.h',
|
119
152
|
'llvm-c/Target.h',
|
153
|
+
'llvm-c/TargetMachine.h',
|
120
154
|
|
121
155
|
'llvm-c/Transforms/IPO.h',
|
122
|
-
'llvm-c/Transforms/
|
156
|
+
'llvm-c/Transforms/PassManagerBuilder.h',
|
157
|
+
'llvm-c/Transforms/Scalar.h',
|
158
|
+
'llvm-c/Transforms/Vectorize.h'
|
123
159
|
]
|
124
160
|
|
125
161
|
FFIGen.generate(
|
126
|
-
:
|
127
|
-
:
|
128
|
-
:headers
|
129
|
-
:
|
130
|
-
:
|
131
|
-
:
|
132
|
-
:
|
162
|
+
module_name: 'RLTK::CG::Bindings',
|
163
|
+
ffi_lib: "LLVM-#{RLTK::LLVM_TARGET_VERSION}",
|
164
|
+
headers: headers,
|
165
|
+
cflags: `llvm-config --cflags`.split,
|
166
|
+
prefixes: ['LLVM'],
|
167
|
+
blacklist: deprecated,
|
168
|
+
output: 'lib/rltk/cg/generated_bindings.rb'
|
133
169
|
)
|
134
|
-
|
135
|
-
# Generate the extended LLVM bindings.
|
136
|
-
|
137
|
-
headers = [
|
138
|
-
'llvm-ecb.h',
|
139
|
-
|
140
|
-
'llvm-ecb/asm.h',
|
141
|
-
'llvm-ecb/module.h',
|
142
|
-
'llvm-ecb/support.h',
|
143
|
-
|
144
|
-
'llvm-ecb/value.h',
|
145
|
-
'llvm-ecb/target.h'
|
146
|
-
|
147
|
-
# This causes value.h to not be included.
|
148
|
-
#'llvm-ecb/target.h',
|
149
|
-
#'llvm-ecb/value.h'
|
150
|
-
]
|
151
|
-
|
152
|
-
begin
|
153
|
-
FFIGen.generate(
|
154
|
-
:module_name => 'RLTK::CG::Bindings',
|
155
|
-
:ffi_lib => "LLVM-ECB-#{RLTK::LLVM_TARGET_VERSION}",
|
156
|
-
:headers => headers,
|
157
|
-
:cflags => `llvm-config --cflags`.split,
|
158
|
-
:prefixes => ['LLVM'],
|
159
|
-
:output => 'lib/rltk/cg/generated_extended_bindings.rb'
|
160
|
-
)
|
161
|
-
rescue
|
162
|
-
end
|
163
170
|
end
|
164
171
|
|
165
172
|
desc 'Find LLVM bindings with a regular expression.'
|