ebnf 0.3.6 → 0.3.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ff1ded5e44c9136111320f969eaa0825f216155
4
- data.tar.gz: f6150889a8250eaecba0123f5589eeb9b0b59959
3
+ metadata.gz: 83c6af2a26c41f53c79e1bb289e35b261eb1eb1a
4
+ data.tar.gz: 8dabfd9d6025e868446389aa584bfd5c7a94f43a
5
5
  SHA512:
6
- metadata.gz: 60b7be1a7d0aa55e7ce5af2f4569277d78a99741e3d474aeb6957dc5b5bd6983b6a1eec9dba3472e99706fc16f4d1ae1b32eecf9bccfd48739e285198401eb5c
7
- data.tar.gz: 68bf7ea88a84cb418e6656e19bee3761ee214c0b0a68a586c557077e7867b4b86af9a55ff9534a52e8f2dfd32aadf9f4dc684e2ef1383038a7ee07f51761dc65
6
+ metadata.gz: 4878eb173f39de9e69acdbcc6547d0ce3c022cdad2fd4fa944029f93dde53749e874707fee4aa9aa66c70089d7270a5148bcde3386dda14bc61338fe70172293
7
+ data.tar.gz: 47cf8d873b75110c9cdd051c7178fe3bc287272074ea0f30ff39d3c6981e369d31dce1bbdadfcb1b718b5a5e51dd515449771b3d93ff0b30fc28cf090c74b8a4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.6
1
+ 0.3.7
data/bin/ebnf CHANGED
@@ -11,30 +11,6 @@ require 'rubygems'
11
11
  require 'getoptlong'
12
12
  require 'ebnf'
13
13
 
