rockit 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/README +24 -160
  2. data/TODO +17 -17
  3. data/VERSION +1 -1
  4. data/doc/rockit_paper.pdf +0 -0
  5. data/lib/packrat/grammar.rb +139 -84
  6. data/rakefile +27 -9
  7. data/tests/acceptance/packrat/java/atest_java.rb +37 -0
  8. data/tests/acceptance/packrat/java/java.rb +136 -0
  9. data/tests/acceptance/packrat/java/t.rb +10 -0
  10. data/tests/acceptance/packrat/java/todo +10 -0
  11. data/tests/acceptance/packrat/java/xtc.lang.java/Java.rats +446 -0
  12. data/tests/acceptance/packrat/java/xtc.lang.java/JavaConstant.rats +111 -0
  13. data/tests/acceptance/packrat/java/xtc.lang.java/JavaCore.rats +508 -0
  14. data/tests/acceptance/packrat/java/xtc.lang.java/JavaIdentifier.rats +62 -0
  15. data/tests/acceptance/packrat/java/xtc.lang.java/JavaSymbol.rats +38 -0
  16. data/tests/acceptance/packrat/java/xtc.lang.java/JavaTree.rats +40 -0
  17. data/tests/acceptance/packrat/java/xtc.lang.java/JavaType.rats +61 -0
  18. data/tests/acceptance/packrat/java/xtc.lang.java/Spacing.rats +36 -0
  19. data/tests/acceptance/packrat/java/xtc.lang.java/Symbol.rats +77 -0
  20. data/tests/acceptance/packrat/minibasic/README +13 -0
  21. data/tests/acceptance/packrat/minibasic/atest_minibasic.rb +151 -13
  22. data/tests/acceptance/packrat/minibasic/minibasic.rb +94 -76
  23. data/tests/acceptance/packrat/minibasic/mult3.basic +6 -0
  24. data/tests/acceptance/packrat/minibasic/sumeven.basic +19 -0
  25. data/tests/unit/packrat/test_ast.rb +116 -0
  26. data/tests/unit/packrat/test_interpreting_parser.rb +15 -55
  27. metadata +22 -59
  28. data/lib/rockit/prettyprint/box.rb +0 -60
  29. data/lib/rockit/prettyprint/renderer.rb +0 -41
  30. data/lib/rockit/prettyprint/text_renderer.rb +0 -47
  31. data/lib/rockit/tree/base.rb +0 -223
  32. data/lib/rockit/tree/enter_leave_visitor.rb +0 -12
  33. data/lib/rockit/tree/graphviz.rb +0 -69
  34. data/lib/rockit/tree/visitor.rb +0 -12
  35. data/lib/util/array_alternatives.rb +0 -20
  36. data/lib/util/enter_leave_visitor.rb +0 -69
  37. data/lib/util/graphviz_dot.rb +0 -182
  38. data/lib/util/string_location.rb +0 -42
  39. data/lib/util/visitor.rb +0 -49
  40. data/lib/util/visitor_combinators.rb +0 -14
  41. data/tests/acceptance/rockit/dparser/atest_any_operator.rb +0 -33
  42. data/tests/acceptance/rockit/dparser/atest_arithmetic_grammar.rb +0 -30
  43. data/tests/acceptance/rockit/dparser/atest_list_operator.rb +0 -57
  44. data/tests/acceptance/rockit/dparser/atest_mult_operator.rb +0 -60
  45. data/tests/acceptance/rockit/dparser/atest_operator_grammar.rb +0 -61
  46. data/tests/acceptance/rockit/dparser/atest_plus_operator.rb +0 -55
  47. data/tests/acceptance/rockit/dparser/atest_samples_calculator.rb +0 -14
  48. data/tests/acceptance/rockit/dparser/atest_samples_minibasic.rb +0 -20
  49. data/tests/acceptance/rockit/dparser/atest_samples_multifunccalculator.rb +0 -36
  50. data/tests/acceptance/rockit/dparser/atest_simple_grammar.rb +0 -34
  51. data/tests/acceptance/rockit/dparser/atest_speculative_code_action.rb +0 -128
  52. data/tests/acceptance/rockit/dparser/calc_tests_common.rb +0 -103
  53. data/tests/unit/parse/utest_ebnf_grammar.rb +0 -50
  54. data/tests/unit/parse/utest_expand_grammar.rb +0 -23
  55. data/tests/unit/parse/utest_grammar.rb +0 -160
  56. data/tests/unit/rockit/assembler/llvm/utest_instructions.rb +0 -41
  57. data/tests/unit/rockit/assembler/llvm/utest_module.rb +0 -19
  58. data/tests/unit/rockit/prettyprint/utest_box.rb +0 -44
  59. data/tests/unit/rockit/tree/utest_tree_base.rb +0 -301
  60. data/tests/unit/rockit/tree/utest_tree_enter_leave_visitor.rb +0 -69
  61. data/tests/unit/rockit/tree/utest_tree_visitor.rb +0 -63
  62. data/tests/unit/rockit/utest_grammar.rb +0 -145
  63. data/tests/unit/rockit/utest_grammar_symbol.rb +0 -11
  64. data/tests/unit/rockit/utest_maybe_operator.rb +0 -12
  65. data/tests/unit/rockit/utest_regexp_terminal.rb +0 -45
  66. data/tests/unit/rockit/utest_repetition_operators.rb +0 -35
  67. data/tests/unit/rockit/utest_rule.rb +0 -23
  68. data/tests/unit/rockit/utest_string_terminal.rb +0 -40
  69. data/tests/unit/util/utest_array_alternatives.rb +0 -23
  70. data/tests/unit/util/utest_enter_leave_visitor.rb +0 -89
  71. data/tests/unit/util/utest_string_location.rb +0 -42
  72. data/tests/unit/util/utest_visitor.rb +0 -92
  73. data/tests/unit/util/utest_visitor_combinators.rb +0 -64
