ebnf 0.3.8 → 0.3.9
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|