14
- def dump_tables(grammarFile, ebnf, output, options)
15
- ebnf.build_tables
16
- unless output == STDOUT
17
- output.puts "# This file is automatically generated by #{__FILE__}"
18
- output.puts "# BRANCH derived from #{grammarFile}"
19
- unless ebnf.errors.empty?
20
- output.puts "# Note, tables completed with errors, may need to be resolved manually:"
21
- #output.puts "# #{pp.conflicts.map{|c| c.join("\n# ")}.join("\n# ")}"
22
- end
23
- output.puts "module #{options.fetch(:mod_name, 'Branch')}"
24
- output.puts " START = #{ebnf.start.inspect}"
25
- output.puts
26
- end
27
- ebnf.outputTable(output, 'BRANCH', ebnf.branch, 1)
28
- ebnf.outputTable(output, 'TERMINALS', ebnf.terminals, 1)
29
- ebnf.outputTable(output, 'FIRST', ebnf.first, 1)
30
- ebnf.outputTable(output, 'FOLLOW', ebnf.follow, 1)
31
- ebnf.outputTable(output, 'PASS', [ebnf.pass], 1) if ebnf.pass
32
- unless output == STDOUT
33
- output.puts "end"
34
- end
35
- ""
36
- end
37
-
38
14
  options = {
39
15
  :output_format => :sxp,
40
16
  :prefix => "ttl",
@@ -46,14 +22,14 @@ out = STDOUT
46
22
  OPT_ARGS = [
47
23
  ["--dbg", GetoptLong::NO_ARGUMENT, "Turn on debugging output"],
48
24
  ["--bnf", GetoptLong::NO_ARGUMENT, "Transform EBNF to BNF"],
49
- ["--evaluate","-e", GetoptLong::REQUIRED_ARGUMENT,"Evaluate argument as a JSON-LD document"],
25
+ ["--evaluate","-e", GetoptLong::REQUIRED_ARGUMENT,"Evaluate argument as an EBNF document"],
50
26
  ["--ll1", GetoptLong::REQUIRED_ARGUMENT,"Generate First/Follow rules, argument is start symbol"],
51
27
  ["--format", "-f", GetoptLong::REQUIRED_ARGUMENT,"Specify output format one of ebnf, html, ttl, sxp, or rb"],
52
28
  ["--input-format", GetoptLong::REQUIRED_ARGUMENT,"Specify input format one of ebnf or sxp"],
53
29
  ["--mod-name", GetoptLong::REQUIRED_ARGUMENT,"Module name used when creating ruby tables"],
54
30
  ["--output", "-o", GetoptLong::REQUIRED_ARGUMENT,"Output to the specified file path"],
55
31
  ["--prefix", "-p", GetoptLong::REQUIRED_ARGUMENT,"Prefix to use when generating Turtle"],
56
- ["--progress", "-v", GetoptLong::NO_ARGUMENT, "Detail on execution"],
32
+ ["--progress", "-v", GetoptLong::NO_ARGUMENT, "Detail on execution"],
57
33
  ["--namespace", "-n", GetoptLong::REQUIRED_ARGUMENT,"Namespace to use when generating Turtle"],
58
34
  ["--help", "-?", GetoptLong::NO_ARGUMENT, "This message"]
59
35
  ]
@@ -108,7 +84,7 @@ when :ebnf then ebnf.to_s
108
84
  when :html then ebnf.to_html
109
85
  when :sxp then ebnf.to_sxp
110
86
  when :ttl then ebnf.to_ttl(options[:prefix], options[:namespace])
111
- when :rb then dump_tables(ARGV[0], ebnf, out, options)
87
+ when :rb then ebnf.to_ruby(out, options.merge(grammarFile: ARGV[0]))
112
88
  else ebnf.ast.inspect
113
89
  end
114
90
 
@@ -1,4 +1,4 @@
1
- # This file is automatically generated by bin/ebnf
1
+ # This file is automatically generated by /Users/gregg/Projects/ebnf/lib/ebnf/base.rb
2
2
  # BRANCH derived from etc/turtle.ebnf
3
3
  module Branch
4
4
  START = :turtleDoc
@@ -190,6 +190,35 @@ module EBNF
190
190
  Writer.html(*ast)
191
191
  end
192
192
 
193
+ ##
194
+ # Output Ruby parser files
195
+ #
196
+ # @param [IO, StringIO] output
197
+ # @param [Hash{Symbol => Object}] options
198
+ # @option options [String] :grammarFile
199
+ def to_ruby(output = STDOUT, options = {})
200
+ self.build_tables
201
+ unless output == STDOUT
202
+ output.puts "# This file is automatically generated by #{__FILE__}"
203
+ output.puts "# BRANCH derived from #{options[:grammarFile]}" if options[:grammarFile]
204
+ unless self.errors.empty?
205
+ output.puts "# Note, tables completed with errors, may need to be resolved manually:"
206
+ #output.puts "# #{pp.conflicts.map{|c| c.join("\n# ")}.join("\n# ")}"
207
+ end
208
+ output.puts "module #{options.fetch(:mod_name, 'Branch')}"
209
+ output.puts " START = #{self.start.inspect}"
210
+ output.puts
211
+ end
212
+ self.outputTable(output, 'BRANCH', self.branch, 1)
213
+ self.outputTable(output, 'TERMINALS', self.terminals, 1)
214
+ self.outputTable(output, 'FIRST', self.first, 1)
215
+ self.outputTable(output, 'FOLLOW', self.follow, 1)
216
+ self.outputTable(output, 'PASS', [self.pass], 1) if self.pass
217
+ unless output == STDOUT
218
+ output.puts "end"
219
+ end
220
+ end
221
+
193
222
  def dup
194
223
  new_obj = super
195
224
  new_obj.instance_variable_set(:@ast, @ast.dup)
@@ -263,7 +263,9 @@ module EBNF::LL1
263
263
  #STDERR.puts "match[#{term.type}] #{scanner.rest[0..100].inspect} against #{term.regexp.inspect}" #if term.type == :STRING_LITERAL_SINGLE_QUOTE
264
264
  if matched = scanner.scan(term.regexp)
265
265
  #STDERR.puts " matched #{term.type.inspect}: #{matched.inspect}"
266
- return token(term.type, term.canonicalize(matched))
266
+ tok = token(term.type, term.canonicalize(matched))
267
+ @lineno += matched.count("\n")
268
+ return tok
267
269
  end
268
270
  end
269
271
  nil
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.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-23 00:00:00.000000000 Z
11
+ date: 2015-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sxp
@@ -64,14 +64,28 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '2.14'
67
+ version: '3.0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '2.14'
74
+ version: '3.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec-its
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: yard
77
91
  requirement: !ruby/object:Gem::Requirement
@@ -90,16 +104,16 @@ dependencies:
90
104
  name: rake
91
105
  requirement: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - ">="
107
+ - - "~>"
94
108
  - !ruby/object:Gem::Version
95
- version: '0'
109
+ version: '10.4'
96
110
  type: :development
97
111
  prerelease: false
98
112
  version_requirements: !ruby/object:Gem::Requirement
99
113
  requirements:
100
- - - ">="
114
+ - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: '0'
116
+ version: '10.4'
103
117
  description: EBNF is a Ruby parser for W3C EBNF and a parser generator for compliant
104
118
  LL(1) grammars.
105
119
  email: public-rdf-ruby@w3.org
@@ -147,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
161
  requirements:
148
162
  - - ">="
149
163
  - !ruby/object:Gem::Version
150
- version: 1.9.2
164
+ version: 1.9.3
151
165
  required_rubygems_version: !ruby/object:Gem::Requirement
152
166
  requirements:
153
167
  - - ">="
@@ -155,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
169
  version: '0'
156
170
  requirements: []
157
171
  rubyforge_project:
158
- rubygems_version: 2.2.2
172
+ rubygems_version: 2.4.5
159
173
  signing_key:
160
174
  specification_version: 4
161
175
  summary: EBNF parser and parser generator.