From f7458f9533d28b95dcd71b20166a5961f358e824 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 29 Jan 2023 19:04:48 +0100 Subject: Matrices --- src/syntax/parser.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/syntax/parser.rs') diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index 602d9f2c..ad81cfa3 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -379,6 +379,8 @@ fn math_args(p: &mut Parser) { let mut namable = true; let mut named = None; + let mut has_arrays = false; + let mut array = p.marker(); let mut arg = p.marker(); while !p.eof() && !p.at(SyntaxKind::Dollar) { @@ -394,6 +396,17 @@ fn math_args(p: &mut Parser) { match p.current_text() { ")" => break, + ";" => { + maybe_wrap_in_math(p, arg, named); + p.wrap(array, SyntaxKind::Array); + p.convert(SyntaxKind::Semicolon); + array = p.marker(); + arg = p.marker(); + namable = true; + named = None; + has_arrays = true; + continue; + } "," => { maybe_wrap_in_math(p, arg, named); p.convert(SyntaxKind::Comma); @@ -418,6 +431,10 @@ fn math_args(p: &mut Parser) { maybe_wrap_in_math(p, arg, named); } + if has_arrays && array != p.marker() { + p.wrap(array, SyntaxKind::Array); + } + if p.at(SyntaxKind::Text) && p.current_text() == ")" { p.convert(SyntaxKind::RightParen); } else { -- cgit v1.2.3