rubex 0.0.1 → 0.1

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 (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