Chervil is a toy Lisp interpreter written in Ruby
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lexer_spec.rb 740B

1234567891011121314151617181920212223242526272829303132
  1. module Chervil
  2. RSpec.describe Lexer do
  3. it 'lexes parens' do
  4. expect(Lexer.new('()').tokenize).to eq(
  5. [
  6. Token.new(:lparen, '('),
  7. Token.new(:rparen, ')'),
  8. Token.new(:eof, 'eof')
  9. ]
  10. )
  11. end
  12. it 'lexes integers' do
  13. expect(Lexer.new('1').get_next_token).to eq(Token.new(:number, '1'))
  14. end
  15. it 'lexes floats' do
  16. expect(Lexer.new('2.3').get_next_token).to eq(Token.new(:number, '2.3'))
  17. end
  18. it 'ignores whitespace' do
  19. expect(Lexer.new('1 2 3').tokenize).to eq(
  20. [
  21. Token.new(:number, '1'),
  22. Token.new(:number, '2'),
  23. Token.new(:number, '3'),
  24. Token.new(:eof, 'eof')
  25. ]
  26. )
  27. end
  28. end
  29. end