Chervil is a toy Lisp interpreter written in Ruby
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

parser_spec.rb 593B

1234567891011121314151617181920212223242526
  1. module Chervil
  2. RSpec.describe Parser do
  3. def parse(source)
  4. lexer = Lexer.new(source)
  5. parser = Parser.new(lexer)
  6. parser.parse
  7. end
  8. it 'parses a number' do
  9. expect(parse('1').first).to eq(AST::Number.new(1.0))
  10. end
  11. it 'parses an identifier' do
  12. expect(parse('+').first).to eq(AST::Identifier.new('+'))
  13. end
  14. it 'parses an application' do
  15. expect(parse('(+ 1 2)').first).to eq(
  16. AST::Application.new(
  17. AST::Identifier.new('+'),
  18. [AST::Number.new(1.0), AST::Number.new(2.0)]
  19. )
  20. )
  21. end
  22. end
  23. end