falafel 0.0.0.1 → 0.0.0.2

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cfg.rb +44 -0
  3. data/lib/falafel.rb +6 -0
  4. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 455d0fee114300f1c5a7f5f68b128412704f6bba8782efc62db6f6d151a1bfdd
4
- data.tar.gz: b96c52e7fd535cc95e140722e522c959bb860c78ab0b93030240c7fa148995a6
3
+ metadata.gz: 821f2ac8523791cce7c4632e69d67a4bee8f208b7e7cf8f1e1e88dbd82e0bc1f
4
+ data.tar.gz: b92c2f37f9b2585a5aff6f87307378dbdeb6c452db5ff6dd738cd836f57b4a2a
5
5
  SHA512:
6
- metadata.gz: 44076c2c3d1ab9cb52a43493b6e17f63944d7dc2c7ef6842395befec2f27513103e0592a671ff5352ab680381d9e1323ea498cb332926f924ec1a4236ac9c051
7
- data.tar.gz: bfe088d01ace7256fa535ac8c1e2d041972203535a98ffbce6e9785a7e28bb2aed332aa2239a0f43929d8c4aecb69a422bd5273580e87e373611db122134f403
6
+ metadata.gz: a40d294e74954d85c19abe0bcd80c222390b7f3703c6a87d471d8fb30ed89aadd0ab5297f7e02c4521c282e6bd55e31e70cee68482a0d36c2b0572c477e05263
7
+ data.tar.gz: 1889ce0c9deb9585907fc663e20d73895051fd054a9289b591f7990a3c3494579ad5fbfce79f9e92153bb4882ca621f25e063e8546346015f15660614902a888
data/lib/cfg.rb ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Samll CFG impletation
4
+ # Generate words and check if words are the @lang
5
+ class CFG
6
+ attr_accessor :alphabet, :vars, :start_var, :rules
7
+ attr_reader :rnd_words
8
+ attr_writer :lang
9
+
10
+ def initialize(alphabet, vars, start_var, rules)
11
+ @alphabet = alphabet
12
+ @vars = vars
13
+ @start_var = start_var
14
+ @rules = _rules rules
15
+ @rnd_words = []
16
+ end
17
+
18
+ def generate_word
19
+ word = _expand @start_var
20
+
21
+ return unless @lang.call word
22
+
23
+ @rnd_words << word unless @rnd_words.include? word
24
+ end
25
+
26
+ def dyck?(word)
27
+ ->(w) { (w.count('a') - w.count('b')).zero? }.call word
28
+ end
29
+
30
+ private
31
+
32
+ def _expand(symbol)
33
+ production = @rules[symbol]
34
+
35
+ return symbol if production.nil?
36
+
37
+ rhs = production.sample
38
+ rhs.map { |s| _expand(s) }.join
39
+ end
40
+
41
+ def _rules(rules)
42
+ rules.each_value { |k| k.each_with_index { |item, index| k[index] = item[0].is_a?(String) ? item[0].split('') : item } }
43
+ end
44
+ end
data/lib/falafel.rb CHANGED
@@ -106,6 +106,12 @@ class Falafel
106
106
  Pump.new lang: nil, word: nil, n: 2, k: 20
107
107
  end
108
108
 
109
+ def cfg(alphabet, vars_set, start_var, rules)
110
+ require_relative 'cfg'
111
+
112
+ CFG.new alphabet, vars_set, start_var, rules
113
+ end
114
+
109
115
  private
110
116
 
111
117
  # alle bilder eine menge m unter r
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: falafel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.1
4
+ version: 0.0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abed A
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-05 00:00:00.000000000 Z
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -16,6 +16,7 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/cfg.rb
19
20
  - lib/dfa.rb
20
21
  - lib/falafel.rb
21
22
  - lib/pump.rb
@@ -31,7 +32,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: 2.6.0
35
+ version: 2.7.0
35
36
  required_rubygems_version: !ruby/object:Gem::Requirement
36
37
  requirements:
37
38
  - - ">="