diff --git a/tests/basic/arg-test.e.expect_lexer b/tests/basic/arg-test.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..9b52bc75f63d36218ee2911ee012d6b22b7f74f6
--- /dev/null
+++ b/tests/basic/arg-test.e.expect_lexer
@@ -0,0 +1,54 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(n)
+SYM_COMMA
+SYM_IDENTIFIER(m)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(10)
+SYM_SEMICOLON
+SYM_IDENTIFIER(b)
+SYM_ASSIGN
+SYM_INTEGER(20)
+SYM_SEMICOLON
+SYM_IF
+SYM_LPARENTHESIS
+SYM_INTEGER(3)
+SYM_GT
+SYM_IDENTIFIER(n)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_ELSE
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_IDENTIFIER(b)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RETURN
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_IDENTIFIER(f)
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(x)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(n)
+SYM_ASSIGN
+SYM_INTEGER(3)
+SYM_SEMICOLON
+SYM_RETURN
+SYM_INTEGER(3)
+SYM_ASTERISK
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/comment++.e.expect_lexer b/tests/basic/comment++.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..e8177132a7ceef3df7f9fac739c9f0d9b9faa029
--- /dev/null
+++ b/tests/basic/comment++.e.expect_lexer
@@ -0,0 +1,9 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_RETURN
+SYM_INTEGER(23)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/loop.e.expect_lexer b/tests/basic/loop.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..b2b14285bdee5eb480b2cab773cfd3aa64101ef9
--- /dev/null
+++ b/tests/basic/loop.e.expect_lexer
@@ -0,0 +1,64 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_INTEGER(10)
+SYM_SEMICOLON
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(2)
+SYM_SEMICOLON
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_INTEGER(0)
+SYM_SEMICOLON
+SYM_WHILE
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_GT
+SYM_INTEGER(0)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_PLUS
+SYM_IDENTIFIER(a)
+SYM_SEMICOLON
+SYM_IF
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(a)
+SYM_GT
+SYM_INTEGER(4)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_IDENTIFIER(res)
+SYM_PLUS
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_ELSE
+SYM_LBRACE
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_IDENTIFIER(res)
+SYM_MINUS
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_IDENTIFIER(i)
+SYM_MINUS
+SYM_INTEGER(1)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RETURN
+SYM_IDENTIFIER(res)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/loop2.e.expect_lexer b/tests/basic/loop2.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..49c48c916d4a853a0ab850055e335a22a4361cc9
--- /dev/null
+++ b/tests/basic/loop2.e.expect_lexer
@@ -0,0 +1,46 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_INTEGER(20)
+SYM_SEMICOLON
+SYM_WHILE
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_GT
+SYM_INTEGER(0)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IF
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_LT
+SYM_INTEGER(5)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(5)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_ELSE
+SYM_LBRACE
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(6)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_IDENTIFIER(i)
+SYM_MINUS
+SYM_INTEGER(1)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RETURN
+SYM_IDENTIFIER(i)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/loop3.e.expect_lexer b/tests/basic/loop3.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..832926e80f7a2578d0023bb9aa346ebdb15b21ea
--- /dev/null
+++ b/tests/basic/loop3.e.expect_lexer
@@ -0,0 +1,59 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_INTEGER(20)
+SYM_SEMICOLON
+SYM_IDENTIFIER(c)
+SYM_ASSIGN
+SYM_INTEGER(8)
+SYM_SEMICOLON
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(5)
+SYM_SEMICOLON
+SYM_IDENTIFIER(b)
+SYM_ASSIGN
+SYM_INTEGER(0)
+SYM_SEMICOLON
+SYM_WHILE
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_GT
+SYM_INTEGER(0)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IF
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_LT
+SYM_INTEGER(5)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(4)
+SYM_PLUS
+SYM_IDENTIFIER(c)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_IDENTIFIER(b)
+SYM_ASSIGN
+SYM_IDENTIFIER(b)
+SYM_PLUS
+SYM_IDENTIFIER(a)
+SYM_SEMICOLON
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_IDENTIFIER(i)
+SYM_MINUS
+SYM_INTEGER(1)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RETURN
+SYM_IDENTIFIER(b)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/loop4.e.expect_lexer b/tests/basic/loop4.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..8bf2ff89ccfceec363016ef4768b3d86d644754d
--- /dev/null
+++ b/tests/basic/loop4.e.expect_lexer
@@ -0,0 +1,89 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_INTEGER(10)
+SYM_SEMICOLON
+SYM_IDENTIFIER(a)
+SYM_ASSIGN
+SYM_INTEGER(2)
+SYM_SEMICOLON
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_INTEGER(0)
+SYM_SEMICOLON
+SYM_WHILE
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_GT
+SYM_INTEGER(0)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_PLUS
+SYM_IDENTIFIER(a)
+SYM_SEMICOLON
+SYM_IDENTIFIER(y)
+SYM_ASSIGN
+SYM_INTEGER(1)
+SYM_PLUS
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_IF
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_GT
+SYM_INTEGER(4)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_IDENTIFIER(res)
+SYM_PLUS
+SYM_IDENTIFIER(x)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_ELSE
+SYM_LBRACE
+SYM_IF
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(i)
+SYM_LT
+SYM_INTEGER(2)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_IDENTIFIER(res)
+SYM_MINUS
+SYM_IDENTIFIER(y)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_ELSE
+SYM_LBRACE
+SYM_IDENTIFIER(res)
+SYM_ASSIGN
+SYM_IDENTIFIER(res)
+SYM_PLUS
+SYM_IDENTIFIER(x)
+SYM_MINUS
+SYM_IDENTIFIER(y)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RBRACE
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_IDENTIFIER(i)
+SYM_MINUS
+SYM_INTEGER(1)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_RETURN
+SYM_IDENTIFIER(res)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/lots-of-regs.e.expect_lexer b/tests/basic/lots-of-regs.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..522f1b2f4a03f3850091bed481b1219bc6007af2
--- /dev/null
+++ b/tests/basic/lots-of-regs.e.expect_lexer
@@ -0,0 +1,144 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_IDENTIFIER(a)
+SYM_COMMA
+SYM_IDENTIFIER(b)
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_SEMICOLON
+SYM_IDENTIFIER(y)
+SYM_ASSIGN
+SYM_IDENTIFIER(b)
+SYM_SEMICOLON
+SYM_IDENTIFIER(z)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_ASTERISK
+SYM_IDENTIFIER(b)
+SYM_SEMICOLON
+SYM_IDENTIFIER(t)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_PLUS
+SYM_IDENTIFIER(b)
+SYM_PLUS
+SYM_IDENTIFIER(z)
+SYM_SEMICOLON
+SYM_IDENTIFIER(u)
+SYM_ASSIGN
+SYM_IDENTIFIER(z)
+SYM_MINUS
+SYM_INTEGER(3)
+SYM_SEMICOLON
+SYM_IDENTIFIER(v)
+SYM_ASSIGN
+SYM_IDENTIFIER(x)
+SYM_MINUS
+SYM_IDENTIFIER(u)
+SYM_SEMICOLON
+SYM_IDENTIFIER(w)
+SYM_ASSIGN
+SYM_IDENTIFIER(a)
+SYM_ASTERISK
+SYM_IDENTIFIER(x)
+SYM_PLUS
+SYM_IDENTIFIER(z)
+SYM_MINUS
+SYM_IDENTIFIER(t)
+SYM_SEMICOLON
+SYM_IDENTIFIER(i)
+SYM_ASSIGN
+SYM_INTEGER(35)
+SYM_SEMICOLON
+SYM_IDENTIFIER(j)
+SYM_ASSIGN
+SYM_IDENTIFIER(i)
+SYM_ASTERISK
+SYM_IDENTIFIER(w)
+SYM_SEMICOLON
+SYM_IDENTIFIER(k)
+SYM_ASSIGN
+SYM_INTEGER(8)
+SYM_ASTERISK
+SYM_IDENTIFIER(t)
+SYM_PLUS
+SYM_IDENTIFIER(z)
+SYM_DIV
+SYM_IDENTIFIER(i)
+SYM_SEMICOLON
+SYM_IDENTIFIER(l)
+SYM_ASSIGN
+SYM_INTEGER(19)
+SYM_ASTERISK
+SYM_IDENTIFIER(k)
+SYM_SEMICOLON
+SYM_IDENTIFIER(m)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(n)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(o)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(p)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(q)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(r)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_IDENTIFIER(s)
+SYM_ASSIGN
+SYM_INTEGER(12)
+SYM_SEMICOLON
+SYM_RETURN
+SYM_IDENTIFIER(x)
+SYM_PLUS
+SYM_IDENTIFIER(y)
+SYM_PLUS
+SYM_IDENTIFIER(z)
+SYM_PLUS
+SYM_IDENTIFIER(t)
+SYM_PLUS
+SYM_IDENTIFIER(u)
+SYM_PLUS
+SYM_IDENTIFIER(v)
+SYM_PLUS
+SYM_IDENTIFIER(w)
+SYM_PLUS
+SYM_IDENTIFIER(i)
+SYM_PLUS
+SYM_IDENTIFIER(j)
+SYM_PLUS
+SYM_IDENTIFIER(k)
+SYM_PLUS
+SYM_IDENTIFIER(l)
+SYM_PLUS
+SYM_IDENTIFIER(m)
+SYM_PLUS
+SYM_IDENTIFIER(n)
+SYM_PLUS
+SYM_IDENTIFIER(o)
+SYM_PLUS
+SYM_IDENTIFIER(p)
+SYM_PLUS
+SYM_IDENTIFIER(q)
+SYM_PLUS
+SYM_IDENTIFIER(r)
+SYM_PLUS
+SYM_IDENTIFIER(s)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF
diff --git a/tests/basic/useless-assigns.e.expect_lexer b/tests/basic/useless-assigns.e.expect_lexer
new file mode 100644
index 0000000000000000000000000000000000000000..71d12f4ba5810e6c87fb0289a8f2c075f8827ae3
--- /dev/null
+++ b/tests/basic/useless-assigns.e.expect_lexer
@@ -0,0 +1,25 @@
+SYM_IDENTIFIER(main)
+SYM_LPARENTHESIS
+SYM_RPARENTHESIS
+SYM_LBRACE
+SYM_IDENTIFIER(x)
+SYM_ASSIGN
+SYM_INTEGER(8)
+SYM_SEMICOLON
+SYM_IDENTIFIER(y)
+SYM_ASSIGN
+SYM_INTEGER(15)
+SYM_SEMICOLON
+SYM_IDENTIFIER(z)
+SYM_ASSIGN
+SYM_INTEGER(4)
+SYM_ASTERISK
+SYM_IDENTIFIER(x)
+SYM_PLUS
+SYM_IDENTIFIER(y)
+SYM_SEMICOLON
+SYM_RETURN
+SYM_INTEGER(1)
+SYM_SEMICOLON
+SYM_RBRACE
+SYM_EOF