Browse Source

Lex hashes

master
Dylan Baker 4 years ago
parent
commit
1415296cd0
3 changed files with 6 additions and 1 deletions
  1. 1
    0
      lib/ahem/ast/operators.rb
  2. 3
    0
      lib/ahem/lexer.rb
  3. 2
    1
      spec/lexer_spec.rb

+ 1
- 0
lib/ahem/ast/operators.rb View File

@@ -11,4 +11,5 @@ module AST::Operators
11 11
   OR = :or
12 12
   AND = :and
13 13
   NOT = :not
14
+  HASH = :'#'
14 15
 end

+ 3
- 0
lib/ahem/lexer.rb View File

@@ -128,6 +128,9 @@ class Lexer
128 128
     elsif source.match(/\A\>/)
129 129
       @position += 1
130 130
       Token.new(TokenKinds::OPERATOR, :>)
131
+    elsif source.match(/\A\#/)
132
+      @position += 1
133
+      Token.new(TokenKinds::OPERATOR, :'#')
131 134
     elsif source.match(/\Aand/)
132 135
       @position += 3
133 136
       Token.new(TokenKinds::OPERATOR, :and)

+ 2
- 1
spec/lexer_spec.rb View File

@@ -32,7 +32,7 @@ RSpec.describe Lexer do
32 32
   end
33 33
 
34 34
   it 'lexes operators' do
35
-    expect(Lexer.new('+-*/<<=>>=== and or not').scan_all).to eq(
35
+    expect(Lexer.new('+-*/<<=>>===# and or not').scan_all).to eq(
36 36
       [
37 37
         Token.new(TokenKinds::OPERATOR, :+),
38 38
         Token.new(TokenKinds::OPERATOR, :-),
@@ -43,6 +43,7 @@ RSpec.describe Lexer do
43 43
         Token.new(TokenKinds::OPERATOR, :>),
44 44
         Token.new(TokenKinds::OPERATOR, :>=),
45 45
         Token.new(TokenKinds::OPERATOR, :==),
46
+        Token.new(TokenKinds::OPERATOR, :'#'),
46 47
         Token.new(TokenKinds::OPERATOR, :and),
47 48
         Token.new(TokenKinds::OPERATOR, :or),
48 49
         Token.new(TokenKinds::OPERATOR, :not),

Loading…
Cancel
Save