racc 1.4.13-java → 1.4.14-java
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.
- checksums.yaml +4 -4
- data/Manifest.txt +1 -0
- data/ext/racc/com/headius/racc/Cparse.java +1 -1
- data/ext/racc/cparse.c +1 -1
- data/lib/racc/cparse-jruby.jar +0 -0
- data/lib/racc/info.rb +1 -1
- data/lib/racc/parser-text.rb +6 -4
- data/lib/racc/parser.rb +6 -4
- data/test/assets/error_recovery.y +35 -0
- data/test/helper.rb +1 -0
- data/test/test_racc_command.rb +9 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 681c95b1332a75dbfee93167ec7bf86c0c517b1f
|
4
|
+
data.tar.gz: 0dab7c12b7c6c1c8c5e2fd79a0637ce96dd1542a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7516f3e60e718065087662ee30e66c269683bc64e0f4be03b78609c60b7a21bdeecaccc39a3ec0d205e6de6e273d780abb0b2b419d0773c0e065c7c71b93e64c
|
7
|
+
data.tar.gz: 830e23296524399742599fb6a93f4ad51f551167659b35c08f6727d1243dcd77a5a792d93bff88fae6b490b26afa5a5482cf7f93472a62cd64b0375f67a10a63
|
data/Manifest.txt
CHANGED
@@ -30,7 +30,7 @@ import org.jruby.runtime.builtin.IRubyObject;
|
|
30
30
|
import org.jruby.runtime.load.Library;
|
31
31
|
|
32
32
|
public class Cparse implements Library {
|
33
|
-
public static final String RACC_VERSION = "1.4.
|
33
|
+
public static final String RACC_VERSION = "1.4.14"; // TODO: parse from Cparse.c
|
34
34
|
|
35
35
|
public enum TokenType {
|
36
36
|
DEFAULT(-1),
|
data/ext/racc/cparse.c
CHANGED
data/lib/racc/cparse-jruby.jar
CHANGED
Binary file
|
data/lib/racc/info.rb
CHANGED
data/lib/racc/parser-text.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Racc
|
2
2
|
PARSER_TEXT = <<'__end_of_file__'
|
3
3
|
#
|
4
|
-
# $Id:
|
4
|
+
# $Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $
|
5
5
|
#
|
6
6
|
# Copyright (c) 1999-2006 Minero Aoki
|
7
7
|
#
|
@@ -189,10 +189,10 @@ module Racc
|
|
189
189
|
class Parser
|
190
190
|
|
191
191
|
Racc_Runtime_Version = ::Racc::VERSION
|
192
|
-
Racc_Runtime_Revision = '$Id:
|
192
|
+
Racc_Runtime_Revision = '$Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $'
|
193
193
|
|
194
194
|
Racc_Runtime_Core_Version_R = ::Racc::VERSION
|
195
|
-
Racc_Runtime_Core_Revision_R = '$Id:
|
195
|
+
Racc_Runtime_Core_Revision_R = '$Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $'.split[1]
|
196
196
|
begin
|
197
197
|
if Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
198
198
|
require 'racc/cparse-jruby.jar'
|
@@ -398,7 +398,7 @@ puts $!.backtrace
|
|
398
398
|
# shift
|
399
399
|
#
|
400
400
|
if @racc_error_status > 0
|
401
|
-
@racc_error_status -= 1 unless @racc_t
|
401
|
+
@racc_error_status -= 1 unless @racc_t <= 1 # error token or EOF
|
402
402
|
end
|
403
403
|
@racc_vstack.push @racc_val
|
404
404
|
@racc_state.push act
|
@@ -447,6 +447,8 @@ puts $!.backtrace
|
|
447
447
|
end
|
448
448
|
when 3
|
449
449
|
if @racc_t == 0 # is $
|
450
|
+
# We're at EOF, and another error occurred immediately after
|
451
|
+
# attempting auto-recovery
|
450
452
|
throw :racc_end_parse, nil
|
451
453
|
end
|
452
454
|
@racc_read_next = true
|
data/lib/racc/parser.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# $Id:
|
2
|
+
# $Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $
|
3
3
|
#
|
4
4
|
# Copyright (c) 1999-2006 Minero Aoki
|
5
5
|
#
|
@@ -187,10 +187,10 @@ module Racc
|
|
187
187
|
class Parser
|
188
188
|
|
189
189
|
Racc_Runtime_Version = ::Racc::VERSION
|
190
|
-
Racc_Runtime_Revision = '$Id:
|
190
|
+
Racc_Runtime_Revision = '$Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $'
|
191
191
|
|
192
192
|
Racc_Runtime_Core_Version_R = ::Racc::VERSION
|
193
|
-
Racc_Runtime_Core_Revision_R = '$Id:
|
193
|
+
Racc_Runtime_Core_Revision_R = '$Id: 2bd697d1146b280d8d3878e21e556ef769484a37 $'.split[1]
|
194
194
|
begin
|
195
195
|
if Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
196
196
|
require 'racc/cparse-jruby.jar'
|
@@ -396,7 +396,7 @@ puts $!.backtrace
|
|
396
396
|
# shift
|
397
397
|
#
|
398
398
|
if @racc_error_status > 0
|
399
|
-
@racc_error_status -= 1 unless @racc_t
|
399
|
+
@racc_error_status -= 1 unless @racc_t <= 1 # error token or EOF
|
400
400
|
end
|
401
401
|
@racc_vstack.push @racc_val
|
402
402
|
@racc_state.push act
|
@@ -445,6 +445,8 @@ puts $!.backtrace
|
|
445
445
|
end
|
446
446
|
when 3
|
447
447
|
if @racc_t == 0 # is $
|
448
|
+
# We're at EOF, and another error occurred immediately after
|
449
|
+
# attempting auto-recovery
|
448
450
|
throw :racc_end_parse, nil
|
449
451
|
end
|
450
452
|
@racc_read_next = true
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Regression test case for the bug discussed here:
|
2
|
+
# https://github.com/whitequark/parser/issues/93
|
3
|
+
# In short, a Racc-generated parser could go into an infinite loop when
|
4
|
+
# attempting error recovery at EOF
|
5
|
+
|
6
|
+
class InfiniteLoop
|
7
|
+
|
8
|
+
rule
|
9
|
+
|
10
|
+
stmts: stmt
|
11
|
+
| error stmt
|
12
|
+
|
13
|
+
stmt: '%' stmt
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
---- inner
|
18
|
+
|
19
|
+
def parse
|
20
|
+
@errors = []
|
21
|
+
do_parse
|
22
|
+
end
|
23
|
+
|
24
|
+
def next_token
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def on_error(error_token, error_value, value_stack)
|
29
|
+
# oh my, an error
|
30
|
+
@errors << [error_token, error_value]
|
31
|
+
end
|
32
|
+
|
33
|
+
---- footer
|
34
|
+
|
35
|
+
InfiniteLoop.new.parse
|
data/test/helper.rb
CHANGED
data/test/test_racc_command.rb
CHANGED
@@ -151,5 +151,14 @@ module Racc
|
|
151
151
|
assert_compile 'unterm.y'
|
152
152
|
}
|
153
153
|
end
|
154
|
+
|
155
|
+
# Regression test for a problem where error recovery at EOF would cause
|
156
|
+
# a Racc-generated parser to go into an infinite loop (on some grammars)
|
157
|
+
def test_error_recovery_y
|
158
|
+
assert_compile 'error_recovery.y'
|
159
|
+
Timeout.timeout(10) do
|
160
|
+
assert_exec 'error_recovery.y'
|
161
|
+
end
|
162
|
+
end
|
154
163
|
end
|
155
164
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: racc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.14
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- test/assets/digraph.y
|
157
157
|
- test/assets/echk.y
|
158
158
|
- test/assets/err.y
|
159
|
+
- test/assets/error_recovery.y
|
159
160
|
- test/assets/expect.y
|
160
161
|
- test/assets/firstline.y
|
161
162
|
- test/assets/ichk.y
|