ebnf 0.3.8 → 0.3.9
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/README.md +6 -1
- data/VERSION +1 -1
- data/lib/ebnf/writer.rb +10 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0a5b5d879cad3c68665f4cc360299ec06934f91
|
4
|
+
data.tar.gz: 3310fb9e5dc956f6d51cde5d6a4cc816ef78fc4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4f1450e2035d5f0457b98a00d7e89b4a397f6899d16fa0bcfa78c4cb88d287eaff5e4ef5435c2a06612b3d972b544770300ce1608f743215cde3aee0b275385
|
7
|
+
data.tar.gz: a44d8ed56897dcb5eb224c7dba62d5876e50e979eb0d95459fa7cd2714626d4414f11d27b1661f3fefe755766362ba7048ee3bb4256b4bc888d3fe6703e7b44c
|
data/README.md
CHANGED
@@ -36,6 +36,10 @@ Generate Terminal, [First/Follow and Branch][] tables as Ruby for parsing gramma
|
|
36
36
|
|
37
37
|
ebnf.to_ruby
|
38
38
|
|
39
|
+
Generate formatted grammar using HTML (requires [Haml][Haml] gem)
|
40
|
+
|
41
|
+
ebnf.to_html
|
42
|
+
|
39
43
|
### Creating terminal definitions and parser rules to parse generated grammars
|
40
44
|
|
41
45
|
The parser is initialized to callbacks invoked on entry and exit
|
@@ -80,6 +84,7 @@ to each `terminal` and `production`. A trivial parser loop can be described as f
|
|
80
84
|
raise RDF::ReaderError, e.message if validate?
|
81
85
|
end
|
82
86
|
|
87
|
+
|
83
88
|
## EBNF Grammar
|
84
89
|
The [EBNF][] variant used here is based on [W3C](http://w3.org/) [EBNF][] (see {file:etc/ebnf.ebnf EBNF grammar}) as defined in the
|
85
90
|
[XML 1.0 recommendation](http://www.w3.org/TR/REC-xml/), with minor extensions.
|
@@ -102,7 +107,6 @@ and [First Follow Notation-3 rules](http://www.w3.org/2000/10/swap/grammar/first
|
|
102
107
|
Full documentation available on [Rubydoc.info][EBNF doc].
|
103
108
|
|
104
109
|
## Future Work
|
105
|
-
* Generate HTML output of parser results.
|
106
110
|
* Better LL(1) parser tests
|
107
111
|
* Either generate [Packrat parser][Packrat] for a [Parsing Regular Expression Grammar][PEG], or integrate with [Treetop][] or similar.
|
108
112
|
|
@@ -144,3 +148,4 @@ A copy of the [Turtle EBNF][] and derived parser files are included in the repos
|
|
144
148
|
[Packrat]: http://pdos.csail.mit.edu/~baford/packrat/thesis/
|
145
149
|
[PEG]: http://en.wikipedia.org/wiki/Parsing_expression_grammar
|
146
150
|
[Treetop]: http://rubygems.org/gems/treetop
|
151
|
+
[Haml]: http://rubygems.org/gems/haml
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.9
|
data/lib/ebnf/writer.rb
CHANGED
@@ -76,13 +76,17 @@ module EBNF
|
|
76
76
|
|
77
77
|
if @options[:html]
|
78
78
|
# Output as formatted HTML
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
begin
|
80
|
+
require 'haml'
|
81
|
+
html = Haml::Engine.new(HAML_DESC).render(self, rules: rules) do |rule|
|
82
|
+
formatted_expr = format(rule.expr)
|
83
|
+
formatted_expr.length > rhs_length ? format(rule.expr, "\n") : formatted_expr
|
84
|
+
end
|
85
|
+
out.write html
|
86
|
+
return
|
87
|
+
rescue LoadError
|
88
|
+
$stderr.puts "Generating HTML requires haml gem to be loaded"
|
83
89
|
end
|
84
|
-
out.write html
|
85
|
-
return
|
86
90
|
end
|
87
91
|
|
88
92
|
# Format each rule, considering the available rhs size
|
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.
|
4
|
+
version: 0.3.9
|
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-
|
11
|
+
date: 2015-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sxp
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '4.0'
|
54
|
-
type: :
|
54
|
+
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|