ebnf 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,15 +46,18 @@ module EBNF
46
46
  #
47
47
  # @return [EBNF] self
48
48
  # @see http://en.wikipedia.org/wiki/LL_parser#Constructing_an_LL.281.29_parsing_table
49
- # @param [Symbol] start
49
+ # @param [Array<Symbol>] starts
50
50
  # Set of symbols which are start rules
51
- def first_follow(start)
51
+ def first_follow(*starts)
52
52
  # Add _eof to follow all start rules
53
- if @start = start
54
- start_rule = find_rule(@start)
55
- raise "No rule found for start symbol #{@start}" unless start_rule
56
- start_rule.add_follow([:_eof])
57
- start_rule.start = true
53
+ @starts = starts
54
+ if @start = starts.first
55
+ starts.each do |start|
56
+ start_rule = find_rule(start)
57
+ raise "No rule found for start symbol #{start}" unless start_rule
58
+ start_rule.add_follow([:_eof])
59
+ start_rule.start = true
60
+ end
58
61
  end
59
62
 
60
63
  # Comprehnsion rule, create shorter versions of all non-terminal sequences. This is necessary as the FF rules reference w', which is a comprehension.
@@ -204,10 +207,12 @@ module EBNF
204
207
  @branch = {}
205
208
  @already = []
206
209
  @agenda = []
207
- do_production(@start)
208
- while !@agenda.empty?
209
- x = @agenda.shift
210
- do_production(x)
210
+ @starts.each do |start|
211
+ do_production(start)
212
+ while !@agenda.empty?
213
+ x = @agenda.shift
214
+ do_production(x)
215
+ end
211
216
  end
212
217
 
213
218
  if !@errors.empty?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebnf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sxp
@@ -134,7 +134,13 @@ files:
134
134
  - etc/ebnf.ll1.sxp
135
135
  - etc/ebnf.rb
136
136
  - etc/ebnf.sxp
137
+ - etc/sparql.ebnf
138
+ - etc/sparql.html
139
+ - etc/sparql.ll1.sxp
140
+ - etc/sparql.rb
141
+ - etc/sparql.sxp
137
142
  - etc/turtle.ebnf
143
+ - etc/turtle.html
138
144
  - etc/turtle.ll1.sxp
139
145
  - etc/turtle.rb
140
146
  - etc/turtle.sxp
@@ -169,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
175
  version: '0'
170
176
  requirements: []
171
177
  rubyforge_project:
172
- rubygems_version: 2.4.5
178
+ rubygems_version: 2.4.3
173
179
  signing_key:
174
180
  specification_version: 4
175
181
  summary: EBNF parser and parser generator.