try to fix top level expr parsing by trimming the opening bracket

This commit is contained in:
🪞👃🪞 2025-01-18 23:03:30 +01:00
parent 9756862091
commit 67148a4aa4
2 changed files with 5 additions and 2 deletions

View file

@ -91,7 +91,7 @@ pub(crate) use std::fmt::{Debug, Display, Formatter, Result as FormatResult, Err
source: src, source: src,
start: 0, start: 0,
length: src.len(), length: src.len(),
value: Exp(0, TokenIter(src)) value: Exp(0, TokenIter(&src[1..]))
})); }));
//panic!("{view:?}"); //panic!("{view:?}");
//panic!("{:#?}", expr); //panic!("{:#?}", expr);

View file

@ -28,6 +28,9 @@ impl<'a> Token<'a> {
pub const fn slice_source <'b> (&'a self, source: &'b str) -> &'b str { pub const fn slice_source <'b> (&'a self, source: &'b str) -> &'b str {
str_range(source, self.start, self.end()) str_range(source, self.start, self.end())
} }
pub const fn slice_source_exp <'b> (&'a self, source: &'b str) -> &'b str {
str_range(source, self.start + 1, self.end())
}
pub const fn value (&self) -> Value { pub const fn value (&self) -> Value {
self.value self.value
} }
@ -56,7 +59,7 @@ impl<'a> Token<'a> {
pub const fn grow_exp (self) -> Self { pub const fn grow_exp (self) -> Self {
let mut token = self.grow(); let mut token = self.grow();
if let Exp(depth, _) = token.value { if let Exp(depth, _) = token.value {
token.value = Exp(depth, TokenIter(token.slice_source(self.source))); token.value = Exp(depth, TokenIter(token.slice_source_exp(self.source)));
} else { } else {
unreachable!() unreachable!()
} }