blob: 6df4f433a72535ee63df5ff85757084065417e65 (
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
(ns cljcc.token)
(def token-kind
#{:eof
:semicolon
;; brackets
:left-curly
:right-curly
:left-paren
:right-paren
;; operators
:plus
:minus
:multiply
:divide
:remainder
:negate
:assignemnt
:ampersand
:bitwise-not
:bitwise-or
:bitwise-xor
:bitwise-left
:increment
:decrement
:number
:identifier
;; keywords
:kw-return
:kw-int
:kw-void})
(def chrs
#{})
(def chrs-kind-map
{\( :left-paren
\) :right-paren
\{ :left-curly
\} :right-curly
\= :assignment
"--" :decrement
"++" :increment
\; :semicolon
\+ :plus
\- :minus
\* :multiply
\% :remainder
\/ :divide})
(defn identifier->kind [identifier]
(case identifier
"return" :kw-return
"void" :kw-void
"int" :kw-int
:identifier))
(defn create
([kind line col]
{:kind kind
:line line
:col col})
([kind line col literal]
{:kind kind
:line line
:col col
:literal literal}))
|