rubex 0.0.1 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +14 -0
  4. data/CONTRIBUTING.md +101 -0
  5. data/HISTORY.md +3 -0
  6. data/README.md +112 -297
  7. data/REFERENCE.md +753 -0
  8. data/Rakefile +4 -1
  9. data/TUTORIAL.md +234 -0
  10. data/bin/rubex +1 -1
  11. data/docs/_config.yml +1 -0
  12. data/docs/index.html +1 -0
  13. data/examples/c_struct_interface/c_struct_interface.rb +6 -0
  14. data/examples/c_struct_interface/c_struct_interface.rubex +47 -0
  15. data/examples/linked_list/linked_list.rubex +39 -0
  16. data/examples/linked_list/rb_linked_list.rb +8 -0
  17. data/examples/rcsv wrapper/rcsv/README.md +1 -0
  18. data/examples/rcsv wrapper/rcsv/Rakefile +7 -0
  19. data/examples/rcsv wrapper/rcsv/ext/rcsv/extconf.rb +3 -0
  20. data/examples/rcsv wrapper/rcsv/ext/rcsv/rcsv.c +302 -0
  21. data/examples/rcsv wrapper/rcsv/ext/rcsv/rcsv.rubex +124 -0
  22. data/examples/rcsv wrapper/rcsv/lib/rcsv.rb +8 -0
  23. data/examples/rcsv wrapper/rcsv/lib/rcsv.so +0 -0
  24. data/examples/rcsv wrapper/rcsv/lib/rcsv/version.rb +1 -0
  25. data/examples/rcsv wrapper/rcsv/rcsv.gemspec +27 -0
  26. data/examples/rcsv wrapper/rcsv/spec/rcsv.csv +5 -0
  27. data/examples/rcsv wrapper/rcsv/spec/rcsv_spec.rb +17 -0
  28. data/examples/rcsv wrapper/rcsv/spec/spec_helper.rb +6 -0
  29. data/{spec/fixtures/basic_ruby_method/Makefile → examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/Makefile } +20 -20
  30. data/examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/rcsv.o +0 -0
  31. data/examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/rcsv.so +0 -0
  32. data/examples/rcsv wrapper/rcsv/tmp/x86_64-linux/stage/lib/rcsv.so +0 -0
  33. data/lib/rubex.rb +6 -50
  34. data/lib/rubex/ast.rb +1 -3
  35. data/lib/rubex/ast/expression.rb +1257 -8
  36. data/lib/rubex/ast/node.rb +226 -28
  37. data/lib/rubex/ast/statement.rb +1162 -35
  38. data/lib/rubex/ast/top_statement.rb +815 -0
  39. data/lib/rubex/code_writer.rb +103 -26
  40. data/lib/rubex/compiler.rb +72 -0
  41. data/lib/rubex/compiler_config.rb +19 -0
  42. data/lib/rubex/constants.rb +145 -8
  43. data/lib/rubex/data_type.rb +667 -4
  44. data/lib/rubex/error.rb +15 -0
  45. data/lib/rubex/helpers.rb +154 -0
  46. data/lib/rubex/lexer.rex +186 -22
  47. data/lib/rubex/lexer.rex.rb +261 -35
  48. data/lib/rubex/parser.racc +876 -28
  49. data/lib/rubex/parser.racc.rb +2845 -90
  50. data/lib/rubex/rake_task.rb +34 -0
  51. data/lib/rubex/symbol_table/entry.rb +17 -3
  52. data/lib/rubex/symbol_table/scope.rb +298 -25
  53. data/lib/rubex/version.rb +1 -1
  54. data/rubex.gemspec +11 -3
  55. data/spec/basic_ruby_method_spec.rb +15 -21
  56. data/spec/binding_ptr_args_spec.rb +33 -0
  57. data/spec/bitwise_operators_spec.rb +40 -0
  58. data/spec/blocks_spec.rb +35 -0
  59. data/spec/c_bindings_spec.rb +36 -0
  60. data/spec/c_constants_spec.rb +33 -0
  61. data/spec/c_function_ptrs_spec.rb +38 -0
  62. data/spec/c_functions_spec.rb +35 -0
  63. data/spec/c_struct_interface_spec.rb +38 -0
  64. data/spec/call_by_reference_spec.rb +33 -0
  65. data/spec/class_methods_spec.rb +33 -0
  66. data/spec/class_spec.rb +40 -0
  67. data/spec/comments_spec.rb +33 -0
  68. data/spec/default_args_spec.rb +37 -0
  69. data/spec/error_handling_spec.rb +42 -0
  70. data/spec/examples_spec.rb +52 -0
  71. data/spec/expressions_spec.rb +33 -0
  72. data/spec/fixtures/basic_ruby_method/basic_ruby_method.rubex +2 -0
  73. data/spec/fixtures/binding_ptr_args/binding_ptr_args.rubex +30 -0
  74. data/spec/fixtures/bitwise_operators/bitwise_operators.rubex +40 -0
  75. data/spec/fixtures/blocks/blocks.rubex +11 -0
  76. data/spec/fixtures/c_bindings/c_bindings.rubex +58 -0
  77. data/spec/fixtures/c_constants/c_constants.rubex +7 -0
  78. data/spec/fixtures/c_function_ptrs/c_function_ptrs.rubex +52 -0
  79. data/spec/fixtures/c_functions/c_functions.rubex +25 -0
  80. data/spec/fixtures/c_struct_interface/c_struct_interface.rubex +34 -0
  81. data/spec/fixtures/call_by_reference/call_by_reference.rubex +30 -0
  82. data/spec/fixtures/class/class.rubex +20 -0
  83. data/spec/fixtures/class_methods/class_methods.rubex +12 -0
  84. data/spec/fixtures/comments/comments.rubex +9 -0
  85. data/spec/fixtures/default_args/default_args.rubex +11 -0
  86. data/spec/fixtures/error_handling/error_handling.rubex +54 -0
  87. data/spec/fixtures/examples/array_to_hash.rubex +14 -0
  88. data/spec/fixtures/examples/rcsv.csv +5 -0
  89. data/spec/fixtures/examples/rcsv.rubex +329 -0
  90. data/spec/fixtures/expressions/expressions.rubex +10 -0
  91. data/spec/fixtures/if_else/if_else.rubex +77 -0
  92. data/spec/fixtures/implicit_lib_include/implicit_lib_include.rubex +15 -0
  93. data/spec/fixtures/init_ruby_objects_with_literal_syntax/init_ruby_objects_with_literal_syntax.rubex +17 -0
  94. data/spec/fixtures/loops/loops.rubex +33 -0
  95. data/spec/fixtures/recursion/recursion.rubex +9 -0
  96. data/spec/fixtures/ruby_constant_method_calls/ruby_constant_method_calls.rubex +17 -0
  97. data/spec/fixtures/ruby_operators/ruby_operators.rubex +29 -0
  98. data/spec/fixtures/ruby_raise/ruby_raise.rubex +13 -0
  99. data/spec/fixtures/ruby_strings/ruby_strings.rubex +19 -0
  100. data/spec/fixtures/ruby_strings/string_blank_bm.rb +37 -0
  101. data/spec/fixtures/ruby_symbols/ruby_symbols.rubex +12 -0
  102. data/spec/fixtures/ruby_types/ruby_types.rubex +15 -0
  103. data/spec/fixtures/statement_expression/statement_expression.rubex +23 -0
  104. data/spec/fixtures/static_array/static_array.rubex +20 -0
  105. data/spec/fixtures/string_literals/string_literals.rubex +15 -0
  106. data/spec/fixtures/struct/struct.rubex +82 -0
  107. data/spec/fixtures/typecasting/typecasting.rubex +23 -0
  108. data/spec/fixtures/var_declarations/var_declarations.rubex +39 -0
  109. data/spec/if_else_spec.rb +39 -0
  110. data/spec/implicit_lib_include_spec.rb +33 -0
  111. data/spec/init_ruby_objects_with_literal_syntax_spec.rb +39 -0
  112. data/spec/loops_spec.rb +34 -0
  113. data/spec/recursion_spec.rb +35 -0
  114. data/spec/ruby_constant_method_calls_spec.rb +35 -0
  115. data/spec/ruby_operators_spec.rb +40 -0
  116. data/spec/ruby_raise_spec.rb +35 -0
  117. data/spec/ruby_strings_spec.rb +33 -0
  118. data/spec/ruby_symbols_spec.rb +37 -0
  119. data/spec/ruby_types_spec.rb +35 -0
  120. data/spec/spec_helper.rb +54 -1
  121. data/spec/statement_expression_spec.rb +34 -0
  122. data/spec/static_array_spec.rb +33 -0
  123. data/spec/string_literals_spec.rb +34 -0
  124. data/spec/struct_spec.rb +36 -0
  125. data/spec/typecasting_spec.rb +38 -0
  126. data/spec/var_declarions_spec.rb +35 -0
  127. metadata +255 -29
  128. data/lib/rubex/ast/argument_list.rb +0 -20
  129. data/lib/rubex/ast/c_base_type.rb +0 -11
  130. data/lib/rubex/ast/ruby_method_def.rb +0 -84
  131. data/spec/fixtures/basic_ruby_method/basic.rb +0 -3
  132. data/spec/fixtures/basic_ruby_method/basic_ruby_method.c +0 -16
  133. data/spec/fixtures/basic_ruby_method/basic_ruby_method.o +0 -0
  134. data/spec/fixtures/basic_ruby_method/basic_ruby_method.so +0 -0
  135. data/spec/fixtures/basic_ruby_method/extconf.rb +0 -3
