racc 1.4.16 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/README.ja.rdoc +0 -1
  3. data/README.rdoc +8 -11
  4. data/bin/racc +37 -23
  5. data/{rdoc → doc}/en/NEWS.en.rdoc +0 -0
  6. data/{rdoc → doc}/en/grammar.en.rdoc +27 -31
  7. data/doc/en/grammar2.en.rdoc +219 -0
  8. data/{rdoc → doc}/ja/NEWS.ja.rdoc +0 -0
  9. data/{rdoc → doc}/ja/command.ja.html +1 -1
  10. data/{rdoc → doc}/ja/debug.ja.rdoc +0 -0
  11. data/{rdoc → doc}/ja/grammar.ja.rdoc +0 -0
  12. data/{rdoc → doc}/ja/index.ja.html +0 -0
  13. data/{rdoc → doc}/ja/parser.ja.rdoc +0 -0
  14. data/{rdoc → doc}/ja/usage.ja.html +0 -0
  15. data/ext/racc/cparse/cparse.c +19 -17
  16. data/ext/racc/cparse/extconf.rb +2 -1
  17. data/lib/racc/compat.rb +5 -4
  18. data/lib/racc/debugflags.rb +5 -4
  19. data/lib/racc/exception.rb +4 -1
  20. data/lib/racc/grammar.rb +22 -17
  21. data/lib/racc/grammarfileparser.rb +7 -6
  22. data/lib/racc/info.rb +5 -2
  23. data/lib/racc/iset.rb +5 -4
  24. data/lib/racc/logfilegenerator.rb +5 -4
  25. data/lib/racc/parser-text.rb +10 -16
  26. data/lib/racc/parser.rb +10 -16
  27. data/lib/racc/parserfilegenerator.rb +5 -47
  28. data/lib/racc/sourcetext.rb +5 -4
  29. data/lib/racc/state.rb +4 -1
  30. data/lib/racc/statetransitiontable.rb +9 -14
  31. metadata +22 -140
  32. data/DEPENDS +0 -4
  33. data/Manifest.txt +0 -146
  34. data/Rakefile +0 -58
  35. data/bin/racc2y +0 -195
  36. data/bin/y2racc +0 -339
  37. data/ext/racc/com/headius/racc/Cparse.java +0 -849
  38. data/fastcache/extconf.rb +0 -2
  39. data/fastcache/fastcache.c +0 -185
  40. data/lib/racc/pre-setup +0 -13
  41. data/misc/dist.sh +0 -31
  42. data/sample/array.y +0 -67
  43. data/sample/array2.y +0 -59
  44. data/sample/calc-ja.y +0 -66
  45. data/sample/calc.y +0 -65
  46. data/sample/conflict.y +0 -15
  47. data/sample/hash.y +0 -60
  48. data/sample/lalr.y +0 -17
  49. data/sample/lists.y +0 -57
  50. data/sample/syntax.y +0 -46
  51. data/sample/yyerr.y +0 -46
  52. data/setup.rb +0 -1587
  53. data/tasks/doc.rb +0 -12
  54. data/tasks/email.rb +0 -55
  55. data/test/assets/cadenza.y +0 -170
  56. data/test/assets/cast.y +0 -926
  57. data/test/assets/chk.y +0 -126
  58. data/test/assets/conf.y +0 -16
  59. data/test/assets/csspool.y +0 -729
  60. data/test/assets/digraph.y +0 -29
  61. data/test/assets/echk.y +0 -118
  62. data/test/assets/edtf.y +0 -583
  63. data/test/assets/err.y +0 -60
  64. data/test/assets/error_recovery.y +0 -35
  65. data/test/assets/expect.y +0 -7
  66. data/test/assets/firstline.y +0 -4
  67. data/test/assets/huia.y +0 -318
  68. data/test/assets/ichk.y +0 -102
  69. data/test/assets/intp.y +0 -546
  70. data/test/assets/journey.y +0 -47
  71. data/test/assets/liquor.y +0 -313
  72. data/test/assets/machete.y +0 -423
  73. data/test/assets/macruby.y +0 -2197
  74. data/test/assets/mailp.y +0 -437
  75. data/test/assets/mediacloth.y +0 -599
  76. data/test/assets/mof.y +0 -649
  77. data/test/assets/namae.y +0 -302
  78. data/test/assets/nasl.y +0 -626
  79. data/test/assets/newsyn.y +0 -25
  80. data/test/assets/noend.y +0 -4
  81. data/test/assets/nokogiri-css.y +0 -255
  82. data/test/assets/nonass.y +0 -41
  83. data/test/assets/normal.y +0 -27
  84. data/test/assets/norule.y +0 -4
  85. data/test/assets/nullbug1.y +0 -25
  86. data/test/assets/nullbug2.y +0 -15
  87. data/test/assets/opal.y +0 -1807
  88. data/test/assets/opt.y +0 -123
  89. data/test/assets/percent.y +0 -35
  90. data/test/assets/php_serialization.y +0 -98
  91. data/test/assets/recv.y +0 -97
  92. data/test/assets/riml.y +0 -665
  93. data/test/assets/rrconf.y +0 -14
  94. data/test/assets/ruby18.y +0 -1943
  95. data/test/assets/ruby19.y +0 -2174
  96. data/test/assets/ruby20.y +0 -2350
  97. data/test/assets/ruby21.y +0 -2359
  98. data/test/assets/ruby22.y +0 -2381
  99. data/test/assets/scan.y +0 -72
  100. data/test/assets/syntax.y +0 -50
  101. data/test/assets/tp_plus.y +0 -622
  102. data/test/assets/twowaysql.y +0 -278
  103. data/test/assets/unterm.y +0 -5
  104. data/test/assets/useless.y +0 -12
  105. data/test/assets/yyerr.y +0 -46
  106. data/test/bench.y +0 -36
  107. data/test/helper.rb +0 -115
  108. data/test/infini.y +0 -8
  109. data/test/regress/cadenza +0 -796
  110. data/test/regress/cast +0 -3425
  111. data/test/regress/csspool +0 -2318
  112. data/test/regress/edtf +0 -1794
  113. data/test/regress/huia +0 -1392
  114. data/test/regress/journey +0 -222
  115. data/test/regress/liquor +0 -885
  116. data/test/regress/machete +0 -833
  117. data/test/regress/mediacloth +0 -1463
  118. data/test/regress/mof +0 -1368
  119. data/test/regress/namae +0 -634
  120. data/test/regress/nasl +0 -2058
  121. data/test/regress/nokogiri-css +0 -836
  122. data/test/regress/opal +0 -6429
  123. data/test/regress/php_serialization +0 -336
  124. data/test/regress/riml +0 -3297
  125. data/test/regress/ruby18 +0 -6351
  126. data/test/regress/ruby22 +0 -7456
  127. data/test/regress/tp_plus +0 -1933
  128. data/test/regress/twowaysql +0 -556
  129. data/test/scandata/brace +0 -7
  130. data/test/scandata/gvar +0 -1
  131. data/test/scandata/normal +0 -4
  132. data/test/scandata/percent +0 -18
  133. data/test/scandata/slash +0 -10
  134. data/test/src.intp +0 -34
  135. data/test/start.y +0 -20
  136. data/test/test_chk_y.rb +0 -52
  137. data/test/test_grammar_file_parser.rb +0 -15
  138. data/test/test_racc_command.rb +0 -322
  139. data/test/test_scan_y.rb +0 -52
  140. data/test/testscanner.rb +0 -51
  141. data/web/racc.en.rhtml +0 -42
  142. data/web/racc.ja.rhtml +0 -51
