diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage
index 143e386..a5486ef 100644
--- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage
+++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage
@@ -991,6 +991,12 @@
patterns
+
+ name
+ punctuation.separator.modifier.comma.matlab
+ match
+ ,
+
name
storage.modifier.properties.matlab
@@ -1009,9 +1015,13 @@
end
- ,|(?=\))
+ (?=\)|,)
patterns
+
+ include
+ #string
+
name
constant.language.boolean.matlab
@@ -1022,7 +1032,21 @@
name
storage.modifier.access.matlab
match
- public|protected|private
+ public|protected|private|immutable
+
+
+ include
+ #curly_brackets
+
+
+ include
+ #metaclass_literal
+
+
+ name
+ constant.integer.matlab
+ match
+ [0-9]+
@@ -1075,6 +1099,12 @@
patterns
+
+ name
+ punctuation.separator.modifier.comma.matlab
+ match
+ ,
+
name
storage.modifier.methods.matlab
@@ -1083,11 +1113,23 @@
begin
- =\s*
+ (=)\s*
end
- ,|(?=\))
+ (?=\)|,)
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.assignment.matlab
+
+
patterns
+
+ include
+ #string
+
name
constant.language.boolean.matlab
@@ -1098,7 +1140,21 @@
name
storage.modifier.access.matlab
match
- public|protected|private
+ public|protected|private|immutable
+
+
+ include
+ #curly_brackets
+
+
+ include
+ #metaclass_literal
+
+
+ name
+ constant.integer.matlab
+ match
+ [0-9]+
@@ -1149,17 +1205,35 @@
name
- variable.parameter.events.matlab
+ punctuation.separator.modifier.comma.matlab
+ match
+ ,
+
+
+ name
+ storage.modifier.events.matlab
match
[a-zA-Z][a-zA-Z0-9_]*
begin
- =\s*
+ (=)\s*
+ beginCaptures
+
+ 1
+
+ name
+ keyword.operator.assignment.matlab
+
+
end
- ,|(?=\))
+ (?=\)|,)
patterns
+
+ include
+ #string
+
name
constant.language.boolean.matlab
@@ -1170,7 +1244,21 @@
name
storage.modifier.access.matlab
match
- public|protected|private
+ public|protected|private|immutable
+
+
+ include
+ #curly_brackets
+
+
+ include
+ #metaclass_literal
+
+
+ name
+ constant.integer.matlab
+ match
+ [0-9]+
diff --git a/test/snap/Account.m.snap b/test/snap/Account.m.snap
index 3876790..629e60b 100644
--- a/test/snap/Account.m.snap
+++ b/test/snap/Account.m.snap
@@ -355,9 +355,10 @@
#^^^^ source.matlab meta.class.matlab meta.events.matlab
# ^^^^^^ source.matlab meta.class.matlab meta.events.matlab keyword.control.events.matlab
# ^^ source.matlab meta.class.matlab meta.events.matlab
-# ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab variable.parameter.events.matlab
+# ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.events.matlab
# ^ source.matlab meta.class.matlab meta.events.matlab
-# ^^ source.matlab meta.class.matlab meta.events.matlab
+# ^ source.matlab meta.class.matlab meta.events.matlab keyword.operator.assignment.matlab
+# ^ source.matlab meta.class.matlab meta.events.matlab
# ^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.access.matlab
# ^^ source.matlab meta.class.matlab meta.events.matlab
# ^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab
@@ -401,4 +402,4 @@
# ^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.end.enum.matlab
>end
#^^^ source.matlab meta.class.matlab storage.type.class.end.matlab
->
+>
\ No newline at end of file
diff --git a/test/snap/PropertyValidation.m.snap b/test/snap/PropertyValidation.m.snap
index 61dd9ed..5f0b555 100644
--- a/test/snap/PropertyValidation.m.snap
+++ b/test/snap/PropertyValidation.m.snap
@@ -10,18 +10,18 @@
# ^ source.matlab meta.class.matlab meta.properties.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab
-# ^ source.matlab meta.class.matlab meta.properties.matlab
-# ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.access.matlab
-# ^ source.matlab meta.class.matlab meta.properties.matlab
-# ^ source.matlab meta.class.matlab meta.properties.matlab
+# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab
+# ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab
+# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab
+# ^ source.matlab meta.class.matlab meta.properties.matlab punctuation.separator.modifier.comma.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab
# ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.properties.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab
# ^ source.matlab meta.class.matlab meta.properties.matlab
-# ^ source.matlab meta.class.matlab meta.properties.matlab
-# ^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.access.matlab
-# ^ source.matlab meta.class.matlab meta.properties.matlab
+# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab
+# ^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab
+# ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab
# ^^ source.matlab meta.class.matlab meta.properties.matlab
> % Commentary in the properties block
#^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab punctuation.whitespace.comment.leading.matlab
diff --git a/test/snap/controlFlow.m.snap b/test/snap/controlFlow.m.snap
index 4b3cf70..9265b0c 100644
--- a/test/snap/controlFlow.m.snap
+++ b/test/snap/controlFlow.m.snap
@@ -120,7 +120,7 @@
#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab
# ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab keyword.control.elseif.matlab
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab
-# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab
+# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab keyword.operator.relational.matlab
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab
@@ -147,7 +147,7 @@
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab
# ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab punctuation.terminator.semicolon.matlab
> end
-#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab
+#^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab
# ^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.control.end.if.matlab
>catch ME
#^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab keyword.control.catch.matlab
diff --git a/test/snap/lineContinuations.m.snap b/test/snap/lineContinuations.m.snap
index 1e4d342..7c74011 100644
--- a/test/snap/lineContinuations.m.snap
+++ b/test/snap/lineContinuations.m.snap
@@ -78,7 +78,7 @@
# ^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab
> arg2 ... comment
#^^^^ source.matlab meta.function-call.parens.matlab
-# ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab
+# ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab
# ^ source.matlab meta.function-call.parens.matlab
# ^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab
# ^^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab
diff --git a/test/t08PropertyValidation.m b/test/t08PropertyValidation.m
index 8cce060..1d1937f 100644
--- a/test/t08PropertyValidation.m
+++ b/test/t08PropertyValidation.m
@@ -3,10 +3,10 @@
properties (GetAccess = 'public', SetAccess = 'private')
% ^^^^^^^^^ storage.modifier.properties.matlab
% ^ keyword.operator.assignment.matlab
-% ^^^^^^ storage.modifier.access.matlab
+% ^^^^^^^^ string.quoted.single.matlab
% ^^^^^^^^^ storage.modifier.properties.matlab
% ^ keyword.operator.assignment.matlab
-% ^^^^^^^ storage.modifier.access.matlab
+% ^^^^^^^^^ string.quoted.single.matlab
% Commentary in the properties block
% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab
Prop % comment
diff --git a/test/t95AttributeParsing.m b/test/t95AttributeParsing.m
new file mode 100644
index 0000000..6d9545c
--- /dev/null
+++ b/test/t95AttributeParsing.m
@@ -0,0 +1,15 @@
+% SYNTAX TEST "source.matlab" "Property etc. attribute parsing: https://github.com/mathworks/MATLAB-Language-grammar/issues/95"
+classdef Class
+ % Some properties
+ properties (SetAccess=public, GetAccess={?foo.bar.baz})
+% ^^^^^^^^^^^^ meta.cell.literal.matlab
+ end
+
+ events (Hidden=true, ListenAccess={?foo.bar}, NotifyAccess=?bar.baz)
+% ^^^^^^^^ meta.cell.literal.matlab
+ end
+
+ methods (Access=?bar.baz, Abstract=false)
+% ^^^^^^^ meta.metaclass.matlab
+ end
+end