diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-07-27 16:50:48 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-07-27 16:50:48 +0300 |
commit | 1bd9d5bbd304926f464cf23870b17a46385b9f7a (patch) | |
tree | 1fcdfb06601db88b9b8daa8aec73c48406125a50 /src/parse/parsetree.rs | |
parent | 794df40494e8c83532aed39153088697aca2f57b (diff) | |
download | myslip-1bd9d5bbd304926f464cf23870b17a46385b9f7a.tar.gz myslip-1bd9d5bbd304926f464cf23870b17a46385b9f7a.zip |
Created parse_token and added tests for it
Diffstat (limited to 'src/parse/parsetree.rs')
-rw-r--r-- | src/parse/parsetree.rs | 40 |
1 files changed, 40 insertions, 0 deletions
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")))); + } + +} |