a few changes enclosed:

* documented deps
* mild string escaping
* corrected a misbehavior in sym
This commit is contained in:
Ava Apples Affine 2023-04-19 21:03:26 -07:00
parent d7864ee628
commit 5afc2cc4a1
Signed by: affine
GPG key ID: 3A4645B8CF806069
4 changed files with 22 additions and 14 deletions

View file

@ -16,10 +16,18 @@
*/
use crate::segment::{Ctr, Seg};
use phf::{Map, phf_map};
const UNMATCHED_STR_DELIM: &str = "Unmatched string delimiter in input";
const UNMATCHED_LIST_DELIM: &str = "Unmatched list delimiter in input";
static ESCAPES: Map<char, char> = phf_map! {
'n' => '\n',
't' => '\t',
'\\' => '\\',
};
/* takes a line of user input
* returns an unsimplified tree of tokens.
*/
@ -71,7 +79,7 @@ fn process(document: &String) -> Result<Box<Seg>, String> {
delim = *d;
if delim == '*' {
token.push(c);
token.push(ESCAPES[&c]);
delim_stack.pop();
continue;
@ -136,7 +144,7 @@ fn process(document: &String) -> Result<Box<Seg>, String> {
delim_stack.push('\n');
}
// escape next char
'\\' => {
'\\' => if is_str {
delim_stack.push('*');
}
// add to token