Browse Source

Formatting

master
Dylan Baker 5 years ago
parent
commit
58838d390a
5 changed files with 31 additions and 48 deletions
  1. 1
    1
      lib/ahem/lexer.rb
  2. 3
    1
      lib/ahem/parser.rb
  3. 19
    29
      spec/ast/function_call_spec.rb
  4. 2
    5
      spec/lexer_spec.rb
  5. 6
    12
      spec/parser_spec.rb

+ 1
- 1
lib/ahem/lexer.rb View File

112
       Token.new(TokenKinds::ROCKET)
112
       Token.new(TokenKinds::ROCKET)
113
     elsif source.match(/\A\#/)
113
     elsif source.match(/\A\#/)
114
       @position += 1
114
       @position += 1
115
-      Token.new(TokenKinds::HASH)      
115
+      Token.new(TokenKinds::HASH)
116
     elsif source.match(/\A!/)
116
     elsif source.match(/\A!/)
117
       @position += 1
117
       @position += 1
118
       Token.new(TokenKinds::OPERATOR, :!)
118
       Token.new(TokenKinds::OPERATOR, :!)

+ 3
- 1
lib/ahem/parser.rb View File

284
         raise "Unexpected token #{token.type}"
284
         raise "Unexpected token #{token.type}"
285
       end
285
       end
286
 
286
 
287
-    while [TokenKinds::LPAREN, TokenKinds::LBRACKET, TokenKinds::HASH].include?(@current_token.type)
287
+    while [TokenKinds::LPAREN, TokenKinds::LBRACKET, TokenKinds::HASH].include?(
288
+      @current_token.type
289
+    )
288
       case @current_token.type
290
       case @current_token.type
289
       when TokenKinds::LPAREN
291
       when TokenKinds::LPAREN
290
         args = arguments
292
         args = arguments

+ 19
- 29
spec/ast/function_call_spec.rb View File

186
   end
186
   end
187
 
187
 
188
   it 'allows calling an anonymous function directly' do
188
   it 'allows calling an anonymous function directly' do
189
-    result = AST::FunctionCall.new(
190
-      AST::FunctionDefinition.new(
191
-        nil,
192
-        [],
193
-        AST::Block.new(
194
-          [
195
-            AST::Number.new(5.0)
196
-          ]
197
-        )
198
-      ),
199
-      []
200
-    ).execute(Environment.new)
189
+    result =
190
+      AST::FunctionCall.new(
191
+        AST::FunctionDefinition.new(
192
+          nil,
193
+          [],
194
+          AST::Block.new([AST::Number.new(5.0)])
195
+        ),
196
+        []
197
+      )
198
+        .execute(Environment.new)
201
     expect(result).to eq(5.0)
199
     expect(result).to eq(5.0)
202
   end
200
   end
203
 
201
 
209
   # }
207
   # }
210
   # let y = outer();
208
   # let y = outer();
211
   # y();
209
   # y();
212
-  it 'keeps a reference to a closure\'s environment' do
210
+  it "keeps a reference to a closure's environment" do
213
     env = Environment.new
211
     env = Environment.new
214
     AST::FunctionDefinition.new(
212
     AST::FunctionDefinition.new(
215
       AST::Identifier.new('outer'),
213
       AST::Identifier.new('outer'),
223
           AST::FunctionDefinition.new(
221
           AST::FunctionDefinition.new(
224
             nil,
222
             nil,
225
             [],
223
             [],
226
-            AST::Block.new(
227
-              [
228
-                AST::Identifier.new('x'),
229
-              ]
230
-            )
224
+            AST::Block.new([AST::Identifier.new('x')])
231
           )
225
           )
232
         ]
226
         ]
233
       )
227
       )
234
-    ).execute(env)
228
+    )
229
+      .execute(env)
235
     AST::VariableDeclaration.new(
230
     AST::VariableDeclaration.new(
236
       AST::Identifier.new('y'),
231
       AST::Identifier.new('y'),
237
-      AST::FunctionCall.new(
238
-        AST::Identifier.new('outer'),
239
-        []
240
-      )
241
-    ).execute(env)
242
-    result = AST::FunctionCall.new(
243
-      AST::Identifier.new('y'),
244
-      []
245
-    ).execute(env)
246
-    expect(result).to eq("hello world")
232
+      AST::FunctionCall.new(AST::Identifier.new('outer'), [])
233
+    )
234
+      .execute(env)
235
+    result = AST::FunctionCall.new(AST::Identifier.new('y'), []).execute(env)
236
+    expect(result).to eq('hello world')
247
   end
237
   end
248
 end
238
 end

+ 2
- 5
spec/lexer_spec.rb View File

180
   end
180
   end
181
 
181
 
182
   it 'lexes hashes' do
182
   it 'lexes hashes' do
183
-    expect(Lexer.new("#").scan_all).to eq(
184
-      [
185
-        Token.new(TokenKinds::HASH),
186
-        Token.new(TokenKinds::EOF)
187
-      ]
183
+    expect(Lexer.new('#').scan_all).to eq(
184
+      [Token.new(TokenKinds::HASH), Token.new(TokenKinds::EOF)]
188
     )
185
     )
189
   end
186
   end
190
 end
187
 end

+ 6
- 12
spec/parser_spec.rb View File

459
     expect(parse('func()();')).to eq(
459
     expect(parse('func()();')).to eq(
460
       [
460
       [
461
         AST::FunctionCall.new(
461
         AST::FunctionCall.new(
462
-          AST::FunctionCall.new(
463
-            AST::Identifier.new('func'),
464
-            [],
465
-          ),
462
+          AST::FunctionCall.new(AST::Identifier.new('func'), []),
466
           []
463
           []
467
         )
464
         )
468
       ]
465
       ]
477
             AST::Index.new(
474
             AST::Index.new(
478
               AST::FunctionCall.new(
475
               AST::FunctionCall.new(
479
                 AST::Index.new(
476
                 AST::Index.new(
480
-                  AST::FunctionCall.new(
481
-                    AST::Identifier.new('func'),
482
-                    []
483
-                  ),
477
+                  AST::FunctionCall.new(AST::Identifier.new('func'), []),
484
                   AST::Number.new(0.0)
478
                   AST::Number.new(0.0)
485
                 ),
479
                 ),
486
                 []
480
                 []
500
       [
494
       [
501
         AST::Property.new(
495
         AST::Property.new(
502
           AST::Identifier.new('hello'),
496
           AST::Identifier.new('hello'),
503
-          AST::Identifier.new('world'),
504
-        ),
497
+          AST::Identifier.new('world')
498
+        )
505
       ]
499
       ]
506
     )
500
     )
507
   end
501
   end
512
         AST::FunctionCall.new(
506
         AST::FunctionCall.new(
513
           AST::Property.new(
507
           AST::Property.new(
514
             AST::Identifier.new('hello'),
508
             AST::Identifier.new('hello'),
515
-            AST::Identifier.new('world'),
509
+            AST::Identifier.new('world')
516
           ),
510
           ),
517
-          []          
511
+          []
518
         )
512
         )
519
       ]
513
       ]
520
     )
514
     )

Loading…
Cancel
Save