├── .github └── workflows │ └── test.yml ├── .gitignore ├── .vscode └── settings.json ├── Account.m ├── AnEnum.m ├── CircleArea.m ├── Matlab.tmbundle └── Syntaxes │ └── MATLAB.tmLanguage ├── PropertyValidation.m ├── README.md ├── argumentValidation.m ├── controlFlow.m ├── license.txt ├── lineContinuations.m ├── package-lock.json ├── package.json └── test ├── README.md ├── snap ├── Account.m ├── Account.m.snap ├── AnEnum.m ├── AnEnum.m.snap ├── CircleArea.m ├── CircleArea.m.snap ├── PropertyValidation.m ├── PropertyValidation.m.snap ├── argumentValidation.m ├── argumentValidation.m.snap ├── controlFlow.m ├── controlFlow.m.snap ├── lineContinuations.m └── lineContinuations.m.snap ├── t08PropertyValidation.m ├── t10Transposes.m ├── t13ArgumentsBlock.m ├── t15MultiLineClassdefHeader.m ├── t16CommentAfterClassdefBlockMembers.m ├── t18ContinuationInBrackets.m ├── t19SingleLineBlocks.m ├── t20CommentsInClassdefBlocks.m ├── t23LineContinuationCall.m ├── t24BlockHeaderComments.m ├── t30functionContinuation.m ├── t41FunctionDefinitions.m ├── t51Imports.m ├── t54LineContinuationInAnonymousFunctions.m ├── t57Operators.m ├── t61ReadWriteOperations.m ├── t64SwitchStatements.m ├── t78EOLcommentsInBlocks.m ├── t80AnonymousFunctionArgument.m ├── t87ClassAttributes.m ├── t89MetaclassLiterals.m ├── t93ContinuationAfterClassAttributes.m └── t95AttributeParsing.m /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | # Run tests against the MATLAB Language Grammar 2 | 3 | name: test 4 | 5 | on: 6 | push: 7 | branches: [ "master" ] 8 | pull_request: 9 | branches: [ "master" ] 10 | 11 | jobs: 12 | test: 13 | 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | fail-fast: false 18 | matrix: 19 | node-version: [16.x, 18.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | - name: Set up Node.js ${{ matrix.node-version }} 25 | uses: actions/setup-node@v3 26 | with: 27 | node-version: ${{ matrix.node-version }} 28 | cache: 'npm' 29 | 30 | - name: Install system dependencies 31 | run: sudo apt-get -y install libxml2-utils 32 | 33 | - name: Install Node.js dependencies 34 | run: npm ci 35 | 36 | - name: Run Tests 37 | run: npm test -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "*.m": "matlab" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /Account.m: -------------------------------------------------------------------------------- 1 | classdef Account < user.handle & BaseAccount % Models a bank account 2 | % Some properties 3 | properties 4 | Value 5 | end 6 | % Some methods 7 | methods % A comment 8 | % Object constructor 9 | function obj = Account(value) 10 | obj.Value = value; 11 | end 12 | function obj = BasicClass(val) 13 | if nargin == 1 14 | if isnumeric(val) 15 | obj.Value = val; 16 | else 17 | error('Value must be numeric') 18 | end 19 | end 20 | end 21 | function r = roundOff(obj) 22 | r = round([obj.Value],2); 23 | A = zeros(5,100); 24 | for m = 1:5 25 | for n = 1:100 26 | A(m, n) = 1/(m + n - 1); 27 | end 28 | end 29 | end 30 | function r = multiplyBy(obj,n) 31 | r = [obj.Value( end ) ]* n; 32 | n = 1; 33 | nFactorial = 1; 34 | while nFactorial < 1e100 35 | n = n + 1; 36 | nFactorial = nFactorial * n; 37 | end 38 | end 39 | function r = plus(o1,o2) 40 | r = plus@BaseAccount(o1,o2); 41 | end 42 | end 43 | % Some events 44 | events (ListenAccess = protected) % A comment 45 | % Event comment 46 | StateChanged 47 | end 48 | % Some enumeration 49 | enumeration % A comment 50 | No (0) 51 | Yes (1) 52 | end 53 | end 54 | -------------------------------------------------------------------------------- /AnEnum.m: -------------------------------------------------------------------------------- 1 | classdef AnEnum 2 | % A test enumeration 3 | enumeration 4 | % Comments 5 | One (1); % Line comments 6 | Two (2) 7 | Ten (10) 8 | % Trailing comment which 9 | % is multiple lines 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /CircleArea.m: -------------------------------------------------------------------------------- 1 | classdef CircleArea % A comment 2 | properties % A comment 3 | Radius 4 | end 5 | properties (Constant) 6 | P = pi 7 | end 8 | properties (Dependent) % A comment 9 | Area 10 | end 11 | methods 12 | function obj = CircleArea(r) 13 | if nargin > 0 14 | obj.Radius = r; 15 | end 16 | end 17 | function val = get.Area(obj) 18 | val = obj.P*obj.Radius^2; 19 | end 20 | function obj = set.Radius(obj,val) 21 | if val < 0 22 | error("Radius must be positive") 23 | end 24 | obj.Radius = val; 25 | end 26 | function plot(obj) 27 | r = obj.Radius; 28 | d = r*2; 29 | pos = [0 0 d d]; 30 | curv = [1 1]; 31 | rectangle('Position',pos,'Curvature',curv,... 32 | 'FaceColor',[.9 .9 .9]) 33 | line([0,r],[r,r]) 34 | text(r/2,r+.5,['r = ',num2str(r)]) 35 | title(['Area = ',num2str(obj.Area)]) 36 | 37 | % This is an example of a command dual 38 | axis equal 39 | end 40 | function disp(obj) 41 | rad = obj.Radius; 42 | disp(['Circle with radius: ',num2str(rad)]) 43 | end 44 | end 45 | methods (Static) % A comment 46 | function obj = createObj() 47 | prompt = {"Enter the Radius"}; 48 | dlgTitle = 'Radius'; 49 | rad = inputdlg(prompt,dlgTitle); 50 | r = str2double(rad{:}); 51 | obj = CircleArea(r); 52 | end 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /PropertyValidation.m: -------------------------------------------------------------------------------- 1 | classdef PropertyValidation 2 | properties (GetAccess = 'public', SetAccess = 'private') 3 | % Commentary in the properties block 4 | Prop % comment 5 | PropType some.type 6 | PropSize (1,2) % comment 7 | PropSizeType (:, 3) int64; % another comment 8 | PropSizeTypeFcn (:, 3) foo.bar.baz {mustBeReal} 9 | PropInit = "string" 10 | PropTypeInit some.type = some.type(1) 11 | PropSizeInit (1,2) = 'char' 12 | PropSizeTypeInit (:, 3, 6) int64 = rand 13 | PropSizeTypeFcnInit (:, 3) foo.bar.baz {mustBeReal} = pi; 14 | % Ending commentary 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MATLAB-Language-grammar 2 | [![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=mathworks/MATLAB-Language-grammar) 3 | 4 | Regular expression based grammar for the MATLAB Language 5 | 6 | # Clients 7 | 8 | This grammar is used by: 9 | 10 | * [github/linguist](https://github.com/github/linguist) For syntax highlighting of MATLAB files on GitHub 11 | * [Gimly/vscode-matlab](https://github.com/Gimly/vscode-matlab) For syntax highlighting of MATLAB files in VSCode 12 | * [thedavidprice/language-matlab-octave](https://github.com/thedavidprice/language-matlab-octave) For syntax highlighting of MATLAB files in Atom 13 | -------------------------------------------------------------------------------- /argumentValidation.m: -------------------------------------------------------------------------------- 1 | function argumentValidation(x,~,v,method,flag, opts) 2 | % Comment before arguments blocks 3 | arguments 4 | % Block comment 5 | x (1,:) {mustBeNumeric,mustBeReal} % trailing coment 6 | ~ 7 | % Line comment 8 | v (1,:) {mustBeNumeric,mustBeReal, mustBeEqualSize(v,x)} 9 | method (1,:) char {mustBeMember(method,{'linear','cubic','spline'})} = 'linear' % End of line comment 10 | % End block comment 11 | end 12 | arguments (Repeating) 13 | % Trailing flags 14 | flag (1,:) string {mustBeMember(flag,["first","second","third"])} 15 | end 16 | arguments 17 | opts.Named (1,:) string {mustBeNumeric(opts.Named), ... Dotdotdot comment 18 | mustBeReal} 19 | end 20 | end -------------------------------------------------------------------------------- /controlFlow.m: -------------------------------------------------------------------------------- 1 | function y = controlFlow(varargin) 2 | %% Logic based on nargin 3 | switch nargin 4 | case 0 5 | return 6 | case 1 7 | y = varargin{1}; 8 | % Check single-line if inside switch for https://github.com/mathworks/MATLAB-Language-grammar/issues/19 9 | if varargin{1} < 0, return; end 10 | case 2 11 | y = varargin{1} + varargin{2}; 12 | otherwise 13 | end 14 | try 15 | if y( end ) < 10 16 | disp('y < 10'); 17 | elseif y < 20 18 | disp('y < 20'); 19 | else 20 | disp("y >= 20"); 21 | end 22 | catch ME 23 | rethrow(ME); 24 | end 25 | while c1 26 | if c2, break; end 27 | end 28 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Copyright 2018 The MathWorks, Inc. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /lineContinuations.m: -------------------------------------------------------------------------------- 1 | vector = [ ... comment 2 | 1 ... commentary 3 | 2 ... 4 | 3 ... some comments 5 | ]; 6 | 7 | cellvector = { ... comment 8 | 1 ... comment 9 | 2 ... 10 | 3 ... comment 11 | }; 12 | 13 | output = foo( ... 14 | arg1, ...comment 15 | arg2 ... comment 16 | ); 17 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MATLAB-Language-grammar", 3 | "version": "1.2.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "1.2.1", 9 | "license": "BSD-2-Clause", 10 | "devDependencies": { 11 | "vscode-tmgrammar-test": "0.0.11" 12 | } 13 | }, 14 | "node_modules/ansi-styles": { 15 | "version": "3.2.1", 16 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 17 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 18 | "dev": true, 19 | "dependencies": { 20 | "color-convert": "^1.9.0" 21 | }, 22 | "engines": { 23 | "node": ">=4" 24 | } 25 | }, 26 | "node_modules/balanced-match": { 27 | "version": "1.0.2", 28 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 29 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 30 | "dev": true 31 | }, 32 | "node_modules/brace-expansion": { 33 | "version": "1.1.11", 34 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 35 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 36 | "dev": true, 37 | "dependencies": { 38 | "balanced-match": "^1.0.0", 39 | "concat-map": "0.0.1" 40 | } 41 | }, 42 | "node_modules/chalk": { 43 | "version": "2.4.2", 44 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 45 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 46 | "dev": true, 47 | "dependencies": { 48 | "ansi-styles": "^3.2.1", 49 | "escape-string-regexp": "^1.0.5", 50 | "supports-color": "^5.3.0" 51 | }, 52 | "engines": { 53 | "node": ">=4" 54 | } 55 | }, 56 | "node_modules/color-convert": { 57 | "version": "1.9.3", 58 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 59 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 60 | "dev": true, 61 | "dependencies": { 62 | "color-name": "1.1.3" 63 | } 64 | }, 65 | "node_modules/color-name": { 66 | "version": "1.1.3", 67 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 68 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 69 | "dev": true 70 | }, 71 | "node_modules/commander": { 72 | "version": "2.20.3", 73 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 74 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 75 | "dev": true 76 | }, 77 | "node_modules/concat-map": { 78 | "version": "0.0.1", 79 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 80 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 81 | "dev": true 82 | }, 83 | "node_modules/diff": { 84 | "version": "4.0.2", 85 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 86 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 87 | "dev": true, 88 | "engines": { 89 | "node": ">=0.3.1" 90 | } 91 | }, 92 | "node_modules/escape-string-regexp": { 93 | "version": "1.0.5", 94 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 95 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 96 | "dev": true, 97 | "engines": { 98 | "node": ">=0.8.0" 99 | } 100 | }, 101 | "node_modules/fs.realpath": { 102 | "version": "1.0.0", 103 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 104 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 105 | "dev": true 106 | }, 107 | "node_modules/glob": { 108 | "version": "7.2.3", 109 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 110 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 111 | "dev": true, 112 | "dependencies": { 113 | "fs.realpath": "^1.0.0", 114 | "inflight": "^1.0.4", 115 | "inherits": "2", 116 | "minimatch": "^3.1.1", 117 | "once": "^1.3.0", 118 | "path-is-absolute": "^1.0.0" 119 | }, 120 | "engines": { 121 | "node": "*" 122 | }, 123 | "funding": { 124 | "url": "https://github.com/sponsors/isaacs" 125 | } 126 | }, 127 | "node_modules/has-flag": { 128 | "version": "3.0.0", 129 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 130 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 131 | "dev": true, 132 | "engines": { 133 | "node": ">=4" 134 | } 135 | }, 136 | "node_modules/inflight": { 137 | "version": "1.0.6", 138 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 139 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 140 | "dev": true, 141 | "dependencies": { 142 | "once": "^1.3.0", 143 | "wrappy": "1" 144 | } 145 | }, 146 | "node_modules/inherits": { 147 | "version": "2.0.4", 148 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 149 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 150 | "dev": true 151 | }, 152 | "node_modules/minimatch": { 153 | "version": "3.1.2", 154 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 155 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 156 | "dev": true, 157 | "dependencies": { 158 | "brace-expansion": "^1.1.7" 159 | }, 160 | "engines": { 161 | "node": "*" 162 | } 163 | }, 164 | "node_modules/once": { 165 | "version": "1.4.0", 166 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 167 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 168 | "dev": true, 169 | "dependencies": { 170 | "wrappy": "1" 171 | } 172 | }, 173 | "node_modules/path-is-absolute": { 174 | "version": "1.0.1", 175 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 176 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 177 | "dev": true, 178 | "engines": { 179 | "node": ">=0.10.0" 180 | } 181 | }, 182 | "node_modules/supports-color": { 183 | "version": "5.5.0", 184 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 185 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 186 | "dev": true, 187 | "dependencies": { 188 | "has-flag": "^3.0.0" 189 | }, 190 | "engines": { 191 | "node": ">=4" 192 | } 193 | }, 194 | "node_modules/vscode-oniguruma": { 195 | "version": "1.7.0", 196 | "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", 197 | "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", 198 | "dev": true 199 | }, 200 | "node_modules/vscode-textmate": { 201 | "version": "5.5.0", 202 | "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.5.0.tgz", 203 | "integrity": "sha512-jToQkPGMNKn0eyKyitYeINJF0NoD240aYyKPIWJv5W2jfPt++jIRg0OSergubtGhbw6SoefkvBYEpX7TsfoSUQ==", 204 | "dev": true 205 | }, 206 | "node_modules/vscode-tmgrammar-test": { 207 | "version": "0.0.11", 208 | "resolved": "https://registry.npmjs.org/vscode-tmgrammar-test/-/vscode-tmgrammar-test-0.0.11.tgz", 209 | "integrity": "sha512-Bd60x/OeBLAQnIxiR2GhUic1CQZOFfWM8Pd43HjdEUBf/0vcvYAlFQikOXvv+zkItHLznjKaDX7VWKPVYUF9ug==", 210 | "dev": true, 211 | "dependencies": { 212 | "chalk": "^2.4.2", 213 | "commander": "^2.20.3", 214 | "diff": "^4.0.2", 215 | "glob": "^7.1.6", 216 | "vscode-oniguruma": "^1.5.1", 217 | "vscode-textmate": "^5.4.0" 218 | }, 219 | "bin": { 220 | "vscode-tmgrammar-snap": "dist/src/snapshot.js", 221 | "vscode-tmgrammar-test": "dist/src/unit.js" 222 | } 223 | }, 224 | "node_modules/wrappy": { 225 | "version": "1.0.2", 226 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 227 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 228 | "dev": true 229 | } 230 | } 231 | } 232 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.2.1", 3 | "description": "MATLAB TextMate grammar", 4 | "scripts": { 5 | "testGrammar": "vscode-tmgrammar-test -s source.matlab -g Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage -t \"./test/*.m\"", 6 | "testGrammarSnap": "vscode-tmgrammar-snap -s source.matlab -g Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage -t \"./test/snap/*.m\"", 7 | "testLintXML": "xmllint --noout \"Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage\" && echo \"xmllint passed on MATLAB.tmLanguage\"", 8 | "test": "npm run testLintXML && npm run testGrammar && npm run testGrammarSnap", 9 | "updateGrammarSnap": "vscode-tmgrammar-snap -s source.matlab -g Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage -t \"./test/snap/*.m\" -u" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/mathworks/MATLAB-Language-grammar.git" 14 | }, 15 | "author": "", 16 | "license": "BSD-2-Clause", 17 | "bugs": { 18 | "url": "https://github.com/mathworks/MATLAB-Language-grammar/issues" 19 | }, 20 | "homepage": "https://github.com/mathworks/MATLAB-Language-grammar#readme", 21 | "devDependencies": { 22 | "vscode-tmgrammar-test": "0.0.11" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Language Grammar Tests 2 | 3 | The tests in this directory leverage: 4 | 5 | https://github.com/PanAeon/vscode-tmgrammar-test 6 | 7 | # Test requirements 8 | 9 | The tests require xmllint which can be installed (on apt using linux distros) using 10 | ```bash 11 | sudo apt install libxml2-utils 12 | ``` 13 | 14 | # Running the tests 15 | 16 | From the root of the repo 17 | 18 | ```bash 19 | npm install 20 | npm run test 21 | ``` 22 | 23 | will run the tests. 24 | 25 | # File structure 26 | 27 | Tests in this directory are unit tests for isolated items. The naming convention `tNNDescription.m` refers to a test that fixes issue #NN. The `snap` directory contains snapshot tests which give us broad coverage. When changing the grammar, these tests may fail as they lock down many details of the grammar at the point in time that they were generated. See the [vscode-tmgrammar-test](https://github.com/PanAeon/vscode-tmgrammar-test#snapshot-tests) doc for how to generate and update the `.snap` files. 28 | -------------------------------------------------------------------------------- /test/snap/Account.m: -------------------------------------------------------------------------------- 1 | classdef Account < Handle & BaseAccount % Models a bank account 2 | % Some properties 3 | properties 4 | Value 5 | end 6 | % Some methods 7 | methods % A comment 8 | % Object constructor 9 | function obj = Account(value) 10 | obj.Value = value; 11 | end 12 | function obj = BasicClass(val) 13 | if nargin == 1 14 | if isnumeric(val) 15 | obj.Value = val; 16 | else 17 | error('Value must be numeric') 18 | end 19 | end 20 | end 21 | function r = roundOff(obj) 22 | r = round([obj.Value],2); 23 | A = zeros(5,100); 24 | for m = 1:5 25 | for n = 1:100 26 | A(m, n) = 1/(m + n - 1); 27 | end 28 | end 29 | end 30 | function r = multiplyBy(obj,n) 31 | r = [obj.Value( end ) ]* n; 32 | n = 1; 33 | nFactorial = 1; 34 | while nFactorial < 1e100 35 | n = n + 1; 36 | nFactorial = nFactorial * n; 37 | end 38 | end 39 | function r = plus(o1,o2) 40 | r = plus@BaseAccount(o1,o2); 41 | end 42 | end 43 | % Some events 44 | events (ListenAccess = protected) % A comment 45 | % Event comment 46 | StateChanged 47 | end 48 | % Some enumeration 49 | enumeration % A comment 50 | No (0) 51 | Yes (1) 52 | end 53 | end 54 | -------------------------------------------------------------------------------- /test/snap/Account.m.snap: -------------------------------------------------------------------------------- 1 | >classdef Account < Handle & BaseAccount % Models a bank account 2 | #^^^^^^^^ source.matlab meta.class.matlab storage.type.class.matlab 3 | # ^ source.matlab meta.class.matlab 4 | # ^^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab entity.name.type.class.matlab 5 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab 6 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab punctuation.separator.lt.inheritance.matlab 7 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab 8 | # ^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab meta.inherited-class.matlab entity.other.inherited-class.matlab 9 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab 10 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab keyword.operator.type.matlab 11 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab 12 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab meta.inherited-class.matlab entity.other.inherited-class.matlab 13 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab 14 | # ^ source.matlab meta.class.matlab meta.class.declaration.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 15 | # ^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab comment.line.percentage.matlab 16 | > % Some properties 17 | #^^^^ source.matlab meta.class.matlab punctuation.whitespace.comment.leading.matlab 18 | # ^ source.matlab meta.class.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 19 | # ^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab comment.line.percentage.matlab 20 | > properties 21 | #^^^^ source.matlab meta.class.matlab meta.properties.matlab 22 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab keyword.control.properties.matlab 23 | > Value 24 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 25 | # ^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 26 | > end 27 | #^^^^ source.matlab meta.class.matlab meta.properties.matlab 28 | # ^^^ source.matlab meta.class.matlab meta.properties.matlab keyword.control.end.properties.matlab 29 | > % Some methods 30 | #^^^^ source.matlab meta.class.matlab punctuation.whitespace.comment.leading.matlab 31 | # ^ source.matlab meta.class.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 32 | # ^^^^^^^^^^^^^ source.matlab meta.class.matlab comment.line.percentage.matlab 33 | > methods % A comment 34 | #^^^^ source.matlab meta.class.matlab meta.methods.matlab 35 | # ^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab keyword.control.methods.matlab 36 | # ^ source.matlab meta.class.matlab meta.methods.matlab 37 | # ^ source.matlab meta.class.matlab meta.methods.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 38 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab comment.line.percentage.matlab 39 | > % Object constructor 40 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab punctuation.whitespace.comment.leading.matlab 41 | # ^ source.matlab meta.class.matlab meta.methods.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 42 | # ^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab comment.line.percentage.matlab 43 | > function obj = Account(value) 44 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 45 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.matlab 46 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 47 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 48 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 49 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 50 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 51 | # ^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 52 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 53 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 54 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 55 | > obj.Value = value; 56 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 57 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 58 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab punctuation.accessor.dot.matlab 59 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.property.matlab 60 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 61 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 62 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 63 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab variable.other.readwrite.matlab 64 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 65 | > end 66 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 67 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.end.matlab 68 | > function obj = BasicClass(val) 69 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 70 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.matlab 71 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 72 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 73 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 74 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 75 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 76 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 77 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 78 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 79 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 80 | > if nargin == 1 81 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab 82 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab keyword.control.if.matlab 83 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab 84 | # ^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab variable.language.function.matlab 85 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab 86 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab keyword.operator.logical.matlab 87 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab 88 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab 89 | > if isnumeric(val) 90 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab 91 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab keyword.control.if.matlab 92 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.if.declaration.matlab 93 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab entity.name.function.matlab 94 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 95 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 96 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 97 | > obj.Value = val; 98 | #^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab 99 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 100 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.assignment.variable.single.matlab punctuation.accessor.dot.matlab 101 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.assignment.variable.single.matlab variable.other.property.matlab 102 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab 103 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab keyword.operator.assignment.matlab 104 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab 105 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab variable.other.readwrite.matlab 106 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab punctuation.terminator.semicolon.matlab 107 | > else 108 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab 109 | # ^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab keyword.control.else.matlab 110 | > error('Value must be numeric') 111 | #^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab 112 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab entity.name.function.matlab 113 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 114 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 115 | # ^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab 116 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 117 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 118 | > end 119 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab meta.else.matlab 120 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab meta.if.matlab keyword.control.end.if.matlab 121 | > end 122 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab 123 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.if.matlab keyword.control.end.if.matlab 124 | > end 125 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 126 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.end.matlab 127 | > function r = roundOff(obj) 128 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 129 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.matlab 130 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 131 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 132 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 133 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 134 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 135 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 136 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 137 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 138 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 139 | > r = round([obj.Value],2); 140 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 141 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 142 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 143 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 144 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 145 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab entity.name.function.matlab 146 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 147 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.brackets.begin.matlab 148 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab meta.brackets.matlab variable.other.readwrite.matlab 149 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab meta.brackets.matlab punctuation.accessor.dot.matlab 150 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab meta.brackets.matlab variable.other.property.matlab 151 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.brackets.end.matlab 152 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 153 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab constant.numeric.decimal.matlab 154 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 155 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 156 | > A = zeros(5,100); 157 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 158 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 159 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 160 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 161 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 162 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab entity.name.function.matlab 163 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 164 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab constant.numeric.decimal.matlab 165 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 166 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab constant.numeric.decimal.matlab 167 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 168 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 169 | > for m = 1:5 170 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab 171 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab keyword.control.for.matlab 172 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab 173 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 174 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab 175 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab keyword.operator.assignment.matlab 176 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab 177 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab constant.numeric.decimal.matlab 178 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab keyword.operator.vector.colon.matlab 179 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.declaration.matlab constant.numeric.decimal.matlab 180 | > for n = 1:100 181 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 182 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab keyword.control.for.matlab 183 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab 184 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 185 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab 186 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab keyword.operator.assignment.matlab 187 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab 188 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab constant.numeric.decimal.matlab 189 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab keyword.operator.vector.colon.matlab 190 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.for.declaration.matlab constant.numeric.decimal.matlab 191 | > A(m, n) = 1/(m + n - 1); 192 | #^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 193 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab entity.name.function.matlab 194 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 195 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 196 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 197 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab 198 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 199 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 200 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 201 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab keyword.operator.assignment.matlab 202 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 203 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab constant.numeric.decimal.matlab 204 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 205 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab punctuation.section.parens.begin.matlab 206 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab variable.other.readwrite.matlab 207 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab 208 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab keyword.operator.arithmetic.matlab 209 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab 210 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab variable.other.readwrite.matlab 211 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab 212 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab keyword.operator.arithmetic.matlab 213 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab 214 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab meta.parens.matlab constant.numeric.decimal.matlab 215 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab punctuation.section.parens.end.matlab 216 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab punctuation.terminator.semicolon.matlab 217 | > end 218 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab 219 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab meta.for.matlab keyword.control.end.for.matlab 220 | > end 221 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab 222 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.for.matlab keyword.control.end.for.matlab 223 | > end 224 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 225 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.end.matlab 226 | > function r = multiplyBy(obj,n) 227 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 228 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.matlab 229 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 230 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 231 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 232 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 233 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 234 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 235 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 236 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 237 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 238 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 239 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 240 | > r = [obj.Value( end ) ]* n; 241 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 242 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 243 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 244 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 245 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 246 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.section.brackets.begin.matlab 247 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab variable.other.readwrite.matlab 248 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab punctuation.accessor.dot.matlab 249 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab entity.name.function.matlab 250 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 251 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab 252 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab keyword.operator.word.matlab 253 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab 254 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 255 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.brackets.matlab 256 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.section.brackets.end.matlab 257 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 258 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab variable.other.readwrite.matlab 259 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 260 | > n = 1; 261 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 262 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 263 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 264 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 265 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 266 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab constant.numeric.decimal.matlab 267 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 268 | > nFactorial = 1; 269 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 270 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 271 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 272 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 273 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 274 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab constant.numeric.decimal.matlab 275 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 276 | > while nFactorial < 1e100 277 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 278 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.control.while.matlab 279 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab 280 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab variable.other.readwrite.matlab 281 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab 282 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab keyword.operator.relational.matlab 283 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab 284 | # ^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab constant.numeric.decimal.matlab 285 | > n = n + 1; 286 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 287 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 288 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 289 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.operator.assignment.matlab 290 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 291 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab variable.other.readwrite.matlab 292 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 293 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.operator.arithmetic.matlab 294 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 295 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab constant.numeric.decimal.matlab 296 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab punctuation.terminator.semicolon.matlab 297 | > nFactorial = nFactorial * n; 298 | #^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 299 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 300 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 301 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.operator.assignment.matlab 302 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 303 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab variable.other.readwrite.matlab 304 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 305 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.operator.arithmetic.matlab 306 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 307 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab variable.other.readwrite.matlab 308 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab punctuation.terminator.semicolon.matlab 309 | > end 310 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab 311 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.while.matlab keyword.control.end.while.matlab 312 | > end 313 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 314 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.end.matlab 315 | > function r = plus(o1,o2) 316 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 317 | # ^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.matlab 318 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 319 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 320 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 321 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 322 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab 323 | # ^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 324 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 325 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 326 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 327 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 328 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 329 | > r = plus@BaseAccount(o1,o2); 330 | #^^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 331 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 332 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 333 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab keyword.operator.assignment.matlab 334 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 335 | # ^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab entity.name.function.matlab 336 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab punctuation.accessor.scope-resolution.superclass.matlab 337 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab entity.name.type.class.matlab 338 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab punctuation.section.parens.begin.matlab 339 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab variable.other.readwrite.matlab 340 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab punctuation.separator.comma.matlab 341 | # ^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab variable.other.readwrite.matlab 342 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab meta.method-call.parens.matlab punctuation.section.parens.end.matlab 343 | # ^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab punctuation.terminator.semicolon.matlab 344 | > end 345 | #^^^^^^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab 346 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab meta.function.matlab storage.type.function.end.matlab 347 | > end 348 | #^^^^ source.matlab meta.class.matlab meta.methods.matlab 349 | # ^^^ source.matlab meta.class.matlab meta.methods.matlab keyword.control.end.methods.matlab 350 | > % Some events 351 | #^^^^ source.matlab meta.class.matlab punctuation.whitespace.comment.leading.matlab 352 | # ^ source.matlab meta.class.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 353 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab comment.line.percentage.matlab 354 | > events (ListenAccess = protected) % A comment 355 | #^^^^ source.matlab meta.class.matlab meta.events.matlab 356 | # ^^^^^^ source.matlab meta.class.matlab meta.events.matlab keyword.control.events.matlab 357 | # ^^ source.matlab meta.class.matlab meta.events.matlab 358 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.events.matlab 359 | # ^ source.matlab meta.class.matlab meta.events.matlab 360 | # ^ source.matlab meta.class.matlab meta.events.matlab keyword.operator.assignment.matlab 361 | # ^ source.matlab meta.class.matlab meta.events.matlab 362 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab storage.modifier.access.matlab 363 | # ^^ source.matlab meta.class.matlab meta.events.matlab 364 | # ^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 365 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab 366 | > % Event comment 367 | #^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab punctuation.whitespace.comment.leading.matlab 368 | # ^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 369 | # ^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab comment.line.percentage.matlab 370 | > StateChanged 371 | #^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab meta.assignment.definition.event.matlab 372 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.events.matlab meta.assignment.definition.event.matlab entity.name.type.event.matlab 373 | > end 374 | #^^^^ source.matlab meta.class.matlab meta.events.matlab 375 | # ^^^ source.matlab meta.class.matlab meta.events.matlab keyword.control.end.events.matlab 376 | > % Some enumeration 377 | #^^^^ source.matlab meta.class.matlab punctuation.whitespace.comment.leading.matlab 378 | # ^ source.matlab meta.class.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 379 | # ^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab comment.line.percentage.matlab 380 | > enumeration % A comment 381 | #^^^^ source.matlab meta.class.matlab meta.enum.matlab 382 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.enum.matlab 383 | # ^ source.matlab meta.class.matlab meta.enum.matlab 384 | # ^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 385 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab 386 | > No (0) 387 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab 388 | # ^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab variable.other.enummember.matlab 389 | # ^^ source.matlab meta.class.matlab meta.enum.matlab 390 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.begin.matlab 391 | # ^ source.matlab meta.class.matlab meta.enum.matlab meta.parens.matlab constant.numeric.decimal.matlab 392 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.end.matlab 393 | > Yes (1) 394 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab 395 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab variable.other.enummember.matlab 396 | # ^ source.matlab meta.class.matlab meta.enum.matlab 397 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.begin.matlab 398 | # ^ source.matlab meta.class.matlab meta.enum.matlab meta.parens.matlab constant.numeric.decimal.matlab 399 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.end.matlab 400 | > end 401 | #^^^^ source.matlab meta.class.matlab meta.enum.matlab 402 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.end.enum.matlab 403 | >end 404 | #^^^ source.matlab meta.class.matlab storage.type.class.end.matlab 405 | > -------------------------------------------------------------------------------- /test/snap/AnEnum.m: -------------------------------------------------------------------------------- 1 | classdef AnEnum 2 | % A test enumeration 3 | enumeration 4 | % Comments 5 | One (1); % Line comments 6 | Two (2) 7 | Ten (10) 8 | % Trailing comment which 9 | % is multiple lines 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /test/snap/AnEnum.m.snap: -------------------------------------------------------------------------------- 1 | >classdef AnEnum 2 | #^^^^^^^^ source.matlab meta.class.matlab storage.type.class.matlab 3 | # ^ source.matlab meta.class.matlab 4 | # ^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab entity.name.type.class.matlab 5 | >% A test enumeration 6 | #^ source.matlab meta.class.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 7 | # ^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab comment.line.percentage.matlab 8 | > enumeration 9 | #^^^^ source.matlab meta.class.matlab meta.enum.matlab 10 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.enum.matlab 11 | > % Comments 12 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab punctuation.whitespace.comment.leading.matlab 13 | # ^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 14 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab 15 | > One (1); % Line comments 16 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab 17 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab variable.other.enummember.matlab 18 | # ^ source.matlab meta.class.matlab meta.enum.matlab 19 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.begin.matlab 20 | # ^ source.matlab meta.class.matlab meta.enum.matlab meta.parens.matlab constant.numeric.decimal.matlab 21 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.end.matlab 22 | # ^^ source.matlab meta.class.matlab meta.enum.matlab 23 | # ^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 24 | # ^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab 25 | > Two (2) 26 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab 27 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab variable.other.enummember.matlab 28 | # ^ source.matlab meta.class.matlab meta.enum.matlab 29 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.begin.matlab 30 | # ^ source.matlab meta.class.matlab meta.enum.matlab meta.parens.matlab constant.numeric.decimal.matlab 31 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.end.matlab 32 | > Ten (10) 33 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab 34 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab meta.assignment.definition.enummember.matlab variable.other.enummember.matlab 35 | # ^ source.matlab meta.class.matlab meta.enum.matlab 36 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.begin.matlab 37 | # ^^ source.matlab meta.class.matlab meta.enum.matlab meta.parens.matlab constant.numeric.decimal.matlab 38 | # ^ source.matlab meta.class.matlab meta.enum.matlab punctuation.section.parens.end.matlab 39 | > % Trailing comment which 40 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab punctuation.whitespace.comment.leading.matlab 41 | # ^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 42 | # ^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab 43 | > % is multiple lines 44 | #^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab punctuation.whitespace.comment.leading.matlab 45 | # ^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 46 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.enum.matlab comment.line.percentage.matlab 47 | > end 48 | #^^^^ source.matlab meta.class.matlab meta.enum.matlab 49 | # ^^^ source.matlab meta.class.matlab meta.enum.matlab keyword.control.end.enum.matlab 50 | >end 51 | #^^^ source.matlab meta.class.matlab storage.type.class.end.matlab 52 | > -------------------------------------------------------------------------------- /test/snap/CircleArea.m: -------------------------------------------------------------------------------- 1 | classdef CircleArea % A comment 2 | properties % A comment 3 | Radius 4 | end 5 | properties (Constant) 6 | P = pi 7 | end 8 | properties (Dependent) % A comment 9 | Area 10 | end 11 | methods 12 | function obj = CircleArea(r) 13 | if nargin > 0 14 | obj.Radius = r; 15 | end 16 | end 17 | function val = get.Area(obj) 18 | val = obj.P*obj.Radius^2; 19 | end 20 | function obj = set.Radius(obj,val) 21 | if val < 0 22 | error("Radius must be positive") 23 | end 24 | obj.Radius = val; 25 | end 26 | function plot(obj) 27 | r = obj.Radius; 28 | d = r*2; 29 | pos = [0 0 d d]; 30 | curv = [1 1]; 31 | rectangle('Position',pos,'Curvature',curv,... 32 | 'FaceColor',[.9 .9 .9]) 33 | line([0,r],[r,r]) 34 | text(r/2,r+.5,['r = ',num2str(r)]) 35 | title(['Area = ',num2str(obj.Area)]) 36 | 37 | % This is an example of a command dual 38 | axis equal 39 | end 40 | function disp(obj) 41 | rad = obj.Radius; 42 | disp(['Circle with radius: ',num2str(rad)]) 43 | end 44 | end 45 | methods (Static) % A comment 46 | function obj = createObj() 47 | prompt = {"Enter the Radius"}; 48 | dlgTitle = 'Radius'; 49 | rad = inputdlg(prompt,dlgTitle); 50 | r = str2double(rad{:}); 51 | obj = CircleArea(r); 52 | end 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /test/snap/PropertyValidation.m: -------------------------------------------------------------------------------- 1 | classdef PropertyValidation 2 | properties (GetAccess = 'public', SetAccess = 'private') 3 | % Commentary in the properties block 4 | Prop % comment 5 | PropType some.type 6 | PropSize (1,2) % comment 7 | PropSizeType (:, 3) int64; % another comment 8 | PropSizeTypeFcn (:, 3) foo.bar.baz {mustBeReal} 9 | PropInit = "string" 10 | PropTypeInit some.type = some.type(1) 11 | PropSizeInit (1,2) = 'char' 12 | PropSizeTypeInit (:, 3, 6) int64 = rand 13 | PropSizeTypeFcnInit (:, 3) foo.bar.baz {mustBeReal} = pi; 14 | % Ending commentary 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /test/snap/PropertyValidation.m.snap: -------------------------------------------------------------------------------- 1 | >classdef PropertyValidation 2 | #^^^^^^^^ source.matlab meta.class.matlab storage.type.class.matlab 3 | # ^ source.matlab meta.class.matlab 4 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.class.declaration.matlab entity.name.type.class.matlab 5 | > properties (GetAccess = 'public', SetAccess = 'private') 6 | #^^^^ source.matlab meta.class.matlab meta.properties.matlab 7 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab keyword.control.properties.matlab 8 | # ^^ source.matlab meta.class.matlab meta.properties.matlab 9 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.properties.matlab 10 | # ^ source.matlab meta.class.matlab meta.properties.matlab 11 | # ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab 12 | # ^ source.matlab meta.class.matlab meta.properties.matlab 13 | # ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 14 | # ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab 15 | # ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 16 | # ^ source.matlab meta.class.matlab meta.properties.matlab punctuation.separator.modifier.comma.matlab 17 | # ^ source.matlab meta.class.matlab meta.properties.matlab 18 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab storage.modifier.properties.matlab 19 | # ^ source.matlab meta.class.matlab meta.properties.matlab 20 | # ^ source.matlab meta.class.matlab meta.properties.matlab keyword.operator.assignment.matlab 21 | # ^ source.matlab meta.class.matlab meta.properties.matlab 22 | # ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 23 | # ^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab 24 | # ^ source.matlab meta.class.matlab meta.properties.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 25 | # ^^ source.matlab meta.class.matlab meta.properties.matlab 26 | > % Commentary in the properties block 27 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab punctuation.whitespace.comment.leading.matlab 28 | # ^ source.matlab meta.class.matlab meta.properties.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 29 | # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab comment.line.percentage.matlab 30 | > Prop % comment 31 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 32 | # ^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 33 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 34 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 35 | # ^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab 36 | > PropType some.type 37 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 38 | # ^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 39 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 40 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 41 | > PropSize (1,2) % comment 42 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 43 | # ^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 44 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 45 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 46 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 47 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 48 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 49 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 50 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 51 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 52 | # ^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab 53 | > PropSizeType (:, 3) int64; % another comment 54 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 55 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 56 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 57 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 58 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 59 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 60 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab 61 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 62 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 63 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 64 | # ^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 65 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.terminator.semicolon.matlab 66 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 67 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 68 | # ^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab 69 | > PropSizeTypeFcn (:, 3) foo.bar.baz {mustBeReal} 70 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 71 | # ^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 72 | # ^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 73 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 74 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 75 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 76 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab 77 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 78 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 79 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 80 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 81 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 82 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 83 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 84 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 85 | > PropInit = "string" 86 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 87 | # ^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 88 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 89 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 90 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 91 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab 92 | # ^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.double.matlab 93 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab 94 | > PropTypeInit some.type = some.type(1) 95 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 96 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 97 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 98 | # ^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 99 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 100 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 101 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 102 | # ^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.other.readwrite.matlab 103 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.accessor.dot.matlab 104 | # ^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.function-call.parens.matlab entity.name.function.matlab 105 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 106 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.function-call.parens.matlab constant.numeric.decimal.matlab 107 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 108 | > PropSizeInit (1,2) = 'char' 109 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 110 | # ^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 111 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 112 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 113 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 114 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 115 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 116 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 117 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 118 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 119 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 120 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 121 | # ^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab 122 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 123 | > PropSizeTypeInit (:, 3, 6) int64 = rand 124 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 125 | # ^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 126 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 127 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 128 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 129 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 130 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab 131 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 132 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 133 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab 134 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 135 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 136 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 137 | # ^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 138 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 139 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 140 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 141 | # ^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.other.readwrite.matlab 142 | > PropSizeTypeFcnInit (:, 3) foo.bar.baz {mustBeReal} = pi; 143 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 144 | # ^^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 145 | # ^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 146 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 147 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 148 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 149 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab 150 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 151 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 152 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 153 | # ^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab storage.type.matlab 154 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 155 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 156 | # ^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 157 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 158 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 159 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 160 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab 161 | # ^^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab constant.numeric.matlab 162 | # ^ source.matlab meta.class.matlab meta.properties.matlab meta.assignment.definition.property.matlab punctuation.terminator.semicolon.matlab 163 | > % Ending commentary 164 | #^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab punctuation.whitespace.comment.leading.matlab 165 | # ^ source.matlab meta.class.matlab meta.properties.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 166 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.class.matlab meta.properties.matlab comment.line.percentage.matlab 167 | > end 168 | #^^^^ source.matlab meta.class.matlab meta.properties.matlab 169 | # ^^^ source.matlab meta.class.matlab meta.properties.matlab keyword.control.end.properties.matlab 170 | >end 171 | #^^^ source.matlab meta.class.matlab storage.type.class.end.matlab 172 | > -------------------------------------------------------------------------------- /test/snap/argumentValidation.m: -------------------------------------------------------------------------------- 1 | function argumentValidation(x,~,v,method,flag, opts) 2 | % Comment before arguments blocks 3 | arguments 4 | % Block comment 5 | x (1,:) {mustBeNumeric,mustBeReal} % trailing coment 6 | ~ 7 | % Line comment 8 | v (1,:) {mustBeNumeric,mustBeReal, mustBeEqualSize(v,x)} 9 | method (1,:) char {mustBeMember(method,{'linear','cubic','spline'})} = 'linear' % End of line comment 10 | % End block comment 11 | end 12 | arguments (Repeating) 13 | % Trailing flags 14 | flag (1,:) string {mustBeMember(flag,["first","second","third"])} 15 | end 16 | arguments 17 | opts.Named (1,:) string {mustBeNumeric(opts.Named), ... Dotdotdot comment 18 | mustBeReal} 19 | end 20 | end -------------------------------------------------------------------------------- /test/snap/argumentValidation.m.snap: -------------------------------------------------------------------------------- 1 | >function argumentValidation(x,~,v,method,flag, opts) 2 | #^^^^^^^^ source.matlab meta.function.matlab storage.type.function.matlab 3 | # ^ source.matlab meta.function.matlab 4 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 5 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 6 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 7 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 8 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.language.anonymous.matlab 9 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 10 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 11 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 12 | # ^^^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 13 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 14 | # ^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 15 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.separator.parameter.comma.matlab 16 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab 17 | # ^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 18 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 19 | > % Comment before arguments blocks 20 | #^^^^ source.matlab meta.function.matlab punctuation.whitespace.comment.leading.matlab 21 | # ^ source.matlab meta.function.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 22 | # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab comment.line.percentage.matlab 23 | > arguments 24 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 25 | # ^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.arguments.matlab 26 | > % Block comment 27 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab punctuation.whitespace.comment.leading.matlab 28 | # ^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 29 | # ^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab 30 | > x (1,:) {mustBeNumeric,mustBeReal} % trailing coment 31 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 32 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 33 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 34 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 35 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 36 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 37 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 38 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 39 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 40 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 41 | # ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 42 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab 43 | # ^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 44 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 45 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 46 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 47 | # ^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab 48 | > ~ 49 | #^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab 50 | > % Line comment 51 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab punctuation.whitespace.comment.leading.matlab 52 | # ^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 53 | # ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab 54 | > v (1,:) {mustBeNumeric,mustBeReal, mustBeEqualSize(v,x)} 55 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 56 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 57 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 58 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 59 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 60 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 61 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 62 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 63 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 64 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 65 | # ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 66 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab 67 | # ^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 68 | # ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab 69 | # ^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab 70 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 71 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 72 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 73 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 74 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 75 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 76 | > method (1,:) char {mustBeMember(method,{'linear','cubic','spline'})} = 'linear' % End of line comment 77 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 78 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 79 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 80 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 81 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 82 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 83 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 84 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 85 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 86 | # ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab 87 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 88 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 89 | # ^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab 90 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 91 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 92 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 93 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.braces.begin.matlab 94 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 95 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab 96 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 97 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab punctuation.separator.comma.matlab 98 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 99 | # ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab 100 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 101 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab punctuation.separator.comma.matlab 102 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 103 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab 104 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.cell.literal.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 105 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.braces.end.matlab 106 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 107 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 108 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 109 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab keyword.operator.assignment.matlab 110 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 111 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 112 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab 113 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 114 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 115 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 116 | # ^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab comment.line.percentage.matlab 117 | > % End block comment 118 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab punctuation.whitespace.comment.leading.matlab 119 | # ^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 120 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab 121 | > end 122 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 123 | # ^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.end.arguments.matlab 124 | > arguments (Repeating) 125 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 126 | # ^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.arguments.matlab 127 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.arguments.declaration.matlab 128 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.arguments.declaration.matlab punctuation.section.parens.begin.matlab 129 | # ^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.arguments.declaration.matlab storage.modifier.arguments.matlab 130 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.arguments.declaration.matlab punctuation.section.parens.end.matlab 131 | > % Trailing flags 132 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab punctuation.whitespace.comment.leading.matlab 133 | # ^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 134 | # ^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab comment.line.percentage.matlab 135 | > flag (1,:) string {mustBeMember(flag,["first","second","third"])} 136 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 137 | # ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 138 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 139 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 140 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 141 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 142 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 143 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 144 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 145 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab 146 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 147 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 148 | # ^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab 149 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 150 | # ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 151 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 152 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.brackets.begin.matlab 153 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab 154 | # ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab 155 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab 156 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab punctuation.separator.comma.matlab 157 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab 158 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab 159 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab 160 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab punctuation.separator.comma.matlab 161 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab 162 | # ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab 163 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab meta.brackets.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab 164 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.brackets.end.matlab 165 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 166 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 167 | > end 168 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 169 | # ^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.end.arguments.matlab 170 | > arguments 171 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 172 | # ^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.arguments.matlab 173 | > opts.Named (1,:) string {mustBeNumeric(opts.Named), ... Dotdotdot comment 174 | #^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 175 | # ^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab variable.object.property.matlab 176 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 177 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.begin.matlab 178 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab constant.numeric.decimal.matlab 179 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab punctuation.separator.comma.matlab 180 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.parens.size.matlab keyword.operator.vector.colon.matlab 181 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.parens.end.matlab 182 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 183 | # ^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab storage.type.matlab 184 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab 185 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.begin.matlab 186 | # ^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab entity.name.function.matlab 187 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 188 | # ^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 189 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.accessor.dot.matlab 190 | # ^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab variable.other.property.matlab 191 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 192 | # ^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab 193 | # ^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 194 | # ^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab meta.continuation.line.matlab comment.continuation.line.matlab 195 | > mustBeReal} 196 | #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab 197 | # ^^^^^^^^^^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab meta.block.validation.matlab variable.other.readwrite.matlab 198 | # ^ source.matlab meta.function.matlab meta.arguments.matlab meta.assignment.definition.property.matlab punctuation.section.block.end.matlab 199 | > end 200 | #^^^^ source.matlab meta.function.matlab meta.arguments.matlab 201 | # ^^^ source.matlab meta.function.matlab meta.arguments.matlab keyword.control.end.arguments.matlab 202 | >end 203 | #^^^ source.matlab meta.function.matlab storage.type.function.end.matlab -------------------------------------------------------------------------------- /test/snap/controlFlow.m: -------------------------------------------------------------------------------- 1 | function y = controlFlow(varargin) 2 | %% Logic based on nargin 3 | switch nargin 4 | case 0 5 | return 6 | case 1 7 | y = varargin{1}; 8 | % Check single-line if inside switch for https://github.com/mathworks/MATLAB-Language-grammar/issues/19 9 | if varargin{1} < 0, return; end 10 | case 2 11 | y = varargin{1} + varargin{2}; 12 | otherwise 13 | end 14 | try 15 | if y( end ) < 10 16 | disp('y < 10'); 17 | elseif y < 20 18 | disp('y < 20'); 19 | else 20 | disp("y >= 20"); 21 | end 22 | catch ME 23 | rethrow(ME); 24 | end 25 | while c1 26 | if c2, break; end 27 | end 28 | -------------------------------------------------------------------------------- /test/snap/controlFlow.m.snap: -------------------------------------------------------------------------------- 1 | >function y = controlFlow(varargin) 2 | #^^^^^^^^ source.matlab meta.function.matlab storage.type.function.matlab 3 | # ^ source.matlab meta.function.matlab 4 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.assignment.variable.output.matlab variable.parameter.output.matlab 5 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab 6 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab keyword.operator.assignment.matlab 7 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab 8 | # ^^^^^^^^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab entity.name.function.matlab 9 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.begin.matlab 10 | # ^^^^^^^^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab variable.parameter.input.matlab 11 | # ^ source.matlab meta.function.matlab meta.function.declaration.matlab meta.parameters.matlab punctuation.definition.parameters.end.matlab 12 | >%% Logic based on nargin 13 | #^^ source.matlab meta.function.matlab comment.line.double-percentage.matlab punctuation.definition.comment.matlab 14 | # ^ source.matlab meta.function.matlab comment.line.double-percentage.matlab punctuation.whitespace.comment.leading.matlab 15 | # ^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab comment.line.double-percentage.matlab entity.name.section.matlab 16 | >switch nargin 17 | #^^^^^^ source.matlab meta.function.matlab meta.switch.matlab keyword.control.switch.matlab 18 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.switch.declaration.matlab 19 | # ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.switch.declaration.matlab variable.language.function.matlab 20 | > case 0 21 | #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 22 | # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab 23 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab 24 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab 25 | > return 26 | #^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.control.matlab 27 | # ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.control.matlab keyword.control.flow.matlab 28 | > case 1 29 | #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 30 | # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab 31 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab 32 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab 33 | > y = varargin{1}; 34 | #^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 35 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 36 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 37 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.assignment.matlab 38 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 39 | # ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab 40 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 41 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab 42 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 43 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.terminator.semicolon.matlab 44 | > % Check single-line if inside switch for https://github.com/mathworks/MATLAB-Language-grammar/issues/19 45 | #^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.whitespace.comment.leading.matlab 46 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab comment.line.percentage.matlab punctuation.definition.comment.matlab 47 | # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab comment.line.percentage.matlab 48 | > if varargin{1} < 0, return; end 49 | #^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab 50 | # ^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab keyword.control.if.matlab 51 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab 52 | # ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab variable.language.function.matlab 53 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab 54 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab 55 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab 56 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab 57 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab keyword.operator.relational.matlab 58 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab 59 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab 60 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab punctuation.separator.comma.matlab 61 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.control.matlab 62 | # ^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab meta.control.matlab keyword.control.flow.matlab 63 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab punctuation.terminator.semicolon.matlab 64 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab 65 | # ^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.if.matlab keyword.control.end.if.matlab 66 | > case 2 67 | #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 68 | # ^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.control.switch.case.matlab 69 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab 70 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.case.declaration.matlab constant.numeric.decimal.matlab 71 | > y = varargin{1} + varargin{2}; 72 | #^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 73 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 74 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 75 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.assignment.matlab 76 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 77 | # ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab 78 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 79 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab 80 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 81 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 82 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab keyword.operator.arithmetic.matlab 83 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 84 | # ^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab variable.language.function.matlab 85 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 86 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab constant.numeric.decimal.matlab 87 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 88 | # ^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab punctuation.terminator.semicolon.matlab 89 | > otherwise 90 | #^^ source.matlab meta.function.matlab meta.switch.matlab meta.case.matlab 91 | # ^^^^^^^^^ source.matlab meta.function.matlab meta.switch.matlab meta.otherwise.matlab keyword.control.switch.otherwise.matlab 92 | >end 93 | #^^^ source.matlab meta.function.matlab meta.switch.matlab keyword.control.end.switch.matlab 94 | >try 95 | #^^^ source.matlab meta.function.matlab meta.try.matlab keyword.control.try.matlab 96 | > if y( end ) < 10 97 | #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab 98 | # ^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.control.if.matlab 99 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab 100 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab entity.name.function.matlab 101 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 102 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab 103 | # ^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab keyword.operator.word.matlab 104 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab 105 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 106 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab 107 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab keyword.operator.relational.matlab 108 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab 109 | # ^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.if.declaration.matlab constant.numeric.decimal.matlab 110 | > disp('y < 10'); 111 | #^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab 112 | # ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab entity.name.function.matlab 113 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 114 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 115 | # ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab 116 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 117 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 118 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab punctuation.terminator.semicolon.matlab 119 | > elseif y < 20 120 | #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab 121 | # ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab keyword.control.elseif.matlab 122 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab 123 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab variable.other.readwrite.matlab 124 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab 125 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab keyword.operator.relational.matlab 126 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab 127 | # ^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.elseif.declaration.matlab constant.numeric.decimal.matlab 128 | > disp('y < 20'); 129 | #^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab 130 | # ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab entity.name.function.matlab 131 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 132 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.begin.matlab 133 | # ^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab 134 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab string.quoted.single.matlab punctuation.definition.string.end.matlab 135 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 136 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab punctuation.terminator.semicolon.matlab 137 | > else 138 | #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.elseif.matlab 139 | # ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab keyword.control.else.matlab 140 | > disp("y >= 20"); 141 | #^^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab 142 | # ^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab entity.name.function.matlab 143 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 144 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.begin.matlab 145 | # ^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab 146 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab string.quoted.double.matlab punctuation.definition.string.end.matlab 147 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 148 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab punctuation.terminator.semicolon.matlab 149 | > end 150 | #^^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab meta.else.matlab 151 | # ^^^ source.matlab meta.function.matlab meta.try.matlab meta.if.matlab keyword.control.end.if.matlab 152 | >catch ME 153 | #^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab keyword.control.catch.matlab 154 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab 155 | # ^^ source.matlab meta.function.matlab meta.try.matlab meta.catch.matlab variable.other.constant.matlab 156 | > rethrow(ME); 157 | #^^^^ source.matlab meta.function.matlab meta.try.matlab 158 | # ^^^^^^^ source.matlab meta.function.matlab meta.try.matlab meta.function-call.parens.matlab entity.name.function.matlab 159 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 160 | # ^^ source.matlab meta.function.matlab meta.try.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 161 | # ^ source.matlab meta.function.matlab meta.try.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 162 | # ^ source.matlab meta.function.matlab meta.try.matlab punctuation.terminator.semicolon.matlab 163 | >end 164 | #^^^ source.matlab meta.function.matlab meta.try.matlab keyword.control.end.try.matlab 165 | >while c1 166 | #^^^^^ source.matlab meta.function.matlab meta.while.matlab keyword.control.while.matlab 167 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab 168 | # ^^ source.matlab meta.function.matlab meta.while.matlab meta.while.declaration.matlab variable.other.readwrite.matlab 169 | > if c2, break; end 170 | #^^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab 171 | # ^^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab keyword.control.if.matlab 172 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab meta.if.declaration.matlab 173 | # ^^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab meta.if.declaration.matlab variable.other.readwrite.matlab 174 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab punctuation.separator.comma.matlab 175 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab meta.control.matlab 176 | # ^^^^^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab meta.control.matlab keyword.control.flow.matlab 177 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab punctuation.terminator.semicolon.matlab 178 | # ^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab 179 | # ^^^ source.matlab meta.function.matlab meta.while.matlab meta.if.matlab keyword.control.end.if.matlab 180 | >end 181 | #^^^ source.matlab meta.function.matlab meta.while.matlab keyword.control.end.while.matlab 182 | > -------------------------------------------------------------------------------- /test/snap/lineContinuations.m: -------------------------------------------------------------------------------- 1 | vector = [ ... comment 2 | 1 ... commentary 3 | 2 ... 4 | 3 ... some comments 5 | ]; 6 | 7 | cellvector = { ... comment 8 | 1 ... comment 9 | 2 ... 10 | 3 ... comment 11 | }; 12 | 13 | output = foo( ... 14 | arg1, ...comment 15 | arg2 ... comment 16 | ); 17 | -------------------------------------------------------------------------------- /test/snap/lineContinuations.m.snap: -------------------------------------------------------------------------------- 1 | >vector = [ ... comment 2 | #^^^^^^ source.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 3 | # ^ source.matlab 4 | # ^ source.matlab keyword.operator.assignment.matlab 5 | # ^ source.matlab 6 | # ^ source.matlab punctuation.section.brackets.begin.matlab 7 | # ^ source.matlab meta.brackets.matlab 8 | # ^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 9 | # ^^^^^^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab comment.continuation.line.matlab 10 | > 1 ... commentary 11 | #^^^^ source.matlab meta.brackets.matlab 12 | # ^ source.matlab meta.brackets.matlab constant.numeric.decimal.matlab 13 | # ^ source.matlab meta.brackets.matlab 14 | # ^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 15 | # ^^^^^^^^^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab comment.continuation.line.matlab 16 | > 2 ... 17 | #^^^^ source.matlab meta.brackets.matlab 18 | # ^ source.matlab meta.brackets.matlab constant.numeric.decimal.matlab 19 | # ^ source.matlab meta.brackets.matlab 20 | # ^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 21 | > 3 ... some comments 22 | #^^^^ source.matlab meta.brackets.matlab 23 | # ^ source.matlab meta.brackets.matlab constant.numeric.decimal.matlab 24 | # ^ source.matlab meta.brackets.matlab 25 | # ^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 26 | # ^^^^^^^^^^^^^^ source.matlab meta.brackets.matlab meta.continuation.line.matlab comment.continuation.line.matlab 27 | > ]; 28 | #^^^^ source.matlab meta.brackets.matlab 29 | # ^ source.matlab punctuation.section.brackets.end.matlab 30 | # ^ source.matlab punctuation.terminator.semicolon.matlab 31 | > 32 | >cellvector = { ... comment 33 | #^^^^^^^^^^ source.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 34 | # ^ source.matlab 35 | # ^ source.matlab keyword.operator.assignment.matlab 36 | # ^ source.matlab 37 | # ^ source.matlab punctuation.section.braces.begin.matlab 38 | # ^ source.matlab meta.cell.literal.matlab 39 | # ^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 40 | # ^^^^^^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab comment.continuation.line.matlab 41 | > 1 ... comment 42 | #^^^^ source.matlab meta.cell.literal.matlab 43 | # ^ source.matlab meta.cell.literal.matlab constant.numeric.decimal.matlab 44 | # ^ source.matlab meta.cell.literal.matlab 45 | # ^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 46 | # ^^^^^^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab comment.continuation.line.matlab 47 | > 2 ... 48 | #^^^^ source.matlab meta.cell.literal.matlab 49 | # ^ source.matlab meta.cell.literal.matlab constant.numeric.decimal.matlab 50 | # ^ source.matlab meta.cell.literal.matlab 51 | # ^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 52 | > 3 ... comment 53 | #^^^^ source.matlab meta.cell.literal.matlab 54 | # ^ source.matlab meta.cell.literal.matlab constant.numeric.decimal.matlab 55 | # ^ source.matlab meta.cell.literal.matlab 56 | # ^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 57 | # ^^^^^^^^ source.matlab meta.cell.literal.matlab meta.continuation.line.matlab comment.continuation.line.matlab 58 | > }; 59 | #^^^^ source.matlab meta.cell.literal.matlab 60 | # ^ source.matlab punctuation.section.braces.end.matlab 61 | # ^ source.matlab punctuation.terminator.semicolon.matlab 62 | > 63 | >output = foo( ... 64 | #^^^^^^ source.matlab meta.assignment.variable.single.matlab variable.other.readwrite.matlab 65 | # ^ source.matlab 66 | # ^ source.matlab keyword.operator.assignment.matlab 67 | # ^ source.matlab 68 | # ^^^ source.matlab meta.function-call.parens.matlab entity.name.function.matlab 69 | # ^ source.matlab meta.function-call.parens.matlab punctuation.section.parens.begin.matlab 70 | # ^ source.matlab meta.function-call.parens.matlab 71 | # ^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 72 | > arg1, ...comment 73 | #^^^^ source.matlab meta.function-call.parens.matlab 74 | # ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 75 | # ^ source.matlab meta.function-call.parens.matlab punctuation.separator.comma.matlab 76 | # ^ source.matlab meta.function-call.parens.matlab 77 | # ^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 78 | # ^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab 79 | > arg2 ... comment 80 | #^^^^ source.matlab meta.function-call.parens.matlab 81 | # ^^^^ source.matlab meta.function-call.parens.matlab variable.other.readwrite.matlab 82 | # ^ source.matlab meta.function-call.parens.matlab 83 | # ^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab punctuation.separator.continuation.line.matlab 84 | # ^^^^^^^^ source.matlab meta.function-call.parens.matlab meta.continuation.line.matlab comment.continuation.line.matlab 85 | > ); 86 | #^^^^ source.matlab meta.function-call.parens.matlab 87 | # ^ source.matlab meta.function-call.parens.matlab punctuation.section.parens.end.matlab 88 | # ^ source.matlab punctuation.terminator.semicolon.matlab 89 | > -------------------------------------------------------------------------------- /test/t08PropertyValidation.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Property validation: https://github.com/mathworks/MATLAB-Language-grammar/issues/8" 2 | classdef t08PropertyValidation 3 | properties (GetAccess = 'public', SetAccess = 'private') 4 | % ^^^^^^^^^ storage.modifier.properties.matlab 5 | % ^ keyword.operator.assignment.matlab 6 | % ^^^^^^^^ string.quoted.single.matlab 7 | % ^^^^^^^^^ storage.modifier.properties.matlab 8 | % ^ keyword.operator.assignment.matlab 9 | % ^^^^^^^^^ string.quoted.single.matlab 10 | % Commentary in the properties block 11 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 12 | Prop % comment 13 | % ^^^^ variable.object.property.matlab 14 | % ^^^^^^^^^ comment.line.percentage.matlab 15 | PropType some.type 16 | % ^^^^^^^^^ storage.type.matlab 17 | PropSize (1,2) % comment 18 | % ^ punctuation.section.parens.begin.matlab 19 | % ^^^ meta.parens.size.matlab 20 | % ^ constant.numeric.decimal.matlab 21 | % ^ punctuation.separator.comma.matlab 22 | % ^ constant.numeric.decimal.matlab 23 | % ^ punctuation.section.parens.end.matlab 24 | % ^^^^^^^^^ comment.line.percentage.matlab 25 | PropSizeType (:, 3) int64; % another comment 26 | % ^ punctuation.section.parens.begin.matlab 27 | % ^ meta.parens.size.matlab keyword.operator.vector.colon.matlab 28 | % ^ meta.parens.size.matlab punctuation.separator.comma.matlab 29 | % ^ meta.parens.size.matlab constant.numeric.decimal.matlab 30 | % ^ punctuation.section.parens.end.matlab 31 | % ^^^^^ storage.type.matlab 32 | % ^ punctuation.terminator.semicolon.matlab 33 | % ^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 34 | PropSizeTypeFcn (:, 3) foo.bar.baz {mustBeReal} 35 | % ^^^^ meta.parens.size.matlab 36 | % ^^^^^^^^^^^ storage.type.matlab 37 | % ^ punctuation.section.block.begin.matlab 38 | % ^^^^^^^^^^ meta.block.validation.matlab 39 | % ^ punctuation.section.block.end.matlab 40 | PropInit = "string" 41 | % ^ keyword.operator.assignment.matlab 42 | % ^ punctuation.definition.string.begin.matlab 43 | % ^^^^^^ string.quoted.double.matlab 44 | % ^ punctuation.definition.string.end.matlab 45 | PropTypeInit some.type = some.type(1) 46 | % ^^^^^^^^^ storage.type.matlab 47 | % ^^^^^^^ meta.function-call.parens.matlab 48 | % ^^^^ entity.name.function.matlab 49 | % ^ punctuation.section.parens.begin.matlab 50 | % ^ constant.numeric.decimal.matlab 51 | % ^ punctuation.section.parens.end.matlab 52 | PropSizeInit (1,2) = 'char' 53 | % ^^^ meta.parens.size.matlab 54 | % ^ punctuation.definition.string.begin.matlab 55 | % ^^^^ string.quoted.single.matlab 56 | % ^ punctuation.definition.string.end.matlab 57 | PropSizeTypeInit (:, 3, 6) int64 = rand 58 | % ^^^^^^^ meta.parens.size.matlab 59 | % ^^^^^ storage.type.matlab 60 | PropSizeTypeFcnInit (:, 3) foo.bar.baz {mustBeReal} = pi; 61 | % ^ keyword.operator.assignment.matlab 62 | % ^^ constant.numeric.matlab 63 | % ^ punctuation.terminator.semicolon.matlab 64 | PropFcnArgs {mustBeGreaterThan(PropFcnArgs, 2)} 65 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.parens.matlab 66 | 67 | % Ending commentary 68 | end 69 | end 70 | -------------------------------------------------------------------------------- /test/t10Transposes.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Transpose issues: https://github.com/mathworks/MATLAB-Language-grammar/issues/10" 2 | A = B'; % The variable B is also considered an operator. 3 | % ^ -keyword.operator.transpose.matlab 4 | % ^ keyword.operator.transpose.matlab 5 | 6 | A = {B, C}'; % The transpose operator has no styling at all. 7 | % ^ keyword.operator.transpose.matlab 8 | 9 | 42.' % number is incorrectly highlighted 10 | % <-- -keyword.operator.transpose.matlab 11 | % ^^ keyword.operator.transpose.matlab 12 | 13 | A.S.' % S is incorrectly highlighted 14 | % ^ -keyword.operator.transpose.matlab 15 | % ^^ keyword.operator.transpose.matlab 16 | 17 | A.S .' % S is incorrectly highlighted 18 | % ^ -keyword.operator.transpose.matlab 19 | % ^^ keyword.operator.transpose.matlab 20 | 21 | S.' % S is incorrectly highlighted 22 | % <- -keyword.operator.transpose.matlab 23 | %^^ keyword.operator.transpose.matlab 24 | 25 | [S].' % correct 26 | % ^^ keyword.operator.transpose.matlab 27 | 28 | (S).' % correct 29 | % ^^ keyword.operator.transpose.matlab 30 | 31 | {S}.' % .' should be highlighted here, also comment is not identified 32 | % ^^ keyword.operator.transpose.matlab 33 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 34 | 35 | 'sdf'.' % same here 36 | % <----- string.quoted.single.matlab 37 | % ^^ keyword.operator.transpose.matlab 38 | % ^^^^^^^^^^ comment.line.percentage.matlab -------------------------------------------------------------------------------- /test/t13ArgumentsBlock.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Arguments block: https://github.com/mathworks/MATLAB-Language-grammar/issues/13" 2 | function t13ArgumentsBlock(x,~,v,method,flag, opts) 3 | % Comment before arguments blocks 4 | arguments % Comment 5 | % ^^^^^^^^^ comment.line.percentage.matlab 6 | % Block comment 7 | % ^^^^^^^^^^^^^^^ comment.line.percentage.matlab 8 | x (1,:) {mustBeNumeric,mustBeReal} % trailing coment 9 | % ^^^ meta.parens.size.matlab 10 | % ^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.validation.matlab 11 | % ^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 12 | ~ 13 | v (1,:) {mustBeNumeric,mustBeReal, mustBeEqualSize(v,x)} 14 | % ^^^ meta.parens.size.matlab 15 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.validation.matlab 16 | method (1,:) char {mustBeMember(method,{'linear','cubic','spline'})} = 'linear' % End of line comment 17 | % ^^^ meta.parens.size.matlab 18 | % ^^^^ storage.type.matlab 19 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.validation.matlab 20 | % ^^^^^^^^ string.quoted.single.matlab 21 | % ^^^^^^^ string.quoted.single.matlab 22 | % ^^^^^^^^ string.quoted.single.matlab 23 | % ^ keyword.operator.assignment.matlab 24 | % ^^^^^^^^ string.quoted.single.matlab 25 | % ^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 26 | end 27 | arguments (Repeating) % Comment 28 | % ^^^^^^^^^ storage.modifier.arguments.matlab 29 | % ^^^^^^^^^ comment.line.percentage.matlab 30 | % Trailing flags 31 | flag (1,:) string {mustBeMember(flag,["first","second","third"])} 32 | end 33 | arguments 34 | opts.Named (1,:) string {mustBeNumeric(opts.Named), ... Dotdotdot comment 35 | mustBeReal} 36 | % ^^^^^^^^^^ meta.block.validation.matlab 37 | end 38 | end -------------------------------------------------------------------------------- /test/t15MultiLineClassdefHeader.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Multi line classdef header: https://github.com/mathworks/MATLAB-Language-grammar/issues/15" 2 | classdef t15MultiLineClassdefHeader ... 3 | < otherClass 4 | % ^ punctuation.separator.lt.inheritance.matlab 5 | % ^^^^^^^^^^ entity.other.inherited-class.matlab 6 | properties 7 | % ^^^^^^^^^^ keyword.control.properties.matlab 8 | Prop 9 | end 10 | methods 11 | % ^^^^^^^ keyword.control.methods.matlab 12 | function y = foo(x) 13 | y = x; 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /test/t16CommentAfterClassdefBlockMembers.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Comments after things in blocks like properties: https://github.com/mathworks/MATLAB-Language-grammar/issues/16" 2 | classdef t16CommentAfterClassdefBlockMembers < handle 3 | methods 4 | function foo(~) % comment 5 | % ^^^^^^^^ storage.type.function.matlab 6 | % ^^^ entity.name.function.matlab 7 | % ^^^ meta.parameters.matlab 8 | % ^^^^^^^^^ comment.line.percentage.matlab 9 | end 10 | % ^^^ storage.type.function.end.matlab 11 | end 12 | % ^^^ keyword.control.end.methods.matlab 13 | events 14 | AnEvent % comment 15 | % ^^^^^^^ entity.name.type.event.matlab 16 | % ^^^^^^^^^ comment.line.percentage.matlab 17 | end 18 | % ^^^ keyword.control.end.events.matlab 19 | properties 20 | SomeProperty % comment 21 | % ^^^^^^^^^^^^ variable.object.property.matlab 22 | % ^^^^^^^^^ comment.line.percentage.matlab 23 | end 24 | % ^^^ keyword.control.end.properties.matlab 25 | enumeration 26 | EnumValue % comment 27 | % ^^^^^^^^^ variable.other.enummember.matlab 28 | % ^^^^^^^^^ comment.line.percentage.matlab 29 | end 30 | % ^^^ keyword.control.end.enum.matlab 31 | end 32 | -------------------------------------------------------------------------------- /test/t18ContinuationInBrackets.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Line continuation in brackets: https://github.com/mathworks/MATLAB-Language-grammar/issues/18" 2 | function [y,z] = t18ContinuationInBrackets(a,b) 3 | y = [ ... a comment 4 | % ^^^^^^^^^ comment.continuation.line.matlab 5 | a ... another comment 6 | % ^^^^^^^^^^^^^^^ comment.continuation.line.matlab 7 | b ... should be a comment 8 | % ^^^^^^^^^^^^^^^^^^^ comment.continuation.line.matlab 9 | ]; 10 | 11 | z = { ... a comment 12 | % ^^^^^^^^^ comment.continuation.line.matlab 13 | a ... another comment 14 | % ^^^^^^^^^^^^^^^ comment.continuation.line.matlab 15 | b ... should be a comment 16 | % ^^^^^^^^^^^^^^^^^^^ comment.continuation.line.matlab 17 | }; 18 | 19 | end -------------------------------------------------------------------------------- /test/t19SingleLineBlocks.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Blocks like if, for, etc. on a single line: https://github.com/mathworks/MATLAB-Language-grammar/issues/19" 2 | function y = t19SingleLineBlocks(x) 3 | switch x 4 | % ^ meta.switch.declaration.matlab 5 | case 1 6 | % ^^^^ keyword.control.switch.case.matlab 7 | % ^ constant.numeric.decimal.matlab 8 | y = 1; 9 | case 2 10 | y = 2; 11 | otherwise 12 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 13 | if nargin == 0, return; end 14 | % ^^ keyword.control.if.matlab 15 | % ^^^^^^ variable.language.function.matlab 16 | % ^^ keyword.operator.logical.matlab 17 | % ^ constant.numeric.decimal.matlab 18 | % ^ punctuation.separator.comma.matlab 19 | % ^^^^^^ keyword.control.flow.matlab 20 | % ^ punctuation.terminator.semicolon.matlab 21 | % ^^^ keyword.control.end.if.matlab 22 | y = 0; 23 | end 24 | switch x, case 1, disp(1), case 2, disp(2), otherwise, disp(0); end 25 | % ^^^^^^ keyword.control.switch.matlab 26 | % ^ meta.switch.declaration.matlab 27 | % ^ punctuation.separator.comma.matlab 28 | % ^^^^ keyword.control.switch.case.matlab 29 | % ^ constant.numeric.decimal.matlab 30 | % ^ punctuation.separator.comma.matlab 31 | % ^^^^ entity.name.function.matlab 32 | % ^ punctuation.section.parens.begin.matlab 33 | % ^ constant.numeric.decimal.matlab 34 | % ^ punctuation.section.parens.end.matlab 35 | % ^ punctuation.separator.comma.matlab 36 | % ^^^^ keyword.control.switch.case.matlab 37 | % ^ constant.numeric.decimal.matlab 38 | % ^ punctuation.separator.comma.matlab 39 | % ^^^^^^^ meta.function-call.parens.matlab 40 | % ^ punctuation.separator.comma.matlab 41 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 42 | % ^ punctuation.separator.comma.matlab 43 | % ^^^^^^^ meta.function-call.parens.matlab 44 | % ^ punctuation.terminator.semicolon.matlab 45 | % ^^^ keyword.control.end.switch.matlab 46 | if y > 2, exit_code = 1; else, exit_code = 0; end 47 | % ^^ keyword.control.if.matlab 48 | % ^ keyword.operator.relational.matlab 49 | % ^ constant.numeric.decimal.matlab 50 | % ^ punctuation.separator.comma.matlab 51 | % ^^^^^^^^^ meta.assignment.variable.single.matlab 52 | % ^ keyword.operator.assignment.matlab 53 | % ^ constant.numeric.decimal.matlab 54 | % ^ punctuation.terminator.semicolon.matlab 55 | % ^^^^ keyword.control.else.matlab 56 | % ^ punctuation.separator.comma.matlab 57 | % ^^^^^^^^^ meta.assignment.variable.single.matlab 58 | % ^ keyword.operator.assignment.matlab 59 | % ^ constant.numeric.decimal.matlab 60 | % ^ punctuation.terminator.semicolon.matlab 61 | % ^^^ keyword.control.end.if.matlab 62 | print(["exited with code " exit_code]) 63 | % ^^^^^ entity.name.function.matlab 64 | % ^ punctuation.section.parens.begin.matlab 65 | % ^ punctuation.section.brackets.begin.matlab 66 | % ^ punctuation.definition.string.begin.matlab 67 | % ^^^^^^^^^^^^^^^^^ string.quoted.double.matlab 68 | % ^ punctuation.definition.string.end.matlab 69 | % ^ punctuation.section.brackets.end.matlab 70 | % ^ punctuation.section.parens.end.matlab 71 | try if y > 2, error("input greater than 2"); end; catch e; fprintf(['caught exception "' e '"']); end 72 | % ^^^ keyword.control.try.matlab 73 | % ^^ keyword.control.if.matlab 74 | % ^ keyword.operator.relational.matlab 75 | % ^ constant.numeric.decimal.matlab 76 | % ^ punctuation.separator.comma.matlab 77 | % ^^^^^ entity.name.function.matlab 78 | % ^ punctuation.section.parens.begin.matlab 79 | % ^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.matlab 80 | % ^ punctuation.section.parens.end.matlab 81 | % ^ punctuation.terminator.semicolon.matlab 82 | % ^^^ keyword.control.end.if.matlab 83 | % ^ punctuation.terminator.semicolon.matlab 84 | % ^^^^^ keyword.control.catch.matlab 85 | % ^ variable.other.constant.matlab 86 | % ^^^^^^^ entity.name.function.matlab 87 | % ^ punctuation.section.parens.begin.matlab 88 | % ^ punctuation.section.parens.end.matlab 89 | % ^ punctuation.terminator.semicolon.matlab 90 | % ^^^ keyword.control.end.try.matlab 91 | end 92 | -------------------------------------------------------------------------------- /test/t20CommentsInClassdefBlocks.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Comments inside of classdef blocks: https://github.com/mathworks/MATLAB-Language-grammar/issues/20" 2 | classdef t20CommentsInClassdefBlocks < handle 3 | methods 4 | % A comment 5 | % ^^^^^^^^^^^^ comment.line.percentage.matlab 6 | end 7 | events 8 | % A comment 9 | % ^^^^^^^^^^^^ comment.line.percentage.matlab 10 | end 11 | properties 12 | % A comment again 13 | % ^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 14 | end 15 | enumeration 16 | % One more comment 17 | % ^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 18 | end 19 | end -------------------------------------------------------------------------------- /test/t23LineContinuationCall.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Line continuation in call: https://github.com/mathworks/MATLAB-Language-grammar/issues/23" 2 | function y = t23LineContinuationCall() 3 | someFunction(arg1, ... some comment 4 | % ^^^^^^^^^^^^ comment.continuation.line.matlab 5 | arg2, ... more comments 6 | % ^^^^^^^^^^^^^ comment.continuation.line.matlab 7 | arg3 ... last comment 8 | % ^^^^^^^^^^^^ comment.continuation.line.matlab 9 | ); 10 | y = 0; 11 | end -------------------------------------------------------------------------------- /test/t24BlockHeaderComments.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Comments after block headers: https://github.com/mathworks/MATLAB-Language-grammar/issues/24" 2 | classdef t24BlockHeaderComments < handle % comment 3 | % ^^^^^^^^^ comment.line.percentage.matlab 4 | methods % A comment 5 | % ^^^^^^^^^^^^ comment.line.percentage.matlab 6 | end 7 | events % A comment 8 | % ^^^^^^^^^^^^ comment.line.percentage.matlab 9 | end 10 | properties % A comment again 11 | % ^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 12 | end 13 | enumeration % One more comment 14 | % ^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 15 | end 16 | end -------------------------------------------------------------------------------- /test/t30functionContinuation.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Line continuation in function declaration: https://github.com/mathworks/MATLAB-Language-grammar/issues/30" 2 | function y = t30functionContinuation( ... comment 3 | % ^^^^^^^ comment.continuation.line.matlab 4 | arg1, ... comment 5 | % ^^^^ variable.parameter.input.matlab 6 | % ^^^^^^^ comment.continuation.line.matlab 7 | arg2 ... comment 8 | % ^^^^ variable.parameter.input.matlab 9 | % ^^^^^^^ comment.continuation.line.matlab 10 | ) 11 | y = arg1 + arg2; 12 | end -------------------------------------------------------------------------------- /test/t41FunctionDefinitions.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Function declarations: https://github.com/mathworks/MATLAB-Language-grammar/issues/41" 2 | function tFunctionDefinitions(in1) 3 | % ^^^^^^^^^^^^^^^^^^^^ entity.name.function.matlab 4 | % Help text 5 | y = in1; 6 | % ^^^^^^^^^^string.quoted.double.matlab 7 | anonymousFunction = @(in1,in2) in1 + in2; 8 | % ^ keyword.operator.assignment.matlab 9 | % ^ punctuation.definition.function.anonymous.matlab 10 | % ^ punctuation.definition.parameters.begin.matlab 11 | % ^^^ variable.parameter.input.matlab 12 | % ^ punctuation.separator.parameter.comma.matlab 13 | % ^^^ variable.parameter.input.matlab 14 | % ^ punctuation.definition.parameters.end.matlab 15 | % ^ keyword.operator.arithmetic.matlab 16 | % ^ punctuation.terminator.semicolon.matlab 17 | 18 | end 19 | %<- storage.type.function.end.matlab 20 | 21 | function [a,b,c] = multiOutput() 22 | % ^ punctuation.section.assignment.group.begin.matlab 23 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 24 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 25 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 26 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 27 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 28 | % ^ punctuation.section.assignment.group.end.matlab 29 | % ^ keyword.operator.assignment.matlab 30 | % ^^^^^^^^^^^ entity.name.function.matlab 31 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 32 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 33 | % Help text 34 | a = "a string"; 35 | b = "b string"; 36 | c = "c string"; 37 | end 38 | %<- storage.type.function.end.matlab 39 | 40 | function [a,b,... comment 41 | % ^ punctuation.section.assignment.group.begin.matlab 42 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 43 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 44 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 45 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 46 | % ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab 47 | % ^^^^^^^ meta.assignment.variable.output.matlab comment.continuation.line.matlab 48 | c] = multiLine(in1) 49 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 50 | % ^ punctuation.section.assignment.group.end.matlab 51 | % ^ keyword.operator.assignment.matlab 52 | % ^^^^^^^^^ entity.name.function.matlab 53 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 54 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 55 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 56 | % Help text 57 | a = in1; 58 | b = "a string"; 59 | end 60 | %<- storage.type.function.end.matlab 61 | 62 | function [a,... 63 | % ^ punctuation.section.assignment.group.begin.matlab 64 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 65 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 66 | % ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab 67 | b] = multiLine2 (in1,... comment 68 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 69 | % ^ punctuation.section.assignment.group.end.matlab 70 | % ^ keyword.operator.assignment.matlab 71 | % ^^^^^^^^^^ entity.name.function.matlab 72 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 73 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 74 | % ^ meta.parameters.matlab punctuation.separator.parameter.comma.matlab 75 | % ^^^ meta.parameters.matlab punctuation.separator.continuation.line.matlab 76 | % ^^^^^^^ meta.parameters.matlab comment.continuation.line.matlab 77 | in2) 78 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 79 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 80 | % Help text 81 | a = in1; 82 | b = in2; 83 | end 84 | %<- storage.type.function.end.matlab 85 | 86 | 87 | function a ... comment 88 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 89 | % ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab 90 | % ^^^^^^^ meta.assignment.variable.output.matlab comment.continuation.line.matlab 91 | = multiline3... 92 | % ^ keyword.operator.assignment.matlab 93 | % ^^^^^^^^^^ entity.name.function.matlab 94 | % ^^^ meta.function.declaration.matlab punctuation.separator.continuation.line.matlab 95 | (in1) 96 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 97 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 98 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 99 | a = in1; 100 | end 101 | 102 | 103 | function multiline4(... comment 104 | % ^^^^^^^^^^ entity.name.function.matlab 105 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 106 | % ^^^ meta.parameters.matlab punctuation.separator.continuation.line.matlab 107 | % ^^^^^^^ meta.parameters.matlab comment.continuation.line.matlab 108 | in1) 109 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 110 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 111 | disp(in1); 112 | end 113 | 114 | function [... 115 | % ^ punctuation.section.assignment.group.begin.matlab 116 | % ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab 117 | a... 118 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 119 | % ^^^ meta.assignment.variable.output.matlab punctuation.separator.continuation.line.matlab 120 | ,b] ... comment 121 | % ^ meta.assignment.variable.output.matlab punctuation.separator.parameter.comma.matlab 122 | % ^ meta.assignment.variable.output.matlab variable.parameter.output.matlab 123 | % ^ punctuation.section.assignment.group.end.matlab 124 | % ^^^ meta.function.declaration.matlab punctuation.separator.continuation.line.matlab 125 | % ^^^^^^^ meta.function.declaration.matlab comment.continuation.line.matlab 126 | = multiline5(in1) 127 | % ^ keyword.operator.assignment.matlab 128 | % ^^^^^^^^^^ entity.name.function.matlab 129 | % ^ meta.parameters.matlab punctuation.definition.parameters.begin.matlab 130 | % ^^^ meta.parameters.matlab variable.parameter.input.matlab 131 | % ^ meta.parameters.matlab punctuation.definition.parameters.end.matlab 132 | a = in1; 133 | b = "a string"; 134 | end 135 | 136 | function functionWithoutParens 137 | % ^^^^^^^^^^^^^^^^^^^^^meta.function.matlab entity.name.function.matlab 138 | % Help text 139 | y = "a string"; 140 | end 141 | %<- storage.type.function.end.matlab 142 | 143 | function functionWithoutParensAndEnd 144 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^meta.function.matlab entity.name.function.matlab 145 | % Help text 146 | y = "a string"; 147 | -------------------------------------------------------------------------------- /test/t51Imports.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Imports: https://github.com/mathworks/MATLAB-Language-grammar/pull/51" 2 | 3 | import module 4 | % <------ keyword.other.import.matlab 5 | % ^^^^^^ entity.name.module.matlab 6 | 7 | import module; 8 | % <------ keyword.other.import.matlab 9 | % ^^^^^^ entity.name.module.matlab 10 | 11 | import module 12 | % <------ keyword.other.import.matlab 13 | % ^^^^^^ entity.name.module.matlab 14 | 15 | import module.submodule.class.function 16 | % <------ keyword.other.import.matlab 17 | % ^^^^^^ entity.name.module.matlab 18 | % ^ punctuation.separator.matlab 19 | % ^^^^^^^^^ entity.name.module.matlab 20 | % ^ punctuation.separator.matlab 21 | % ^^^^^ entity.name.module.matlab 22 | % ^ punctuation.separator.matlab 23 | % ^^^^^^^^ entity.name.module.matlab 24 | 25 | import module.* 26 | % ^^^^^^ keyword.other.import.matlab 27 | % ^^^^^^ entity.name.module.matlab 28 | % ^ punctuation.separator.matlab 29 | % ^ variable.language.wildcard.matlab 30 | -------------------------------------------------------------------------------- /test/t54LineContinuationInAnonymousFunctions.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "LineContinationInAnonymousFunctions: https://github.com/mathworks/MATLAB-Language-grammar/pull/54" 2 | 3 | 4 | @(x, y) x.^2+y; 5 | % <- punctuation.definition.function.anonymous.matlab 6 | %^ punctuation.definition.parameters.begin.matlab 7 | % ^^^^ meta.parameters.matlab 8 | % ^ variable.parameter.input.matlab 9 | % ^ punctuation.separator.parameter.comma.matlab 10 | % ^ variable.parameter.input.matlab 11 | % ^ punctuation.definition.parameters.end.matlab 12 | % ^^^^^^ meta.parameters.matlab 13 | 14 | @(x,... 15 | % <- punctuation.definition.function.anonymous.matlab 16 | %^ punctuation.definition.parameters.begin.matlab 17 | % ^^^^^ meta.parameters.matlab 18 | % ^^^ punctuation.separator.continuation.line.matlab 19 | y) x... 20 | % ^ meta.parameters.matlab 21 | % ^ punctuation.definition.parameters.end.matlab 22 | % ^^^^ meta.parameters.matlab 23 | % ^^^ punctuation.separator.continuation.line.matlab 24 | .^2+y; 25 | % ^^^^^ meta.parameters.matlab 26 | 27 | @(x,... comment 28 | % <- punctuation.definition.function.anonymous.matlab 29 | %^ punctuation.definition.parameters.begin.matlab 30 | % ^^^^^ meta.parameters.matlab 31 | % ^^^ punctuation.separator.continuation.line.matlab 32 | % ^^^^^^^ comment.continuation.line.matlab 33 | y)... comment 34 | % ^ meta.parameters.matlab 35 | % ^ punctuation.definition.parameters.end.matlab 36 | % ^^^ punctuation.separator.continuation.line.matlab 37 | % ^^^^^^^ comment.continuation.line.matlab 38 | x... more comment 39 | % ^^^^^^^^^^^^^^^^^ meta.parameters.matlab 40 | % ^^^ punctuation.separator.continuation.line.matlab 41 | % ^^^^^^^^^^^^ comment.continuation.line.matlab 42 | .^2+y; 43 | % ^^^^^ meta.parameters.matlab 44 | 45 | -------------------------------------------------------------------------------- /test/t57Operators.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Operators: https://github.com/mathworks/MATLAB-Language-grammar/pull/57" 2 | 3 | %% Assignment and metadata query 4 | 5 | mc = ?class 6 | % ^ keyword.operator.assignment.matlab 7 | % ^ keyword.operator.other.question.matlab 8 | 9 | %% Arithmatic operations 10 | 11 | arithmetic1 = 1+2; 12 | % ^ keyword.operator.arithmetic.matlab 13 | arithmetic2 = 1- 2; 14 | % ^ keyword.operator.arithmetic.matlab 15 | arithmetic3 = 1 *2; 16 | % ^ keyword.operator.arithmetic.matlab 17 | arithmetic4 = 1 / 2; 18 | % ^ keyword.operator.arithmetic.matlab 19 | arithmetic5 = 1+... 20 | % ^ keyword.operator.arithmetic.matlab 21 | 2; 22 | arithmetic6 = 1- ... 23 | % ^ keyword.operator.arithmetic.matlab 24 | 2; 25 | arithmetic7 = 1 *... 26 | % ^ keyword.operator.arithmetic.matlab 27 | 2; 28 | arithmetic8 = 1 / ... 29 | % ^ keyword.operator.arithmetic.matlab 30 | 2; 31 | 32 | 33 | %% Logical operations 34 | 35 | logical1 = 1==1; 36 | % ^^ keyword.operator.logical.matlab 37 | logical2 = 1~= 1; 38 | % ^^ keyword.operator.logical.matlab 39 | logical3 = 1 &1; 40 | % ^ keyword.operator.logical.matlab 41 | logical4 = 1 && 1 ; 42 | % ^^ keyword.operator.logical.matlab 43 | logical5 = 1==... 44 | % ^^ keyword.operator.logical.matlab 45 | 1; 46 | logical6 = 1~= ... 47 | % ^^ keyword.operator.logical.matlab 48 | 1; 49 | logical7 = 1 |... 50 | % ^ keyword.operator.logical.matlab 51 | 1; 52 | logical8 = 1 || ... 53 | % ^^ keyword.operator.logical.matlab 54 | 1 ; 55 | 56 | 57 | %% Colon operator 58 | 59 | colon1 = 1:10; 60 | % ^ keyword.operator.vector.colon.matlab 61 | colon2 = 1: 10; 62 | % ^ keyword.operator.vector.colon.matlab 63 | colon3 = 1 :10; 64 | % ^ keyword.operator.vector.colon.matlab 65 | colon4 = 1 : 10; 66 | % ^ keyword.operator.vector.colon.matlab 67 | colon5 = 1:... 68 | % ^ keyword.operator.vector.colon.matlab 69 | 10; 70 | colon6 = 1: ... 71 | % ^ keyword.operator.vector.colon.matlab 72 | 10; 73 | colon7 = 1 :... 74 | % ^ keyword.operator.vector.colon.matlab 75 | 10; 76 | colon8 = 1 : ... 77 | % ^ keyword.operator.vector.colon.matlab 78 | 10; 79 | 80 | 81 | %% Comparative operators 82 | 83 | comparative1 = 1>0; 84 | % ^ keyword.operator.relational.matlab 85 | comparative2 = 1>= 0; 86 | % ^^ keyword.operator.relational.matlab 87 | comparative3 = 1 <=0; 88 | % ^^ keyword.operator.relational.matlab 89 | comparative4 = 1 < 0; 90 | % ^ keyword.operator.relational.matlab 91 | comparative5 = 1>... 92 | % ^ keyword.operator.relational.matlab 93 | 0; 94 | comparative6 = 1>= ... 95 | % ^^ keyword.operator.relational.matlab 96 | 0; 97 | comparative7 = 1 <=... 98 | % ^^ keyword.operator.relational.matlab 99 | 0; 100 | comparative8 = 1 < ... 101 | % ^ keyword.operator.relational.matlab 102 | 0; 103 | -------------------------------------------------------------------------------- /test/t61ReadWriteOperations.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "ReadWriteOperations: https://github.com/mathworks/MATLAB-Language-grammar/pull/61" 2 | 3 | variable 4 | % <------- variable.other.readwrite.matlab 5 | 6 | classInstance.property 7 | % <------------ variable.other.readwrite.matlab 8 | % ^ punctuation.accessor.dot.matlab 9 | % ^^^^^^^^ variable.other.property.matlab 10 | 11 | classInstance.method() 12 | % <------------ variable.other.readwrite.matlab 13 | % ^ punctuation.accessor.dot.matlab 14 | % ^^^^^^ entity.name.function.matlab 15 | % ^ punctuation.section.parens.begin.matlab 16 | % ^ punctuation.section.parens.end.matlab 17 | -------------------------------------------------------------------------------- /test/t64SwitchStatements.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "SwitchStatements: https://github.com/mathworks/MATLAB-Language-grammar/pull/64" 2 | 3 | 4 | 5 | % https://github.com/mathworks/MATLAB-Language-grammar/issues/45 6 | switch(letter) 7 | % <----- keyword.control.switch.matlab 8 | % ^^^^^^^^ meta.switch.declaration.matlab 9 | case {'A', 'B', 'C'} 10 | % ^^^^ keyword.control.switch.case.matlab 11 | % ^^^^^^^^^^^^^^^^ meta.case.declaration.matlab 12 | return; 13 | case {'D', 'E', 'F'} 14 | % ^^^^ keyword.control.switch.case.matlab 15 | % ^^^^^^^^^^^^^^^^ meta.case.declaration.matlab 16 | return; 17 | case 'X' 18 | % ^^^^ keyword.control.switch.case.matlab 19 | % ^^^ meta.case.declaration.matlab 20 | % ^^^^ keyword.control.switch.case.matlab 21 | % ^^^ meta.case.declaration.matlab 22 | return; 23 | case 'Y' 24 | % ^^^^ keyword.control.switch.case.matlab 25 | % ^^^ meta.case.declaration.matlab 26 | return; 27 | case 'Z' 28 | % ^^^^ keyword.control.switch.case.matlab 29 | % ^^^ meta.case.declaration.matlab 30 | return; 31 | otherwise 32 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 33 | return; 34 | end 35 | % <-- keyword.control.end.switch.matlab 36 | 37 | 38 | % https://github.com/mathworks/MATLAB-Language-grammar/issues/47 39 | switch obj.memberVariable 40 | % <----- keyword.control.switch.matlab 41 | % ^^^^^^^^^^^^^^^^^^ meta.switch.declaration.matlab 42 | case { 0, 1, 2 } 43 | % ^^^^ keyword.control.switch.case.matlab 44 | % ^^^^^^^^^^^ meta.case.declaration.matlab 45 | disp( 'dummy output - 0' ); 46 | case 3 47 | % ^^^^ keyword.control.switch.case.matlab 48 | % ^ meta.case.declaration.matlab 49 | disp( 'dummy output - 1' ); 50 | otherwise 51 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 52 | disp( 'dummy output - otherwise'); 53 | 54 | end 55 | % <-- keyword.control.end.switch.matlab 56 | 57 | switch memberVariable 58 | % <----- keyword.control.switch.matlab 59 | % ^^^^^^^^^^^^^^ meta.switch.declaration.matlab 60 | case { 0, 1, 2 } 61 | disp( 'dummy output - 0' ); 62 | case 3 63 | disp( 'dummy output - 1' ); 64 | otherwise 65 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 66 | disp( 'dummy output - otherwise' ); 67 | end 68 | % <-- keyword.control.end.switch.matlab 69 | 70 | 71 | % https://github.com/mathworks/MATLAB-Language-grammar/issues/52 72 | switch input 73 | % <----- keyword.control.switch.matlab 74 | % ^^^^^ meta.switch.declaration.matlab 75 | case 0 76 | % ^^^^ keyword.control.switch.case.matlab 77 | % ^ meta.case.declaration.matlab 78 | disp foo 79 | case { 1,2} 80 | % ^^^^ keyword.control.switch.case.matlab 81 | % ^^^^^^ meta.case.declaration.matlab 82 | disp bar 83 | case {3,4 } 84 | % ^^^^ keyword.control.switch.case.matlab 85 | % ^^^^^^ meta.case.declaration.matlab 86 | disp foobar 87 | case {5,6} 88 | % ^^^^ keyword.control.switch.case.matlab 89 | % ^^^^^ meta.case.declaration.matlab 90 | disp baz 91 | end 92 | % <-- keyword.control.end.switch.matlab 93 | 94 | 95 | % https://github.com/mathworks/MATLAB-Language-grammar/issues/64 96 | switch experiment 97 | % <----- keyword.control.switch.matlab 98 | % ^^^^^^^^^^ meta.switch.declaration.matlab 99 | case 0 % Script testing w/ artery only output, text here 100 | % ^^^^ keyword.control.switch.case.matlab 101 | % ^ meta.case.declaration.matlab 102 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.percentage.matlab 103 | end 104 | % <-- keyword.control.end.switch.matlab 105 | 106 | 107 | a = @() 2; 108 | b = @() 2; 109 | 110 | switch a() 111 | % <----- keyword.control.switch.matlab 112 | % ^^^ meta.switch.declaration.matlab 113 | case 1 114 | % ^^^^ keyword.control.switch.case.matlab 115 | % ^ meta.case.declaration.matlab 116 | disp("yes") 117 | case b() 118 | % ^^^^ keyword.control.switch.case.matlab 119 | % ^^^ meta.case.declaration.matlab 120 | disp("wierd") 121 | otherwise 122 | % ^^^^^^^^^ keyword.control.switch.otherwise.matlab 123 | disp("no") 124 | end 125 | % <-- keyword.control.end.switch.matlab -------------------------------------------------------------------------------- /test/t78EOLcommentsInBlocks.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "EOLcommentsInBlocks: https://github.com/mathworks/MATLAB-Language-grammar/pull/78" 2 | 3 | 4 | while test % test 5 | % <---- keyword.control.while.matlab 6 | % ^^^^ meta.while.declaration.matlab 7 | % ^^^^^^ comment.line.percentage.matlab 8 | % test 9 | end 10 | 11 | while (test) % test 12 | % <---- keyword.control.while.matlab 13 | % ^^^^^^ meta.while.declaration.matlab 14 | % ^^^^^^ comment.line.percentage.matlab 15 | % test 16 | end 17 | 18 | while test; % test 19 | % <---- keyword.control.while.matlab 20 | % ^^^^ meta.while.declaration.matlab 21 | % ^^^^^^ comment.line.percentage.matlab 22 | % test 23 | end 24 | 25 | for i = 1:10 % test 26 | % <-- keyword.control.for.matlab 27 | % ^^^^^ meta.for.declaration.matlab 28 | % ^^^^^^ comment.line.percentage.matlab 29 | % test 30 | end 31 | 32 | if i == 10 % test 33 | % <-- keyword.control.if.matlab 34 | % ^^^^^^^ meta.if.declaration.matlab 35 | % ^^^^^^ comment.line.percentage.matlab 36 | % test 37 | end -------------------------------------------------------------------------------- /test/t80AnonymousFunctionArgument.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "AnonymousFunctionArgument: https://github.com/mathworks/MATLAB-Language-grammar/pull/80" 2 | 3 | q = integral(@(x) x.^2, 0, 1); 4 | % ^^^^^^^^^ meta.function.anonymous.matlab 5 | % ^ - meta.function.anonymous.matlab 6 | 7 | 8 | if ~isempty(lstr) 9 | p.DataTipTemplate.DataTipRows(end+1) = ... 10 | dataTipTextRow('cBin', arrayfun(@(x) lstr, binsX, 'UniformOutput', false)); 11 | % ^^^^^^^^^ meta.function.anonymous.matlab 12 | % ^ - meta.function.anonymous.matlab 13 | end 14 | % <-- meta.if.matlab keyword.control.end.if.matlab 15 | 16 | 17 | if ~isempty(lstr) 18 | p.DataTipTemplate.DataTipRows(end+1) = ... 19 | dataTipTextRow('cBin', arrayfun(@(x) lstr, binsX, 'UniformOutput', false)); 20 | % ^^^^^^^^^ meta.function.anonymous.matlab 21 | % ^ - meta.function.anonymous.matlab 22 | end 23 | % <-- meta.if.matlab keyword.control.end.if.matlab 24 | -------------------------------------------------------------------------------- /test/t87ClassAttributes.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Property validation: https://github.com/mathworks/MATLAB-Language-grammar/issues/87" 2 | classdef (AllowedSubclasses = {?SubClass1,?SubClass2}) SuperClass 3 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ storage.modifier.section.class.matlab 4 | % ^^^^^^^^^^^^^^^^^^^^^ meta.cell.literal.matlab 5 | % ^^^^^^^^^^ entity.name.type.class.matlab 6 | end 7 | -------------------------------------------------------------------------------- /test/t89MetaclassLiterals.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Metaclasses: https://github.com/mathworks/MATLAB-Language-grammar/issues/89" 2 | classdef (AllowedSubclasses = {?SubClass1,?namespace1.SubClass2}) SuperClass 3 | % ^^^^^^^^^ meta.metaclass.matlab entity.other.class.matlab 4 | % ^^^^^^^^^^^^^^^^^^^^ meta.metaclass.matlab 5 | % ^^^^^^^^^^ entity.name.namespace.matlab 6 | % ^^^^^^^^^ entity.other.class.matlab 7 | methods 8 | function foo() 9 | x = ?namespace2.cls 10 | % ^^^^^^^^^^^^^^ meta.metaclass.matlab 11 | % ^^^^^^^^^^ entity.name.namespace.matlab 12 | % ^^^ entity.other.class.matlab 13 | y = ?MyClass 14 | % ^^^^^^^ meta.metaclass.matlab entity.other.class.matlab 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /test/t93ContinuationAfterClassAttributes.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Line continuation after class attributes: https://github.com/mathworks/MATLAB-Language-grammar/issues/93" 2 | 3 | % Case 1: Line continuation without attributes 4 | classdef ... 5 | % ^^^ meta.class.declaration.matlab punctuation.separator.continuation.line.matlab 6 | Class1 7 | % ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab 8 | end 9 | 10 | % Case 2: Line continuation with attributes 11 | classdef (Abstract) ... 12 | % ^^^^^^^^^^^^^^ meta.class.declaration.matlab 13 | % ^^^^^^^^^^ storage.modifier.section.class.matlab 14 | % ^^^ punctuation.separator.continuation.line.matlab 15 | Class2 16 | % ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab 17 | end -------------------------------------------------------------------------------- /test/t95AttributeParsing.m: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "source.matlab" "Property etc. attribute parsing: https://github.com/mathworks/MATLAB-Language-grammar/issues/95" 2 | classdef Class 3 | % Some properties 4 | properties (SetAccess=public, GetAccess={?foo.bar.baz}) 5 | % ^^^^^^^^^^^^ meta.cell.literal.matlab 6 | end 7 | 8 | events (Hidden=true, ListenAccess={?foo.bar}, NotifyAccess=?bar.baz) 9 | % ^^^^^^^^ meta.cell.literal.matlab 10 | end 11 | 12 | methods (Access=?bar.baz, Abstract=false) 13 | % ^^^^^^^ meta.metaclass.matlab 14 | end 15 | end 16 | --------------------------------------------------------------------------------