Skip to content

Commit 9641e8f

Browse files
committed
complete project 11
1 parent b263260 commit 9641e8f

File tree

25 files changed

+3775
-3
lines changed

25 files changed

+3775
-3
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
.DS_Store
22
.dat
33
*.dat
4+
.vscode
45
node_modules/
56
package-lock.json
6-
projects/10/**/*.js
7+
projects/10/**/*.js
8+
projects/11/**/*.js

projects/10/JackAnalyzer/JackTokenizer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class JackTokenizer {
4343
}
4444

4545
advance() {
46-
return this.#_advance(this.#pendingChars)
46+
return this.#_advance([])
4747
}
4848

4949
#pendingChars: string[] = []
@@ -77,6 +77,11 @@ class JackTokenizer {
7777
charQueue = []
7878
}
7979
}
80+
if (this.#state === State.token) {
81+
this.#state = State.blank
82+
this.#pendingChars = [char]
83+
return this.#match(charQueue)
84+
}
8085
break
8186
case '*':
8287
// /*

projects/10/JackAnalyzer/grammar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@ export enum SYMBOLS {
5252
not = '~',
5353
}
5454

55-
export const IDENTIFIER_REG = /[_a-z][_a-z0-9]*/i
55+
export const IDENTIFIER_REG = /^[_a-z][_a-z0-9]*$/i

projects/11/Average/Main.vm

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
function Main.main 4
2+
push constant 18
3+
call String.new 1
4+
push constant 72
5+
call String.appendChar 2
6+
push constant 111
7+
call String.appendChar 2
8+
push constant 119
9+
call String.appendChar 2
10+
push constant 32
11+
call String.appendChar 2
12+
push constant 109
13+
call String.appendChar 2
14+
push constant 97
15+
call String.appendChar 2
16+
push constant 110
17+
call String.appendChar 2
18+
push constant 121
19+
call String.appendChar 2
20+
push constant 32
21+
call String.appendChar 2
22+
push constant 110
23+
call String.appendChar 2
24+
push constant 117
25+
call String.appendChar 2
26+
push constant 109
27+
call String.appendChar 2
28+
push constant 98
29+
call String.appendChar 2
30+
push constant 101
31+
call String.appendChar 2
32+
push constant 114
33+
call String.appendChar 2
34+
push constant 115
35+
call String.appendChar 2
36+
push constant 63
37+
call String.appendChar 2
38+
push constant 32
39+
call String.appendChar 2
40+
call Keyboard.readInt 1
41+
pop local 1
42+
push local 1
43+
call Array.new 1
44+
pop local 0
45+
push constant 0
46+
pop local 2
47+
label WHILE_EXP0
48+
push local 2
49+
push local 1
50+
lt
51+
not
52+
if-goto WHILE_END0
53+
push local 2
54+
push local 0
55+
add
56+
push constant 16
57+
call String.new 1
58+
push constant 69
59+
call String.appendChar 2
60+
push constant 110
61+
call String.appendChar 2
62+
push constant 116
63+
call String.appendChar 2
64+
push constant 101
65+
call String.appendChar 2
66+
push constant 114
67+
call String.appendChar 2
68+
push constant 32
69+
call String.appendChar 2
70+
push constant 97
71+
call String.appendChar 2
72+
push constant 32
73+
call String.appendChar 2
74+
push constant 110
75+
call String.appendChar 2
76+
push constant 117
77+
call String.appendChar 2
78+
push constant 109
79+
call String.appendChar 2
80+
push constant 98
81+
call String.appendChar 2
82+
push constant 101
83+
call String.appendChar 2
84+
push constant 114
85+
call String.appendChar 2
86+
push constant 58
87+
call String.appendChar 2
88+
push constant 32
89+
call String.appendChar 2
90+
call Keyboard.readInt 1
91+
pop temp 0
92+
pop pointer 1
93+
push temp 0
94+
pop that 0
95+
push local 3
96+
push local 2
97+
push local 0
98+
add
99+
pop pointer 1
100+
push that 0
101+
add
102+
pop local 3
103+
push local 2
104+
push constant 1
105+
add
106+
pop local 2
107+
goto WHILE_EXP0
108+
label WHILE_END0
109+
push constant 15
110+
call String.new 1
111+
push constant 84
112+
call String.appendChar 2
113+
push constant 104
114+
call String.appendChar 2
115+
push constant 101
116+
call String.appendChar 2
117+
push constant 32
118+
call String.appendChar 2
119+
push constant 97
120+
call String.appendChar 2
121+
push constant 118
122+
call String.appendChar 2
123+
push constant 101
124+
call String.appendChar 2
125+
push constant 114
126+
call String.appendChar 2
127+
push constant 97
128+
call String.appendChar 2
129+
push constant 103
130+
call String.appendChar 2
131+
push constant 101
132+
call String.appendChar 2
133+
push constant 32
134+
call String.appendChar 2
135+
push constant 105
136+
call String.appendChar 2
137+
push constant 115
138+
call String.appendChar 2
139+
push constant 32
140+
call String.appendChar 2
141+
call Output.printString 1
142+
pop temp 0
143+
push local 3
144+
push local 1
145+
call Math.divide 2
146+
call Output.printInt 1
147+
pop temp 0
148+
push constant 0
149+
return

0 commit comments

Comments
 (0)