|
@@ -360,4 +360,20 @@ RSpec.describe Parser do
|
360
|
360
|
expect(parse('-1;')).to eq([AST::Unary.new(:-, AST::Number.new(1.0))])
|
361
|
361
|
expect(parse('!true;')).to eq([AST::Unary.new(:!, AST::Boolean.new(true))])
|
362
|
362
|
end
|
|
363
|
+
|
|
364
|
+ it 'gives parenthetical expressions higher precedence' do
|
|
365
|
+ expect(parse('(1 + 2) * 3;')).to eq(
|
|
366
|
+ [
|
|
367
|
+ AST::Binary.new(
|
|
368
|
+ AST::Operators::MULTIPLY,
|
|
369
|
+ AST::Binary.new(
|
|
370
|
+ AST::Operators::ADD,
|
|
371
|
+ AST::Number.new(1.0),
|
|
372
|
+ AST::Number.new(2.0)
|
|
373
|
+ ),
|
|
374
|
+ AST::Number.new(3.0),
|
|
375
|
+ )
|
|
376
|
+ ]
|
|
377
|
+ )
|
|
378
|
+ end
|
363
|
379
|
end
|