taoism 1.0.2 → 1.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3888b31accff3d78029eaba044b83ef112863b85b2b4c6ee84865f3af918330
4
- data.tar.gz: ea0fbbb5539fbda01d5f2c40eb8f2a1067e451c6a7cc9c0b16e47c3b981080d6
3
+ metadata.gz: bbad3dc4b1988ebceb1802ff1cd018c86a1e7b4c897e6e045bfc915ec25a7d46
4
+ data.tar.gz: 851ebfc6c010a4e65d10642dbc42a80202da34c7627699fac548686ad9a5b895
5
5
  SHA512:
6
- metadata.gz: 5569c903178515e6f8658be27acbb1868b7517422111bf8a30f0c441e83879d531c4ab52067e1b62b0f7ac22be6d61008fee4021b227d419cd323f5c09584e85
7
- data.tar.gz: 76776999d05166456d75b43bbf0d62b5ebad747a0271bb17c867b181dbd0d9aef90fd9945b1b74c7388ed3e595c84d440fea7d6370a9e9c40d0bcf5c6aa29045
6
+ metadata.gz: 7a3c5eb93b8bdaae2f413e6f08846ab4a6d31160cfb79721d2c8b07ca0c1d4206b356eeb7b920f246b5b3035914568000b2573301b383daabdead00ccbeda56c
7
+ data.tar.gz: 3989897be5671c9a6c4f882dc08616af8ae65acb98554dc5d40440b658a0b632ce610b18eaedc7b7fdd95d279aeb3b6826e26f9da12784db50a3b0baa847c1e9
data/lib/taoism/lexer.rb CHANGED
@@ -74,7 +74,7 @@ module Taoism
74
74
  case char
75
75
  when '+' then make_token(TokenType::PLUS)
76
76
  when '-'
77
- match('>') ? make_token(TokenType::ARROW) : make_token(TokenType::MINUS)
77
+ match('>') ? make_token(TokenType::ARROW) : make_token(TokenType::MINUS)
78
78
  when '*' then make_token(TokenType::STAR)
79
79
  when '/' then make_token(TokenType::SLASH)
80
80
  when '%' then make_token(TokenType::MODULO)
@@ -95,8 +95,15 @@ module Taoism
95
95
  when '&'
96
96
  match('&') ? make_token(TokenType::AND) : make_token(TokenType::ILLEGAL)
97
97
  when '|'
98
- match('|') ? make_token(TokenType::OR) : make_token(TokenType::ILLEGAL)
99
- when '?' then make_token(TokenType::ILLEGAL)
98
+ if match('>')
99
+ make_token(TokenType::PIPE)
100
+ elsif match('|')
101
+ make_token(TokenType::OR)
102
+ else
103
+ make_token(TokenType::ILLEGAL)
104
+ end
105
+ when '?'
106
+ match('.') ? make_token(TokenType::QDOT) : make_token(TokenType::ILLEGAL)
100
107
  when '0'..'9' then number_token
101
108
  when '"' then string_token
102
109
  else
data/lib/taoism/nodes.rb CHANGED
@@ -5,7 +5,7 @@ module Taoism
5
5
 
6
6
  # ── Statements ──
7
7
  Let = Struct.new(:name, :value, :mutable, :start, :end)
8
- LetPair = Struct.new(:first, :second, :expr, :start, :end)
8
+ LetPair = Struct.new(:first, :second, :expr, :start, :end)
9
9
  Assign = Struct.new(:target, :value, :start, :end)
10
10
  Const = Struct.new(:name, :value, :start, :end)
11
11
  Import = Struct.new(:path, :start, :end)
@@ -31,6 +31,7 @@ module Taoism
31
31
  Call = Struct.new(:callee, :args, :start, :end)
32
32
  Index = Struct.new(:target, :index, :start, :end)
33
33
  DotExpr = Struct.new(:target, :name, :start, :end)
34
+ SafeDot = Struct.new(:target, :name, :start, :end)
34
35
  Identifier = Struct.new(:name, :start, :end)
35
36
 
36
37
  # ── Literals ──