From b1d118a1a258c2aa922548b6618aba2ce9f08d32 Mon Sep 17 00:00:00 2001 From: LunarAkai Date: Thu, 7 Aug 2025 23:30:33 +0200 Subject: [PATCH] . --- README.md | 1 + src/language_frontend/abstract_syntax_tree/ast.rs | 7 ++++++- src/main.rs | 15 +++++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e290269..87f0869 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Akai Lang (yeah I'm not creative and the name is still unused on github, sooo) i ## Planned Features - Object-Oriented - dynamic typing / Type inference +- Rust-like Error handling ( Result ) - LLVM Backend ## Hello World diff --git a/src/language_frontend/abstract_syntax_tree/ast.rs b/src/language_frontend/abstract_syntax_tree/ast.rs index 6242f67..868598b 100644 --- a/src/language_frontend/abstract_syntax_tree/ast.rs +++ b/src/language_frontend/abstract_syntax_tree/ast.rs @@ -21,8 +21,13 @@ pub enum Expr { CharLiteral(char), - Null, + Result, // todo + Option, // todo + + Ok, // todo + + Err, // todo Call { callee: Box, diff --git a/src/main.rs b/src/main.rs index e127dd7..8bc4d26 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use chumsky::input::{Input, Stream}; +use chumsky::prelude::end; use chumsky::Parser; use logos::Logos; @@ -32,10 +33,10 @@ fn main() { Err(()) => (Token::Error, span.into()), }); - println!("Token Stream:"); - for (token, span) in token_iter.clone() { - println!("{:?} at {:?}", token, span); - } + //println!("Token Stream:"); + //for (token, span) in token_iter.clone() { + // println!("{:?} at {:?}", token, span); + //} // Turn the token iterator into a stream that chumsky can use for things like backtracking let token_stream = Stream::from_iter(token_iter) @@ -45,15 +46,17 @@ fn main() { println!("{:?}", sourcecode); + /* let lexer = Token::lexer(&sourcecode) .spanned(); //.collect::>(); for token in lexer { println!("{:?}", token); - } + } + */ - match parser().parse(token_stream).into_result() { + match parser().then_ignore(end()).parse(token_stream).into_result() { Ok(res) => println!("{:?}", res), Err(e) => { panic!("{:#?}", e)