fuck floats
imagine #[derive(Eq)] for anything that has a float anywhere... HAH
This commit is contained in:
parent
8e8d54c4b5
commit
72a8791111
7 changed files with 58 additions and 2 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
/target
|
/target
|
||||||
.vscode/
|
.vscode/
|
||||||
|
.idea
|
||||||
|
|
0
src/error.rs
Normal file
0
src/error.rs
Normal file
|
@ -21,6 +21,7 @@ fn main() {
|
||||||
let file = fs::read_to_string(path).expect("Couldnt read file:");
|
let file = fs::read_to_string(path).expect("Couldnt read file:");
|
||||||
|
|
||||||
let code = preprocess(file);
|
let code = preprocess(file);
|
||||||
|
println!("{}", code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ impl Lexer {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn tokenize(&mut self) {
|
pub fn tokenize(&mut self) -> Vec<Token> {
|
||||||
let mut tokens: Vec<Token> = vec![];
|
let mut tokens: Vec<Token> = vec![];
|
||||||
self.code = preprocess(self.code.clone());
|
self.code = preprocess(self.code.clone());
|
||||||
|
|
||||||
|
@ -72,6 +72,7 @@ impl Lexer {
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("{:?}", tokens);
|
println!("{:?}", tokens);
|
||||||
|
tokens
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_nr_token(&mut self) -> Token {
|
fn make_nr_token(&mut self) -> Token {
|
||||||
|
@ -87,7 +88,6 @@ impl Lexer {
|
||||||
}
|
}
|
||||||
nr.push(self.current.unwrap());
|
nr.push(self.current.unwrap());
|
||||||
self.next();
|
self.next();
|
||||||
println!("{:?}", self.current.unwrap());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if dot_amount == 1 {
|
if dot_amount == 1 {
|
||||||
|
@ -97,3 +97,9 @@ impl Lexer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_operators() {
|
||||||
|
let mut lexer = Lexer::new("+-*/".to_string());
|
||||||
|
assert_eq!(lexer.tokenize(), vec![Token::ADD, Token::SUBTRACT, Token::MULTIPLY, Token::DIVIDE]);
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
pub mod lexer;
|
pub mod lexer;
|
||||||
pub mod preprocessor;
|
pub mod preprocessor;
|
||||||
pub mod token;
|
pub mod token;
|
||||||
|
pub mod parser;
|
||||||
|
|
16
src/parsing/parser.rs
Normal file
16
src/parsing/parser.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
use super::token::Token;
|
||||||
|
|
||||||
|
pub struct Parser {
|
||||||
|
tokens: Vec<Token>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Parser {
|
||||||
|
pub fn new(tokens: Vec<Token>) -> Parser {
|
||||||
|
Parser {
|
||||||
|
tokens
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn analyze_math(&self, tokens: Vec<Token>) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,4 +25,35 @@ pub fn remove_empty_lines(text: String) -> String {
|
||||||
out
|
out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_preprocessor() {
|
||||||
|
let code = preprocess("
|
||||||
|
&& line comment test
|
||||||
|
|
||||||
|
|
||||||
|
¡<= ]] inline comment example [[ /\"inline comments work\"\\!
|
||||||
|
|
||||||
|
``
|
||||||
|
big ass block comment!
|
||||||
|
ye boiiiii
|
||||||
|
´´
|
||||||
|
|
||||||
|
&& declare variable out as string
|
||||||
|
¡}}string{{ out!
|
||||||
|
|
||||||
|
&& take input and take it into var
|
||||||
|
¡=> /out\\!
|
||||||
|
|
||||||
|
&& log out
|
||||||
|
¡<= /out\\!
|
||||||
|
|
||||||
|
".to_string());
|
||||||
|
|
||||||
|
println!("{:?}", code);
|
||||||
|
|
||||||
|
assert_eq!(code, "\
|
||||||
|
¡<= /\"inline comments work\"\\!
|
||||||
|
¡}}string{{ out!
|
||||||
|
¡=> /out\\!
|
||||||
|
¡<= /out\\!\n");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue