This commit is contained in:
Yann Ahlgrim
2026-05-07 10:22:48 +02:00
parent ac4d512a79
commit 68bf2f4288
6 changed files with 66 additions and 0 deletions
+5
View File
@@ -19,3 +19,8 @@ target
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Added by cargo
/target
Generated
+7
View File
@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "rust-interpreter"
version = "0.1.0"
+6
View File
@@ -0,0 +1,6 @@
[package]
name = "rust-interpreter"
version = "0.1.0"
edition = "2024"
[dependencies]
+23
View File
@@ -0,0 +1,23 @@
struct Lexer {
input: String,
position: Option<i32>,
read_pos: Option<i32>,
ch: Option<i8>,
}
fn new(input_str: String) -> Lexer {
let l: Lexer = Lexer {
input: input_str,
position: None,
read_pos: None,
ch: None,
};
l
}
fn read_char(l: Lexer) {
let read_pos = usize::try_from(l.read_pos.unwrap());
if read_pos >= l.input.len() {
l.ch = 0;
}
}
+6
View File
@@ -0,0 +1,6 @@
mod lexer;
mod token;
fn main() {
println!("Hello, world!");
}
+19
View File
@@ -0,0 +1,19 @@
struct Token {
type_: String,
literal: String,
}
const ILLEGAL: &str = "ILLEGAL";
const EOF: &str = "EOF";
const IDENT: &str = "IDENT";
const INT: &str = "INT";
const ASSIGN: &str = "=";
const PLUS: &str = "+";
const COMMA: &str = ",";
const SEMICOLON: &str = ";";
const LPAREN: &str = "(";
const RPAREN: &str = ")";
const LBRACE: &str = "{";
const RBRACE: &str = "}";
const FUNCTION: &str = "FUNCTION";
const LET: &str = "LET";