gd-racc 1.4.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/COPYING +515 -0
  4. data/ChangeLog +846 -0
  5. data/DEPENDS +4 -0
  6. data/Manifest.txt +100 -0
  7. data/README.ja.rdoc +96 -0
  8. data/README.rdoc +86 -0
  9. data/Rakefile +54 -0
  10. data/TODO +5 -0
  11. data/bin/racc +308 -0
  12. data/bin/racc2y +195 -0
  13. data/bin/y2racc +339 -0
  14. data/ext/racc/MANIFEST +4 -0
  15. data/ext/racc/cparse.c +828 -0
  16. data/ext/racc/depend +1 -0
  17. data/ext/racc/extconf.rb +7 -0
  18. data/fastcache/extconf.rb +2 -0
  19. data/fastcache/fastcache.c +185 -0
  20. data/lib/racc.rb +6 -0
  21. data/lib/racc/compat.rb +32 -0
  22. data/lib/racc/debugflags.rb +59 -0
  23. data/lib/racc/exception.rb +15 -0
  24. data/lib/racc/grammar.rb +1115 -0
  25. data/lib/racc/grammarfileparser.rb +559 -0
  26. data/lib/racc/info.rb +16 -0
  27. data/lib/racc/iset.rb +91 -0
  28. data/lib/racc/logfilegenerator.rb +211 -0
  29. data/lib/racc/parser-text.rb +631 -0
  30. data/lib/racc/parser.rb +626 -0
  31. data/lib/racc/parserfilegenerator.rb +512 -0
  32. data/lib/racc/pre-setup +13 -0
  33. data/lib/racc/sourcetext.rb +34 -0
  34. data/lib/racc/state.rb +971 -0
  35. data/lib/racc/statetransitiontable.rb +316 -0
  36. data/lib/racc/static.rb +5 -0
  37. data/misc/dist.sh +31 -0
  38. data/rdoc/en/NEWS.en.rdoc +282 -0
  39. data/rdoc/en/grammar.en.rdoc +230 -0
  40. data/rdoc/ja/NEWS.ja.rdoc +307 -0
  41. data/rdoc/ja/command.ja.html +94 -0
  42. data/rdoc/ja/debug.ja.rdoc +36 -0
  43. data/rdoc/ja/grammar.ja.rdoc +348 -0
  44. data/rdoc/ja/index.ja.html +10 -0
  45. data/rdoc/ja/parser.ja.rdoc +125 -0
  46. data/rdoc/ja/usage.ja.html +414 -0
  47. data/sample/array.y +67 -0
  48. data/sample/array2.y +59 -0
  49. data/sample/calc-ja.y +66 -0
  50. data/sample/calc.y +65 -0
  51. data/sample/conflict.y +15 -0
  52. data/sample/hash.y +60 -0
  53. data/sample/lalr.y +17 -0
  54. data/sample/lists.y +57 -0
  55. data/sample/syntax.y +46 -0
  56. data/sample/yyerr.y +46 -0
  57. data/setup.rb +1587 -0
  58. data/tasks/doc.rb +12 -0
  59. data/tasks/email.rb +55 -0
  60. data/test/assets/chk.y +126 -0
  61. data/test/assets/conf.y +16 -0
  62. data/test/assets/digraph.y +29 -0
  63. data/test/assets/echk.y +118 -0
  64. data/test/assets/err.y +60 -0
  65. data/test/assets/expect.y +7 -0
  66. data/test/assets/firstline.y +4 -0
  67. data/test/assets/ichk.y +102 -0
  68. data/test/assets/intp.y +546 -0
  69. data/test/assets/mailp.y +437 -0
  70. data/test/assets/newsyn.y +25 -0
  71. data/test/assets/noend.y +4 -0
  72. data/test/assets/nonass.y +41 -0
  73. data/test/assets/normal.y +27 -0
  74. data/test/assets/norule.y +4 -0
  75. data/test/assets/nullbug1.y +25 -0
  76. data/test/assets/nullbug2.y +15 -0
  77. data/test/assets/opt.y +123 -0
  78. data/test/assets/percent.y +35 -0
  79. data/test/assets/recv.y +97 -0
  80. data/test/assets/rrconf.y +14 -0
  81. data/test/assets/scan.y +72 -0
  82. data/test/assets/syntax.y +50 -0
  83. data/test/assets/unterm.y +5 -0
  84. data/test/assets/useless.y +12 -0
  85. data/test/assets/yyerr.y +46 -0
  86. data/test/bench.y +36 -0
  87. data/test/helper.rb +87 -0
  88. data/test/infini.y +8 -0
  89. data/test/scandata/brace +7 -0
  90. data/test/scandata/gvar +1 -0
  91. data/test/scandata/normal +4 -0
  92. data/test/scandata/percent +18 -0
  93. data/test/scandata/slash +10 -0
  94. data/test/src.intp +34 -0
  95. data/test/start.y +20 -0
  96. data/test/test_chk_y.rb +51 -0
  97. data/test/test_grammar_file_parser.rb +15 -0
  98. data/test/test_racc_command.rb +155 -0
  99. data/test/test_scan_y.rb +51 -0
  100. data/test/testscanner.rb +51 -0
  101. data/web/racc.en.rhtml +42 -0
  102. data/web/racc.ja.rhtml +51 -0
  103. metadata +212 -0