@@ -34,52 +34,6 @@
34
34
  require 'packrat/grammar'
35
35
 
36
36
  module MiniBasic
37
- class Interpreter
38
- def initialize
39
- # For variables and their values. Default value is 0.
40
- @vars = Hash.new(0)
41
- end
42
-
43
- def eval(sexpr)
44
- case sexpr.first
45
- when :Statements
46
- sexpr.statements.each {|stmt| mb_eval(stmt)}
47
- when "If"
48
- if mb_eval(sexpr.condition) # What is true and false in basic?
49
- mb_eval(sexpr.statements)
50
- elsif sexpr.optelse
51
- mb_eval(sexpr.optelse[2])
52
- end
53
- when "For"
54
- for i in (mb_eval(sexpr.from)..mb_eval(sexpr.to))
55
- $vars[sexpr.ident.id] = i
56
- mb_eval(sexpr.statements)
57
- end
58
- when "Read"
59
- print "? "; STDOUT.flush
60
- $vars[sexpr.ident.id] = STDIN.gets.to_i # Error catching?!
61
- when "Print"
62
- print mb_eval(sexpr.message); STDOUT.flush
63
- when "PrintLn"
64
- print "\n"; STDOUT.flush
65
- when "Assignment"
66
- $vars[sexpr.ident.id] = mb_eval(sexpr.expression)
67
- when "Condition"
68
- map = {">" => :>, "<" => :<, "=" => :==}
69
- mb_eval(sexpr.left).send(map[sexpr.op], mb_eval(sexpr.right))
70
- when "BinExpr"
71
- map = {"+"=>:+, "-"=>:-, "*"=>:*, "/"=>"/".intern, "MOD"=>"%".intern }
72
- mb_eval(sexpr.left).send(map[sexpr.op], mb_eval(sexpr.right))
73
- when "String"
74
- sexpr.value[1..-2] # Skip leading and trailing double quotes
75
- when "Identifier"
76
- $vars[sexpr.id]
77
- when "Number"
78
- sexpr.lexeme.to_i
79
- end
80
- end
81
- end
82
-
83
37
  Grammar = Packrat::Grammar.new do
