rley 0.0.09 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjMyOTZiYzU4MjllMDU0NjlmYTZjZWIxNWY1Y2U0YTlmYjQzOWQxMg==
4
+ MmIxMmNjMmEwZDYwMTUxMzFjY2ZhMjgzNzg4OWEwNTIzMDAxNWMxOQ==
5
5
  data.tar.gz: !binary |-
6
- NzlhZDNkZGIwZTMzMzJhZmQyYWVlODE5MzUzODQ4NWNmMzFiY2M2ZQ==
6
+ YTU0MDBmMzliOWE4ZTgyZjMzMGJlNzQxNzE4MDY4MWM5NTc2MGI2ZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MjU2MjE0ZGQwZDE2MjU1OGIzYzRkZjc4ZDZmNzI4ODQ3YmY2NGQ4MWY4YWFk
10
- NTQzZGY0YjNhMjUwNWUzOWYwMjM0ZTk2ODRlMjQ3M2RhNWViMWU4ZGEwNjEx
11
- ODQzOTk5MzM1NzE3MTY3ZWRiOGNmZWIwOWY2YTE4MzVkM2ViOGU=
9
+ NTkyOWUzZDIzYWU3OWM5YmYzN2MwNzkzZGMwNThjYTM4YWIzMzdkMjI0ZDc0
10
+ ZjBhZDc5ZWFjYTAyYzNhOTIxZTU2YTM0Nzg2MjE0M2E1NWNjMzA0MjM4ZGJh
11
+ NjIyNGE3MjVhMDY3MWEyZjhiZjZhOWEyYzA3MTBiMmRkM2E2ZmI=
12
12
  data.tar.gz: !binary |-
13
- YzczYTY4Y2FlMWUyZWNhMjEyYjhhM2RkMzk0YzNmNjQ0MTE4NGZiMjQ2MDY2
14
- Y2IzOGI1YjNjNzgyZTNlMmMyNzAyYjc3MDQzYjY2YzkzZmVjZDE5OThkZTc5
15
- ZTMzMGVmNGUwYjk0Y2QxN2E3OGJjNGI0MWE0ZDRlZTRkYmY2NGM=
13
+ YzRkY2QzZjRiMDI1ODgwYmE1N2VmYWJjNzc0ZmM1MDM0NjgzZGRmYmFlNjYy
14
+ ZTM5MDU3ZTIyMTE4NGY3OTUzNDEyMzg4NzQ1NzBkMDc4Yjc3YmM4M2EwMzQ4
15
+ YzJlZGUyZDJjZjNjYjZmNDU3MTE4NmNjNWNhOTAzZjBhZjM1ZjY=
data/CHANGELOG.md CHANGED
@@ -1,8 +1,10 @@
1
+ ### 0.0.10 / 2014-11-15
2
+ * [NEW] New folder `examples` added with two examples of grammar creation
3
+
1
4
  ### 0.0.09 / 2014-11-15
2
5
  * [NEW] New class `GrammarBuilder` added and tested, its purpose is
3
6
  to simplify the construction of grammars.
4
7
 
5
-
6
8
  ### 0.0.08 / 2014-11-14
7
9
  * [CHANGE] `EarleyParser#parse` method: Initial API documentation.
8
10
  * [INFO] This version was committed to force Travis CI to execute a complete build
@@ -0,0 +1,35 @@
1
+ # Purpose: to demonstrate how to build a very simple grammar
2
+ require 'rley' # Load the gem
3
+
4
+ # Sample grammar for a very limited English language
5
+ # based on the language L0 from Jurafsky & Martin
6
+
7
+ # Let's create the grammar step-by-step with the grammar builder:
8
+ builder = Rley::Syntax::GrammarBuilder.new
9
+
10
+ # Enumerate the POS Part-Of-Speech...
11
+ builder.add_terminals('Noun', 'Verb', 'Adjective')
12
+ builder.add_terminals('Pronoun', 'Proper-Noun', 'Determiner')
13
+ builder.add_terminals('Preposition', 'Conjunction')
14
+
15
+ # Enumerate the non-terminal symbols...
16
+ builder.add_non_terminals('S', 'NP', 'Nominal', 'VP', 'PP')
17
+
18
+ # Now the production rules...
19
+ builder.add_production('S'=> ['NP', 'VP']) # e.g. I + want a morning flight
20
+ builder.add_production('NP' => 'Pronoun') # e.g. I
21
+ builder.add_production('NP' => 'Proper-Noun') # e.g. Los Angeles
22
+ builder.add_production('NP' => ['Det', 'Nominal']) # e.g. a + flight
23
+ builder.add_production('Nominal' => %w(Nominal Noun)) # morning + flight
24
+ builder.add_production('Nominal' => 'Noun') # e.g. flights
25
+ builder.add_production('VP' => 'Verb') # e.g. do
26
+ builder.add_production('VP' => ['Verb', 'NP']) # e.g. want + a flight
27
+ builder.add_production('VP' => ['Verb', 'NP', 'PP'])
28
+ builder.add_production('VP' => ['Verb', 'PP']) # leaving + on Thursday
29
+ builder.add_production('PP' => ['Preposition', 'NP']) # from + Los Angeles
30
+
31
+ # And now we 're ready to build the grammar...
32
+ grammar_L0 = builder.grammar
33
+
34
+ # Prove that it is a grammar
35
+ puts grammar_L0.class.name
@@ -0,0 +1,27 @@
1
+ # Purpose: to demonstrate how to build a very simple grammar
2
+ require 'rley' # Load the gem
3
+
4
+ # A very simple language
5
+ # It recognizes/generates strings like 'b', 'abc', 'aabcc', 'aaabccc',...
6
+ # (based on example in N. Wirth's book "Compiler Construction", p. 6)
7
+ # S ::= A.
8
+ # A ::= "a" A "c".
9
+ # A ::= "b".
10
+
11
+
12
+ # Let's create the grammar step-by-step with the grammar builder:
13
+ builder = Rley::Syntax::GrammarBuilder.new
14
+ builder.add_terminals('a', 'b', 'c')
15
+ builder.add_non_terminals('S', 'A')
16
+ builder.add_production('S' => 'A')
17
+ builder.add_production('A' => %w(a A c))
18
+ builder.add_production('A' => 'b')
19
+
20
+ # And now build the grammar...
21
+ grammar_abc = builder.grammar
22
+
23
+ # Prove that it is a grammar
24
+ puts grammar_abc.class.name
25
+
26
+ # End of file
27
+
data/lib/rley.rb ADDED
@@ -0,0 +1,9 @@
1
+ # File: rley.rb
2
+ # This file acts as a jumping-off point for loading dependencies expected
3
+ # for a Rley client.
4
+
5
+ require_relative './rley/constants'
6
+ require_relative './rley/syntax/grammar_builder'
7
+ require_relative './rley/parser/earley_parser'
8
+
9
+ # End of file
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Rley # Module used as a namespace
5
5
  # The version number of the gem.
6
- Version = '0.0.09'
6
+ Version = '0.0.10'
7
7
 
8
8
  # Brief description of the gem.
9
9
  Description = "Ruby implementation of the Earley's parsing algorithm"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.09
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
@@ -85,6 +85,9 @@ files:
85
85
  - CHANGELOG.md
86
86
  - LICENSE.txt
87
87
  - README.md
88
+ - examples/grammars/grammar_abc.rb
89
+ - examples/grammars/grammar_L0.rb
90
+ - lib/rley.rb
88
91
  - lib/rley/constants.rb
89
92
  - lib/rley/parser/chart.rb
90
93
  - lib/rley/parser/dotted_item.rb