data/tasks/doc.rb DELETED
@@ -1,12 +0,0 @@
1
- require 'rake/rdoctask'
2
-
3
- Rake::RDocTask.new(:docs) do |rd|
4
- rd.main = "README.en.rdoc"
5
- rd.rdoc_files.include(SPEC.files.find_all { |file_name|
6
- file_name =~ /^(bin|lib|ext)/ || file_name !~ /\//
7
- })
8
-
9
- title = "#{SPEC.name}-#{SPEC.version} Documentation"
10
-
11
- rd.options << "-t #{title}"
12
- end
data/tasks/email.rb DELETED
@@ -1,55 +0,0 @@
1
- class EmailTask
2
- def initialize language, readme, changelog
3
- @language = language
4
- @readme = readme
5
- @changelog = changelog
6
- @languages = {
7
- :en => {
8
- :release => 'release',
9
- :released => 'has been released',
10
- },
11
- :ja => {
12
- :release => 'リリース',
13
- :released => 'はリリースしました',
14
- }
15
- }
16
- define_tasks
17
- end
18
-
19
- private
20
- def define_tasks
21
- namespace :email do
22
- task @language do
23
- subject = "#{SPEC.name} #{SPEC.version} #{@languages[@language][:release]}"
24
- title = "#{SPEC.name} #{SPEC.version} #{@languages[@language][:released]}!"
25
- readme = Hash[*(File.read(@readme).split(/^(=+ .*)$/)[1..-1])]
26
- description = readme[readme.keys.find { |x| x =~ /description/i }]
27
- description = description.split(/\n\n+/).find { |x|
28
- x.length > 0
29
- }.gsub(/^\s*/, '')
30
- urls = readme[readme.keys.find { |x| x =~ /#{SPEC.name}/i }]
31
- urls = urls.strip.gsub(/\*\s/, '').split(/\n/).map { |s| "* <#{s}>" }
32
- File.open("email.#{@language}.txt", "wb") { |file|
33
- file.puts(<<-eomail)
34
- Subject: [ANN] #{subject}
35
-
36
- #{title}
37
-
38
- #{urls.join("\n")}
39
-
40
- #{description}
41
-
42
- Changes:
43
-
44
- #{File.read(@changelog).split(/^(===.*)/)[1..2].join.strip.gsub(/=/, '#')}
45
-
46
- #{urls.join("\n")}
47
- eomail
48
- }
49
- end
50
- end
51
- end
52
- end
53
-
54
- EmailTask.new(:en, 'README.en.rdoc', 'doc/en/NEWS.en.rdoc')
55
- EmailTask.new(:ja, 'README.ja.rdoc', 'doc/ja/NEWS.ja.rdoc')
@@ -1,170 +0,0 @@
1
- # This grammar is released under an MIT license
2
- # Author: William Howard (http://github.com/whoward)
3
- # Source: https://github.com/whoward/cadenza/blob/master/src/cadenza.y
4
-
5
- class Cadenza::RaccParser
6
-
7
- /* expect this many shift/reduce conflicts */
8
- expect 37
9
-
10
- rule
11
- target
12
- : document
13
- | /* none */ { result = nil }
14
- ;
15
-
16
- parameter_list
17
- : logical_expression { result = [val[0]] }
18
- | parameter_list ',' logical_expression { result = val[0].push(val[2]) }
19
- ;
20
-
21
- /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */
22
- primary_expression
23
- : IDENTIFIER { result = VariableNode.new(val[0].value) }
24
- | IDENTIFIER parameter_list { result = VariableNode.new(val[0].value, val[1]) }
25
- | INTEGER { result = ConstantNode.new(val[0].value) }
26
- | REAL { result = ConstantNode.new(val[0].value) }
27
- | STRING { result = ConstantNode.new(val[0].value) }
28
- | '(' filtered_expression ')' { result = val[1] }
29
- ;
30
-
31
- multiplicative_expression
32
- : primary_expression
33
- | multiplicative_expression '*' primary_expression { result = OperationNode.new(val[0], "*", val[2]) }
34
- | multiplicative_expression '/' primary_expression { result = OperationNode.new(val[0], "/", val[2]) }
35
- ;
36
-
37
- additive_expression
38
- : multiplicative_expression
39
- | additive_expression '+' multiplicative_expression { result = OperationNode.new(val[0], "+", val[2]) }
40
- | additive_expression '-' multiplicative_expression { result = OperationNode.new(val[0], "-", val[2]) }
41
- ;
42
-
43
- boolean_expression
44
- : additive_expression
45
- | boolean_expression OP_EQ additive_expression { result = OperationNode.new(val[0], "==", val[2]) }
46
- | boolean_expression OP_NEQ additive_expression { result = OperationNode.new(val[0], "!=", val[2]) }
47
- | boolean_expression OP_LEQ additive_expression { result = OperationNode.new(val[0], "<=", val[2]) }
48
- | boolean_expression OP_GEQ additive_expression { result = OperationNode.new(val[0], ">=", val[2]) }
49
- | boolean_expression '>' additive_expression { result = OperationNode.new(val[0], ">", val[2]) }
50
- | boolean_expression '<' additive_expression { result = OperationNode.new(val[0], "<", val[2]) }
51
- ;
52
-
53
- inverse_expression
54
- : boolean_expression
55
- | NOT boolean_expression { result = BooleanInverseNode.new(val[1]) }
56
- ;
57
-
58
- logical_expression
59
- : inverse_expression
60
- | logical_expression AND inverse_expression { result = OperationNode.new(val[0], "and", val[2]) }
61
- | logical_expression OR inverse_expression { result = OperationNode.new(val[0], "or", val[2]) }
62
- ;
63
-
64
- filter
65
- : IDENTIFIER { result = FilterNode.new(val[0].value) }
66
- | IDENTIFIER ':' parameter_list { result = FilterNode.new(val[0].value, val[2]) }
67
- ;
68
-
69
- filter_list
70
- : filter { result = [val[0]] }
71
- | filter_list '|' filter { result = val[0].push(val[2]) }
72
- ;
73
-
74
- filtered_expression
75
- : logical_expression
76
- | logical_expression '|' filter_list { result = FilteredValueNode.new(val[0], val[2]) }
77
- ;
78
-
79
- inject_statement
80
- : VAR_OPEN filtered_expression VAR_CLOSE { result = val[1] }
81
- ;
82
-
83
- if_tag
84
- : STMT_OPEN IF logical_expression STMT_CLOSE { open_scope!; result = val[2] }
85
- | STMT_OPEN UNLESS logical_expression STMT_CLOSE { open_scope!; result = BooleanInverseNode.new(val[2]) }
86
- ;
87
-
88
- else_tag
89
- : STMT_OPEN ELSE STMT_CLOSE { result = close_scope!; open_scope! }
90
- ;
91
-
92
- end_if_tag
93
- : STMT_OPEN ENDIF STMT_CLOSE { result = close_scope! }
94
- | STMT_OPEN ENDUNLESS STMT_CLOSE { result = close_scope! }
95
- ;
96
-
97
- if_block
98
- : if_tag end_if_tag { result = IfNode.new(val[0], val[1]) }
99
- | if_tag document end_if_tag { result = IfNode.new(val[0], val[2]) }
100
- | if_tag else_tag document end_if_tag { result = IfNode.new(val[0], val[1], val[3]) }
101
- | if_tag document else_tag end_if_tag { result = IfNode.new(val[0], val[2], val[3]) }
102
- | if_tag document else_tag document end_if_tag { result = IfNode.new(val[0], val[2], val[4]) }
103
- ;
104
-
105
- for_tag
106
- : STMT_OPEN FOR IDENTIFIER IN filtered_expression STMT_CLOSE { open_scope!; result = [val[2].value, val[4]] }
107
- ;
108
-
109
- end_for_tag
110
- : STMT_OPEN ENDFOR STMT_CLOSE { result = close_scope! }
111
- ;
112
-
113
- /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */
114
- for_block
115
- : for_tag end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[1]) }
116
- | for_tag document end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[2]) }
117
- ;
118
-
119
- block_tag
120
- : STMT_OPEN BLOCK IDENTIFIER STMT_CLOSE { result = open_block_scope!(val[2].value) }
121
- ;
122
-
123
- end_block_tag
124
- : STMT_OPEN ENDBLOCK STMT_CLOSE { result = close_block_scope! }
125
- ;
126
-
127
- /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */
128
- block_block
129
- : block_tag end_block_tag { result = BlockNode.new(val[0], val[1]) }
130
- | block_tag document end_block_tag { result = BlockNode.new(val[0], val[2]) }
131
- ;
132
-
133
- generic_block_tag
134
- : STMT_OPEN IDENTIFIER STMT_CLOSE { open_scope!; result = [val[1].value, []] }
135
- | STMT_OPEN IDENTIFIER parameter_list STMT_CLOSE { open_scope!; result = [val[1].value, val[2]] }
136
- ;
137
-
138
- end_generic_block_tag
139
- : STMT_OPEN END STMT_CLOSE { result = close_scope! }
140
- ;
141
-
142
- generic_block
143
- : generic_block_tag document end_generic_block_tag { result = GenericBlockNode.new(val[0].first, val[2], val[0].last) }
144
- ;
145
-
146
- extends_statement
147
- : STMT_OPEN EXTENDS STRING STMT_CLOSE { result = val[2].value }
148
- | STMT_OPEN EXTENDS IDENTIFIER STMT_CLOSE { result = VariableNode.new(val[2].value) }
149
- ;
150
-
151
- document_component
152
- : TEXT_BLOCK { result = TextNode.new(val[0].value) }
153
- | inject_statement
154
- | if_block
155
- | for_block
156
- | generic_block
157
- | block_block
158
- ;
159
-
160
- document
161
- : document_component { push val[0] }
162
- | document document_component { push val[1] }
163
- | extends_statement { document.extends = val[0] }
164
- | document extends_statement { document.extends = val[1] }
165
- ;
166
-
167
- ---- header ----
168
- # racc_parser.rb : generated by racc
169
-
170
- ---- inner ----