@@ -1,7 +1,60 @@
1
1
  require 'rspec'
2
2
  require 'awesome_print'
3
+ require 'pp'
4
+ require 'pry'
5
+ require 'pretty_backtrace'
6
+ require 'ruby-prof'
3
7
 
4
8
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
9
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
10
 
7
- require 'rubex'
11
+ # PrettyBacktrace.enable
12
+
13
+ require 'rubex'
14
+
15
+ def dir_str test_case
16
+ "#{Dir.pwd}/spec/fixtures/#{test_case}"
17
+ end
18
+
19
+ def path_str test_case, example=nil
20
+ example = test_case if example.nil?
21
+ "#{Dir.pwd}/spec/fixtures/#{test_case}/#{example}"
22
+ end
23
+
24
+ def generate_shared_object test_case, example=nil
25
+ path = path_str test_case, example
26
+ dir = dir_str test_case
27
+
28
+ Rubex::Compiler.compile(path + '.rubex', directory: dir)
29
+ Dir.chdir(dir) do
30
+ `ruby extconf.rb`
31
+ `make`
32
+ end
33
+ end
34
+
35
+ def delete_generated_files test_case, example=nil
36
+ dir = dir_str test_case
37
+ test_case = example if example
38
+ Dir.chdir(dir) do
39
+ [
40
+ "#{test_case}.c", "#{test_case}.so", "Makefile",
41
+ "extconf.rb" , "#{test_case}.o"
42
+ ].each do |f|
43
+ FileUtils.rm f
44
+ end
45
+ end
46
+ end
47
+
48
+ def setup_and_teardown_compiled_files test_case, example=nil, &block
49
+ generate_shared_object test_case, example
50
+ dir = dir_str test_case
51
+ begin
52
+ block.call(dir)
53
+ ensure
54
+ delete_generated_files test_case, example
55
+ end
56
+ end
57
+
58
+ def expect_compiled_code code, path
59
+ expect(code.to_s).to eq(File.read(path))
60
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubex do
4
+ test_case = "statement_expression"
5
+
6
+ context "Case: #{test_case}" do
7
+ before do
8
+ @path = path_str test_case
9
+ end
10
+
11
+ context ".ast" do
12
+ it "generates the AST" do
13
+ t = Rubex::Compiler.ast(@path + '.rubex')
14
+ end
15
+ end
16
+
17
+ context ".compile", focus: true do
18
+ it "compiles to valid C file" do
19
+ t,c,e = Rubex::Compiler.compile(@path + '.rubex', test: true)
20
+ end
21
+ end
22
+
23
+ context "Black box testing", focus: true do
24
+ it "compiles and checks for valid output" do
25
+ setup_and_teardown_compiled_files(test_case) do |dir|
26
+ def foo; end
27
+ require_relative "#{dir}/#{test_case}.so"
28
+
29
+ expect(expr_stat).to eq("success.")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubex do
4
+ test_case = "static_array"
5
+
6
+ context "Case: #{test_case}" do
7
+ before do
8
+ @path = path_str test_case
9
+ end
10
+
11
+ context ".ast" do
12
+ it "generates the AST" do
13
+ t = Rubex::Compiler.ast(@path + '.rubex')
14
+ end
15
+ end
16
+
17
+ context ".compile", focus: true do
18
+ it "compiles to valid C file" do
19
+ t,c,e = Rubex::Compiler.compile(@path + '.rubex', test: true)
20
+ end
21
+ end
22
+
23
+ context "Black box testing", focus: true do
24
+ it "compiles and checks for valid output" do
25
+ setup_and_teardown_compiled_files(test_case) do |dir|
26
+ require_relative "#{dir}/#{test_case}.so"
27
+
28
+ expect(static_array).to eq(123)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubex do
4
+ test_case = "string_literals"
5
+
6
+ context "Case: #{test_case}" do
7
+ before do
8
+ @path = path_str test_case
9
+ end
10
+
11
+ context ".ast" do
12
+ it "generate the AST." do
13
+ t = Rubex::Compiler.ast(@path + '.rubex')
14
+ end
15
+ end
16
+
17
+ context ".compile" do
18
+ it "compiles to C." do
19
+ t, c, e = Rubex::Compiler.compile(@path + '.rubex', test: true)
20
+ end
21
+ end
22
+
23
+ context "Black Box testing" do
24
+ it "compiles and checks for valid output" do
25
+ setup_and_teardown_compiled_files(test_case) do |dir|
26
+ require_relative "#{dir}/#{test_case}.so"
27
+
28
+ expect(strings).to eq("Ted says \"Oh my God thats a big sandwich!\"")
29
+ expect(string_ret).to eq("This is a returned string.")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubex do
4
+ test_case = "struct"
5
+
6
+ context "Case: #{test_case}" do
7
+ before do
8
+ @path = path_str test_case
9
+ end
10
+
11
+ context ".ast" do
12
+ it "generates a valid AST" do
13
+ t = Rubex::Compiler.ast(@path + '.rubex')
14
+ end
15
+ end
16
+
17
+ context ".compile" do
18
+ it "compiles to valid C code" do
19
+ t,c,e = Rubex::Compiler.compile(@path + '.rubex', test: true)
20
+ end
21
+ end
22
+
23
+ context "Black Box testing", this: true do
24
+ it "compiles and checks for valid output" do
25
+ setup_and_teardown_compiled_files(test_case) do |dir|
26
+ require_relative "#{dir}/#{test_case}.so"
27
+
28
+ expect(structure("aa",2,3)).to eq(666)
29
+ expect(struct_index).to eq(4)
30
+ expect(access_struct_obj).to eq(1)
31
+ expect(struct_ptr).to eq(7)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ include Rubex::AST
3
+
4
+ describe Rubex do
5
+ test_case = 'typecasting'
6
+
7
+ context "Case : #{test_case}" do
8
+ before do
9
+ @path = path_str test_case
10
+ end
11
+
12
+ context ".ast" do
13
+ it "returns a valid Abstract Syntax Tree" do
14
+ t = Rubex::Compiler.ast @path + ".rubex"
15
+ end
16
+ end
17
+
18
+ context ".compile", focus: true do
19
+ it "generates valid C code" do
20
+ t, c, e = Rubex::Compiler.compile @path + ".rubex", test: true
21
+ end
22
+ end
23
+
24
+ context "Black Box testing", focus: true do
25
+ it "compiles and checks for valid output" do
26
+ setup_and_teardown_compiled_files(test_case) do
27
+ dir = dir_str test_case
28
+ require_relative "#{dir}/#{test_case}.so"
29
+
30
+ t = TestTypeCasts.new
31
+
32
+ expect(t.test_this).to eq(10)
33
+ expect(t.test_object_conversion("hello world")).to eq('r')
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rubex do
4
+ test_case = "var_declarations"
5
+
6
+ context "Case: #{test_case}" do
7
+ before do
8
+ @path = path_str test_case
9
+ end
10
+
11
+ context ".ast" do
12
+ it "generates a valid AST" do
13
+ t = Rubex::Compiler.ast(@path + '.rubex')
14
+ end
15
+ end
16
+
17
+ context ".compile" do
18
+ it "compiles to valid C code" do
19
+ t,c,e = Rubex::Compiler.compile(@path + '.rubex', test: true)
20
+ end
21
+ end
22
+
23
+ context "Black Box testing" do
24
+ it "compiles and checks for valid output" do
25
+ setup_and_teardown_compiled_files(test_case) do |dir|
26
+ require_relative "#{dir}/#{test_case}.so"
27
+
28
+ expect(additive(1,5,2)).to be_within(0.001).of(6.6)
29
+ expect(declare_in_the_middle).to eq(7)
30
+ expect(obj_pointer).to eq([0,1,2])
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sameer Deshmukh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-25 00:00:00.000000000 Z
11
+ date: 2017-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: oedipus_lex
14
+ name: racc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
20
- type: :development
19
+ version: 1.4.14
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: '2.4'
26
+ version: 1.4.14
27
27
  - !ruby/object:Gem::Dependency
