1234567891011121314151617181920212223242526 |
- module Chervil
- RSpec.describe Parser do
- def parse(source)
- lexer = Lexer.new(source)
- parser = Parser.new(lexer)
- parser.parse
- end
-
- it 'parses a number' do
- expect(parse('1').first).to eq(AST::Number.new(1.0))
- end
-
- it 'parses an identifier' do
- expect(parse('+').first).to eq(AST::Identifier.new('+'))
- end
-
- it 'parses an application' do
- expect(parse('(+ 1 2)').first).to eq(
- AST::Application.new(
- AST::Identifier.new('+'),
- [AST::Number.new(1.0), AST::Number.new(2.0)]
- )
- )
- end
- end
- end
|