From 1bd9d5bbd304926f464cf23870b17a46385b9f7a Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Sun, 27 Jul 2025 16:50:48 +0300 Subject: Created parse_token and added tests for it --- src/parse/parsetree.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/parse/parsetree.rs (limited to 'src/parse/parsetree.rs') diff --git a/src/parse/parsetree.rs b/src/parse/parsetree.rs new file mode 100644 index 0000000..8887200 --- /dev/null +++ b/src/parse/parsetree.rs @@ -0,0 +1,40 @@ + +use nom::{ + IResult, + Parser, +}; + + +#[derive(Debug,PartialEq)] +pub enum Token { + ParOpen, + ParClose, + Num(i32), + Sym(String), + Whitespace(String), +} + +fn parse_token(s: &str) -> IResult<&str, Token> { + todo!() +} + +#[cfg(test)] +mod private_parsing_tests { + use super::{*, Token::*}; + use crate::parse::util::*; + + #[test] + fn test_parse_token() { + assert_eq!(parse_token("()"), Ok((")", ParOpen))); + assert_eq!(parse_token(")"), Ok(("", ParClose))); + + assert_eq!(parse_token(" \t\n"), Ok(("", whitespace(" \t\n")))); + + assert_eq!(parse_token("1 23"), Ok((" 23", Num(1)))); + assert_eq!(parse_token("23"), Ok(("", Num(23)))); + + assert_eq!(parse_token("Nil a"), Ok((" a", sym("Nil")))); + assert_eq!(parse_token("a"), Ok(("", sym("a")))); + } + +} -- cgit v1.2.3