Add parser and AST, remove some stuff from lexer

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-04-27 20:17:16 -04:00
parent ce97d90f9d
commit 28d29c2270
8 changed files with 340 additions and 56 deletions

View File

@@ -3,6 +3,8 @@ use std::fmt::{Display, Formatter, self};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TokenKind {
KwReturn,
Ident,
Num,
Str,
@@ -18,14 +20,18 @@ pub enum TokenKind {
Eq,
Arrow,
KwReturn,
Plus,
Minus,
Splat,
FSlash,
}
impl Display for TokenKind {
fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
use TokenKind::*;
let s = match self {
KwReturn => "return keyword",
Ident => "identifier",
Num => "number",
Str => "string",
@@ -41,8 +47,10 @@ impl Display for TokenKind {
Eq => "equals",
Arrow => "arrow",
KwReturn => "return keyword",
Plus => "plus",
Minus => "minus",
Splat => "splat (or times)",
FSlash => "fslash (or divide)",
};
Display::fmt(s, fmt)
}