28
- name: racc
28
+ name: rake-compiler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.4.14
33
+ version: 1.0.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.4
41
+ - !ruby/object:Gem::Dependency
42
+ name: oedipus_lex
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.4'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 1.4.14
54
+ version: '2.4'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,8 +94,66 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pretty_backtrace
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: ruby-prof
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: benchmark-ips
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
83
153
  description: |
84
- A Crystal-inspired language for writing Ruby extensions
154
+ A Ruby-like language for writing Ruby C extensions.
155
+
156
+ Rubex keeps you happy even when writing C extensions.
85
157
  email:
86
158
  - sameer.deshmukh93@gmail.com
87
159
  executables:
@@ -90,43 +162,134 @@ extensions: []
90
162
  extra_rdoc_files: []
91
163
  files:
92
164
  - ".gitignore"
165
+ - ".travis.yml"
93
166
  - CONTRIBUTING.md
94
167
  - Gemfile
95
168
  - HISTORY.md
96
169
  - LICENSE
97
170
  - README.md
171
+ - REFERENCE.md
98
172
  - Rakefile
173
+ - TUTORIAL.md
99
174
  - bin/rubex
175
+ - docs/_config.yml
176
+ - docs/index.html
177
+ - examples/c_struct_interface/c_struct_interface.rb
178
+ - examples/c_struct_interface/c_struct_interface.rubex
179
+ - examples/linked_list/linked_list.rubex
180
+ - examples/linked_list/rb_linked_list.rb
181
+ - examples/rcsv wrapper/rcsv/README.md
182
+ - examples/rcsv wrapper/rcsv/Rakefile
183
+ - examples/rcsv wrapper/rcsv/ext/rcsv/extconf.rb
184
+ - examples/rcsv wrapper/rcsv/ext/rcsv/rcsv.c
185
+ - examples/rcsv wrapper/rcsv/ext/rcsv/rcsv.rubex
186
+ - examples/rcsv wrapper/rcsv/lib/rcsv.rb
187
+ - examples/rcsv wrapper/rcsv/lib/rcsv.so
188
+ - examples/rcsv wrapper/rcsv/lib/rcsv/version.rb
189
+ - examples/rcsv wrapper/rcsv/rcsv.gemspec
190
+ - examples/rcsv wrapper/rcsv/spec/rcsv.csv
191
+ - examples/rcsv wrapper/rcsv/spec/rcsv_spec.rb
192
+ - examples/rcsv wrapper/rcsv/spec/spec_helper.rb
193
+ - examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/Makefile
194
+ - examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/rcsv.o
195
+ - examples/rcsv wrapper/rcsv/tmp/x86_64-linux/rcsv/2.3.3/rcsv.so
196
+ - examples/rcsv wrapper/rcsv/tmp/x86_64-linux/stage/lib/rcsv.so
100
197
  - lib/rubex.rb
101
198
  - lib/rubex/ast.rb
102
- - lib/rubex/ast/argument_list.rb
103
- - lib/rubex/ast/c_base_type.rb
104
199
  - lib/rubex/ast/expression.rb
105
200
  - lib/rubex/ast/node.rb
106
- - lib/rubex/ast/ruby_method_def.rb
107
201
  - lib/rubex/ast/statement.rb
202
+ - lib/rubex/ast/top_statement.rb
108
203
  - lib/rubex/code_writer.rb
204
+ - lib/rubex/compiler.rb
205
+ - lib/rubex/compiler_config.rb
109
206
  - lib/rubex/constants.rb
110
207
  - lib/rubex/data_type.rb
208
+ - lib/rubex/error.rb
209
+ - lib/rubex/helpers.rb
111
210
  - lib/rubex/lexer.rex
112
211
  - lib/rubex/lexer.rex.rb
113
212
  - lib/rubex/parser.racc
114
213
  - lib/rubex/parser.racc.rb
214
+ - lib/rubex/rake_task.rb
115
215
  - lib/rubex/symbol_table.rb
116
216
  - lib/rubex/symbol_table/entry.rb
117
217
  - lib/rubex/symbol_table/scope.rb
118
218
  - lib/rubex/version.rb
119
219
  - rubex.gemspec
120
220
  - spec/basic_ruby_method_spec.rb
121
- - spec/fixtures/basic_ruby_method/Makefile
122
- - spec/fixtures/basic_ruby_method/basic.rb
123
- - spec/fixtures/basic_ruby_method/basic_ruby_method.c
124
- - spec/fixtures/basic_ruby_method/basic_ruby_method.o
221
+ - spec/binding_ptr_args_spec.rb
222
+ - spec/bitwise_operators_spec.rb
223
+ - spec/blocks_spec.rb
224
+ - spec/c_bindings_spec.rb
225
+ - spec/c_constants_spec.rb
226
+ - spec/c_function_ptrs_spec.rb
227
+ - spec/c_functions_spec.rb
228
+ - spec/c_struct_interface_spec.rb
229
+ - spec/call_by_reference_spec.rb
230
+ - spec/class_methods_spec.rb
231
+ - spec/class_spec.rb
232
+ - spec/comments_spec.rb
233
+ - spec/default_args_spec.rb
234
+ - spec/error_handling_spec.rb
235
+ - spec/examples_spec.rb
236
+ - spec/expressions_spec.rb
125
237
  - spec/fixtures/basic_ruby_method/basic_ruby_method.rubex
126
- - spec/fixtures/basic_ruby_method/basic_ruby_method.so
127
- - spec/fixtures/basic_ruby_method/extconf.rb
238
+ - spec/fixtures/binding_ptr_args/binding_ptr_args.rubex
239
+ - spec/fixtures/bitwise_operators/bitwise_operators.rubex
240
+ - spec/fixtures/blocks/blocks.rubex
241
+ - spec/fixtures/c_bindings/c_bindings.rubex
242
+ - spec/fixtures/c_constants/c_constants.rubex
243
+ - spec/fixtures/c_function_ptrs/c_function_ptrs.rubex
244
+ - spec/fixtures/c_functions/c_functions.rubex
245
+ - spec/fixtures/c_struct_interface/c_struct_interface.rubex
246
+ - spec/fixtures/call_by_reference/call_by_reference.rubex
247
+ - spec/fixtures/class/class.rubex
248
+ - spec/fixtures/class_methods/class_methods.rubex
249
+ - spec/fixtures/comments/comments.rubex
250
+ - spec/fixtures/default_args/default_args.rubex
251
+ - spec/fixtures/error_handling/error_handling.rubex
252
+ - spec/fixtures/examples/array_to_hash.rubex
253
+ - spec/fixtures/examples/rcsv.csv
254
+ - spec/fixtures/examples/rcsv.rubex
255
+ - spec/fixtures/expressions/expressions.rubex
256
+ - spec/fixtures/if_else/if_else.rubex
257
+ - spec/fixtures/implicit_lib_include/implicit_lib_include.rubex
258
+ - spec/fixtures/init_ruby_objects_with_literal_syntax/init_ruby_objects_with_literal_syntax.rubex
259
+ - spec/fixtures/loops/loops.rubex
260
+ - spec/fixtures/recursion/recursion.rubex
261
+ - spec/fixtures/ruby_constant_method_calls/ruby_constant_method_calls.rubex
262
+ - spec/fixtures/ruby_operators/ruby_operators.rubex
263
+ - spec/fixtures/ruby_raise/ruby_raise.rubex
264
+ - spec/fixtures/ruby_strings/ruby_strings.rubex
265
+ - spec/fixtures/ruby_strings/string_blank_bm.rb
266
+ - spec/fixtures/ruby_symbols/ruby_symbols.rubex
267
+ - spec/fixtures/ruby_types/ruby_types.rubex
268
+ - spec/fixtures/statement_expression/statement_expression.rubex
269
+ - spec/fixtures/static_array/static_array.rubex
270
+ - spec/fixtures/string_literals/string_literals.rubex
271
+ - spec/fixtures/struct/struct.rubex
272
+ - spec/fixtures/typecasting/typecasting.rubex
273
+ - spec/fixtures/var_declarations/var_declarations.rubex
274
+ - spec/if_else_spec.rb
275
+ - spec/implicit_lib_include_spec.rb
276
+ - spec/init_ruby_objects_with_literal_syntax_spec.rb
277
+ - spec/loops_spec.rb
278
+ - spec/recursion_spec.rb
279
+ - spec/ruby_constant_method_calls_spec.rb
280
+ - spec/ruby_operators_spec.rb
281
+ - spec/ruby_raise_spec.rb
282
+ - spec/ruby_strings_spec.rb
283
+ - spec/ruby_symbols_spec.rb
284
+ - spec/ruby_types_spec.rb
128
285
  - spec/spec_helper.rb
