Add parser and AST, remove some stuff from lexer
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user