rley 0.8.08 → 0.8.09
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +23 -2
- data/CHANGELOG.md +9 -2
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/rley/constants.rb +1 -1
- data/lib/rley/rgn/ast_node.rb +1 -1
- data/lib/rley/rgn/parser.rb +3 -3
- data/lib/rley/rgn/symbol_node.rb +1 -1
- data/lib/rley/rgn/tokenizer.rb +3 -3
- data/lib/rley/syntax/grm_symbol.rb +0 -4
- data/lib/rley/syntax/non_terminal.rb +4 -0
- data/lib/rley/syntax/terminal.rb +10 -6
- data/spec/rley/parser/gfg_earley_parser_spec.rb +0 -2
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9734bc9875c8931a5cd5c5497df1a77a3c938076c86d2748557b8ec901d09de6
|
4
|
+
data.tar.gz: 20a2a6a9b88752645cf731f6790b7f89729fb108f13701048a6cc8a2c65521f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e203c3d6cf1b4f8b32a16af06ffe2a4548f8a53c37a2677fd13e8b3695a1e482f7d46177b3861d0b5c5b6139827133d09d1213821a7ec91b8dd805fcf3eac4dd
|
7
|
+
data.tar.gz: 43be3973376040fed3a9db55207d68171a0a6084ad9a102abcd26f47d60600c8aa9165a134c67b0f443e73e4e0cdd2d5a65e5271f63081a21f83aea0550b4474
|
data/.rubocop.yml
CHANGED
@@ -5,6 +5,9 @@ AllCops:
|
|
5
5
|
Gemspec/DateAssignment:
|
6
6
|
Enabled: true
|
7
7
|
|
8
|
+
Gemspec/RequireMFA: # new in 1.23
|
9
|
+
Enabled: false
|
10
|
+
|
8
11
|
Layout/ArgumentAlignment:
|
9
12
|
Enabled: false
|
10
13
|
|
@@ -161,6 +164,9 @@ Lint/UnusedMethodArgument:
|
|
161
164
|
Lint/UselessAccessModifier:
|
162
165
|
Enabled: true
|
163
166
|
|
167
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
168
|
+
Enabled: true
|
169
|
+
|
164
170
|
Lint/Void:
|
165
171
|
Enabled: false
|
166
172
|
|
@@ -200,6 +206,9 @@ Metrics/ModuleLength:
|
|
200
206
|
Metrics/PerceivedComplexity:
|
201
207
|
Enabled: false
|
202
208
|
|
209
|
+
Naming/BlockForwarding: # new in 1.24
|
210
|
+
Enabled: true
|
211
|
+
|
203
212
|
Naming/ConstantName:
|
204
213
|
Enabled: false
|
205
214
|
|
@@ -278,6 +287,12 @@ Style/ExpandPathArguments:
|
|
278
287
|
Style/ExponentialNotation:
|
279
288
|
Enabled: true
|
280
289
|
|
290
|
+
Style/FileRead: # new in 1.24
|
291
|
+
Enabled: true
|
292
|
+
|
293
|
+
Style/FileWrite: # new in 1.24
|
294
|
+
Enabled: true
|
295
|
+
|
281
296
|
Style/GuardClause:
|
282
297
|
Enabled: false
|
283
298
|
|
@@ -302,6 +317,9 @@ Style/InPatternThen:
|
|
302
317
|
Style/InverseMethods:
|
303
318
|
Enabled: false
|
304
319
|
|
320
|
+
Style/MapToHash: # new in 1.24
|
321
|
+
Enabled: true
|
322
|
+
|
305
323
|
Style/MissingRespondToMissing:
|
306
324
|
Enabled: false
|
307
325
|
|
@@ -326,6 +344,9 @@ Style/NumberedParametersLimit:
|
|
326
344
|
Style/NumericLiterals:
|
327
345
|
Enabled: false
|
328
346
|
|
347
|
+
Style/OpenStructUse: # new in 1.23
|
348
|
+
Enabled: true
|
349
|
+
|
329
350
|
Style/QuotedSymbols:
|
330
351
|
Enabled: true
|
331
352
|
|
@@ -349,9 +370,9 @@ Style/RegexpLiteral:
|
|
349
370
|
|
350
371
|
Style/PercentLiteralDelimiters:
|
351
372
|
Enabled: false
|
352
|
-
|
373
|
+
|
353
374
|
Style/SelectByRegexp:
|
354
|
-
Enabled: true
|
375
|
+
Enabled: true
|
355
376
|
|
356
377
|
Style/StderrPuts:
|
357
378
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
+
### 0.8.09 / 2022-01-28
|
2
|
+
- Added code for coming tutorial
|
3
|
+
|
4
|
+
* [NEW] Folder `tutorial` contains code used in tutorial (in wiki)
|
5
|
+
* [NEW] Folders `TOML\iter_1` .. `TOML\iter_2` contains code for a TOML parser
|
6
|
+
* [CHANGE] File `.rubocop.yml` updated to take into account new 1.25 cops.
|
7
|
+
* [CHANGE] File `.rubocop.yml` updated to take into account new 1.25 cops.
|
8
|
+
|
1
9
|
### 0.8.08 / 2021-10-31
|
2
10
|
- Fixes in example files, Refactored module `Notation` renamed `to `RGN´
|
3
11
|
|
4
|
-
|
5
12
|
* [CHANGE] Module `Notation` changed to `RGN`.
|
6
13
|
|
7
14
|
* [FIX] `examples/general/calc_iter1/CalcLexer#initialize` now strips whitespaces at end of expression to parse.
|
@@ -21,7 +28,7 @@
|
|
21
28
|
|
22
29
|
* [NEW] Folder `example\tokenizer` contains an example with a scanner that was generated.
|
23
30
|
* [NEW] Class `Rley::Lexical::Literal` a specialization of Token class for literal tokens.
|
24
|
-
* [CHANGE] File `.
|
31
|
+
* [CHANGE] File `.rubocop.yml` updated to take into account new 1.21 and 1.22 cops.
|
25
32
|
* [DELETED] Class `Rley::Parser::ParserTracer` this class was no more in use.
|
26
33
|
* [DELETED] Class `Rley::Syntax::Literal` this class was unused.
|
27
34
|
* [DELETED] Class `Rley::Syntax::VerbatimSymbol` this class was unused.
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -458,5 +458,5 @@ standard parser textbooks. Here are a few references (and links) of papers on GF
|
|
458
458
|
|
459
459
|
Copyright
|
460
460
|
---------
|
461
|
-
Copyright (c) 2014-
|
461
|
+
Copyright (c) 2014-2022, Dimitri Geshef.
|
462
462
|
__Rley__ is released under the MIT License see [LICENSE.txt](https://github.com/famished-tiger/Rley/blob/master/LICENSE.txt) for details.
|
data/lib/rley/constants.rb
CHANGED
data/lib/rley/rgn/ast_node.rb
CHANGED
@@ -36,7 +36,7 @@ module Rley
|
|
36
36
|
|
37
37
|
# Abstract method (must be overriden in subclasses).
|
38
38
|
# Part of the 'visitee' role in Visitor design pattern.
|
39
|
-
# @param _visitor [
|
39
|
+
# @param _visitor [ASTVisitor] the visitor
|
40
40
|
def accept(_visitor)
|
41
41
|
raise NotImplementedError
|
42
42
|
end
|
data/lib/rley/rgn/parser.rb
CHANGED
@@ -35,9 +35,9 @@ module Rley
|
|
35
35
|
@engine.use_grammar(Rley::RGN::RGNGrammar)
|
36
36
|
end
|
37
37
|
|
38
|
-
# Parse the given
|
39
|
-
# @param source [String]
|
40
|
-
# @return [Rley::ParseTree] A parse tree equivalent to the
|
38
|
+
# Parse the given RGN snippet into a parse tree.
|
39
|
+
# @param source [String] Snippet to parse
|
40
|
+
# @return [Rley::ParseTree] A parse tree equivalent to the RGN input.
|
41
41
|
def parse(source)
|
42
42
|
lexer = Tokenizer.new(source)
|
43
43
|
result = engine.parse(lexer.tokens)
|
data/lib/rley/rgn/symbol_node.rb
CHANGED
@@ -28,7 +28,7 @@ module Rley
|
|
28
28
|
|
29
29
|
# Abstract method (must be overriden in subclasses).
|
30
30
|
# Part of the 'visitee' role in Visitor design pattern.
|
31
|
-
# @param visitor [
|
31
|
+
# @param visitor [RGN::ASTVisitor] the visitor
|
32
32
|
def accept(visitor)
|
33
33
|
visitor.visit_symbol_node(self)
|
34
34
|
end
|
data/lib/rley/rgn/tokenizer.rb
CHANGED
@@ -41,15 +41,15 @@ module Rley
|
|
41
41
|
match_closest repeat
|
42
42
|
].map { |x| [x, x] }.to_h
|
43
43
|
|
44
|
-
# Constructor. Initialize a tokenizer for
|
45
|
-
# @param source [String]
|
44
|
+
# Constructor. Initialize a tokenizer for RGN input.
|
45
|
+
# @param source [String] RGN text to tokenize.
|
46
46
|
def initialize(source = nil)
|
47
47
|
@scanner = StringScanner.new('')
|
48
48
|
start_with(source) if source
|
49
49
|
end
|
50
50
|
|
51
51
|
# Reset the tokenizer and make the given text, the current input.
|
52
|
-
# @param source [String]
|
52
|
+
# @param source [String] RGN text to tokenize.
|
53
53
|
def start_with(source)
|
54
54
|
@scanner.string = source
|
55
55
|
@lineno = 1
|
@@ -8,10 +8,6 @@ module Rley # This module is used as a namespace
|
|
8
8
|
# @return [String] The name of the grammar symbol
|
9
9
|
attr_reader(:name)
|
10
10
|
|
11
|
-
# An indicator that tells whether the grammar symbol can generate a
|
12
|
-
# non-empty string of terminals.
|
13
|
-
attr_writer(:generative)
|
14
|
-
|
15
11
|
# Constructor.
|
16
12
|
# aName [String] The name of the grammar symbol.
|
17
13
|
def initialize(aName)
|
@@ -7,6 +7,10 @@ module Rley # This module is used as a namespace
|
|
7
7
|
# A non-terminal symbol (sometimes called a syntactic variable) represents
|
8
8
|
# a composition of terminal or non-terminal symbols
|
9
9
|
class NonTerminal < GrmSymbol
|
10
|
+
# An indicator that tells whether the grammar symbol can generate a
|
11
|
+
# non-empty string of terminals.
|
12
|
+
attr_writer(:generative)
|
13
|
+
|
10
14
|
# A non-terminal symbol is nullable if it can match an empty string.
|
11
15
|
attr_writer(:nullable)
|
12
16
|
|
data/lib/rley/syntax/terminal.rb
CHANGED
@@ -7,25 +7,29 @@ module Rley # This module is used as a namespace
|
|
7
7
|
# A terminal symbol represents a class of words in the language
|
8
8
|
# defined the grammar.
|
9
9
|
class Terminal < GrmSymbol
|
10
|
-
#
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
# An indicator that tells whether the grammar symbol can generate a
|
11
|
+
# non-empty string of terminals.
|
12
|
+
# @return [TrueClass]
|
13
|
+
def generative?
|
14
|
+
true
|
15
15
|
end
|
16
16
|
|
17
17
|
# Return true iff the symbol is a terminal
|
18
|
+
# @return [TrueClass]
|
18
19
|
def terminal?
|
19
|
-
|
20
|
+
true
|
20
21
|
end
|
21
22
|
|
22
23
|
# @return [false] Return true if the symbol derives
|
23
24
|
# the empty string. As terminal symbol corresponds to a input token
|
24
25
|
# it is by definition non-nullable.
|
26
|
+
# @return [FalseClass]
|
25
27
|
def nullable?
|
26
28
|
false
|
27
29
|
end
|
28
30
|
|
31
|
+
# Return a readable text representation of the instance
|
32
|
+
# @return [String] The symbol name
|
29
33
|
def to_s
|
30
34
|
name
|
31
35
|
end
|
@@ -22,7 +22,6 @@ require_relative '../support/expectation_helper'
|
|
22
22
|
require_relative '../../../lib/rley/parser/gfg_earley_parser'
|
23
23
|
|
24
24
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
25
|
-
# rubocop: disable Metrics/BlockLength
|
26
25
|
module Parser # Open this namespace to avoid module qualifier prefixes
|
27
26
|
describe GFGEarleyParser do
|
28
27
|
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
@@ -1038,6 +1037,5 @@ MSG
|
|
1038
1037
|
end # context
|
1039
1038
|
end # describe
|
1040
1039
|
end # module
|
1041
|
-
# rubocop: enable Metrics/BlockLength
|
1042
1040
|
end # module
|
1043
1041
|
# End of file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rley
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.09
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -303,7 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
303
303
|
- !ruby/object:Gem::Version
|
304
304
|
version: '0'
|
305
305
|
requirements: []
|
306
|
-
rubygems_version: 3.
|
306
|
+
rubygems_version: 3.3.3
|
307
307
|
signing_key:
|
308
308
|
specification_version: 4
|
309
309
|
summary: Ruby implementation of the Earley's parsing algorithm
|
@@ -330,14 +330,6 @@ test_files:
|
|
330
330
|
- spec/rley/lexical/literal_spec.rb
|
331
331
|
- spec/rley/lexical/token_range_spec.rb
|
332
332
|
- spec/rley/lexical/token_spec.rb
|
333
|
-
- spec/rley/parser/dangling_else_spec.rb
|
334
|
-
- spec/rley/parser/error_reason_spec.rb
|
335
|
-
- spec/rley/parser/gfg_chart_spec.rb
|
336
|
-
- spec/rley/parser/gfg_earley_parser_spec.rb
|
337
|
-
- spec/rley/parser/gfg_parsing_spec.rb
|
338
|
-
- spec/rley/parser/parse_entry_set_spec.rb
|
339
|
-
- spec/rley/parser/parse_entry_spec.rb
|
340
|
-
- spec/rley/parser/parse_walker_factory_spec.rb
|
341
333
|
- spec/rley/parse_forest_visitor_spec.rb
|
342
334
|
- spec/rley/parse_rep/ambiguous_parse_spec.rb
|
343
335
|
- spec/rley/parse_rep/ast_builder_spec.rb
|
@@ -347,6 +339,14 @@ test_files:
|
|
347
339
|
- spec/rley/parse_rep/parse_forest_factory_spec.rb
|
348
340
|
- spec/rley/parse_rep/parse_tree_factory_spec.rb
|
349
341
|
- spec/rley/parse_tree_visitor_spec.rb
|
342
|
+
- spec/rley/parser/dangling_else_spec.rb
|
343
|
+
- spec/rley/parser/error_reason_spec.rb
|
344
|
+
- spec/rley/parser/gfg_chart_spec.rb
|
345
|
+
- spec/rley/parser/gfg_earley_parser_spec.rb
|
346
|
+
- spec/rley/parser/gfg_parsing_spec.rb
|
347
|
+
- spec/rley/parser/parse_entry_set_spec.rb
|
348
|
+
- spec/rley/parser/parse_entry_spec.rb
|
349
|
+
- spec/rley/parser/parse_walker_factory_spec.rb
|
350
350
|
- spec/rley/ptree/non_terminal_node_spec.rb
|
351
351
|
- spec/rley/ptree/parse_tree_node_spec.rb
|
352
352
|
- spec/rley/ptree/parse_tree_spec.rb
|