diff --git a/examples/lex.rs b/examples/lex.rs
index 9640c15bb6d01802b905d9e6108a5ae4a7391644..51f416eda6fcdb5acb2d55035a04b9a28732898f 100644
--- a/examples/lex.rs
+++ b/examples/lex.rs
@@ -11,6 +11,9 @@ fn main() {
     let tokens = lexer.lex(source);
     match tokens {
         Ok(tokens) => {
+            for token in &tokens.tokens {
+                info!("{:?}", token);
+            }
             println!("Keywords:\n{}", tokens.get_keywords());
             println!("Identifiers:\n{}", tokens.get_identifiers());
             println!("Integers:\n{}", tokens.get_integer_literals());
diff --git a/src/ast/mod.rs b/src/ast/mod.rs
index 274142d3454fd9b31ddfd33c173ca3e96400a812..e17b2c070c98048c34f72aa4b2d5f345ae87a523 100644
--- a/src/ast/mod.rs
+++ b/src/ast/mod.rs
@@ -1 +1,21 @@
-mod node;
+// mod node;
+// 
+// pub enum Program {
+//     VarList(Vec<Var>),
+//     FunList(Vec<Fun>),
+// }
+// 
+// pub struct ID {
+//     pub name: String,
+// }
+// 
+// pub struct Var {
+//     pub name: String,
+//     pub value: Option<Expr>,
+// }
+// 
+// pub struct Fun {
+//     pub name: String,
+//     pub params: Vec<ID>,
+//     pub body: Vec<Stmt>,
+// }
\ No newline at end of file
diff --git a/src/ast/node.rs b/src/ast/node.rs
index 188a0ef9ec3d32baa833d104293c9709331de8ec..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/ast/node.rs
+++ b/src/ast/node.rs
@@ -1,12 +0,0 @@
-pub struct Node<'a> {
-    pub op: i32,
-    pub val: String,
-    pub sym: IdList,
-    pub fnum: i32,
-    pub line_no: i32,
-    pub left: &'a Node<'a>,
-    pub right: &'a Node<'a>,
-    pub next: &'a Node<'a>,
-}
-
-pub struct IdList {}
diff --git a/src/lib.rs b/src/lib.rs
index 22310259fb2e7cd29f98462485b37639a228060f..f0bf18cab1e0a46804c1d0ef7e4c15c03e033492 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,5 +1,6 @@
 mod ast;
 pub mod lex;
+mod parser;
 
 extern crate pretty_env_logger;
 #[macro_use] extern crate log;
\ No newline at end of file
diff --git a/src/parser/mod.rs b/src/parser/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..44d0bbf2e9d0bc7dd8d84963c4d909942ca0e561
--- /dev/null
+++ b/src/parser/mod.rs
@@ -0,0 +1,12 @@
+use crate::lex::lexer::TokenStream;
+
+pub struct Parser {
+    tokens: TokenStream,
+}
+
+impl Parser {
+    // This should parse a token stream into an AST.
+    pub fn parse(tokens: TokenStream) {
+        todo!("Implement parser");
+    }
+}
\ No newline at end of file