84
38
  start_symbol :Program
85
39
 
@@ -87,51 +41,115 @@ module MiniBasic
87
41
  S = hidden(/\s*/)
88
42
  FS = hidden(/\s\s*/)
89
43
 
90
- prod :Program, [S, :Statements, eos(), lift(0)]
44
+ prod :Program, [S, :Statements, eos(), lift(1)]
91
45
 
92
46
  prod :Statements, [plus(:Statement), lift(0)]
93
47
 
94
- rule :Statement, [
95
- ['IF', FS, :Condition, FS, 'THEN', FS,
96
- :Statements, FS,
97
- maybe(:OptElse), S,
98
- 'ENDIF', S, ast(:If)],
48
+ rule( :Statement,
49
+ ['IF', FS, :Condition, FS, 'THEN', FS,
50
+ :Statements, S,
51
+ maybe(:OptElse), S,
52
+ 'ENDIF', S, ast(:If)],
99
53
 
100
- ['FOR', FS, :Identifier, S, ':=', S, :Expr, FS, 'TO', FS, :Expr, S,
101
- :Statements, S,
102
- 'NEXT', S, ast(:For)],
54
+ ['FOR', FS, :Identifier, S, ':=', S, :Expr, FS, 'TO', FS, :Expr, S,
55
+ :Statements, S,
56
+ 'NEXT', S, ast(:For, :expr1 => :from, :expr2 => :to)],
103
57
 
104
- ['READ', FS, :Identifier, S, ast(:Read)],
58
+ ['READ', FS, :Identifier, S, ast(:Read)],
105
59
 
106
- ['PRINTLN', S, ast(:PrintLn)],
60
+ ['PRINTLN', S, ast(:PrintLn)],
107
61
 
108
- ['PRINT', FS, any(:Expr, :String), S, ast(:Print)],
62
+ ['PRINT', FS, any(:Expr, :String), S, ast(:Print)],
109
63
 
110
- [:Identifier, S, ':=', S, :Expr, S, ast(:Assign)],
111
- ]
64
+ [:Identifier, S, ':=', S, :Expr, S, ast(:Assign)]
65
+ )
112
66
 
113
- prod :OptElse, ['ELSE', FS, :Statements, lift(1)]
67
+ prod :OptElse, ['ELSE', FS, :Statements, lift(2)]
114
68
 
115
- prod :Condition, [:Expr, S, any('<', '>', '='), S, :Expr, ast(:Cond)]
69
+ prod :Condition, [:Expr, S, any('<', '>', '='), S, :Expr,
70
+ ast(:Cond, :expr1 => :left, :expr2 => :right)]
116
71
 
117
72
  # This is crude! No precedence levels or handling of associativity.