129
- homepage: http://github.com/v0dro/rubex
286
+ - spec/statement_expression_spec.rb
287
+ - spec/static_array_spec.rb
288
+ - spec/string_literals_spec.rb
289
+ - spec/struct_spec.rb
290
+ - spec/typecasting_spec.rb
291
+ - spec/var_declarions_spec.rb
292
+ homepage: http://github.com/sciruby/rubex
130
293
  licenses:
131
294
  - BSD-2
132
295
  metadata: {}
@@ -146,18 +309,81 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
309
  version: '0'
147
310
  requirements: []
148
311
  rubyforge_project:
149
- rubygems_version: 2.4.6
312
+ rubygems_version: 2.6.8
150
313
  signing_key:
151
314
  specification_version: 4
152
- summary: A Crystal-inspired language for writing Ruby extensions
315
+ summary: A Ruby-like language for writing Ruby C extensions. Rubex keeps you happy
316
+ even when writing C extensions.
153
317
  test_files:
154
318
  - spec/basic_ruby_method_spec.rb
155
- - spec/fixtures/basic_ruby_method/Makefile
156
- - spec/fixtures/basic_ruby_method/basic.rb
157
- - spec/fixtures/basic_ruby_method/basic_ruby_method.c
158
- - spec/fixtures/basic_ruby_method/basic_ruby_method.o
319
+ - spec/binding_ptr_args_spec.rb
320
+ - spec/bitwise_operators_spec.rb
321
+ - spec/blocks_spec.rb
322
+ - spec/c_bindings_spec.rb
323
+ - spec/c_constants_spec.rb
324
+ - spec/c_function_ptrs_spec.rb
325
+ - spec/c_functions_spec.rb
326
+ - spec/c_struct_interface_spec.rb
327
+ - spec/call_by_reference_spec.rb
328
+ - spec/class_methods_spec.rb
329
+ - spec/class_spec.rb
330
+ - spec/comments_spec.rb
331
+ - spec/default_args_spec.rb
332
+ - spec/error_handling_spec.rb
333
+ - spec/examples_spec.rb
334
+ - spec/expressions_spec.rb
159
335
  - spec/fixtures/basic_ruby_method/basic_ruby_method.rubex
