Change crate name to 'deimos'; make compiler bin subproject.
This commit is contained in:
parent
66107b4310
commit
921a7fe834
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -1,7 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "deimos-lang"
|
||||
name = "deimos"
|
||||
version = "0.1.0"
|
||||
|
@ -1,6 +1,10 @@
|
||||
[package]
|
||||
name = "deimos-lang"
|
||||
name = "deimos"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[[bin]]
|
||||
name = "dmc"
|
||||
path = "src/bin/compiler"
|
||||
|
||||
[dependencies]
|
||||
|
13
src/bin/compiler/main.rs
Normal file
13
src/bin/compiler/main.rs
Normal file
@ -0,0 +1,13 @@
|
||||
use deimos::lexer::tokenize;
|
||||
use std::process::exit;
|
||||
|
||||
fn main() {
|
||||
let src = String::from("print 'Hello, World!'");
|
||||
let r = tokenize(&src);
|
||||
if let Err(e) = r {
|
||||
eprintln!("{}", e);
|
||||
exit(1);
|
||||
}
|
||||
let tokens = r.unwrap();
|
||||
println!("{:?}", tokens);
|
||||
}
|
@ -31,7 +31,7 @@ pub enum Token {
|
||||
Abstract,
|
||||
}
|
||||
|
||||
pub fn tokenize(input: &String) -> Result<Vec<Token>, &'static str> {
|
||||
pub fn tokenize(input: &String) -> Result<Vec<Token>, String> {
|
||||
let mut tokens: Vec<Token> = Vec::new();
|
||||
let mut peekable = input.chars().peekable();
|
||||
while let Some(c) = peekable.next() {
|
||||
@ -72,12 +72,14 @@ pub fn tokenize(input: &String) -> Result<Vec<Token>, &'static str> {
|
||||
match count {
|
||||
1 => tokens.push(Token::Dot),
|
||||
3 => tokens.push(Token::Ellipsis),
|
||||
_ => return Err("Unexpected number of tokens after '.'"),
|
||||
_ => return Err(String::from("Unexpected number of tokens after '.'")),
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
if let Some(token) = match_identifier_or_keyword(c, &mut peekable) {
|
||||
tokens.push(token);
|
||||
} else {
|
||||
return Err(String::from(format!("Unexpected token: {}", c)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
mod lexer;
|
||||
mod vm;
|
||||
pub mod lexer;
|
||||
pub mod vm;
|
||||
|
Loading…
Reference in New Issue
Block a user