loxxy 0.4.05 → 0.4.06
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/lib/loxxy/ast/ast_builder.rb +11 -11
- data/lib/loxxy/ast/ast_visitor.rb +0 -1
- data/lib/loxxy/ast/lox_call_expr.rb +1 -1
- data/lib/loxxy/ast/lox_return_stmt.rb +1 -1
- data/lib/loxxy/version.rb +1 -1
- data/loxxy.gemspec +1 -1
- data/spec/front_end/raw_parser_spec.rb +3 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0b12b86ba7c949cf712d97fed6691b087f97284e3580124680b773df3be5347
|
4
|
+
data.tar.gz: f19231c3e1372525e418fd155f23f71ef84c5fbcb9283eeef11709d4a321408f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0f0829b465d2ffb3cd7f287efb9a069ae0c94ddc95f89790f6e1f1d6519aed4dfccb5359d95130afff4cd69d70953983ef25f02f89529789f9bd2ca1bd18c9a
|
7
|
+
data.tar.gz: 908ca8e78dbf30ff582a545d542b58b4080a98feab8a035582ea3dd09a5e2533f255cbc7bc531b143d21bd2b0a23d8ea3b0eed0b6007cc35eea005cfc564de61
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## [0.4.06] - 2021-11-01
|
2
|
+
- Code update to cope with `Rley` v.0.8.08 changes
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
- File `AST::AstBuilder` some `reduce_` to cope implementation change of ? quantifier
|
6
|
+
- Method `AST::LoxCallExpr#initialize` call to `Array#flatten` with argList argument
|
7
|
+
- File `loxxy.gemspec` dependency towards `rely` minimal version number is now `0.8.08`
|
8
|
+
- Some spec files updated after `rley` changes of ?, *, + quantifiers
|
9
|
+
|
10
|
+
### Removed
|
11
|
+
- File `front_end/literal.rb`: obsolete
|
12
|
+
|
13
|
+
|
1
14
|
## [0.4.05] - 2021-10-10
|
2
15
|
- Removal of `Literal` class, code restyling to please Rubocop 1.22
|
3
16
|
|
@@ -16,7 +29,7 @@
|
|
16
29
|
- File `grammar.rb` use `match_closest` constraint from Rley to cope with dangling else statement
|
17
30
|
|
18
31
|
## [0.4.02] - 2021-09-10
|
19
|
-
- Fixes in`AST::AstBuilder` class to
|
32
|
+
- Fixes in`AST::AstBuilder` class to cope with changes in Rley 0.8.03
|
20
33
|
|
21
34
|
### Changed
|
22
35
|
- File `loxxy.gemspec` forced dependency to Rley 0.8.03
|
@@ -222,10 +222,8 @@ module Loxxy
|
|
222
222
|
if test.nil? && update
|
223
223
|
# when test expr is nil but update expr is not, then force test to be true
|
224
224
|
test = LoxLiteralExpr.new(tokens[0].position, Datatype::True.instance)
|
225
|
-
[init, test, update]
|
226
|
-
else
|
227
|
-
theChildren
|
228
225
|
end
|
226
|
+
[init, test, update&.first]
|
229
227
|
end
|
230
228
|
|
231
229
|
# rule('forInitialization' => 'SEMICOLON')
|
@@ -234,8 +232,8 @@ module Loxxy
|
|
234
232
|
end
|
235
233
|
|
236
234
|
# rule('forTest' => 'expression? SEMICOLON')
|
237
|
-
def reduce_for_test(_production,
|
238
|
-
|
235
|
+
def reduce_for_test(_production, _range, _tokens, theChildren)
|
236
|
+
theChildren[0]&.first
|
239
237
|
end
|
240
238
|
|
241
239
|
# rule('ifStmt' => 'IF ifCondition statement ELSE statement')
|
@@ -262,7 +260,8 @@ module Loxxy
|
|
262
260
|
|
263
261
|
# rule('returnStmt' => 'RETURN expression? SEMICOLON')
|
264
262
|
def reduce_return_stmt(_production, _range, tokens, theChildren)
|
265
|
-
|
263
|
+
ret_expr = theChildren[1].nil? ? nil : theChildren[1].first
|
264
|
+
Ast::LoxReturnStmt.new(tokens[1].position, ret_expr)
|
266
265
|
end
|
267
266
|
|
268
267
|
# rule('whileStmt' => 'WHILE LEFT_PAREN expression RIGHT_PAREN statement').as ''
|
@@ -275,7 +274,7 @@ module Loxxy
|
|
275
274
|
decls = nil
|
276
275
|
if theChildren[1]
|
277
276
|
pos = tokens[1].position
|
278
|
-
decls = LoxSeqDecl.new(
|
277
|
+
decls = LoxSeqDecl.new(pos, theChildren[1].flatten)
|
279
278
|
else
|
280
279
|
pos = tokens[0].position
|
281
280
|
end
|
@@ -377,15 +376,16 @@ module Loxxy
|
|
377
376
|
LoxSuperExpr.new(theChildren[0].token.position, theChildren[2].token.lexeme)
|
378
377
|
end
|
379
378
|
|
380
|
-
# rule('function' => 'IDENTIFIER LEFT_PAREN
|
379
|
+
# rule('function' => 'IDENTIFIER LEFT_PAREN parameters? RIGHT_PAREN block').as 'function'
|
381
380
|
def reduce_function(_production, _range, _tokens, theChildren)
|
382
381
|
first_child = theChildren.first
|
383
382
|
pos = first_child.token.position
|
384
|
-
|
383
|
+
params = theChildren[2] ? theChildren[2].flatten : []
|
384
|
+
if params.size > 255
|
385
385
|
msg = "Can't have more than 255 parameters."
|
386
386
|
raise Loxxy::SyntaxError, msg
|
387
387
|
end
|
388
|
-
LoxFunStmt.new(pos, first_child.token.lexeme,
|
388
|
+
LoxFunStmt.new(pos, first_child.token.lexeme, params, theChildren[4])
|
389
389
|
end
|
390
390
|
|
391
391
|
# rule('parameters' => 'IDENTIFIER (COMMA IDENTIFIER)*').as 'parameters'
|
@@ -399,7 +399,7 @@ module Loxxy
|
|
399
399
|
|
400
400
|
# rule('arguments' => 'expression (COMMA expression)*')
|
401
401
|
def reduce_arguments(_production, _range, _tokens, theChildren)
|
402
|
-
return [theChildren[0]]
|
402
|
+
return [theChildren[0]] if theChildren[1].empty?
|
403
403
|
|
404
404
|
successors = theChildren[1].map(&:last)
|
405
405
|
successors.unshift(theChildren[0])
|
@@ -12,7 +12,7 @@ module Loxxy
|
|
12
12
|
# @param argList [Array<Loxxy::Ast::LoxNode>]
|
13
13
|
def initialize(aPosition, argList)
|
14
14
|
super(aPosition, [])
|
15
|
-
@arguments = argList
|
15
|
+
@arguments = argList.flatten
|
16
16
|
end
|
17
17
|
|
18
18
|
define_accept # Add `accept` method as found in Visitor design pattern
|
@@ -6,7 +6,7 @@ module Loxxy
|
|
6
6
|
module Ast
|
7
7
|
class LoxReturnStmt < LoxCompoundExpr
|
8
8
|
# @param aPosition [Rley::Lexical::Position] Position of the entry in the input stream.
|
9
|
-
# @param anExpression [Ast::LoxNode] expression to return
|
9
|
+
# @param anExpression [Ast::LoxNode, NilClass] expression to return
|
10
10
|
def initialize(aPosition, anExpression)
|
11
11
|
expr = anExpression || Datatype::Nil.instance
|
12
12
|
super(aPosition, [expr])
|
data/lib/loxxy/version.rb
CHANGED
data/loxxy.gemspec
CHANGED
@@ -58,7 +58,7 @@ Gem::Specification.new do |spec|
|
|
58
58
|
PkgExtending.pkg_documentation(spec)
|
59
59
|
|
60
60
|
# Runtime dependencies
|
61
|
-
spec.add_dependency 'rley', '~> 0.8.
|
61
|
+
spec.add_dependency 'rley', '~> 0.8.08'
|
62
62
|
|
63
63
|
# Development dependencies
|
64
64
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
@@ -28,7 +28,7 @@ module Loxxy
|
|
28
28
|
expect(aParseTree.root.symbol.name).to eq('program')
|
29
29
|
(decls, eof) = aParseTree.root.subnodes
|
30
30
|
expect(decls).to be_kind_of(Rley::PTree::NonTerminalNode)
|
31
|
-
expect(decls.symbol.name).to eq('
|
31
|
+
expect(decls.symbol.name).to eq('rep_declaration_star')
|
32
32
|
expect(decls.subnodes).to be_empty
|
33
33
|
expect(eof).to be_kind_of(Rley::PTree::TerminalNode)
|
34
34
|
expect(eof.symbol.name).to eq('EOF')
|
@@ -76,9 +76,9 @@ LOX_END
|
|
76
76
|
expect(root.symbol.name).to eq('program')
|
77
77
|
(decls, eof) = root.subnodes
|
78
78
|
expect(decls).to be_kind_of(Rley::PTree::NonTerminalNode)
|
79
|
-
expect(decls.symbol.name).to eq('
|
79
|
+
expect(decls.symbol.name).to eq('rep_declaration_star')
|
80
80
|
expect(decls.subnodes[0]).to be_kind_of(Rley::PTree::NonTerminalNode)
|
81
|
-
expect(decls.subnodes[0].symbol.name).to eq('
|
81
|
+
expect(decls.subnodes[0].symbol.name).to eq('rep_declaration_star')
|
82
82
|
expect(decls.subnodes[1]).to be_kind_of(Rley::PTree::NonTerminalNode)
|
83
83
|
expect(decls.subnodes[1].symbol.name).to eq('declaration')
|
84
84
|
statement = decls.subnodes[1].subnodes[0]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loxxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.06
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rley
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.8.
|
19
|
+
version: 0.8.08
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.8.
|
26
|
+
version: 0.8.08
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|