mirror of
https://github.com/Dummi26/mers.git
synced 2025-03-10 14:13:52 +01:00
add support for a.f(b, c, d) syntax
This commit is contained in:
parent
09fbf2ab0a
commit
e60714e020
@ -131,7 +131,7 @@ impl Source {
|
||||
Some(ch)
|
||||
}
|
||||
fn word_splitter(ch: char) -> bool {
|
||||
ch.is_whitespace() || ".,;)}".contains(ch)
|
||||
ch.is_whitespace() || ".,;[](){}".contains(ch)
|
||||
}
|
||||
pub fn peek_word(&self) -> &str {
|
||||
self.src[self.i..]
|
||||
|
@ -49,6 +49,16 @@ pub fn parse(src: &mut Source) -> Result<Option<Box<dyn program::parsed::MersSta
|
||||
if let Some('.') = src.peek_char() {
|
||||
src.next_char();
|
||||
let chained = parse_no_chain(src)?.expect("err: EOF instead of chain");
|
||||
// allow a.f(b, c) syntax (but not f(a, b, c))
|
||||
if let Some('(') = src.peek_char() {
|
||||
let pos_in_src = src.get_pos();
|
||||
src.next_char();
|
||||
let elems = parse_multiple(src, ")")?;
|
||||
first = Box::new(program::parsed::tuple::Tuple {
|
||||
pos_in_src: (pos_in_src, src.get_pos()).into(),
|
||||
elems: [first].into_iter().chain(elems).collect(),
|
||||
});
|
||||
}
|
||||
first = Box::new(program::parsed::chain::Chain {
|
||||
pos_in_src: (pos_in_src, src.get_pos()).into(),
|
||||
first,
|
||||
|
Loading…
Reference in New Issue
Block a user