@@ -0,0 +1,51 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ module Racc
4
+ class TestScanY < TestCase
5
+ def setup
6
+ file = File.join(ASSET_DIR, 'scan.y')
7
+ @debug_flags = Racc::DebugFlags.parse_option_string('o')
8
+ parser = Racc::GrammarFileParser.new(@debug_flags)
9
+ @result = parser.parse(File.read(file), File.basename(file))
10
+ @states = Racc::States.new(@result.grammar).nfa
11
+ @states.dfa
12
+ end
13
+
14
+ def test_compile
15
+ generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
16
+
17
+ # it generates valid ruby
18
+ assert Module.new {
19
+ self.class_eval(generator.generate_parser)
20
+ }
21
+
22
+ grammar = @states.grammar
23
+
24
+ assert_equal 0, @states.n_srconflicts
25
+ assert_equal 0, @states.n_rrconflicts
26
+ assert_equal 0, grammar.n_useless_nonterminals
27
+ assert_equal 0, grammar.n_useless_rules
28
+ assert_nil grammar.n_expected_srconflicts
29
+ end
30
+
31
+ def test_compile_line_convert
32
+ params = @result.params.dup
33
+ params.convert_line_all = true
34
+
35
+ generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
36
+
37
+ # it generates valid ruby
38
+ assert Module.new {
39
+ self.class_eval(generator.generate_parser)
40
+ }
41
+
42
+ grammar = @states.grammar
43
+
44
+ assert_equal 0, @states.n_srconflicts
45
+ assert_equal 0, @states.n_rrconflicts
46
+ assert_equal 0, grammar.n_useless_nonterminals
47
+ assert_equal 0, grammar.n_useless_rules
48
+ assert_nil grammar.n_expected_srconflicts
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ #
2
+ # racc scanner tester
3
+ #
4
+
5
+ require 'racc/raccs'
6
+
7
+
8
+ class ScanError < StandardError; end
9
+
10
+ def testdata( dir, argv )
11
+ if argv.empty? then
12
+ Dir.glob( dir + '/*' ) -
13
+ Dir.glob( dir + '/*.swp' ) -
14
+ [ dir + '/CVS' ]
15
+ else
16
+ argv.collect {|i| dir + '/' + i }
17
+ end
18
+ end
19
+
20
+
21
+ if ARGV.delete '--print' then
22
+ $raccs_print_type = true
23
+ printonly = true
24
+ else
25
+ printonly = false
26
+ end
27
+
28
+ testdata( File.dirname($0) + '/scandata', ARGV ).each do |file|
29
+ $stderr.print File.basename(file) + ': '
30
+ begin
31
+ ok = File.read(file)
32
+ s = Racc::GrammarFileScanner.new( ok )
33
+ sym, (val, lineno) = s.scan
34
+ if printonly then
35
+ $stderr.puts
36
+ $stderr.puts val
37
+ next
38
+ end
39
+
40
+ val = '{' + val + "}\n"
41
+ sym == :ACTION or raise ScanError, 'is not action!'
42
+ val == ok or raise ScanError, "\n>>>\n#{ok}----\n#{val}<<<"
43
+
44
+ $stderr.puts 'ok'
45
+ rescue => err
46
+ $stderr.puts 'fail (' + err.type.to_s + ')'
47
+ $stderr.puts err.message
48
+ $stderr.puts err.backtrace
49
+ $stderr.puts
50
+ end
51
+ end
data/web/racc.en.rhtml ADDED
@@ -0,0 +1,42 @@
1
+ % require 'makefile'
2
+ % version = Makefile.get_parameter('Makefile', 'version')
3
+ <h1>Racc</h1>
4
+ <p>
5
+ $Id$
6
+ </p>
7
+
8
+ <table summary="package descriptor">
9
+ <tr><th>Version</th><td><%= version %></td></tr>
10
+ <tr><th>Type</th><td>Parser Generator</td></tr>
11
+ <tr><th>Format</th><td>Ruby script + Ruby extention</td></tr>
12
+ <tr><th>Requirement</th><td>ruby (&gt;=1.6)</td></tr>
13
+ <tr><th>License</th><td>LGPL</td></tr>
14
+ </table>
15
+ <p>
16
+ -- <a href="/archive/racc/racc-<%= version %>-all.tar.gz">Download (.tar.gz)</a>
17
+ -- <a href="/archive/racc/">Old Versions</a>
18
+ -- <a href="doc/">Online Manual</a>
19
+ --
20
+ </p>
21
+
22
+ <p>
23
+ Racc (Ruby yACC) is a LALR(1) parser generator for Ruby.
24
+ Version 1.4.x is stable release.
25
+ </p>
26
+ <p>
27
+ Parsers generated by Racc requires "Racc Runtime Module".
28
+ Ruby 1.8.x comes with this runtime.
29
+ If you want to run your parsers with ruby 1.6.x,
30
+ use "racc -E" command. For details, see <a href="doc/">online manual</a>.
31
+ </p>
32
+
33
+ <h2>Anonymous CVS</h2>
34
+ <p>
35
+ You can true latest version of Racc via anonymous CVS.
36
+ To check out working copy, type:
37
+ </p>
38
+ <pre>
39
+ $ cvs -d :pserver:anonymous@cvs.loveruby.net:/src login
40
+ Password: (Just hit [Enter])
41
+ $ cvs -d :pserver:anonymous@cvs.loveruby.net:/src co racc
42
+ </pre>
data/web/racc.ja.rhtml ADDED
@@ -0,0 +1,51 @@
1
+ % require 'makefile'
2
+ % version = Makefile.get_parameter('Makefile', 'version')
3
+ <h1>Racc</h1>
4
+ <p>
5
+ $Id$
6
+ </p>
7
+ <table summary="package descriptor">
8
+ <tr><th>�ǿ���</th><td><%= version %></td></tr>
9
+ <tr><th>����</th><td>parser generator</td></tr>
10
+ <tr><th>����</th><td>ruby script, ruby extention</td></tr>
11
+ <tr><th>ɬ�״Ķ�</th><td>ruby (&gt;=1.6)</td></tr>
12
+ <tr><th>���۾��</th><td>LGPL</td></tr>
13
+ </table>
14
+ <ul>
15
+ <li><a href="/archive/racc/racc-<%= version %>-all.tar.gz">�����������</a></li>
16
+ <li><a href="/archive/racc/">��С������ꥹ��</a></li>
17
+ <li><a href="doc/">����饤��ޥ˥奢��</a></li>
18
+ </ul>
19
+ </p>
20
+ <p>
21
+ Ruby �Ѥ� LALR(1) �ѡ��������ͥ졼���Ǥ���
22
+ ���������ѡ����Ϥ���ʤ�˹�®��ư��ޤ���
23
+ </p>
24
+ <p>
25
+ Racc �����������ѡ�����ư����˥�󥿥���⥸�塼�뤬ɬ�פǤ���
26
+ Ruby 1.8 �ˤϤ��Υ�󥿥��ब�ǽ餫��ź�դ���Ƥ���Τ�
27
+ ����ͤ��ʤ�������פǤ�����Ruby 1.6 �������оݤˤ���Ȥ���
28
+ racc -E �ǥѡ�������������ɬ�פ�����ޤ���
29
+ </p>
30
+ <p>
31
+ �ʤ���Racc 1.4.x �Υ�󥿥���� Ruby 1.8 ź�դ� Racc ��󥿥���ϡ�
32
+ �����������ɾ�Ǥ���̯�˰㤤������ޤ����������˸ߴ���������ޤ���
33
+ </p>
34
+
35
+ <h2>����</h2>
36
+ <p>
37
+ �⤦����Ū����ʬ�ϸϤ�Ƥ���Ϥ��Ǥ���
38
+ TODO �Ϥޤ������Ĥ�����ޤ�������������¾�ˤ��äƤ�Τ�
39
+ ��ʬ���礭���ѹ�����Ĥ��Ϥ���ޤ���
40
+ </p>
41
+
42
+ <h2>CVS ��ݥ��ȥ�</h2>
43
+ <p>
44
+ CVS ��Ȥ��� Racc �ο��κǿ��Ǥ�����Ǥ��ޤ���
45
+ ���ޥ�ɥ饤��Ǽ��Τ褦���ǤäƤ���������
46
+ </p>
47
+ <pre>
48
+ $ cvs -d :pserver:anonymous@cvs.loveruby.net:/src login
49
+ Password: (������Enter���Ǥ�)
50
+ $ cvs -d :pserver:anonymous@cvs.loveruby.net:/src co racc
51
+ </pre>
metadata ADDED
@@ -0,0 +1,212 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gd-racc
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.11
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Patterson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2014-01-07 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rdoc
16
+ prerelease: false
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: "4.0"
22
+ type: :development
23
+ version_requirements: *id001
24
+ - !ruby/object:Gem::Dependency
25
+ name: rake-compiler
26
+ prerelease: false
27
+ requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 0.4.1
32
+ type: :development
33
+ version_requirements: *id002
34
+ - !ruby/object:Gem::Dependency
35
+ name: minitest
36
+ prerelease: false
37
+ requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: "4.7"
42
+ type: :development
43
+ version_requirements: *id003
44
+ - !ruby/object:Gem::Dependency
45
+ name: hoe
46
+ prerelease: false
47
+ requirement: &id004 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: "3.7"
52
+ type: :development
53
+ version_requirements: *id004
54
+ description: |-
55
+ Racc is a LALR(1) parser generator.
56
+ It is written in Ruby itself, and generates Ruby program.
57
+
58
+ NOTE: Ruby 1.8.x comes with Racc runtime module. You
59
+ can run your parsers generated by racc 1.4.x out of the
60
+ box.
61
+ email:
62
+ - aaron@tenderlovemaking.com
63
+ executables:
64
+ - racc
65
+ - racc2y
66
+ - y2racc
67
+ extensions:
68
+ - ext/racc/extconf.rb
69
+ extra_rdoc_files:
70
+ - Manifest.txt
71
+ - README.ja.rdoc
72
+ - README.rdoc
73
+ - rdoc/en/NEWS.en.rdoc
74
+ - rdoc/en/grammar.en.rdoc
75
+ - rdoc/ja/NEWS.ja.rdoc
76
+ - rdoc/ja/debug.ja.rdoc
77
+ - rdoc/ja/grammar.ja.rdoc
78
+ - rdoc/ja/parser.ja.rdoc
79
+ files:
80
+ - COPYING
81
+ - ChangeLog
82
+ - DEPENDS
83
+ - Manifest.txt
84
+ - README.ja.rdoc
85
+ - README.rdoc
86
+ - Rakefile
87
+ - TODO
88
+ - bin/racc
89
+ - bin/racc2y
90
+ - bin/y2racc
91
+ - ext/racc/MANIFEST
92
+ - ext/racc/cparse.c
93
+ - ext/racc/depend
94
+ - ext/racc/extconf.rb
95
+ - fastcache/extconf.rb
96
+ - fastcache/fastcache.c
97
+ - lib/racc.rb
98
+ - lib/racc/compat.rb
99
+ - lib/racc/debugflags.rb
100
+ - lib/racc/exception.rb
101
+ - lib/racc/grammar.rb
102
+ - lib/racc/grammarfileparser.rb
103
+ - lib/racc/info.rb
104
+ - lib/racc/iset.rb
105
+ - lib/racc/logfilegenerator.rb
106
+ - lib/racc/parser-text.rb
107
+ - lib/racc/parser.rb
108
+ - lib/racc/parserfilegenerator.rb
109
+ - lib/racc/pre-setup
110
+ - lib/racc/sourcetext.rb
111
+ - lib/racc/state.rb
112
+ - lib/racc/statetransitiontable.rb
113
+ - lib/racc/static.rb
114
+ - misc/dist.sh
115
+ - rdoc/en/NEWS.en.rdoc
116
+ - rdoc/en/grammar.en.rdoc
117
+ - rdoc/ja/NEWS.ja.rdoc
118
+ - rdoc/ja/command.ja.html
119
+ - rdoc/ja/debug.ja.rdoc
120
+ - rdoc/ja/grammar.ja.rdoc
121
+ - rdoc/ja/index.ja.html
122
+ - rdoc/ja/parser.ja.rdoc
123
+ - rdoc/ja/usage.ja.html
124
+ - sample/array.y
125
+ - sample/array2.y
126
+ - sample/calc-ja.y
127
+ - sample/calc.y
128
+ - sample/conflict.y
129
+ - sample/hash.y
130
+ - sample/lalr.y
131
+ - sample/lists.y
132
+ - sample/syntax.y
133
+ - sample/yyerr.y
134
+ - setup.rb
135
+ - tasks/doc.rb
136
+ - tasks/email.rb
137
+ - test/assets/chk.y
138
+ - test/assets/conf.y
139
+ - test/assets/digraph.y
140
+ - test/assets/echk.y
141
+ - test/assets/err.y
142
+ - test/assets/expect.y
143
+ - test/assets/firstline.y
144
+ - test/assets/ichk.y
145
+ - test/assets/intp.y
146
+ - test/assets/mailp.y
147
+ - test/assets/newsyn.y
148
+ - test/assets/noend.y
149
+ - test/assets/nonass.y
150
+ - test/assets/normal.y
151
+ - test/assets/norule.y
152
+ - test/assets/nullbug1.y
153
+ - test/assets/nullbug2.y
154
+ - test/assets/opt.y
155
+ - test/assets/percent.y
156
+ - test/assets/recv.y
157
+ - test/assets/rrconf.y
158
+ - test/assets/scan.y
159
+ - test/assets/syntax.y
160
+ - test/assets/unterm.y
161
+ - test/assets/useless.y
162
+ - test/assets/yyerr.y
163
+ - test/bench.y
164
+ - test/helper.rb
165
+ - test/infini.y
166
+ - test/scandata/brace
167
+ - test/scandata/gvar
168
+ - test/scandata/normal
169
+ - test/scandata/percent
170
+ - test/scandata/slash
171
+ - test/src.intp
172
+ - test/start.y
173
+ - test/test_chk_y.rb
174
+ - test/test_grammar_file_parser.rb
175
+ - test/test_racc_command.rb
176
+ - test/test_scan_y.rb
177
+ - test/testscanner.rb
178
+ - web/racc.en.rhtml
179
+ - web/racc.ja.rhtml
180
+ - .gemtest
181
+ homepage: http://i.loveruby.net/en/projects/racc/
182
+ licenses:
183
+ - MIT
184
+ metadata: {}
185
+
186
+ post_install_message:
187
+ rdoc_options:
188
+ - --main
189
+ - README.rdoc
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - &id005
195
+ - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: "0"
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - *id005
201
+ requirements: []
202
+
203
+ rubyforge_project: gd-racc
204
+ rubygems_version: 2.1.10
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Racc is a LALR(1) parser generator
208
+ test_files:
209
+ - test/test_chk_y.rb
210
+ - test/test_grammar_file_parser.rb
211
+ - test/test_racc_command.rb
212
+ - test/test_scan_y.rb