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)
|
Some(ch)
|
||||||
}
|
}
|
||||||
fn word_splitter(ch: char) -> bool {
|
fn word_splitter(ch: char) -> bool {
|
||||||
ch.is_whitespace() || ".,;)}".contains(ch)
|
ch.is_whitespace() || ".,;[](){}".contains(ch)
|
||||||
}
|
}
|
||||||
pub fn peek_word(&self) -> &str {
|
pub fn peek_word(&self) -> &str {
|
||||||
self.src[self.i..]
|
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() {
|
if let Some('.') = src.peek_char() {
|
||||||
src.next_char();
|
src.next_char();
|
||||||
let chained = parse_no_chain(src)?.expect("err: EOF instead of chain");
|
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 {
|
first = Box::new(program::parsed::chain::Chain {
|
||||||
pos_in_src: (pos_in_src, src.get_pos()).into(),
|
pos_in_src: (pos_in_src, src.get_pos()).into(),
|
||||||
first,
|
first,
|
||||||
|
Loading…
Reference in New Issue
Block a user