summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-01-29 19:04:48 +0100
committerLaurenz <laurmaedje@gmail.com>2023-01-29 19:11:44 +0100
commitf7458f9533d28b95dcd71b20166a5961f358e824 (patch)
treeb574d955a01d87a6b1b07f0eb0c78271f3738f30 /src
parent0911c709a8cc819946f8099af6d2e4bffef505a6 (diff)
Matrices
Diffstat (limited to 'src')
-rw-r--r--src/syntax/parser.rs17
1 files changed, 17 insertions, 0 deletions
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 {