-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtokens.lisp
88 lines (86 loc) · 1.54 KB
/
tokens.lisp
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
(defpackage :cl-lox/tokens
(:export
:left-paren
:right-paren
:left-brace
:right-brace
:comma
:dot
:minus
:plus
:semicolon
:star
:bang
:bang-equal
:equal
:equal-equal
:less
:less-equal
:greater
:greater-equal
:slash
:string
:number
:identifier
:class
:keywords
:and
:class
:else
:false
:for
:fun
:if
:nil
:or
:print
:return
:super
:this
:true
:var
:while
:eof)
(:use :cl)
(:shadow :and :if :nil :or :print :equal :number :string))
(in-package :cl-lox/tokens)
(defparameter left-paren "(")
(defparameter right-paren ")")
(defparameter left-brace "{")
(defparameter right-brace "}")
(defparameter comma ",")
(defparameter dot ".")
(defparameter minus "-")
(defparameter plus "+")
(defparameter semicolon ";")
(defparameter star "*")
(defparameter bang "!")
(defparameter bang-equal "!=")
(defparameter equal "=")
(defparameter equal-equal "==")
(defparameter less "<")
(defparameter less-equal "<=")
(defparameter greater ">")
(defparameter greater-equal ">=")
(defparameter slash "/")
(defparameter string "STRING")
(defparameter number "NUMBER")
(defparameter identifier "IDENTIFIER")
(defparameter eof "EOF")
(defparameter keywords
'(("and" . and)
("class" . class)
("else" . else)
("false" . false)
("for" . for)
("fun" . fun)
("if" . if)
("nil" . nil)
("or" . or)
("print" . print)
("return" . return)
("super" . super)
("this" . this)
("true" . true)
("var" . var)
("while" . while)))