aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCody <cody@codyq.dev>2023-03-30 02:44:54 -0500
committerCody <cody@codyq.dev>2023-03-30 02:44:54 -0500
commit2970520a9592b5c6d45291f54073552a474b71b4 (patch)
treef42ecc1be0989367cf7c70d0b7909bac0b86904e /src
parentbb95375f8b24141bf7dfe5a8b1bba5c995f61253 (diff)
downloadsloth-2970520a9592b5c6d45291f54073552a474b71b4.tar.gz
Restructure
Diffstat (limited to 'src')
-rw-r--r--src/lexer.rs153
-rw-r--r--src/main.rs32
2 files changed, 0 insertions, 185 deletions
diff --git a/src/lexer.rs b/src/lexer.rs
deleted file mode 100644
index 8631eef..0000000
--- a/src/lexer.rs
+++ /dev/null
@@ -1,153 +0,0 @@
-#![allow(dead_code)]
-
-use thiserror::Error;
-
-#[derive(Debug, Error)]
-pub enum LexerError {
- #[error("Unexpected token")]
- UnexpectedToken,
-}
-
-#[derive(Debug, Clone, Eq, PartialEq)]
-pub enum TokenType {
- // Meta
- DocComment,
- Comment,
-
- // Brackets
- OpeningParen, // (
- ClosingParen, // )
- OpeningBracket, // [
- ClosingBracket, // ]
- OpeningBrace, // {
- ClosingBrace, // }
-
- // Operators
- Plus, // +
- PlusPlus, // ++
- Minus, // -
- Star, // *
- StarStar, // **
- Slash, // /
- Perc, // %
- Tilde, // ~
-
- PlusEq, // +=
- PlusPlusEq, // ++=
- MinusEq, // -=
- StarEq, // *=
- StarStarEq, // **=
- SlashEq, // /=
- PercEq, // %=
-
- Amp, // &
- AmpAmp, // &&
- Pipe, // |
- PipePipe, // ||
-
- Eq, // =
- EqEq, // ==
- Bang, // !
- BangBang, // !!
- BangEq, // !=
-
- Lt, // <
- LtLt, // <<
- LtEq, // <=
- Gt, // >
- GtGt, // >>
- GtEq, // >=
-
- Comma,
-
- Question, // ?
- QuestionDot, // ?.
- QuestionQuestion, // ??
- Dot, // .
- DotDot, // ..
-
- Colon, // :
- ColonColon, // ::
- SemiColon, // ;
-
- Arrow, // ->
-
- // Keywords
- Val,
- Var,
-
- Fn,
-
- If,
- Else,
-
- While,
- For,
- In,
-
- Loop,
- Break,
- Continue,
-
- As,
-
- // Misc
- Literal(Literal),
-}
-
-#[derive(Debug, Clone, Eq, PartialEq)]
-pub enum Literal {
- Numeric,
- Boolean,
- Character,
- String,
- Regex,
-}
-
-#[derive(Debug, Default)]
-pub struct Location {
- row: u32,
- column: u32,
-}
-
-#[derive(Debug)]
-pub struct Token<'a> {
- pub tt: TokenType,
- pub lexeme: &'a str,
-
- start: Location,
- end: Location,
-}
-
-pub struct Lexer<'a> {
- source: &'a [u8],
-
- start: Location,
- end: Location,
-}
-
-impl<'a> Lexer<'a> {
- fn new(source: &'a str) -> Self {
- Self {
- source: source.as_bytes(),
- start: Default::default(),
- end: Default::default(),
- }
- }
-}
-
-impl<'a> Iterator for Lexer<'a> {
- type Item = Token<'a>;
-
- fn next(&mut self) -> Option<Self::Item> {
- unimplemented!()
- }
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn basic_test_a() {
- //
- }
-}
diff --git a/src/main.rs b/src/main.rs
deleted file mode 100644
index 89ce7f9..0000000
--- a/src/main.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-#![feature(test, let_chains)]
-#![warn(
- clippy::wildcard_imports,
- clippy::string_add,
- clippy::string_add_assign,
- clippy::manual_ok_or,
- unused_lifetimes
-)]
-
-pub mod lexer;
-
-use std::{env, fs};
-
-use itertools::Itertools;
-
-fn main() {
- let args = env::args().collect_vec();
-
- if args.len() < 2 {
- println!("Sloth programming language interpreter\n");
- println!("Usage: sloth <file>");
- return;
- }
-
- let source_path = &args[1];
- let Ok(_source) = fs::read_to_string(source_path) else {
- println!("Error while reading '{source_path}'");
- return;
- };
-
- // TODO:
-}