118
- rule :Expr, [
119
- [:BaseExpr, S, any('+', '-', '*', '/', 'MOD'), S, :BaseExpr,
120
- ast(:OpExpr)
121
- ],
122
- [:BaseExpr, lift(0)],
123
- ]
124
-
125
- rule :BaseExpr, [
126
- [:Number, lift(0)],
127
- [:Identifier, lift(0)],
128
- ['(', S, :Expr, S, ')', lift(2)],
129
- ]
130
-
131
- prod :String, [/"[^"]*"/, lift(0)]
73
+ rule( :Expr,
74
+ [:BaseExpr, S, any('+', '-', '*', '/', 'MOD'), S, :BaseExpr,
75
+ ast(:BinExpr, :base_expr1 => :left, :base_expr2 => :right)],
76
+ [:BaseExpr, lift(0)]
77
+ )
78
+
79
+ rule( :BaseExpr,
80
+ [:Number, lift(0)],
81
+ [:Identifier, lift(0)],
82
+ [:String, lift(0)],
83
+ ['(', S, :Expr, S, ')', lift(2)]
84
+ )
85
+
86
+ prod :String, ['"', /[^"]*/, '"', lift(1)] #"
132
87
  prod :Identifier, [/[A-Z]([A-Z0-9])*/, lift(0) {|r| r.intern}]
133
88
  prod :Number, [/[0-9]+/, lift(0) {|r| r.to_i}]
134
89
  end
135
90
 
136
91
  Parser = Grammar.interpreting_parser
92
+
93
+ class Interpreter
94
+ attr_reader :vars
95
+
96
+ def initialize(options = {})
97
+ # For variables and their values. Default value is 0.
98
+ @vars = Hash.new(0)
99
+ @stdout = options[:stdout] || STDOUT
100
+ @stdin = options[:stdin] || STDIN
101
+ end
102
+
103
+ include MiniBasic::Grammar::ASTs
104
+
105
+ def interpret_program(str)
106
+ ast = MiniBasic::Parser.parse_string(str)
107
+ interpret(ast)
108
+ end
109
+
110
+ def interpret(ast)
111
+ case ast
112
+ when Array
113
+ ast.each {|stmt| interpret(stmt)}
114
+ when If
115
+ if interpret(ast.condition) # What is true and false in basic?
116
+ interpret(ast.statements)
117
+ elsif ast[4]
118
+ interpret(ast[4])
119
+ end
120
+ when For
121
+ for i in (interpret(ast.from)..interpret(ast.to))
122
+ @vars[ast.identifier] = i
123
+ interpret(ast.statements)
124
+ end
125
+ when Read
126
+ @stdout.print "? "
127
+ @stdout.flush
128
+ @vars[ast.identifier] = @stdin.gets.to_i # Error catching?!
129
+ when Print
130
+ @stdout.print(interpret(ast[1]).to_s)
131
+ @stdout.flush
132
+ when PrintLn
133
+ @stdout.print "\n"
134
+ @stdout.flush
135
+ when Assign
136
+ @vars[ast.identifier] = interpret(ast.expr)
137
+ when Cond
138
+ map = {">" => :>, "<" => :<, "=" => :==}
139
+ interpret(ast.left).send(map[ast[1]], interpret(ast.right))
140
+ when BinExpr
141
+ map = {"+"=>:+, "-"=>:-, "*"=>:*, "/"=>"/".intern, "MOD"=>"%".intern }
142
+ interpret(ast.left).send(map[ast[1]], interpret(ast.right))
143
+ when Symbol
144
+ @vars[ast]
145
+ else
146
+ ast # Return the value itself
147
+ end
148
+ end
149
+ end
150
+ end
151
+
152
+ if $0 == __FILE__
153
+ prg = File.open(ARGV[0]) {|fh| fh.read}
154
+ MiniBasic::Interpreter.new.interpret_program(prg)
137
155
  end
@@ -0,0 +1,6 @@
1
+ PRINT "What is your number"
2
+ READ I
3
+ PRINT I
4
+ PRINT " * 3 = "
5
+ PRINT I * 3
6
+ PRINTLN
@@ -0,0 +1,19 @@
1
+ PRINT "I can sum even numbers."
2
+ PRINTLN
3
+ PRINT "At what number should I start summing"
4
+ READ START
5
+ PRINT "At what number should I stop"
6
+ READ STOP
7
+ SUM := 0
8
+ FOR I := START TO STOP
9
+ IF (I MOD 2) = 0 THEN
10
+ SUM := (SUM + I)
11
+ ENDIF
12
+ NEXT
13
+ PRINT "The sum of all even numbers between (inclusive) "
14
+ PRINT START
15
+ PRINT " and "
16
+ PRINT STOP
17
+ PRINT " is = "
18
+ PRINT SUM
19
+ PRINTLN
@@ -0,0 +1,116 @@
1
+ require 'test/unit'
2
+
3
+ require 'packrat/grammar'
4
+ include Packrat
5
+
6
+ class TestAST < Test::Unit::TestCase
7
+ def setup
8
+ @g1 = Packrat::Grammar.new do
9
+ start_symbol :s
10
+
11
+ s = hidden(/\s*/)
12
+ fs = hidden(/\s\s*/)
13
+
14
+ rule(:s,
15
+ ["P", ast(:P)],
16
+ ["S2a", :Num, :Num, ast(:S2a)],
17
+ ["S2b", :Num, :Num, ast(:S2b, :num1 => :n1)],
18
+ ["S2c", :Num, :Num, ast(:S2c, :num2 => :n2)],
19
+ ["S2d", :Num, :Num, ast(:S2d, :num1 => :n1, :num2 => :n2)],
20
+ ['FOR', fs, :Ident, s, ':=', s, :Expr, fs, 'TO', fs, :Expr, s,
21
+ :Statements, s,
22
+ 'NEXT', s, ast(:For, :expr1 => :from, :expr2 => :to)],
23
+ [:Num, lift(0)],
24
+ [:Id, lift(0)]
25
+ )
26
+
27
+ prod :Num, [/\d{1,2}/, ast(:Num)]
28
+ prod :Id, ["ID", :Num, maybe("?"), ast(:Id)]
29
+
30
+ prod :Statements, [plus(:s), lift(0)]
31
+ prod :Ident, [/[A-Z]([A-Z0-9])*/, lift(0) {|r| r.intern}]
32
+ prod :Expr, [any(:Num, :Ident), lift(0)]
33
+ end
34
+
35
+ @ip = @g1.interpreting_parser
36
+ @mAst = @g1::ASTs
37
+ end
38
+
39
+ def test_01_ast_module_and_classes_initialized_after_grammar_finalization
40
+ @g1.finalize!
41
+
42
+ assert(@g1.constants.include?("ASTs"))
43
+ assert_kind_of(Module, @mAst)
44
+
45
+ expected_ast_names = ["P", "Num", "Id", "For", "S2a", "S2b", "S2c", "S2d"]
46
+ assert_equal(expected_ast_names.sort, @mAst.constants.sort)
47
+ expected_ast_names.each do |exp_ast_name|
48
+ ast = @mAst.const_get(exp_ast_name)
49
+ assert(Packrat::AST, ast.superclass)
50
+ assert_kind_of(ast, ast[])
51
+ end
52
+
53
+ assert_equal(["P"], @mAst::P.sig)
54
+ assert_equal([nil], @mAst::Num.sig)
55
+ assert_equal(["ID", :num, nil], @mAst::Id.sig)
56
+ assert_equal(["S2a", :num1, :num2], @mAst::S2a.sig)
57
+ assert_equal(["S2b", :n1, :num2], @mAst::S2b.sig)
58
+ assert_equal(["S2c", :num1, :n2], @mAst::S2c.sig)
59
+ assert_equal(["S2d", :n1, :n2], @mAst::S2d.sig)
60
+ assert_equal(["FOR", :ident, ":=", :from, "TO", :to,
61
+ :statements, "NEXT"],
62
+ @mAst::For.sig)
63
+ end
64
+
65
+ def test_02_ast_parsing_no_nonconst_children
66
+ r = @ip.parse_string("P")
67
+ assert_equal(@mAst::P[], r)
68
+ assert_equal("P", r[0])
69
+ end
70
+
71
+ def test_03_ast_parsing_single_nonconst_child
72
+ r = @ip.parse_string("1")
73
+ assert_equal(@mAst::Num["1"], r)
74
+ assert_equal("1", r[0])
75
+ end
76
+
77
+ def test_04_ast_parsing_multi_mixed_children_default_naming
78
+ r = @ip.parse_string("ID10")
79
+ assert_equal('Id["ID", Num["10"], nil]', r.inspect)
80
+ assert_equal(@mAst::Id[@mAst::Num["10"]], r)
81
+ assert_equal(@mAst::Num["10"], r[1])
82
+ assert_equal("ID", r[0])
83
+ assert_equal("10", r[1][0])
84
+ assert_equal(nil, r[2])
85
+ assert_equal("10", r.num[0])
86
+ end
87
+
88
+ def test_05_multi_mixed_overlapping_symbol_names
89
+ r = @ip.parse_string("S2a112")
90
+ assert_equal(@mAst::S2a[@mAst::Num["11"], @mAst::Num["2"]], r)
91
+ assert_equal(@mAst::Num["11"], r[1])
92
+ assert_equal(@mAst::Num["2"], r[2])
93
+ assert_equal(@mAst::Num["11"], r.num1)
94
+ assert_equal(@mAst::Num["2"], r.num2)
95
+ end
96
+
97
+ def test_06_multi_mixed_overlapping_symbol_names_with_override
98
+ r = @ip.parse_string("S2b1134")
99
+ assert_equal(@mAst::Num["11"], r.n1)
100
+ assert_equal(@mAst::Num["34"], r.num2)
101
+
102
+ r = @ip.parse_string("S2c1134")
103
+ assert_equal(@mAst::Num["11"], r.num1)
104
+ assert_equal(@mAst::Num["34"], r.n2)
105
+
106
+ r = @ip.parse_string("S2d7465")
107
+ assert_equal(@mAst::Num["74"], r.n1)
108
+ assert_equal(@mAst::Num["65"], r.n2)
109
+ end
110
+
111
+ def test_07_complex_ast_parsing
112
+ r = @ip.parse_string("FOR A := 1 TO 3 P NEXT")
113
+ assert_equal(@mAst::For[:A, @mAst::Num["1"], @mAst::Num["3"],
114
+ [@mAst::P[]]], r)
115
+ end
116
+ end
@@ -40,10 +40,10 @@ class TestInterpretingParser < Test::Unit::TestCase
40
40
  def test_03_grammar_with_single_rule_with_multi_prods
41
41
  g = Packrat::Grammar.new do
42
42
  start_symbol :s
43
- rule :s, [
44
- [/a+/, /b+/, /dc*/],
45
- [/a+/, /d+/]
46
- ]
43
+ rule(:s,
44
+ [/a+/, /b+/, /dc*/],
45
+ [/a+/, /d+/]
46
+ )
47
47
  end
48
48
  ip = g.interpreting_parser
49
49
 
@@ -60,10 +60,10 @@ class TestInterpretingParser < Test::Unit::TestCase
60
60
  def test_04_grammar_with_single_rule_and_ref_to_one_external_prod
61
61
  g = Packrat::Grammar.new do
62
62
  start_symbol :s
63
- rule :s, [
64
- [:a, /b+/, /dc*/],
65
- [:a, /d+/]
66
- ]
63
+ rule( :s,
64
+ [:a, /b+/, /dc*/],
65
+ [:a, /d+/]
66
+ )
67
67
  prod :a, [/a+/]
68
68
  end
69
69
  ip = g.interpreting_parser
@@ -81,13 +81,13 @@ class TestInterpretingParser < Test::Unit::TestCase
81
81
  def test_05_grammar_with_multi_rules
82
82
  g = Packrat::Grammar.new do
83
83
  start_symbol :Constant
84
- rule :Constant, [
85
- [:DecimalInt],
86
- [:HexInt],
87
- [:OctalInt],
88
- ]
89
- rule :DecimalInt, [[/[1-9][0-9]*[uUlL]?/]]
90
- rule :HexInt, [[/(0x|0X)[0-9a-fA-F]+[uUlL]?/]]
84
+ rule( :Constant,
85
+ [:DecimalInt],
86
+ [:HexInt],
87
+ [:OctalInt]
88
+ )
89
+ rule :DecimalInt, [/[1-9][0-9]*[uUlL]?/]
90
+ rule :HexInt, [/(0x|0X)[0-9a-fA-F]+[uUlL]?/]
91
91
  prod :OctalInt, [/0[0-7]*[uUlL]?/]
92
92
  end
93
93
  ip = g.interpreting_parser
@@ -253,44 +253,4 @@ class TestInterpretingParser < Test::Unit::TestCase
253
253
  r = ip.parse_string("7/18")
254
254
  assert_equal([:s, "7", "/", "18"], r)
255
255
  end
256
-
257
- def test_14_ast
258
- g = Packrat::Grammar.new do
259
- start_symbol :s
260
- rule :s, [
261
- [:Num, lift(0)],
262
- [:Id, lift(0)],
263
- ]
264
- prod :Num, [/\d+/, ast(:Num)]
265
- prod :Id, ["ID", :Num, maybe("?"), ast(:Id)]
266
- end
267
- ip = g.interpreting_parser
268
-
269
- mAst = g::ASTs
270
- assert_kind_of(Module, mAst)
271
-
272
- r = ip.parse_string("1")
273
-
274
- # The AST classes are added during the parse so now we can see
275
- # that they are there.
276
- assert_kind_of(Class, mAst.const_get("Num"))
277
- assert(mAst::Num.ancestors.include?(Packrat::AST))
278
-
279
- as = mAst::Num[]
280
- assert_kind_of(mAst::Num, as)
281
-
282
- assert_kind_of(Packrat::AST, r)
283
- assert_equal('Num["1"]', r.inspect)
284
- assert_equal("1", r[0])
285
-
286
- r = ip.parse_string("ID10")
287
- assert_kind_of(Class, mAst.const_get("Id"))
288
- assert(mAst::Id.ancestors.include?(Packrat::AST))
289
- assert_kind_of(Packrat::AST, r)
290
- assert_equal('Id["ID", Num["10"], nil]', r.inspect)
291
- assert_equal("ID", r[0])
292
- assert_equal("10", r[1][0])
293
- assert_equal(nil, r[2])
294
- assert_equal("10", r.num[0])
295
- end
296
256
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rockit
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.1
7
- date: 2006-03-23 00:00:00 +01:00
6
+ version: 0.7.2
7
+ date: 2006-03-27 00:00:00 +02:00
8
8
  summary: Rockit is the Ruby Object-oriented Compiler construction toolKIT
9
9
  require_paths:
10
10
  - lib
@@ -35,67 +35,30 @@ files:
35
35
  - VERSION
36
36
  - rakefile
37
37
  - lib/packrat/grammar.rb
38
- - lib/rockit/prettyprint/text_renderer.rb
39
- - lib/rockit/prettyprint/renderer.rb
40
- - lib/rockit/prettyprint/box.rb
41
- - lib/rockit/tree/visitor.rb
42
- - lib/rockit/tree/base.rb
43
- - lib/rockit/tree/graphviz.rb
44
- - lib/rockit/tree/enter_leave_visitor.rb
45
- - lib/util/array_alternatives.rb
46
- - lib/util/string_location.rb
47
- - lib/util/graphviz_dot.rb
48
- - lib/util/visitor.rb
49
- - lib/util/visitor_combinators.rb
50
- - lib/util/enter_leave_visitor.rb
51
- - tests/acceptance/rockit
52
- - tests/acceptance/packrat
53
- - tests/acceptance/rockit/dparser
54
- - tests/acceptance/rockit/dparser/atest_speculative_code_action.rb
55
- - tests/acceptance/rockit/dparser/atest_samples_calculator.rb
56
- - tests/acceptance/rockit/dparser/atest_plus_operator.rb
57
- - tests/acceptance/rockit/dparser/atest_arithmetic_grammar.rb
58
- - tests/acceptance/rockit/dparser/atest_simple_grammar.rb
59
- - tests/acceptance/rockit/dparser/atest_operator_grammar.rb
60
- - tests/acceptance/rockit/dparser/atest_any_operator.rb
61
- - tests/acceptance/rockit/dparser/atest_samples_minibasic.rb
62
- - tests/acceptance/rockit/dparser/atest_list_operator.rb
63
- - tests/acceptance/rockit/dparser/atest_samples_multifunccalculator.rb
64
- - tests/acceptance/rockit/dparser/atest_mult_operator.rb
65
- - tests/acceptance/rockit/dparser/calc_tests_common.rb
38
+ - doc/rockit_paper.pdf
66
39
  - tests/acceptance/packrat/minibasic
40
+ - tests/acceptance/packrat/java
67
41
  - tests/acceptance/packrat/minibasic/minibasic.rb
42
+ - tests/acceptance/packrat/minibasic/mult3.basic
68
43
  - tests/acceptance/packrat/minibasic/atest_minibasic.rb
69
- - tests/unit/rockit
70
- - tests/unit/util
71
- - tests/unit/parse
72
- - tests/unit/packrat
73
- - tests/unit/rockit/tree
74
- - tests/unit/rockit/prettyprint
75
- - tests/unit/rockit/utest_grammar_symbol.rb
76
- - tests/unit/rockit/utest_string_terminal.rb
77
- - tests/unit/rockit/utest_repetition_operators.rb
78
- - tests/unit/rockit/utest_regexp_terminal.rb
79
- - tests/unit/rockit/utest_grammar.rb
80
- - tests/unit/rockit/utest_rule.rb
81
- - tests/unit/rockit/utest_maybe_operator.rb
82
- - tests/unit/rockit/assembler
83
- - tests/unit/rockit/tree/utest_tree_visitor.rb
84
- - tests/unit/rockit/tree/utest_tree_base.rb
85
- - tests/unit/rockit/tree/utest_tree_enter_leave_visitor.rb
86
- - tests/unit/rockit/prettyprint/utest_box.rb
87
- - tests/unit/rockit/assembler/llvm
88
- - tests/unit/rockit/assembler/llvm/utest_instructions.rb
89
- - tests/unit/rockit/assembler/llvm/utest_module.rb
90
- - tests/unit/util/utest_array_alternatives.rb
91
- - tests/unit/util/utest_string_location.rb
92
- - tests/unit/util/utest_visitor.rb
93
- - tests/unit/util/utest_visitor_combinators.rb
94
- - tests/unit/util/utest_enter_leave_visitor.rb
95
- - tests/unit/parse/utest_grammar.rb
96
- - tests/unit/parse/utest_expand_grammar.rb
97
- - tests/unit/parse/utest_ebnf_grammar.rb
44
+ - tests/acceptance/packrat/minibasic/README
45
+ - tests/acceptance/packrat/minibasic/sumeven.basic
46
+ - tests/acceptance/packrat/java/xtc.lang.java
47
+ - tests/acceptance/packrat/java/java.rb
48
+ - tests/acceptance/packrat/java/todo
49
+ - tests/acceptance/packrat/java/atest_java.rb
50
+ - tests/acceptance/packrat/java/t.rb
51
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaConstant.rats
52
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaCore.rats
53
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaIdentifier.rats
54
+ - tests/acceptance/packrat/java/xtc.lang.java/Spacing.rats
55
+ - tests/acceptance/packrat/java/xtc.lang.java/Java.rats
56
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaSymbol.rats
57
+ - tests/acceptance/packrat/java/xtc.lang.java/Symbol.rats
58
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaTree.rats
59
+ - tests/acceptance/packrat/java/xtc.lang.java/JavaType.rats
98
60
  - tests/unit/packrat/test_interpreting_parser.rb
61
+ - tests/unit/packrat/test_ast.rb
99
62
  test_files: []
100
63
 
101
64
  rdoc_options: []