blob: bb7a1bd9703f320ceeb8f35dc2cdfa64b1f9334a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
(in-package :monkey/test)
(deftest (:lexer test-1)
"=+(){},;"
(:t/= :t/+ :t/lparen :t/rparen
:t/lbrace :t/rbrace :t/comma :t/semicolon :t/eof))
(deftest (:lexer test-2)
"let five = 5;
let ten = 10;
let add = fn(x, y) {
x + y;
};
let result = add(five, ten);
!-/*;
5 < 10 > 5;
if (5 < 10) {
return true;
} else {
return false;
}
10 == 10;
10 != 9;
"
(:t/let "five" :t/= 5 #\;
:t/let "ten" :t/= 10 #\;
:t/let "add" :t/= :t/function #\( "x" :t/comma "y" #\) #\{
"x" :t/+ "y" #\;
#\} #\;
:t/let "result" :t/= "add" #\( "five" :t/comma "ten" #\) #\;
:t/! :t/- :t// :t/* #\;
5 :t/< 10 :t/> 5 #\;
:t/if #\( 5 :t/< 10 #\) #\{
:t/return :t/true #\;
#\} :t/else #\{
:t/return :t/false #\;
#\}
10 :t/== 10 #\;
10 :t/!= 9 #\;
:t/eof))
(eval-when ()
(deftest (:lexer test-fail)
"abc gf 5 fn =+(){},;"
(:t/= :t/+ :t/lparen :t/rparen
:t/lbrace :t/rbrace :t/comma :t/semicolon :t/eof))
(deftest (:lexer test-fail-2)
"let abc x + 5;"
(:t/let "abc" :t/= "x" :t/+ 5 :t/eof)))
|