160
- - spec/fixtures/basic_ruby_method/basic_ruby_method.so
161
- - spec/fixtures/basic_ruby_method/extconf.rb
336
+ - spec/fixtures/binding_ptr_args/binding_ptr_args.rubex
337
+ - spec/fixtures/bitwise_operators/bitwise_operators.rubex
338
+ - spec/fixtures/blocks/blocks.rubex
339
+ - spec/fixtures/c_bindings/c_bindings.rubex
340
+ - spec/fixtures/c_constants/c_constants.rubex
341
+ - spec/fixtures/c_function_ptrs/c_function_ptrs.rubex
342
+ - spec/fixtures/c_functions/c_functions.rubex
343
+ - spec/fixtures/c_struct_interface/c_struct_interface.rubex
344
+ - spec/fixtures/call_by_reference/call_by_reference.rubex
345
+ - spec/fixtures/class/class.rubex
346
+ - spec/fixtures/class_methods/class_methods.rubex
347
+ - spec/fixtures/comments/comments.rubex
348
+ - spec/fixtures/default_args/default_args.rubex
349
+ - spec/fixtures/error_handling/error_handling.rubex
350
+ - spec/fixtures/examples/array_to_hash.rubex
351
+ - spec/fixtures/examples/rcsv.csv
352
+ - spec/fixtures/examples/rcsv.rubex
353
+ - spec/fixtures/expressions/expressions.rubex
354
+ - spec/fixtures/if_else/if_else.rubex
355
+ - spec/fixtures/implicit_lib_include/implicit_lib_include.rubex
356
+ - spec/fixtures/init_ruby_objects_with_literal_syntax/init_ruby_objects_with_literal_syntax.rubex
357
+ - spec/fixtures/loops/loops.rubex
358
+ - spec/fixtures/recursion/recursion.rubex
359
+ - spec/fixtures/ruby_constant_method_calls/ruby_constant_method_calls.rubex
360
+ - spec/fixtures/ruby_operators/ruby_operators.rubex
361
+ - spec/fixtures/ruby_raise/ruby_raise.rubex
362
+ - spec/fixtures/ruby_strings/ruby_strings.rubex
363
+ - spec/fixtures/ruby_strings/string_blank_bm.rb
364
+ - spec/fixtures/ruby_symbols/ruby_symbols.rubex
365
+ - spec/fixtures/ruby_types/ruby_types.rubex
366
+ - spec/fixtures/statement_expression/statement_expression.rubex
367
+ - spec/fixtures/static_array/static_array.rubex
368
+ - spec/fixtures/string_literals/string_literals.rubex
369
+ - spec/fixtures/struct/struct.rubex
370
+ - spec/fixtures/typecasting/typecasting.rubex
371
+ - spec/fixtures/var_declarations/var_declarations.rubex
372
+ - spec/if_else_spec.rb
373
+ - spec/implicit_lib_include_spec.rb
374
+ - spec/init_ruby_objects_with_literal_syntax_spec.rb
375
+ - spec/loops_spec.rb
376
+ - spec/recursion_spec.rb
377
+ - spec/ruby_constant_method_calls_spec.rb
378
+ - spec/ruby_operators_spec.rb
379
+ - spec/ruby_raise_spec.rb
380
+ - spec/ruby_strings_spec.rb
381
+ - spec/ruby_symbols_spec.rb
382
+ - spec/ruby_types_spec.rb
162
383
  - spec/spec_helper.rb
163
- has_rdoc:
384
+ - spec/statement_expression_spec.rb
385
+ - spec/static_array_spec.rb
386
+ - spec/string_literals_spec.rb
387
+ - spec/struct_spec.rb
388
+ - spec/typecasting_spec.rb
389
+ - spec/var_declarions_spec.rb