This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 267470
Collapse All | Expand All

(-)a/php.editor/src/org/netbeans/modules/php/editor/csl/DeclarationFinderImpl.java (-24 / +42 lines)
Lines 52-57 Link Here
52
import java.util.concurrent.TimeoutException;
52
import java.util.concurrent.TimeoutException;
53
import java.util.logging.Level;
53
import java.util.logging.Level;
54
import java.util.logging.Logger;
54
import java.util.logging.Logger;
55
import java.util.regex.Pattern;
55
import javax.swing.text.Document;
56
import javax.swing.text.Document;
56
import org.netbeans.api.annotations.common.CheckForNull;
57
import org.netbeans.api.annotations.common.CheckForNull;
57
import org.netbeans.api.lexer.Token;
58
import org.netbeans.api.lexer.Token;
Lines 256-263 Link Here
256
    private static class ReferenceSpanFinder {
257
    private static class ReferenceSpanFinder {
257
258
258
        private static final int RECURSION_LIMIT = 100;
259
        private static final int RECURSION_LIMIT = 100;
260
        // e.g.  @var VarType $variable 
261
        private static final Pattern INLINE_PHP_VAR_COMMENT_PATTERN = Pattern.compile("^[ \t]*@var[ \t]+.+[ \t]+\\$.+$"); // NOI18N
262
        private static final Logger LOGGER = Logger.getLogger(DeclarationFinderImpl.class.getName());
263
259
        private int recursionCounter = 0;
264
        private int recursionCounter = 0;
260
        private static final Logger LOGGER = Logger.getLogger(DeclarationFinderImpl.class.getName());
261
        private final Model model;
265
        private final Model model;
262
266
263
        public ReferenceSpanFinder(final Model model) {
267
        public ReferenceSpanFinder(final Model model) {
Lines 294-299 Link Here
294
                        }
298
                        }
295
                    }
299
                    }
296
                } else if (id.equals(PHPTokenId.PHPDOC_COMMENT)) {
300
                } else if (id.equals(PHPTokenId.PHPDOC_COMMENT)) {
301
                    String tokenText = token.text().toString();
302
                    if (INLINE_PHP_VAR_COMMENT_PATTERN.matcher(tokenText).matches()) {
303
                        OffsetRange offsetRange = getVarCommentOffsetRange(ts, tokenText, caretOffset);
304
                        if (offsetRange != null) {
305
                            return offsetRange;
306
                        }
307
                    }
297
                    PHPDocCommentParser docParser = new PHPDocCommentParser();
308
                    PHPDocCommentParser docParser = new PHPDocCommentParser();
298
                    PHPDocBlock docBlock = docParser.parse(ts.offset() - 3, ts.offset() + token.length(), token.text().toString());
309
                    PHPDocBlock docBlock = docParser.parse(ts.offset() - 3, ts.offset() + token.length(), token.text().toString());
299
                    ASTNode[] hierarchy = Utils.getNodeHierarchyAtOffset(docBlock, caretOffset);
310
                    ASTNode[] hierarchy = Utils.getNodeHierarchyAtOffset(docBlock, caretOffset);
Lines 349-378 Link Here
349
                        }
360
                        }
350
                    }
361
                    }
351
                } else if (id.equals(PHPTokenId.PHP_COMMENT) && token.text() != null) {
362
                } else if (id.equals(PHPTokenId.PHP_COMMENT) && token.text() != null) {
352
                    String text = token.text().toString();
363
                    OffsetRange offsetRange = getVarCommentOffsetRange(ts, token.text().toString(), caretOffset);
353
                    final String dollaredVar = "@var";
364
                    if (offsetRange != null) {
354
                    if (text.contains(dollaredVar)) {
365
                        return offsetRange;
355
                        String[] segments = text.split("\\s");
356
                        for (int i = 0; i < segments.length; i++) {
357
                            String seg = segments[i];
358
                            if (seg.equals(dollaredVar) && segments.length > i + 2) {
359
                                for (int j = 1; j <= 2; j++) {
360
                                    seg = segments[i + j];
361
                                    if (seg != null && seg.trim().length() > 0) {
362
                                        int indexOf = text.indexOf(seg);
363
                                        assert indexOf != -1;
364
                                        indexOf += ts.offset();
365
                                        OffsetRange range = new OffsetRange(indexOf, indexOf + seg.length());
366
                                        if (range.containsInclusive(caretOffset)) {
367
                                            return range;
368
                                        }
369
                                    }
370
                                }
371
                                return OffsetRange.NONE;
372
                            }
373
                        }
374
                    }
366
                    }
375
376
                }
367
                }
377
            }
368
            }
378
            if (caretOffset == startTSOffset) {
369
            if (caretOffset == startTSOffset) {
Lines 388-393 Link Here
388
            return OffsetRange.NONE;
379
            return OffsetRange.NONE;
389
        }
380
        }
390
381
382
        @CheckForNull
383
        private OffsetRange getVarCommentOffsetRange(TokenSequence<PHPTokenId> ts, String text, int caretOffset) {
384
            final String dollaredVar = "@var"; // NOI18N
385
            if (text.contains(dollaredVar)) {
386
                String[] segments = text.split("[ \t]+"); // NOI18N
387
                for (int i = 0; i < segments.length; i++) {
388
                    String seg = segments[i];
389
                    if (seg.equals(dollaredVar) && segments.length > i + 2) {
390
                        for (int j = 1; j <= 2; j++) {
391
                            seg = segments[i + j];
392
                            if (seg != null && seg.trim().length() > 0) {
393
                                int indexOf = text.indexOf(seg);
394
                                assert indexOf != -1;
395
                                indexOf += ts.offset();
396
                                OffsetRange range = new OffsetRange(indexOf, indexOf + seg.length());
397
                                if (range.containsInclusive(caretOffset)) {
398
                                    return range;
399
                                }
400
                            }
401
                        }
402
                        return OffsetRange.NONE;
403
                    }
404
                }
405
            }
406
            return null;
407
        }
408
391
        private void logRecursion(TokenSequence<PHPTokenId> ts) {
409
        private void logRecursion(TokenSequence<PHPTokenId> ts) {
392
            CharSequence tokenText = null;
410
            CharSequence tokenText = null;
393
            if (ts != null) {
411
            if (ts != null) {
(-)a/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java (-661 / +695 lines)
Lines 1-4 Link Here
1
/* The following code was generated by JFlex 1.4.3 on 17/04/23 9:54 */
1
/* The following code was generated by JFlex 1.4.3 on 17/07/09 10:32 */
2
2
3
/*
3
/*
4
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Lines 56-62 Link Here
56
/**
56
/**
57
 * This class is a scanner generated by
57
 * This class is a scanner generated by
58
 * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
58
 * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
59
 * on 17/04/23 9:54 from the specification file
59
 * on 17/07/09 10:32 from the specification file
60
 * <tt>/home/junichi11/hg/web-main/php.editor/tools/ASTPHP5Scanner.flex</tt>
60
 * <tt>/home/junichi11/hg/web-main/php.editor/tools/ASTPHP5Scanner.flex</tt>
61
 */
61
 */
62
public class ASTPHP5Scanner implements Scanner {
62
public class ASTPHP5Scanner implements Scanner {
Lines 234-262 Link Here
234
    "\1\175\1\47\1\175\1\176\1\1\1\176\2\1\1\175"+
234
    "\1\175\1\47\1\175\1\176\1\1\1\176\2\1\1\175"+
235
    "\1\177\1\0\1\177\1\0\2\150\1\200\2\0\6\6"+
235
    "\1\177\1\0\1\177\1\0\2\150\1\200\2\0\6\6"+
236
    "\1\201\1\202\1\6\1\203\23\6\1\204\12\6\1\205"+
236
    "\1\201\1\202\1\6\1\203\23\6\1\204\12\6\1\205"+
237
    "\1\6\1\206\5\6\12\0\11\6\4\0\1\207\2\0"+
237
    "\1\6\1\206\5\6\12\0\11\6\5\0\1\207\3\0"+
238
    "\1\45\1\47\1\1\2\0\1\6\1\210\5\6\1\211"+
238
    "\1\45\1\47\1\1\2\0\1\6\1\210\5\6\1\211"+
239
    "\1\6\1\212\1\213\4\6\1\214\1\6\1\215\1\216"+
239
    "\1\6\1\212\1\213\4\6\1\214\1\6\1\215\1\216"+
240
    "\3\6\1\217\2\6\1\220\1\6\1\221\2\6\1\222"+
240
    "\3\6\1\217\2\6\1\220\1\6\1\221\2\6\1\222"+
241
    "\1\223\1\224\4\6\1\225\1\226\2\6\1\227\2\6"+
241
    "\1\223\1\224\4\6\1\225\1\226\2\6\1\227\2\6"+
242
    "\5\0\1\230\6\0\11\6\2\231\4\0\4\232\2\233"+
242
    "\5\0\1\230\6\0\11\6\2\231\5\0\4\232\2\233"+
243
    "\1\0\2\6\1\234\2\6\1\235\7\6\1\236\7\6"+
243
    "\1\0\2\6\1\234\2\6\1\235\7\6\1\236\7\6"+
244
    "\1\237\1\240\1\241\1\6\1\0\1\242\1\243\2\6"+
244
    "\1\237\1\240\1\241\1\6\1\0\1\242\1\243\2\6"+
245
    "\4\0\1\244\5\0\1\245\11\6\5\0\1\246\6\6"+
245
    "\4\0\1\244\5\0\1\245\11\6\6\0\1\246\6\6"+
246
    "\1\247\3\6\1\250\1\251\1\252\1\6\1\253\3\6"+
246
    "\1\247\3\6\1\250\1\251\1\252\1\6\1\253\3\6"+
247
    "\1\254\1\0\1\255\1\6\1\256\3\0\1\257\1\0"+
247
    "\1\254\1\0\1\255\1\6\1\256\3\0\1\257\1\0"+
248
    "\1\6\1\260\7\6\2\261\3\0\3\6\1\262\1\263"+
248
    "\1\6\1\260\7\6\2\261\4\0\3\6\1\262\1\263"+
249
    "\5\6\1\264\1\6\1\265\1\266\1\6\1\0\1\6"+
249
    "\5\6\1\264\1\6\1\265\1\266\1\6\1\0\1\6"+
250
    "\1\267\1\270\1\6\1\271\3\6\1\272\2\6\4\0"+
250
    "\1\267\1\270\1\6\1\271\3\6\1\272\2\6\5\0"+
251
    "\2\6\1\273\1\274\1\6\1\275\2\6\1\276\1\6"+
251
    "\2\6\1\273\1\274\1\6\1\275\2\6\1\276\1\6"+
252
    "\1\0\1\277\1\300\2\6\1\301\2\6\3\0\1\302"+
252
    "\1\0\1\277\1\300\2\6\1\301\2\6\5\0\1\302"+
253
    "\1\303\1\6\1\304\1\305\1\6\1\306\2\6\1\307"+
253
    "\1\303\1\6\1\304\1\305\1\6\1\306\2\6\1\307"+
254
    "\1\6\5\0\5\6\5\0\1\310\1\311\1\312\2\6"+
254
    "\1\6\10\0\5\6\7\0\1\310\1\311\1\312\2\6"+
255
    "\1\313\2\0\1\314\1\6\1\0\1\6\1\0\1\6"+
255
    "\1\0\1\313\2\0\1\314\1\6\5\0\1\6\1\315"+
256
    "\7\0\1\315\7\0\1\75\1\0";
256
    "\3\0\1\6\7\0\1\316\7\0\1\75\1\0";
257
257
258
  private static int [] zzUnpackAction() {
258
  private static int [] zzUnpackAction() {
259
    int [] result = new int[764];
259
    int [] result = new int[785];
260
    int offset = 0;
260
    int offset = 0;
261
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
261
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
262
    return result;
262
    return result;
Lines 339-385 Link Here
339
    "\0\u07b4\0\u51d0\0\u07b4\0\u5214\0\u5258\0\u529c\0\u52e0\0\u5324"+
339
    "\0\u07b4\0\u51d0\0\u07b4\0\u5214\0\u5258\0\u529c\0\u52e0\0\u5324"+
340
    "\0\u5368\0\u53ac\0\u53f0\0\u5434\0\u5478\0\u54bc\0\u5500\0\u5544"+
340
    "\0\u5368\0\u53ac\0\u53f0\0\u5434\0\u5478\0\u54bc\0\u5500\0\u5544"+
341
    "\0\u5588\0\u55cc\0\u5610\0\u5654\0\u5698\0\u56dc\0\u5720\0\u5764"+
341
    "\0\u5588\0\u55cc\0\u5610\0\u5654\0\u5698\0\u56dc\0\u5720\0\u5764"+
342
    "\0\u57a8\0\u57ec\0\u5830\0\u5874\0\u58b8\0\u58fc\0\u5940\0\u0550"+
342
    "\0\u57a8\0\u57ec\0\u5830\0\u5874\0\u58b8\0\u58fc\0\u5940\0\u5984"+
343
    "\0\u5984\0\u59c8\0\u5a0c\0\u5a50\0\u5a94\0\u5ad8\0\u5b1c\0\u5b60"+
343
    "\0\u0550\0\u59c8\0\u5a0c\0\u5a50\0\u5a94\0\u5ad8\0\u5b1c\0\u5b60"+
344
    "\0\u07b4\0\u5ba4\0\u5be8\0\u5c2c\0\u5c70\0\u5cb4\0\u07b4\0\u5cf8"+
344
    "\0\u5ba4\0\u5be8\0\u07b4\0\u5c2c\0\u5c70\0\u5cb4\0\u5cf8\0\u5d3c"+
345
    "\0\u07b4\0\u07b4\0\u5d3c\0\u5d80\0\u5dc4\0\u5e08\0\u07b4\0\u5e4c"+
345
    "\0\u07b4\0\u5d80\0\u07b4\0\u07b4\0\u5dc4\0\u5e08\0\u5e4c\0\u5e90"+
346
    "\0\u07b4\0\u07b4\0\u5e90\0\u5ed4\0\u5f18\0\u5f5c\0\u5fa0\0\u5fe4"+
346
    "\0\u07b4\0\u5ed4\0\u07b4\0\u07b4\0\u5f18\0\u5f5c\0\u5fa0\0\u5fe4"+
347
    "\0\u07b4\0\u6028\0\u07b4\0\u606c\0\u60b0\0\u07b4\0\u07b4\0\u07b4"+
347
    "\0\u6028\0\u606c\0\u07b4\0\u60b0\0\u07b4\0\u60f4\0\u6138\0\u07b4"+
348
    "\0\u60f4\0\u6138\0\u617c\0\u61c0\0\u6204\0\u07b4\0\u6248\0\u628c"+
348
    "\0\u07b4\0\u07b4\0\u617c\0\u61c0\0\u6204\0\u6248\0\u628c\0\u07b4"+
349
    "\0\u07b4\0\u62d0\0\u6314\0\u6358\0\u639c\0\u63e0\0\u6424\0\u6468"+
349
    "\0\u62d0\0\u6314\0\u07b4\0\u6358\0\u639c\0\u63e0\0\u6424\0\u6468"+
350
    "\0\u0550\0\u64ac\0\u64f0\0\u6534\0\u6578\0\u65bc\0\u6600\0\u6644"+
350
    "\0\u64ac\0\u64f0\0\u0550\0\u6534\0\u6578\0\u65bc\0\u6600\0\u6644"+
351
    "\0\u6688\0\u66cc\0\u6710\0\u6754\0\u6798\0\u67dc\0\u6820\0\u6864"+
351
    "\0\u6688\0\u66cc\0\u6710\0\u6754\0\u6798\0\u67dc\0\u6820\0\u6864"+
352
    "\0\u0550\0\u68a8\0\u68ec\0\u6930\0\u6974\0\u69b8\0\u0550\0\u1144"+
352
    "\0\u68a8\0\u68ec\0\u0550\0\u6930\0\u6974\0\u69b8\0\u69fc\0\u6a40"+
353
    "\0\u1254\0\u1364\0\u0550\0\u69fc\0\u6a40\0\u6a84\0\u6ac8\0\u6b0c"+
353
    "\0\u6a84\0\u0550\0\u1144\0\u1254\0\u1364\0\u0550\0\u6ac8\0\u6b0c"+
354
    "\0\u6b50\0\u6b94\0\u07b4\0\u6bd8\0\u6c1c\0\u6c60\0\u6ca4\0\u6ce8"+
354
    "\0\u6b50\0\u6b94\0\u6bd8\0\u6c1c\0\u6c60\0\u07b4\0\u6ca4\0\u6ce8"+
355
    "\0\u6d2c\0\u6d70\0\u07b4\0\u6db4\0\u6df8\0\u6e3c\0\u6e80\0\u6ec4"+
355
    "\0\u6d2c\0\u6d70\0\u6db4\0\u6df8\0\u6e3c\0\u07b4\0\u6e80\0\u6ec4"+
356
    "\0\u6f08\0\u6f4c\0\u07b4\0\u07b4\0\u07b4\0\u6f90\0\u6fd4\0\u07b4"+
356
    "\0\u6f08\0\u6f4c\0\u6f90\0\u6fd4\0\u7018\0\u07b4\0\u07b4\0\u07b4"+
357
    "\0\u07b4\0\u7018\0\u705c\0\u70a0\0\u70e4\0\u7128\0\u716c\0\u0550"+
357
    "\0\u705c\0\u70a0\0\u07b4\0\u07b4\0\u70e4\0\u7128\0\u716c\0\u71b0"+
358
    "\0\u71b0\0\u71f4\0\u7238\0\u727c\0\u72c0\0\u0550\0\u7304\0\u7348"+
358
    "\0\u71f4\0\u7238\0\u0550\0\u727c\0\u72c0\0\u7304\0\u7348\0\u738c"+
359
    "\0\u738c\0\u73d0\0\u7414\0\u7458\0\u749c\0\u74e0\0\u7524\0\u7568"+
359
    "\0\u0550\0\u73d0\0\u7414\0\u7458\0\u749c\0\u74e0\0\u7524\0\u7568"+
360
    "\0\u75ac\0\u75f0\0\u7634\0\u7678\0\u07b4\0\u76bc\0\u7700\0\u7744"+
360
    "\0\u75ac\0\u75f0\0\u7634\0\u7678\0\u76bc\0\u7700\0\u7744\0\u7788"+
361
    "\0\u7788\0\u77cc\0\u7810\0\u7854\0\u7898\0\u78dc\0\u7920\0\u07b4"+
361
    "\0\u07b4\0\u77cc\0\u7810\0\u7854\0\u7898\0\u78dc\0\u7920\0\u7964"+
362
    "\0\u07b4\0\u07b4\0\u7964\0\u07b4\0\u79a8\0\u79ec\0\u7a30\0\u7a74"+
362
    "\0\u79a8\0\u79ec\0\u7a30\0\u07b4\0\u07b4\0\u07b4\0\u7a74\0\u07b4"+
363
    "\0\u7ab8\0\u07b4\0\u7afc\0\u0550\0\u7b40\0\u7b84\0\u7bc8\0\u0550"+
363
    "\0\u7ab8\0\u7afc\0\u7b40\0\u7b84\0\u7bc8\0\u07b4\0\u7c0c\0\u0550"+
364
    "\0\u7c0c\0\u7c50\0\u07b4\0\u7c94\0\u7cd8\0\u7d1c\0\u7d60\0\u7da4"+
364
    "\0\u7c50\0\u7c94\0\u7cd8\0\u0550\0\u7d1c\0\u7d60\0\u07b4\0\u7da4"+
365
    "\0\u7de8\0\u7e2c\0\u0550\0\u7e70\0\u7eb4\0\u7ef8\0\u7f3c\0\u7f80"+
365
    "\0\u7de8\0\u7e2c\0\u7e70\0\u7eb4\0\u7ef8\0\u7f3c\0\u0550\0\u7f80"+
366
    "\0\u7fc4\0\u8008\0\u07b4\0\u07b4\0\u804c\0\u8090\0\u80d4\0\u8118"+
366
    "\0\u7fc4\0\u8008\0\u804c\0\u8090\0\u80d4\0\u8118\0\u815c\0\u07b4"+
367
    "\0\u815c\0\u07b4\0\u81a0\0\u07b4\0\u07b4\0\u81e4\0\u8228\0\u826c"+
367
    "\0\u07b4\0\u81a0\0\u81e4\0\u8228\0\u826c\0\u82b0\0\u07b4\0\u82f4"+
368
    "\0\u0550\0\u0550\0\u82b0\0\u07b4\0\u82f4\0\u8338\0\u837c\0\u07b4"+
368
    "\0\u07b4\0\u07b4\0\u8338\0\u837c\0\u83c0\0\u0550\0\u0550\0\u8404"+
369
    "\0\u83c0\0\u8404\0\u8448\0\u848c\0\u84d0\0\u8514\0\u8558\0\u859c"+
369
    "\0\u07b4\0\u8448\0\u848c\0\u84d0\0\u07b4\0\u8514\0\u8558\0\u859c"+
370
    "\0\u07b4\0\u07b4\0\u85e0\0\u07b4\0\u8624\0\u8668\0\u07b4\0\u86ac"+
370
    "\0\u85e0\0\u8624\0\u8668\0\u86ac\0\u86f0\0\u8734\0\u07b4\0\u07b4"+
371
    "\0\u86f0\0\u07b4\0\u07b4\0\u8734\0\u8778\0\u07b4\0\u87bc\0\u8800"+
371
    "\0\u8778\0\u07b4\0\u87bc\0\u8800\0\u07b4\0\u8844\0\u8888\0\u07b4"+
372
    "\0\u8844\0\u8888\0\u88cc\0\u07b4\0\u07b4\0\u8910\0\u07b4\0\u07b4"+
372
    "\0\u07b4\0\u88cc\0\u8910\0\u07b4\0\u8954\0\u8998\0\u89dc\0\u8a20"+
373
    "\0\u8954\0\u0550\0\u8998\0\u89dc\0\u07b4\0\u8a20\0\u8a64\0\u8aa8"+
373
    "\0\u8a64\0\u8aa8\0\u8aec\0\u07b4\0\u07b4\0\u8b30\0\u07b4\0\u07b4"+
374
    "\0\u8aec\0\u8b30\0\u8b74\0\u8bb8\0\u8bfc\0\u8c40\0\u8c84\0\u8cc8"+
374
    "\0\u8b74\0\u0550\0\u8bb8\0\u8bfc\0\u07b4\0\u8c40\0\u8c84\0\u8cc8"+
375
    "\0\u8d0c\0\u8d50\0\u8d94\0\u8dd8\0\u8e1c\0\u07b4\0\u07b4\0\u07b4"+
375
    "\0\u8d0c\0\u8d50\0\u8d94\0\u8dd8\0\u8e1c\0\u8e60\0\u8ea4\0\u8ee8"+
376
    "\0\u8e60\0\u8ea4\0\u0550\0\u8ee8\0\u8f2c\0\u07b4\0\u8f70\0\u8fb4"+
376
    "\0\u8f2c\0\u8f70\0\u8fb4\0\u8ff8\0\u903c\0\u9080\0\u90c4\0\u9108"+
377
    "\0\u8ff8\0\u903c\0\u9080\0\u90c4\0\u9108\0\u914c\0\u9190\0\u91d4"+
377
    "\0\u914c\0\u9190\0\u07b4\0\u07b4\0\u07b4\0\u91d4\0\u9218\0\u925c"+
378
    "\0\u9218\0\u925c\0\u0550\0\u92a0\0\u92e4\0\u9328\0\u936c\0\u93b0"+
378
    "\0\u0550\0\u92a0\0\u92e4\0\u07b4\0\u9328\0\u936c\0\u93b0\0\u93f4"+
379
    "\0\u93f4\0\u9438\0\u0550\0\u947c";
379
    "\0\u9438\0\u947c\0\u94c0\0\u936c\0\u9504\0\u9548\0\u958c\0\u95d0"+
380
    "\0\u9614\0\u9658\0\u969c\0\u96e0\0\u9724\0\u9768\0\u97ac\0\u0550"+
381
    "\0\u97f0\0\u9834\0\u9878\0\u98bc\0\u9900\0\u9944\0\u9988\0\u0550"+
382
    "\0\u99cc";
380
383
381
  private static int [] zzUnpackRowMap() {
384
  private static int [] zzUnpackRowMap() {
382
    int [] result = new int[764];
385
    int [] result = new int[785];
383
    int offset = 0;
386
    int offset = 0;
384
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
387
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
385
    return result;
388
    return result;
Lines 780-1232 Link Here
780
    "\1\36\2\0\3\36\17\0\1\36\5\0\1\u01d4\2\0"+
783
    "\1\36\2\0\3\36\17\0\1\36\5\0\1\u01d4\2\0"+
781
    "\3\u01d4\1\0\2\u01d4\3\0\1\u0172\2\0\1\u01d5\4\0"+
784
    "\3\u01d4\1\0\2\u01d4\3\0\1\u0172\2\0\1\u01d5\4\0"+
782
    "\22\u01d4\3\0\1\u01d4\2\0\3\u01d4\17\0\1\u01d4\1\u01d6"+
785
    "\22\u01d4\3\0\1\u01d4\2\0\3\u01d4\17\0\1\u01d4\1\u01d6"+
783
    "\36\0\1\u01d7\64\0\3\u0175\56\0\1\u0177\71\0\1\u01d8"+
786
    "\36\0\1\u01d7\64\0\3\u0175\56\0\1\u0177\22\0\3\u01d8"+
784
    "\72\0\1\u01d9\45\0\1\u0178\103\0\1\u017a\137\0\1\u01da"+
787
    "\44\0\1\u01d9\11\0\1\u01da\60\0\1\u01db\45\0\1\u0178"+
785
    "\31\0\15\116\1\363\3\116\1\364\1\0\1\116\1\365"+
788
    "\103\0\1\u017a\137\0\1\u01dc\31\0\15\116\1\363\3\116"+
786
    "\25\116\1\u01db\31\116\15\123\1\375\3\123\1\376\1\123"+
789
    "\1\364\1\0\1\116\1\365\25\116\1\u01dd\31\116\15\123"+
787
    "\1\0\1\377\25\123\1\u01dc\31\123\15\130\1\u0104\1\u0182"+
790
    "\1\375\3\123\1\376\1\123\1\0\1\377\25\123\1\u01de"+
788
    "\1\130\1\u0182\1\u0105\2\130\1\u0106\74\130\1\u0104\1\u0184"+
791
    "\31\123\15\130\1\u0104\1\u0182\1\130\1\u0182\1\u0105\2\130"+
789
    "\1\130\1\u0184\1\u0105\2\130\1\u0106\74\130\1\u0104\1\132"+
792
    "\1\u0106\74\130\1\u0104\1\u0184\1\130\1\u0184\1\u0105\2\130"+
790
    "\1\130\1\132\1\u0105\2\130\1\u0106\25\130\1\u01dd\31\130"+
793
    "\1\u0106\74\130\1\u0104\1\132\1\130\1\132\1\u0105\2\130"+
791
    "\16\u010f\1\u0188\1\u010f\1\u0188\101\u010f\1\u018a\1\u010f\1\u018a"+
794
    "\1\u0106\25\130\1\u01df\31\130\16\u010f\1\u0188\1\u010f\1\u0188"+
792
    "\63\u010f\50\0\1\u01de\62\0\1\u01df\55\0\1\36\1\0"+
795
    "\101\u010f\1\u018a\1\u010f\1\u018a\63\u010f\50\0\1\u01e0\62\0"+
793
    "\1\36\1\0\10\36\12\0\5\36\1\u01e0\14\36\3\0"+
796
    "\1\u01e1\55\0\1\36\1\0\1\36\1\0\10\36\12\0"+
797
    "\5\36\1\u01e2\14\36\3\0\1\36\2\0\3\36\17\0"+
798
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
799
    "\3\36\1\u01e3\16\36\3\0\1\36\2\0\3\36\17\0"+
800
    "\1\36\3\0\1\36\1\0\1\u01e4\1\0\10\36\12\0"+
801
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
802
    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u01e5"+
803
    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
804
    "\1\36\1\0\1\36\1\0\10\36\12\0\16\36\1\u01e6"+
805
    "\3\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
806
    "\1\36\1\0\1\36\1\0\10\36\12\0\15\36\1\u01e7"+
807
    "\4\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
808
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u01e8\21\36"+
809
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
810
    "\1\0\1\36\1\0\10\36\12\0\12\36\1\u01e9\7\36"+
811
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
812
    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u01ea\10\36"+
813
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
814
    "\1\0\1\36\1\0\10\36\12\0\12\36\1\u01eb\7\36"+
815
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
816
    "\1\0\1\36\1\0\10\36\12\0\17\36\1\u01ec\2\36"+
817
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
818
    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u01ed\10\36"+
819
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
820
    "\1\0\1\36\1\0\10\36\12\0\4\36\1\u01ee\15\36"+
821
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
822
    "\1\0\1\u01ef\1\0\2\36\1\u01f0\5\36\12\0\22\36"+
823
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
824
    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u01f1\20\36"+
825
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
826
    "\1\0\1\u01f2\1\0\10\36\12\0\22\36\3\0\1\36"+
827
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
828
    "\1\0\10\36\12\0\1\36\1\u01f3\20\36\3\0\1\36"+
829
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
830
    "\1\0\10\36\12\0\16\36\1\u01f4\3\36\3\0\1\36"+
831
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
832
    "\1\0\10\36\12\0\4\36\1\u01f5\15\36\3\0\1\36"+
833
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
834
    "\1\0\10\36\12\0\5\36\1\u01f6\14\36\3\0\1\36"+
835
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
836
    "\1\0\2\36\1\u01f7\5\36\12\0\22\36\3\0\1\36"+
837
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
838
    "\1\0\10\36\12\0\13\36\1\u01f8\6\36\3\0\1\36"+
839
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
840
    "\1\0\10\36\12\0\1\36\1\u01f9\20\36\3\0\1\36"+
841
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
842
    "\1\0\2\36\1\u01fa\5\36\12\0\22\36\3\0\1\36"+
843
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
844
    "\1\0\10\36\12\0\1\36\1\u01fb\20\36\3\0\1\36"+
845
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
846
    "\1\0\10\36\12\0\10\36\1\u01fc\11\36\3\0\1\36"+
847
    "\2\0\3\36\17\0\1\u01fc\3\0\1\36\1\0\1\36"+
848
    "\1\0\10\36\12\0\15\36\1\u01fd\4\36\3\0\1\36"+
849
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
850
    "\1\0\2\36\1\u01fe\5\36\12\0\22\36\3\0\1\36"+
851
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
852
    "\1\0\10\36\12\0\1\u01ff\21\36\3\0\1\36\2\0"+
853
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
854
    "\10\36\12\0\1\36\1\u0200\20\36\3\0\1\36\2\0"+
855
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
856
    "\10\36\12\0\10\36\1\u0201\11\36\3\0\1\36\2\0"+
857
    "\3\36\17\0\1\u0201\3\0\1\36\1\0\1\u0202\1\0"+
858
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
859
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
860
    "\1\u0203\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
861
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\6\36"+
862
    "\1\u0204\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
863
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
864
    "\1\u0205\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
865
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0206"+
866
    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
867
    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0207"+
868
    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
869
    "\1\36\1\0\1\u0208\1\0\10\36\12\0\22\36\3\0"+
794
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
870
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
795
    "\1\36\1\0\10\36\12\0\3\36\1\u01e1\16\36\3\0"+
871
    "\1\36\1\0\2\36\1\u0209\5\36\12\0\22\36\3\0"+
796
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
872
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
797
    "\1\u01e2\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
873
    "\1\36\1\0\10\36\12\0\1\u020a\21\36\3\0\1\36"+
874
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
875
    "\1\0\10\36\12\0\1\36\1\u020b\20\36\3\0\1\36"+
876
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
877
    "\1\0\2\36\1\u020c\5\36\12\0\22\36\3\0\1\36"+
878
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u020d"+
879
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
880
    "\17\0\1\36\11\0\1\u020e\103\0\1\u020f\136\0\1\u0210"+
881
    "\44\0\1\u0211\13\0\1\u0212\36\0\1\u0213\35\0\1\u0214"+
882
    "\102\0\1\u0215\77\0\1\u0216\103\0\1\u0217\127\0\1\u0218"+
883
    "\116\0\1\u0219\42\0\1\36\1\0\1\36\1\0\2\36"+
884
    "\1\u021a\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
885
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
886
    "\12\0\11\36\1\u021b\10\36\3\0\1\36\2\0\3\36"+
887
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
888
    "\12\0\13\36\1\u021c\6\36\3\0\1\36\2\0\3\36"+
889
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
890
    "\12\0\5\36\1\u021d\14\36\3\0\1\36\2\0\3\36"+
891
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
892
    "\12\0\14\36\1\u021e\5\36\3\0\1\36\2\0\3\36"+
893
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
894
    "\1\u021f\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
895
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
896
    "\12\0\5\36\1\u0220\14\36\3\0\1\36\2\0\3\36"+
897
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
898
    "\12\0\1\36\1\u0221\20\36\3\0\1\36\2\0\3\36"+
899
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
900
    "\12\0\13\36\1\u0222\6\36\3\0\1\36\2\0\3\36"+
901
    "\17\0\1\36\3\0\1\u01d4\1\0\1\u01d4\1\0\10\u01d4"+
902
    "\1\0\1\u0223\1\0\1\u0224\6\0\22\u01d4\3\0\1\u01d4"+
903
    "\2\0\3\u01d4\17\0\1\u01d4\5\0\1\u0225\2\0\3\u0225"+
904
    "\1\0\2\u0225\13\0\22\u0225\3\0\1\u0225\2\0\3\u0225"+
905
    "\17\0\1\u0225\5\0\1\u0226\2\0\3\u0226\1\0\2\u0226"+
906
    "\13\0\22\u0226\3\0\1\u0226\2\0\3\u0226\17\0\1\u0226"+
907
    "\42\0\1\u0227\61\0\3\u01d8\56\0\1\u01da\60\0\1\u0228"+
908
    "\36\0\1\u0229\77\0\1\u022a\2\0\3\u022a\2\0\1\u022a"+
909
    "\13\0\22\u022a\3\0\1\u022a\2\0\3\u022a\17\0\1\u022a"+
910
    "\2\0\3\116\1\u022b\2\116\3\u022b\2\116\1\u022b\1\116"+
911
    "\1\363\3\116\1\364\1\0\1\116\1\365\2\116\22\u022b"+
912
    "\3\116\1\u022b\2\116\3\u022b\17\116\1\u022b\2\116\3\123"+
913
    "\1\u022c\2\123\3\u022c\2\123\1\u022c\1\123\1\375\3\123"+
914
    "\1\376\1\123\1\0\1\377\2\123\22\u022c\3\123\1\u022c"+
915
    "\2\123\3\u022c\17\123\1\u022c\2\123\3\130\1\u022d\2\130"+
916
    "\3\u022d\2\130\1\u022d\1\130\1\u0104\1\132\1\130\1\132"+
917
    "\1\u0105\2\130\1\u0106\2\130\22\u022d\3\130\1\u022d\2\130"+
918
    "\3\u022d\17\130\1\u022d\2\130\16\0\2\u022e\1\u022f\133\0"+
919
    "\1\u0230\34\0\1\36\1\0\1\36\1\0\10\36\12\0"+
920
    "\2\36\1\u0231\17\36\3\0\1\36\2\0\3\36\17\0"+
921
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
922
    "\6\36\1\u0232\13\36\3\0\1\36\2\0\3\36\17\0"+
923
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
924
    "\11\36\1\u0233\10\36\3\0\1\36\2\0\3\36\17\0"+
925
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
926
    "\1\u0234\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
927
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0235"+
928
    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
929
    "\1\36\1\0\1\36\1\0\10\36\12\0\3\36\1\u0236"+
930
    "\16\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
931
    "\1\36\1\0\1\36\1\0\2\36\1\u0237\5\36\12\0"+
932
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
933
    "\1\36\1\0\1\36\1\0\10\36\12\0\3\36\1\u0238"+
934
    "\16\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
935
    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0239"+
936
    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
937
    "\1\36\1\0\1\36\1\0\2\36\1\u023a\5\36\12\0"+
938
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
939
    "\1\36\1\0\1\36\1\0\10\36\12\0\5\36\1\u023b"+
940
    "\14\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
941
    "\1\36\1\0\1\36\1\0\10\36\12\0\14\36\1\u023c"+
942
    "\5\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
943
    "\1\36\1\0\1\36\1\0\10\36\12\0\13\36\1\u023d"+
944
    "\6\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
945
    "\1\36\1\0\1\u023e\1\0\10\36\12\0\22\36\3\0"+
946
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
947
    "\1\36\1\0\10\36\12\0\11\36\1\u023f\10\36\3\0"+
948
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
949
    "\1\36\1\0\10\36\12\0\13\36\1\u0240\6\36\3\0"+
950
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
951
    "\1\36\1\0\10\36\12\0\1\u0241\21\36\3\0\1\36"+
952
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
953
    "\1\0\10\36\12\0\6\36\1\u0242\13\36\3\0\1\36"+
954
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
955
    "\1\0\10\36\12\0\21\36\1\u0243\3\0\1\36\2\0"+
798
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
956
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
799
    "\10\36\12\0\7\36\1\u01e3\12\36\3\0\1\36\2\0"+
957
    "\3\36\1\u0244\4\36\12\0\22\36\3\0\1\36\2\0"+
800
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
958
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
801
    "\10\36\12\0\16\36\1\u01e4\3\36\3\0\1\36\2\0"+
959
    "\10\36\12\0\5\36\1\u0245\14\36\3\0\1\36\2\0"+
802
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
960
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
803
    "\10\36\12\0\15\36\1\u01e5\4\36\3\0\1\36\2\0"+
961
    "\10\36\12\0\6\36\1\u0246\13\36\3\0\1\36\2\0"+
804
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
962
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
805
    "\10\36\12\0\1\u01e6\21\36\3\0\1\36\2\0\3\36"+
963
    "\10\36\12\0\15\36\1\u0247\4\36\3\0\1\36\2\0"+
806
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
964
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
807
    "\12\0\12\36\1\u01e7\7\36\3\0\1\36\2\0\3\36"+
965
    "\10\36\12\0\5\36\1\u0248\14\36\3\0\1\36\2\0"+
808
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
966
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
809
    "\12\0\11\36\1\u01e8\10\36\3\0\1\36\2\0\3\36"+
967
    "\10\36\12\0\11\36\1\u0249\10\36\3\0\1\36\2\0"+
810
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
968
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
811
    "\12\0\12\36\1\u01e9\7\36\3\0\1\36\2\0\3\36"+
969
    "\10\36\1\0\3\u024a\6\0\22\36\3\0\1\36\2\0"+
812
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
970
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
813
    "\12\0\17\36\1\u01ea\2\36\3\0\1\36\2\0\3\36"+
971
    "\10\36\12\0\13\36\1\u024b\6\36\3\0\1\36\2\0"+
814
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
972
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
815
    "\12\0\11\36\1\u01eb\10\36\3\0\1\36\2\0\3\36"+
973
    "\10\36\12\0\6\36\1\u024c\13\36\3\0\1\36\2\0"+
816
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
974
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
817
    "\12\0\4\36\1\u01ec\15\36\3\0\1\36\2\0\3\36"+
975
    "\10\36\12\0\1\36\1\u024d\20\36\3\0\1\36\2\0"+
818
    "\17\0\1\36\3\0\1\36\1\0\1\u01ed\1\0\2\36"+
976
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
819
    "\1\u01ee\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
977
    "\10\36\12\0\6\36\1\u024e\13\36\3\0\1\36\2\0"+
820
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
978
    "\3\36\17\0\1\36\43\0\1\u024f\102\0\1\u0250\46\0"+
821
    "\12\0\1\36\1\u01ef\20\36\3\0\1\36\2\0\3\36"+
979
    "\1\u0251\13\0\1\u0252\36\0\1\u0253\74\0\1\u0254\53\0"+
822
    "\17\0\1\36\3\0\1\36\1\0\1\u01f0\1\0\10\36"+
980
    "\1\u0212\36\0\1\u0213\67\0\1\u0255\71\0\1\u0219\103\0"+
823
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
981
    "\1\u0256\110\0\1\u0257\102\0\1\u0258\66\0\1\u0219\36\0"+
824
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
982
    "\1\u0259\26\0\1\36\1\0\1\36\1\0\10\36\12\0"+
825
    "\1\u01f1\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
983
    "\1\u025a\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
826
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\16\36"+
984
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
827
    "\1\u01f2\3\36\3\0\1\36\2\0\3\36\17\0\1\36"+
985
    "\3\0\1\36\2\0\1\36\1\u025b\1\36\17\0\1\36"+
828
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\4\36"+
986
    "\3\0\1\36\1\0\1\u025c\1\0\10\36\12\0\22\36"+
829
    "\1\u01f3\15\36\3\0\1\36\2\0\3\36\17\0\1\36"+
987
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
830
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\5\36"+
988
    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u025d\13\36"+
831
    "\1\u01f4\14\36\3\0\1\36\2\0\3\36\17\0\1\36"+
989
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
832
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01f5\5\36"+
990
    "\1\0\1\u025e\1\0\10\36\12\0\22\36\3\0\1\36"+
833
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
834
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\13\36"+
835
    "\1\u01f6\6\36\3\0\1\36\2\0\3\36\17\0\1\36"+
836
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
837
    "\1\u01f7\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
838
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01f8\5\36"+
839
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
840
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
841
    "\1\u01f9\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
842
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\10\36"+
843
    "\1\u01fa\11\36\3\0\1\36\2\0\3\36\17\0\1\u01fa"+
844
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\15\36"+
845
    "\1\u01fb\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
846
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01fc\5\36"+
847
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
848
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u01fd"+
849
    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
850
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\36\1\u01fe"+
851
    "\20\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
852
    "\1\36\1\0\1\36\1\0\10\36\12\0\10\36\1\u01ff"+
853
    "\11\36\3\0\1\36\2\0\3\36\17\0\1\u01ff\3\0"+
854
    "\1\36\1\0\1\u0200\1\0\10\36\12\0\22\36\3\0"+
855
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
856
    "\1\36\1\0\10\36\12\0\1\u0201\21\36\3\0\1\36"+
857
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
991
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
858
    "\1\0\10\36\12\0\6\36\1\u0202\13\36\3\0\1\36"+
992
    "\1\0\10\36\12\0\10\36\1\u025f\11\36\3\0\1\36"+
859
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
993
    "\2\0\3\36\17\0\1\u025f\3\0\1\36\1\0\1\u0260"+
860
    "\1\0\10\36\12\0\11\36\1\u0203\10\36\3\0\1\36"+
861
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
862
    "\1\0\10\36\12\0\1\u0204\21\36\3\0\1\36\2\0"+
863
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
864
    "\10\36\12\0\2\36\1\u0205\17\36\3\0\1\36\2\0"+
865
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u0206\1\0"+
866
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
867
    "\1\36\3\0\1\36\1\0\1\36\1\0\2\36\1\u0207"+
868
    "\5\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
869
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
870
    "\1\u0208\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
871
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
872
    "\1\u0209\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
873
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u020a\5\36"+
874
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
875
    "\3\0\1\36\1\0\1\u020b\1\0\10\36\12\0\22\36"+
876
    "\3\0\1\36\2\0\3\36\17\0\1\36\11\0\1\u020c"+
877
    "\103\0\1\u020d\136\0\1\u020e\44\0\1\u020f\13\0\1\u0210"+
878
    "\36\0\1\u0211\35\0\1\u0212\102\0\1\u0213\77\0\1\u0214"+
879
    "\103\0\1\u0215\127\0\1\u0216\116\0\1\u0217\42\0\1\36"+
880
    "\1\0\1\36\1\0\2\36\1\u0218\5\36\12\0\22\36"+
881
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
882
    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u0219\10\36"+
883
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
884
    "\1\0\1\36\1\0\10\36\12\0\13\36\1\u021a\6\36"+
885
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
886
    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u021b\14\36"+
887
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
888
    "\1\0\1\36\1\0\10\36\12\0\14\36\1\u021c\5\36"+
889
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
890
    "\1\0\1\36\1\0\2\36\1\u021d\5\36\12\0\22\36"+
891
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
892
    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u021e\14\36"+
893
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
894
    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u021f\20\36"+
895
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
896
    "\1\0\1\36\1\0\10\36\12\0\13\36\1\u0220\6\36"+
897
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\u01d4"+
898
    "\1\0\1\u01d4\1\0\10\u01d4\1\0\1\u0221\1\0\1\u0222"+
899
    "\6\0\22\u01d4\3\0\1\u01d4\2\0\3\u01d4\17\0\1\u01d4"+
900
    "\5\0\1\u0223\2\0\3\u0223\1\0\2\u0223\13\0\22\u0223"+
901
    "\3\0\1\u0223\2\0\3\u0223\17\0\1\u0223\5\0\1\u0224"+
902
    "\2\0\3\u0224\1\0\2\u0224\13\0\22\u0224\3\0\1\u0224"+
903
    "\2\0\3\u0224\17\0\1\u0224\42\0\1\u0225\52\0\1\u0226"+
904
    "\77\0\1\u0227\2\0\3\u0227\2\0\1\u0227\13\0\22\u0227"+
905
    "\3\0\1\u0227\2\0\3\u0227\17\0\1\u0227\2\0\3\116"+
906
    "\1\u0228\2\116\3\u0228\2\116\1\u0228\1\116\1\363\3\116"+
907
    "\1\364\1\0\1\116\1\365\2\116\22\u0228\3\116\1\u0228"+
908
    "\2\116\3\u0228\17\116\1\u0228\2\116\3\123\1\u0229\2\123"+
909
    "\3\u0229\2\123\1\u0229\1\123\1\375\3\123\1\376\1\123"+
910
    "\1\0\1\377\2\123\22\u0229\3\123\1\u0229\2\123\3\u0229"+
911
    "\17\123\1\u0229\2\123\3\130\1\u022a\2\130\3\u022a\2\130"+
912
    "\1\u022a\1\130\1\u0104\1\132\1\130\1\132\1\u0105\2\130"+
913
    "\1\u0106\2\130\22\u022a\3\130\1\u022a\2\130\3\u022a\17\130"+
914
    "\1\u022a\2\130\16\0\2\u022b\1\u022c\133\0\1\u022d\34\0"+
915
    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u022e"+
916
    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
917
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u022f"+
918
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
919
    "\1\36\1\0\1\36\1\0\10\36\12\0\11\36\1\u0230"+
920
    "\10\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
921
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u0231\21\36"+
922
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
923
    "\1\0\1\36\1\0\10\36\12\0\1\u0232\21\36\3\0"+
924
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
925
    "\1\36\1\0\10\36\12\0\3\36\1\u0233\16\36\3\0"+
926
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
927
    "\1\36\1\0\2\36\1\u0234\5\36\12\0\22\36\3\0"+
928
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
929
    "\1\36\1\0\10\36\12\0\3\36\1\u0235\16\36\3\0"+
930
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
931
    "\1\36\1\0\10\36\12\0\2\36\1\u0236\17\36\3\0"+
932
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
933
    "\1\36\1\0\2\36\1\u0237\5\36\12\0\22\36\3\0"+
934
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
935
    "\1\36\1\0\10\36\12\0\5\36\1\u0238\14\36\3\0"+
936
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
937
    "\1\36\1\0\10\36\12\0\14\36\1\u0239\5\36\3\0"+
938
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
939
    "\1\36\1\0\10\36\12\0\13\36\1\u023a\6\36\3\0"+
940
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
941
    "\1\u023b\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
942
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
943
    "\10\36\12\0\11\36\1\u023c\10\36\3\0\1\36\2\0"+
944
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
945
    "\10\36\12\0\13\36\1\u023d\6\36\3\0\1\36\2\0"+
946
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
947
    "\10\36\12\0\1\u023e\21\36\3\0\1\36\2\0\3\36"+
948
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
949
    "\12\0\6\36\1\u023f\13\36\3\0\1\36\2\0\3\36"+
950
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
951
    "\12\0\21\36\1\u0240\3\0\1\36\2\0\3\36\17\0"+
952
    "\1\36\3\0\1\36\1\0\1\36\1\0\3\36\1\u0241"+
953
    "\4\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
954
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
955
    "\5\36\1\u0242\14\36\3\0\1\36\2\0\3\36\17\0"+
956
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
957
    "\6\36\1\u0243\13\36\3\0\1\36\2\0\3\36\17\0"+
958
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
959
    "\15\36\1\u0244\4\36\3\0\1\36\2\0\3\36\17\0"+
960
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
961
    "\5\36\1\u0245\14\36\3\0\1\36\2\0\3\36\17\0"+
962
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
963
    "\11\36\1\u0246\10\36\3\0\1\36\2\0\3\36\17\0"+
964
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\1\0"+
965
    "\3\u0247\6\0\22\36\3\0\1\36\2\0\3\36\17\0"+
966
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
967
    "\13\36\1\u0248\6\36\3\0\1\36\2\0\3\36\17\0"+
968
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
969
    "\6\36\1\u0249\13\36\3\0\1\36\2\0\3\36\17\0"+
970
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
971
    "\1\36\1\u024a\20\36\3\0\1\36\2\0\3\36\17\0"+
972
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
973
    "\6\36\1\u024b\13\36\3\0\1\36\2\0\3\36\17\0"+
974
    "\1\36\43\0\1\u024c\102\0\1\u024d\46\0\1\u024e\13\0"+
975
    "\1\u024f\36\0\1\u0250\74\0\1\u0251\53\0\1\u0210\36\0"+
976
    "\1\u0211\67\0\1\u0252\71\0\1\u0217\103\0\1\u0253\110\0"+
977
    "\1\u0254\102\0\1\u0255\66\0\1\u0217\36\0\1\u0256\26\0"+
978
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u0257\21\36"+
979
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
980
    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
981
    "\2\0\1\36\1\u0258\1\36\17\0\1\36\3\0\1\36"+
982
    "\1\0\1\u0259\1\0\10\36\12\0\22\36\3\0\1\36"+
983
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
984
    "\1\0\10\36\12\0\6\36\1\u025a\13\36\3\0\1\36"+
985
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u025b"+
986
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
994
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
987
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
995
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
988
    "\12\0\10\36\1\u025c\11\36\3\0\1\36\2\0\3\36"+
996
    "\12\0\15\36\1\u0261\4\36\3\0\1\36\2\0\3\36"+
989
    "\17\0\1\u025c\3\0\1\36\1\0\1\u025d\1\0\10\36"+
997
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
990
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
998
    "\12\0\1\36\1\u0262\20\36\3\0\1\36\2\0\3\36"+
991
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\15\36"+
999
    "\17\0\1\36\20\0\1\u0223\66\0\1\u0225\1\0\1\u0225"+
992
    "\1\u025e\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1000
    "\1\0\10\u0225\5\0\1\u0263\4\0\22\u0225\3\0\1\u0225"+
993
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
1001
    "\2\0\3\u0225\17\0\1\u0225\3\0\1\u0226\1\0\1\u0226"+
994
    "\1\u025f\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1002
    "\1\0\10\u0226\12\0\22\u0226\3\0\1\u0226\2\0\3\u0226"+
995
    "\20\0\1\u0221\66\0\1\u0223\1\0\1\u0223\1\0\10\u0223"+
1003
    "\17\0\1\u0226\1\u0264\30\0\1\u0265\63\0\1\u0266\134\0"+
996
    "\5\0\1\u0260\4\0\22\u0223\3\0\1\u0223\2\0\3\u0223"+
1004
    "\1\u0267\61\0\1\u022e\115\0\1\u0268\54\0\1\36\1\0"+
997
    "\17\0\1\u0223\3\0\1\u0224\1\0\1\u0224\1\0\10\u0224"+
1005
    "\1\36\1\0\10\36\12\0\10\36\1\u0269\11\36\3\0"+
998
    "\12\0\22\u0224\3\0\1\u0224\2\0\3\u0224\17\0\1\u0224"+
1006
    "\1\36\2\0\3\36\17\0\1\u0269\3\0\1\36\1\0"+
999
    "\1\u0261\30\0\1\u0262\114\0\1\u0263\61\0\1\u022b\115\0"+
1007
    "\1\36\1\0\10\36\12\0\13\36\1\u026a\6\36\3\0"+
1000
    "\1\u0264\54\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1001
    "\10\36\1\u0265\11\36\3\0\1\36\2\0\3\36\17\0"+
1002
    "\1\u0265\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1003
    "\13\36\1\u0266\6\36\3\0\1\36\2\0\3\36\17\0"+
1004
    "\1\36\3\0\1\36\1\0\1\u0267\1\0\10\36\12\0"+
1005
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1006
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\36\1\u0268"+
1007
    "\20\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1008
    "\1\36\1\0\1\36\1\0\10\36\12\0\13\36\1\u0269"+
1009
    "\6\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1010
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u026a"+
1011
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1012
    "\1\36\1\0\1\36\1\0\2\36\1\u026b\5\36\12\0"+
1013
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1014
    "\1\36\1\0\1\u026c\1\0\10\36\12\0\22\36\3\0"+
1015
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1008
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1016
    "\1\36\1\0\10\36\12\0\2\36\1\u026d\17\36\3\0"+
1009
    "\1\u026b\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1017
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1018
    "\1\36\1\0\10\36\12\0\6\36\1\u026e\13\36\3\0"+
1019
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1020
    "\1\u026f\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1021
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1010
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1022
    "\10\36\12\0\1\36\1\u0270\20\36\3\0\1\36\2\0"+
1011
    "\10\36\12\0\1\36\1\u026c\20\36\3\0\1\36\2\0"+
1023
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u0271\1\0"+
1012
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1013
    "\10\36\12\0\13\36\1\u026d\6\36\3\0\1\36\2\0"+
1014
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1015
    "\10\36\12\0\6\36\1\u026e\13\36\3\0\1\36\2\0"+
1016
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1017
    "\2\36\1\u026f\5\36\12\0\22\36\3\0\1\36\2\0"+
1018
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u0270\1\0"+
1024
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1019
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1025
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1020
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1026
    "\12\36\1\u0272\7\36\3\0\1\36\2\0\3\36\17\0"+
1021
    "\2\36\1\u0271\17\36\3\0\1\36\2\0\3\36\17\0"+
1027
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1022
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1028
    "\7\36\1\u0273\12\36\3\0\1\36\2\0\3\36\17\0"+
1023
    "\6\36\1\u0272\13\36\3\0\1\36\2\0\3\36\17\0"+
1029
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1024
    "\1\36\3\0\1\36\1\0\1\u0273\1\0\10\36\12\0"+
1030
    "\15\36\1\u0274\4\36\3\0\1\36\2\0\3\36\17\0"+
1031
    "\1\36\3\0\1\36\1\0\1\36\1\0\2\36\1\u0275"+
1032
    "\5\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1033
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1034
    "\13\36\1\u0276\6\36\3\0\1\36\2\0\3\36\17\0"+
1035
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1036
    "\4\36\1\u0277\15\36\3\0\1\36\2\0\3\36\17\0"+
1037
    "\1\36\3\0\1\36\1\0\1\u0278\1\0\10\36\12\0"+
1038
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\20\0"+
1039
    "\3\u0247\11\0\1\u0279\52\0\1\36\1\0\1\u027a\1\0"+
1040
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1041
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1042
    "\1\36\1\u027b\20\36\3\0\1\36\2\0\3\36\17\0"+
1043
    "\1\36\21\0\1\u024c\36\0\1\u027c\66\0\1\u027d\51\0"+
1044
    "\1\u027e\113\0\1\u024f\36\0\1\u0250\30\0\1\u027f\103\0"+
1045
    "\1\u0217\117\0\1\u0253\36\0\1\u0280\55\0\1\u0281\122\0"+
1046
    "\1\u027d\35\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1047
    "\1\36\1\u0282\20\36\3\0\1\36\2\0\3\36\17\0"+
1048
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1049
    "\22\36\3\0\1\36\2\0\1\36\1\u0283\1\36\17\0"+
1050
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1051
    "\22\36\3\0\1\36\2\0\1\36\1\u0284\1\36\17\0"+
1052
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1053
    "\1\36\1\u0285\20\36\3\0\1\36\2\0\3\36\17\0"+
1054
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1055
    "\10\36\1\u0286\11\36\3\0\1\36\2\0\3\36\17\0"+
1056
    "\1\u0286\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1057
    "\10\36\1\u0287\11\36\3\0\1\36\2\0\3\36\17\0"+
1058
    "\1\u0287\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1059
    "\22\36\3\0\1\36\2\0\1\36\1\u0288\1\36\17\0"+
1060
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1061
    "\7\36\1\u0289\12\36\3\0\1\36\2\0\3\36\17\0"+
1062
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1063
    "\22\36\3\0\1\36\2\0\1\36\1\u028a\1\36\17\0"+
1064
    "\1\36\20\0\1\u0221\1\0\1\u0222\101\0\1\u028b\1\0"+
1065
    "\1\u028c\133\0\1\u028d\51\0\3\u028e\101\0\3\u028f\64\0"+
1066
    "\1\36\1\0\1\36\1\0\2\36\1\u0290\5\36\12\0"+
1067
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1025
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1068
    "\1\36\1\0\1\36\1\0\2\36\1\u0291\5\36\12\0"+
1026
    "\1\36\1\0\1\36\1\0\10\36\12\0\1\36\1\u0274"+
1069
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1027
    "\20\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1070
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u0292"+
1028
    "\1\36\1\0\1\u0275\1\0\10\36\12\0\22\36\3\0"+
1071
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1072
    "\1\36\1\0\1\u0293\1\0\10\36\12\0\22\36\3\0"+
1073
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1029
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1074
    "\1\36\1\0\10\36\12\0\1\36\1\u0294\20\36\3\0"+
1030
    "\1\36\1\0\10\36\12\0\12\36\1\u0276\7\36\3\0"+
1075
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1031
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1076
    "\1\36\1\0\10\36\12\0\6\36\1\u0295\13\36\3\0"+
1032
    "\1\36\1\0\10\36\12\0\7\36\1\u0277\12\36\3\0"+
1033
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1034
    "\1\36\1\0\10\36\12\0\15\36\1\u0278\4\36\3\0"+
1035
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1036
    "\1\36\1\0\2\36\1\u0279\5\36\12\0\22\36\3\0"+
1037
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1038
    "\1\36\1\0\10\36\12\0\13\36\1\u027a\6\36\3\0"+
1039
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1040
    "\1\36\1\0\10\36\12\0\4\36\1\u027b\15\36\3\0"+
1041
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1042
    "\1\u027c\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1043
    "\3\36\17\0\1\36\20\0\3\u024a\11\0\1\u027d\52\0"+
1044
    "\1\36\1\0\1\u027e\1\0\10\36\12\0\22\36\3\0"+
1045
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1046
    "\1\36\1\0\10\36\12\0\1\36\1\u027f\20\36\3\0"+
1047
    "\1\36\2\0\3\36\17\0\1\36\21\0\1\u024f\36\0"+
1048
    "\1\u0280\66\0\1\u0281\51\0\1\u0282\113\0\1\u0252\36\0"+
1049
    "\1\u0253\30\0\1\u0283\103\0\1\u0219\117\0\1\u0256\36\0"+
1050
    "\1\u0284\55\0\1\u0285\122\0\1\u0281\35\0\1\36\1\0"+
1051
    "\1\36\1\0\10\36\12\0\1\36\1\u0286\20\36\3\0"+
1077
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1052
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1078
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1053
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1079
    "\1\36\1\u0296\1\36\17\0\1\36\3\0\1\36\1\0"+
1054
    "\1\36\1\u0287\1\36\17\0\1\36\3\0\1\36\1\0"+
1080
    "\1\36\1\0\10\36\12\0\7\36\1\u0297\12\36\3\0"+
1055
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1056
    "\1\36\1\u0288\1\36\17\0\1\36\3\0\1\36\1\0"+
1057
    "\1\36\1\0\10\36\12\0\1\36\1\u0289\20\36\3\0"+
1058
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1059
    "\1\36\1\0\10\36\12\0\10\36\1\u028a\11\36\3\0"+
1060
    "\1\36\2\0\3\36\17\0\1\u028a\3\0\1\36\1\0"+
1061
    "\1\36\1\0\10\36\12\0\10\36\1\u028b\11\36\3\0"+
1062
    "\1\36\2\0\3\36\17\0\1\u028b\3\0\1\36\1\0"+
1063
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1064
    "\1\36\1\u028c\1\36\17\0\1\36\3\0\1\36\1\0"+
1065
    "\1\36\1\0\10\36\12\0\7\36\1\u028d\12\36\3\0"+
1066
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1067
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1068
    "\1\36\1\u028e\1\36\17\0\1\36\20\0\1\u0223\1\0"+
1069
    "\1\u0224\101\0\1\u028f\1\0\1\u0290\133\0\1\u0291\73\0"+
1070
    "\1\u0292\61\0\3\u0293\101\0\3\u0294\64\0\1\36\1\0"+
1071
    "\1\36\1\0\2\36\1\u0295\5\36\12\0\22\36\3\0"+
1072
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1073
    "\1\36\1\0\2\36\1\u0296\5\36\12\0\22\36\3\0"+
1074
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1075
    "\1\36\1\0\10\36\12\0\6\36\1\u0297\13\36\3\0"+
1081
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1076
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1082
    "\1\u0298\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1077
    "\1\u0298\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1083
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1078
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1084
    "\10\36\12\0\5\36\1\u0299\14\36\3\0\1\36\2\0"+
1079
    "\10\36\12\0\1\36\1\u0299\20\36\3\0\1\36\2\0"+
1085
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1080
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1086
    "\10\36\12\0\5\36\1\u029a\14\36\3\0\1\36\2\0"+
1081
    "\10\36\12\0\6\36\1\u029a\13\36\3\0\1\36\2\0"+
1087
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1082
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1088
    "\10\36\12\0\6\36\1\u029b\13\36\3\0\1\36\2\0"+
1083
    "\10\36\12\0\22\36\3\0\1\36\2\0\1\36\1\u029b"+
1089
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u029c\1\0"+
1084
    "\1\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1085
    "\10\36\12\0\7\36\1\u029c\12\36\3\0\1\36\2\0"+
1086
    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u029d\1\0"+
1090
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1087
    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
1091
    "\1\36\3\0\1\36\1\0\1\u029d\1\0\10\36\12\0"+
1088
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1089
    "\5\36\1\u029e\14\36\3\0\1\36\2\0\3\36\17\0"+
1090
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1091
    "\5\36\1\u029f\14\36\3\0\1\36\2\0\3\36\17\0"+
1092
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1093
    "\6\36\1\u02a0\13\36\3\0\1\36\2\0\3\36\17\0"+
1094
    "\1\36\3\0\1\36\1\0\1\u02a1\1\0\10\36\12\0"+
1092
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1095
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1093
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1096
    "\1\36\1\0\1\u02a2\1\0\10\36\12\0\22\36\3\0"+
1094
    "\1\36\2\0\1\36\1\u029e\1\36\17\0\1\36\42\0"+
1097
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1095
    "\1\u029f\44\0\1\36\1\0\1\u02a0\1\0\10\36\12\0"+
1098
    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1096
    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\21\0"+
1099
    "\1\36\1\u02a3\1\36\17\0\1\36\42\0\1\u02a4\44\0"+
1097
    "\1\u027d\36\0\1\u02a1\61\0\1\u024f\107\0\1\u0210\62\0"+
1100
    "\1\36\1\0\1\u02a5\1\0\10\36\12\0\22\36\3\0"+
1098
    "\1\u0281\36\0\1\u02a2\26\0\1\36\1\0\1\36\1\0"+
1101
    "\1\36\2\0\3\36\17\0\1\36\21\0\1\u0281\36\0"+
1099
    "\10\36\12\0\22\36\3\0\1\36\2\0\1\36\1\u02a3"+
1102
    "\1\u02a6\61\0\1\u0252\107\0\1\u0212\62\0\1\u0285\36\0"+
1100
    "\1\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1103
    "\1\u02a7\26\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1101
    "\10\36\12\0\22\36\3\0\1\36\2\0\1\36\1\u02a4"+
1102
    "\1\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1103
    "\10\36\12\0\1\u02a5\21\36\3\0\1\36\2\0\3\36"+
1104
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1105
    "\12\0\21\36\1\u02a6\3\0\1\36\2\0\3\36\17\0"+
1106
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1107
    "\22\36\3\0\1\36\2\0\1\36\1\u02a7\1\36\17\0"+
1108
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1109
    "\22\36\3\0\1\36\2\0\1\36\1\u02a8\1\36\17\0"+
1104
    "\22\36\3\0\1\36\2\0\1\36\1\u02a8\1\36\17\0"+
1110
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1105
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1111
    "\2\36\1\u02a9\17\36\3\0\1\36\2\0\3\36\17\0"+
1106
    "\22\36\3\0\1\36\2\0\1\36\1\u02a9\1\36\17\0"+
1112
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1107
    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
1113
    "\6\36\1\u02aa\13\36\3\0\1\36\2\0\3\36\17\0"+
1108
    "\1\u02aa\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1114
    "\1\36\20\0\1\u028b\115\0\1\u02ab\56\0\1\u02ac\2\0"+
1109
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\21\36"+
1115
    "\3\u02ac\1\0\2\u02ac\2\0\3\u028e\1\u02ad\5\0\22\u02ac"+
1110
    "\1\u02ab\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1116
    "\3\0\1\u02ac\2\0\3\u02ac\17\0\1\u02ac\20\0\3\u028f"+
1111
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1117
    "\21\0\1\u02ae\42\0\1\36\1\0\1\36\1\0\10\36"+
1112
    "\1\36\2\0\1\36\1\u02ac\1\36\17\0\1\36\3\0"+
1118
    "\12\0\11\36\1\u02af\10\36\3\0\1\36\2\0\3\36"+
1113
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1114
    "\1\36\2\0\1\36\1\u02ad\1\36\17\0\1\36\3\0"+
1115
    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u02ae"+
1116
    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1117
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02af"+
1118
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\20\0"+
1119
    "\1\u028f\115\0\1\u02b0\71\0\3\u02b1\66\0\1\u02b2\2\0"+
1120
    "\3\u02b2\1\0\2\u02b2\2\0\3\u0293\1\u02b3\5\0\22\u02b2"+
1121
    "\3\0\1\u02b2\2\0\3\u02b2\17\0\1\u02b2\20\0\3\u0294"+
1122
    "\21\0\1\u02b4\42\0\1\36\1\0\1\36\1\0\10\36"+
1123
    "\12\0\11\36\1\u02b5\10\36\3\0\1\36\2\0\3\36"+
1119
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1124
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1120
    "\12\0\6\36\1\u02b0\13\36\3\0\1\36\2\0\3\36"+
1125
    "\12\0\6\36\1\u02b6\13\36\3\0\1\36\2\0\3\36"+
1121
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1126
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1122
    "\12\0\15\36\1\u02b1\4\36\3\0\1\36\2\0\3\36"+
1127
    "\12\0\15\36\1\u02b7\4\36\3\0\1\36\2\0\3\36"+
1123
    "\17\0\1\36\3\0\1\36\1\0\1\u02b2\1\0\10\36"+
1128
    "\17\0\1\36\3\0\1\36\1\0\1\u02b8\1\0\10\36"+
1124
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1129
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1125
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1130
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1126
    "\1\u02b3\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1131
    "\1\u02b9\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1127
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\3\36"+
1132
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\3\36"+
1128
    "\1\u02b4\16\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1133
    "\1\u02ba\16\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1129
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1134
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1130
    "\1\u02b5\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1135
    "\1\u02bb\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1131
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
1136
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
1132
    "\1\u02b6\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1137
    "\1\u02bc\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1133
    "\3\0\1\36\1\0\1\u02b7\1\0\10\36\12\0\22\36"+
1138
    "\3\0\1\36\1\0\1\u02bd\1\0\10\36\12\0\22\36"+
1134
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
1139
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
1135
    "\1\0\1\36\1\0\10\36\12\0\7\36\1\u02b8\12\36"+
1140
    "\1\0\1\36\1\0\10\36\12\0\7\36\1\u02be\12\36"+
1136
    "\3\0\1\36\2\0\3\36\17\0\1\36\40\0\1\u02b9"+
1141
    "\3\0\1\36\2\0\3\36\17\0\1\36\40\0\1\u02bf"+
1137
    "\46\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
1142
    "\46\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
1138
    "\1\u02ba\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1143
    "\1\u02c0\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1139
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1144
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1140
    "\3\0\1\36\2\0\1\36\1\u02bb\1\36\17\0\1\36"+
1145
    "\3\0\1\36\2\0\1\36\1\u02c1\1\36\17\0\1\36"+
1141
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1146
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1142
    "\1\u02bc\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1147
    "\1\u02c2\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1143
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u02bd\5\36"+
1148
    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u02c3\5\36"+
1144
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1149
    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1145
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1150
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1146
    "\3\0\1\36\2\0\1\36\1\u02be\1\36\17\0\1\36"+
1151
    "\3\0\1\36\2\0\1\36\1\u02c4\1\36\17\0\1\36"+
1147
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1152
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
1148
    "\3\0\1\36\2\0\1\36\1\u02bf\1\36\17\0\1\36"+
1153
    "\3\0\1\36\2\0\1\36\1\u02c5\1\36\17\0\1\36"+
1149
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1154
    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
1150
    "\1\u02c0\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1155
    "\1\u02c6\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
1151
    "\20\0\3\u02ab\31\0\1\360\32\0\1\u02ac\1\0\1\u02ac"+
1156
    "\20\0\3\u02b0\31\0\1\360\34\0\1\u02c7\2\0\3\u02c7"+
1152
    "\1\0\10\u02ac\1\0\3\u02c1\6\0\22\u02ac\3\0\1\u02ac"+
1157
    "\1\0\2\u02c7\1\0\1\u02c8\3\u02b1\6\0\22\u02c7\3\0"+
1153
    "\2\0\3\u02ac\12\0\1\u02c2\4\0\1\u02ac\5\0\1\u02ac"+
1158
    "\1\u02c7\2\0\3\u02c7\17\0\1\u02c7\3\0\1\u02b2\1\0"+
1154
    "\2\0\3\u02ac\1\0\2\u02ac\13\0\22\u02ac\3\0\1\u02ac"+
1159
    "\1\u02b2\1\0\10\u02b2\1\0\3\u02c9\6\0\22\u02b2\3\0"+
1155
    "\2\0\3\u02ac\17\0\1\u02ac\11\0\1\u02c3\75\0\1\36"+
1160
    "\1\u02b2\2\0\3\u02b2\12\0\1\u02ca\4\0\1\u02b2\5\0"+
1156
    "\1\0\1\u02c4\1\0\10\36\12\0\22\36\3\0\1\36"+
1161
    "\1\u02b2\2\0\3\u02b2\1\0\2\u02b2\13\0\22\u02b2\3\0"+
1157
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1162
    "\1\u02b2\2\0\3\u02b2\17\0\1\u02b2\11\0\1\u02cb\75\0"+
1158
    "\1\0\10\36\12\0\15\36\1\u02c5\4\36\3\0\1\36"+
1163
    "\1\36\1\0\1\u02cc\1\0\10\36\12\0\22\36\3\0"+
1159
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1164
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1160
    "\1\0\10\36\12\0\5\36\1\u02c6\14\36\3\0\1\36"+
1165
    "\1\36\1\0\10\36\12\0\15\36\1\u02cd\4\36\3\0"+
1161
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1166
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1162
    "\1\0\10\36\12\0\3\36\1\u02c7\16\36\3\0\1\36"+
1167
    "\1\36\1\0\10\36\12\0\5\36\1\u02ce\14\36\3\0"+
1163
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1168
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1164
    "\1\0\10\36\12\0\10\36\1\u02c8\11\36\3\0\1\36"+
1169
    "\1\36\1\0\10\36\12\0\3\36\1\u02cf\16\36\3\0"+
1165
    "\2\0\3\36\17\0\1\u02c8\3\0\1\36\1\0\1\36"+
1170
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1166
    "\1\0\10\36\12\0\5\36\1\u02c9\14\36\3\0\1\36"+
1171
    "\1\36\1\0\10\36\12\0\10\36\1\u02d0\11\36\3\0"+
1167
    "\2\0\3\36\17\0\1\36\45\0\1\u02ca\41\0\1\36"+
1172
    "\1\36\2\0\3\36\17\0\1\u02d0\3\0\1\36\1\0"+
1168
    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u02cb\14\36"+
1173
    "\1\36\1\0\10\36\12\0\5\36\1\u02d1\14\36\3\0"+
1169
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
1174
    "\1\36\2\0\3\36\17\0\1\36\45\0\1\u02d2\41\0"+
1170
    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u02cc\13\36"+
1175
    "\1\36\1\0\1\36\1\0\10\36\12\0\5\36\1\u02d3"+
1171
    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
1176
    "\14\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1172
    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
1177
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02d4"+
1173
    "\2\0\1\36\1\u02cd\1\36\17\0\1\36\3\0\1\36"+
1178
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1174
    "\1\0\1\36\1\0\10\36\12\0\14\36\1\u02ce\5\36"+
1179
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1175
    "\3\0\1\36\2\0\3\36\17\0\1\36\5\0\1\u02cf"+
1180
    "\1\36\2\0\1\36\1\u02d5\1\36\17\0\1\36\3\0"+
1176
    "\2\0\3\u02cf\1\0\2\u02cf\1\0\1\u02d0\3\u02c1\6\0"+
1181
    "\1\36\1\0\1\36\1\0\10\36\12\0\14\36\1\u02d6"+
1177
    "\22\u02cf\3\0\1\u02cf\2\0\3\u02cf\17\0\1\u02cf\5\0"+
1182
    "\5\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1178
    "\1\u02d1\2\0\3\u02d1\1\0\2\u02d1\6\0\1\u02c2\4\0"+
1183
    "\1\u02c7\1\0\1\u02c7\1\0\10\u02c7\1\u02c8\3\u02d7\6\0"+
1179
    "\22\u02d1\3\0\1\u02d1\2\0\3\u02d1\13\0\1\u02d2\3\0"+
1184
    "\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\6\0\1\u02d8\3\0"+
1180
    "\1\u02d1\1\u02c2\35\0\1\u02d3\50\0\1\36\1\0\1\36"+
1185
    "\1\u02d9\4\0\1\u02c7\5\0\1\u02c7\2\0\3\u02c7\1\0"+
1181
    "\1\0\10\36\12\0\6\36\1\u02d4\13\36\3\0\1\36"+
1186
    "\2\u02c7\13\0\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\17\0"+
1182
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1187
    "\1\u02c7\5\0\1\u02da\2\0\3\u02da\1\0\2\u02da\1\0"+
1183
    "\1\0\10\36\12\0\6\36\1\u02d5\13\36\3\0\1\36"+
1188
    "\1\u02db\3\u02c9\6\0\22\u02da\3\0\1\u02da\2\0\3\u02da"+
1184
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
1189
    "\17\0\1\u02da\5\0\1\u02dc\2\0\3\u02dc\1\0\2\u02dc"+
1185
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
1190
    "\6\0\1\u02ca\4\0\22\u02dc\3\0\1\u02dc\2\0\3\u02dc"+
1186
    "\1\u02d6\1\36\17\0\1\36\3\0\1\36\1\0\1\u02d7"+
1191
    "\13\0\1\u02dd\3\0\1\u02dc\1\u02ca\35\0\1\u02de\50\0"+
1192
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02df"+
1193
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1194
    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02e0"+
1195
    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
1196
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1197
    "\1\36\2\0\1\36\1\u02e1\1\36\17\0\1\36\3\0"+
1198
    "\1\36\1\0\1\u02e2\1\0\10\36\12\0\22\36\3\0"+
1199
    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
1200
    "\1\36\1\0\10\36\12\0\21\36\1\u02e3\3\0\1\36"+
1201
    "\2\0\3\36\17\0\1\36\20\0\3\u02d7\1\u02e4\65\0"+
1202
    "\1\u02c7\2\0\3\u02c7\1\0\2\u02c7\1\0\1\u02c8\11\0"+
1203
    "\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\17\0\1\u02c7\77\0"+
1204
    "\1\u02e5\7\0\1\u02da\1\0\1\u02da\1\0\10\u02da\1\u02db"+
1205
    "\3\u02e6\6\0\22\u02da\3\0\1\u02da\2\0\3\u02da\2\0"+
1206
    "\1\u02e7\3\0\1\u02e8\3\0\1\u02e9\4\0\1\u02da\5\0"+
1207
    "\1\u02da\2\0\3\u02da\1\0\2\u02da\13\0\22\u02da\3\0"+
1208
    "\1\u02da\2\0\3\u02da\17\0\1\u02da\3\0\1\u02dc\1\0"+
1209
    "\1\u02dc\1\0\10\u02dc\5\0\1\u02ca\4\0\22\u02dc\3\0"+
1210
    "\1\u02dc\2\0\3\u02dc\13\0\1\u02dd\3\0\1\u02dc\1\u02ca"+
1211
    "\17\0\3\u02c9\53\0\1\u02ca\56\0\1\u02ea\35\0\1\36"+
1212
    "\1\0\1\u02eb\1\0\10\36\12\0\22\36\3\0\1\36"+
1213
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u02ec"+
1187
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
1214
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
1188
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1215
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1189
    "\12\0\21\36\1\u02d8\3\0\1\36\2\0\3\36\17\0"+
1216
    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02ed\1\36"+
1190
    "\1\36\3\0\1\u02cf\1\0\1\u02cf\1\0\10\u02cf\1\u02d0"+
1191
    "\3\u02d9\6\0\22\u02cf\3\0\1\u02cf\2\0\3\u02cf\2\0"+
1192
    "\1\u02da\3\0\1\u02db\3\0\1\u02dc\4\0\1\u02cf\5\0"+
1193
    "\1\u02cf\2\0\3\u02cf\1\0\2\u02cf\13\0\22\u02cf\3\0"+
1194
    "\1\u02cf\2\0\3\u02cf\17\0\1\u02cf\3\0\1\u02d1\1\0"+
1195
    "\1\u02d1\1\0\10\u02d1\5\0\1\u02c2\4\0\22\u02d1\3\0"+
1196
    "\1\u02d1\2\0\3\u02d1\13\0\1\u02d2\3\0\1\u02d1\1\u02c2"+
1197
    "\17\0\3\u02c1\53\0\1\u02c2\56\0\1\u02dd\35\0\1\36"+
1198
    "\1\0\1\u02de\1\0\10\36\12\0\22\36\3\0\1\36"+
1199
    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u02df"+
1200
    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
1201
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1217
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1202
    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02e0\1\36"+
1218
    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02ee\1\36"+
1203
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1219
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1204
    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02e1\1\36"+
1220
    "\12\0\1\u02ef\21\36\3\0\1\36\2\0\3\36\17\0"+
1205
    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
1221
    "\1\36\5\0\1\u02f0\2\0\3\u02f0\1\0\2\u02f0\13\0"+
1206
    "\12\0\1\u02e2\21\36\3\0\1\36\2\0\3\36\17\0"+
1222
    "\22\u02f0\3\0\1\u02f0\2\0\3\u02f0\17\0\1\u02f0\20\0"+
1207
    "\1\36\20\0\3\u02d9\43\0\1\u02da\104\0\1\u02e3\21\0"+
1223
    "\3\u02d7\47\0\1\u02d8\3\0\1\u02d9\25\0\3\u02e6\43\0"+
1208
    "\1\u02cf\2\0\3\u02cf\1\0\2\u02cf\1\0\1\u02d0\11\0"+
1224
    "\1\u02e7\104\0\1\u02f1\21\0\1\u02da\2\0\3\u02da\1\0"+
1209
    "\22\u02cf\3\0\1\u02cf\2\0\3\u02cf\17\0\1\u02cf\77\0"+
1225
    "\2\u02da\1\0\1\u02db\11\0\22\u02da\3\0\1\u02da\2\0"+
1210
    "\1\u02e4\41\0\1\u02e5\51\0\1\36\1\0\1\36\1\0"+
1226
    "\3\u02da\17\0\1\u02da\77\0\1\u02f2\41\0\1\u02f3\51\0"+
1211
    "\10\36\12\0\22\36\3\0\1\36\2\0\1\36\1\u02e6"+
1212
    "\1\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
1213
    "\10\36\12\0\13\36\1\u02e7\6\36\3\0\1\36\2\0"+
1214
    "\3\36\17\0\1\36\20\0\3\u02d9\43\0\1\u02da\3\0"+
1215
    "\1\u02db\3\0\1\u02dc\16\0\1\u02e8\75\0\1\36\1\0"+
1216
    "\1\u02e9\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
1217
    "\3\36\17\0\1\36\51\0\1\u02ea\35\0\1\36\1\0"+
1218
    "\1\36\1\0\10\36\12\0\11\36\1\u02eb\10\36\3\0"+
1219
    "\1\36\2\0\3\36\17\0\1\36\5\0\1\u02ec\101\0"+
1220
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1227
    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
1221
    "\1\36\1\u02ed\1\0\3\36\17\0\1\36\20\0\3\u02ec"+
1228
    "\1\36\2\0\1\36\1\u02f4\1\36\17\0\1\36\3\0"+
1222
    "\5\0\1\u02ee\133\0\1\u02ef\43\0\3\u02ee\1\0\1\u02f0"+
1229
    "\1\36\1\0\1\36\1\0\10\36\12\0\13\36\1\u02f5"+
1223
    "\25\0\1\u02f1\31\0\1\u02f2\26\0\1\u02f3\126\0\1\u02f4"+
1230
    "\6\36\3\0\1\36\2\0\3\36\17\0\1\36\2\0"+
1224
    "\77\0\1\u02f5\107\0\1\u02f6\77\0\1\u02f7\107\0\1\u02f8"+
1231
    "\1\u02f6\1\u02f0\1\u02f6\1\u02f0\1\u02f6\10\u02f0\1\u02f6\3\u02f7"+
1225
    "\77\0\1\u02f9\107\0\1\u02fa\51\0\3\u02f8\31\0\1\u02fb"+
1232
    "\6\u02f6\22\u02f0\3\u02f6\1\u02f0\2\u02f6\3\u02f0\2\u02f6\1\u02f8"+
1226
    "\101\0\1\u02fc\55\0\1\u02f8\163\0\1\u02f8\1\0";
1233
    "\7\u02f6\1\u02f9\4\u02f6\1\u02f0\2\u02f6\16\0\3\u02e6\43\0"+
1234
    "\1\u02e7\3\0\1\u02e8\3\0\1\u02e9\16\0\1\u02fa\75\0"+
1235
    "\1\36\1\0\1\u02fb\1\0\10\36\12\0\22\36\3\0"+
1236
    "\1\36\2\0\3\36\17\0\1\36\2\0\16\u02f6\1\0"+
1237
    "\1\u02f6\1\0\43\u02f6\1\u02f8\35\u02f6\3\u02f7\43\u02f6\1\u02f8"+
1238
    "\35\u02f6\1\0\1\u02f6\1\0\43\u02f6\1\u02f8\1\u02fc\21\u02f6"+
1239
    "\1\u02fd\2\u02f6\3\u02fd\1\u02f6\2\u02fd\2\u02f6\1\0\1\u02f6"+
1240
    "\1\0\1\u02f6\1\u02f9\4\u02f6\22\u02fd\3\u02f6\1\u02fd\2\u02f6"+
1241
    "\3\u02fd\2\u02f6\1\u02f8\10\u02f6\1\u02fe\3\u02f6\1\u02fd\1\u02f9"+
1242
    "\1\u02f6\47\0\1\u02ff\35\0\1\36\1\0\1\36\1\0"+
1243
    "\10\36\12\0\11\36\1\u0300\10\36\3\0\1\36\2\0"+
1244
    "\3\36\17\0\1\36\2\0\1\u02f6\1\u02fd\1\u02f6\1\u02fd"+
1245
    "\1\u02f6\10\u02fd\1\u02f6\1\0\1\u02f6\1\0\1\u02f6\1\u02f9"+
1246
    "\4\u02f6\22\u02fd\3\u02f6\1\u02fd\2\u02f6\3\u02fd\2\u02f6\1\u02f8"+
1247
    "\10\u02f6\1\u02fe\3\u02f6\1\u02fd\1\u02f9\17\u02f6\3\u02f7\43\u02f6"+
1248
    "\1\u02f8\7\u02f6\1\u02f9\7\u02f6\3\0\1\u0301\101\0\1\36"+
1249
    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
1250
    "\1\u0302\1\0\3\36\17\0\1\36\20\0\3\u0301\5\0"+
1251
    "\1\u0303\133\0\1\u0304\43\0\3\u0303\1\0\1\u0305\25\0"+
1252
    "\1\u0306\31\0\1\u0307\26\0\1\u0308\126\0\1\u0309\77\0"+
1253
    "\1\u030a\107\0\1\u030b\77\0\1\u030c\107\0\1\u030d\77\0"+
1254
    "\1\u030e\107\0\1\u030f\51\0\3\u030d\31\0\1\u0310\101\0"+
1255
    "\1\u0311\55\0\1\u030d\163\0\1\u030d\1\0";
1227
1256
1228
  private static int [] zzUnpackTrans() {
1257
  private static int [] zzUnpackTrans() {
1229
    int [] result = new int[38080];
1258
    int [] result = new int[39440];
1230
    int offset = 0;
1259
    int offset = 0;
1231
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1260
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1232
    return result;
1261
    return result;
Lines 1280-1297 Link Here
1280
    "\1\1\12\0\10\1\3\11\2\0\1\11\1\0\1\1"+
1309
    "\1\1\12\0\10\1\3\11\2\0\1\11\1\0\1\1"+
1281
    "\1\0\1\11\1\1\1\11\1\1\1\0\1\11\4\1"+
1310
    "\1\0\1\11\1\1\1\11\1\1\1\0\1\11\4\1"+
1282
    "\1\11\5\1\1\11\1\0\1\1\1\0\2\1\1\11"+
1311
    "\1\11\5\1\1\11\1\0\1\1\1\0\2\1\1\11"+
1283
    "\2\0\60\1\12\0\11\1\4\0\1\11\2\0\3\1"+
1312
    "\2\0\60\1\12\0\11\1\5\0\1\11\3\0\3\1"+
1284
    "\2\0\54\1\5\0\1\11\6\0\11\1\1\11\1\1"+
1313
    "\2\0\54\1\5\0\1\11\6\0\11\1\1\11\1\1"+
1285
    "\4\0\1\11\3\1\1\11\1\1\1\0\31\1\1\0"+
1314
    "\5\0\1\11\3\1\1\11\1\1\1\0\31\1\1\0"+
1286
    "\4\1\4\0\1\11\5\0\1\11\11\1\5\0\24\1"+
1315
    "\4\1\4\0\1\11\5\0\1\11\11\1\6\0\24\1"+
1287
    "\1\0\2\1\1\11\3\0\1\11\1\0\11\1\1\11"+
1316
    "\1\0\2\1\1\11\3\0\1\11\1\0\11\1\1\11"+
1288
    "\1\1\3\0\17\1\1\0\1\1\2\11\10\1\4\0"+
1317
    "\1\1\4\0\17\1\1\0\1\1\2\11\10\1\5\0"+
1289
    "\12\1\1\0\7\1\3\0\6\1\1\11\4\1\5\0"+
1318
    "\12\1\1\0\7\1\5\0\6\1\1\11\4\1\10\0"+
1290
    "\5\1\5\0\5\1\1\11\2\0\2\1\1\0\1\1"+
1319
    "\5\1\7\0\5\1\1\0\1\11\2\0\2\1\5\0"+
1291
    "\1\0\1\1\7\0\1\11\7\0\1\11\1\0";
1320
    "\2\1\3\0\1\1\7\0\1\11\7\0\1\11\1\0";
1292
1321
1293
  private static int [] zzUnpackAttribute() {
1322
  private static int [] zzUnpackAttribute() {
1294
    int [] result = new int[764];
1323
    int [] result = new int[785];
1295
    int offset = 0;
1324
    int offset = 0;
1296
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1325
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1297
    return result;
1326
    return result;
Lines 1904-1913 Link Here
1904
      zzMarkedPos = zzMarkedPosL;
1933
      zzMarkedPos = zzMarkedPosL;
1905
1934
1906
      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1935
      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1936
        case 205:
1937
          { comment = yytext();
1938
    handleVarComment();
1939
          }
1940
        case 207: break;
1907
        case 188:
1941
        case 188:
1908
          { return createFullSymbol(ASTPHP5Symbols.T_INTERFACE);
1942
          { return createFullSymbol(ASTPHP5Symbols.T_INTERFACE);
1909
          }
1943
          }
1910
        case 206: break;
1944
        case 208: break;
1911
        case 153:
1945
        case 153:
1912
          { int removeChars = (yytext().charAt(0) == 'b')?4:3;
1946
          { int removeChars = (yytext().charAt(0) == 'b')?4:3;
1913
    heredoc = yytext().substring(removeChars).trim();    // for 'b<<<' or '<<<'
1947
    heredoc = yytext().substring(removeChars).trim();    // for 'b<<<' or '<<<'
Lines 1917-1967 Link Here
1917
    yybegin(ST_START_HEREDOC);
1951
    yybegin(ST_START_HEREDOC);
1918
    return createSymbol(ASTPHP5Symbols.T_START_HEREDOC);
1952
    return createSymbol(ASTPHP5Symbols.T_START_HEREDOC);
1919
          }
1953
          }
1920
        case 207: break;
1954
        case 209: break;
1921
        case 27:
1955
        case 27:
1922
          { return createSymbol(ASTPHP5Symbols.T_OR);
1956
          { return createSymbol(ASTPHP5Symbols.T_OR);
1923
          }
1957
          }
1924
        case 208: break;
1958
        case 210: break;
1925
        case 151:
1959
        case 151:
1926
          { return createFullSymbol(ASTPHP5Symbols.T_PRINT);
1960
          { return createFullSymbol(ASTPHP5Symbols.T_PRINT);
1927
          }
1961
          }
1928
        case 209: break;
1962
        case 211: break;
1929
        case 175:
1963
        case 175:
1930
          { return createSymbol(ASTPHP5Symbols.T_UNSET_CAST);
1964
          { return createSymbol(ASTPHP5Symbols.T_UNSET_CAST);
1931
          }
1965
          }
1932
        case 210: break;
1966
        case 212: break;
1933
        case 36:
1967
        case 36:
1934
          { handleCommentStart();
1968
          { handleCommentStart();
1935
	yybegin(ST_ONE_LINE_COMMENT);
1969
	yybegin(ST_ONE_LINE_COMMENT);
1936
//	yymore();
1970
//	yymore();
1937
          }
1971
          }
1938
        case 211: break;
1972
        case 213: break;
1939
        case 2:
1973
        case 2:
1940
          { return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
1974
          { return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
1941
          }
1975
          }
1942
        case 212: break;
1976
        case 214: break;
1943
        case 22:
1977
        case 22:
1944
          { return createSymbol(ASTPHP5Symbols.T_RGREATER);
1978
          { return createSymbol(ASTPHP5Symbols.T_RGREATER);
1945
          }
1979
          }
1946
        case 213: break;
1980
        case 215: break;
1947
        case 125:
1981
        case 125:
1948
          { yypushback(1);
1982
          { yypushback(1);
1949
	pushState(ST_VAR_OFFSET);
1983
	pushState(ST_VAR_OFFSET);
1950
	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
1984
	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
1951
          }
1985
          }
1952
        case 214: break;
1986
        case 216: break;
1953
        case 162:
1987
        case 162:
1954
          { return createFullSymbol(ASTPHP5Symbols.T_GLOBAL);
1988
          { return createFullSymbol(ASTPHP5Symbols.T_GLOBAL);
1955
          }
1989
          }
1956
        case 215: break;
1990
        case 217: break;
1957
        case 57:
1991
        case 57:
1958
          { //	yymore();
1992
          { //	yymore();
1959
          }
1993
          }
1960
        case 216: break;
1994
        case 218: break;
1961
        case 23:
1995
        case 23:
1962
          { return createSymbol(ASTPHP5Symbols.T_TIMES);
1996
          { return createSymbol(ASTPHP5Symbols.T_TIMES);
1963
          }
1997
          }
1964
        case 217: break;
1998
        case 219: break;
1965
        case 108:
1999
        case 108:
1966
          { String text = yytext();
2000
          { String text = yytext();
1967
    if ((text.charAt(1)=='%' && asp_tags)
2001
    if ((text.charAt(1)=='%' && asp_tags)
Lines 1972-2001 Link Here
1972
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2006
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
1973
    }
2007
    }
1974
          }
2008
          }
1975
        case 218: break;
2009
        case 220: break;
1976
        case 74:
2010
        case 74:
1977
          { return createSymbol(ASTPHP5Symbols.T_MINUS_EQUAL);
2011
          { return createSymbol(ASTPHP5Symbols.T_MINUS_EQUAL);
1978
          }
2012
          }
1979
        case 219: break;
2013
        case 221: break;
1980
        case 92:
2014
        case 92:
1981
          { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_OR);
2015
          { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_OR);
1982
          }
2016
          }
1983
        case 220: break;
2017
        case 222: break;
1984
        case 13:
2018
        case 13:
1985
          { pushState(ST_IN_SCRIPTING);
2019
          { pushState(ST_IN_SCRIPTING);
1986
    bracket++;
2020
    bracket++;
1987
    return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
2021
    return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
1988
          }
2022
          }
1989
        case 221: break;
2023
        case 223: break;
1990
        case 41:
2024
        case 41:
1991
          { yypushback(1);
2025
          { yypushback(1);
1992
	yybegin(ST_HEREDOC);
2026
	yybegin(ST_HEREDOC);
1993
          }
2027
          }
1994
        case 222: break;
2028
        case 224: break;
1995
        case 20:
2029
        case 20:
1996
          { return createSymbol(ASTPHP5Symbols.T_CLOSE_PARENTHESE);
2030
          { return createSymbol(ASTPHP5Symbols.T_CLOSE_PARENTHESE);
1997
          }
2031
          }
1998
        case 223: break;
2032
        case 225: break;
1999
        case 101:
2033
        case 101:
2000
          { String text = yytext();
2034
          { String text = yytext();
2001
    int length = text.length() - 1;
2035
    int length = text.length() - 1;
Lines 2015-2072 Link Here
2015
    	   yybegin(ST_HEREDOC);
2049
    	   yybegin(ST_HEREDOC);
2016
    }
2050
    }
2017
          }
2051
          }
2018
        case 224: break;
2052
        case 226: break;
2019
        case 45:
2053
        case 45:
2020
          { yypushback(yylength());
2054
          { yypushback(yylength());
2021
    popState();
2055
    popState();
2022
          }
2056
          }
2023
        case 225: break;
2057
        case 227: break;
2024
        case 21:
2058
        case 21:
2025
          { return createSymbol(ASTPHP5Symbols.T_NOT);
2059
          { return createSymbol(ASTPHP5Symbols.T_NOT);
2026
          }
2060
          }
2027
        case 226: break;
2061
        case 228: break;
2028
        case 154:
2062
        case 154:
2029
          { yypushback(3);
2063
          { yypushback(3);
2030
	pushState(ST_LOOKING_FOR_PROPERTY);
2064
	pushState(ST_LOOKING_FOR_PROPERTY);
2031
	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
2065
	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
2032
          }
2066
          }
2033
        case 227: break;
2067
        case 229: break;
2034
        case 29:
2068
        case 29:
2035
          { return createSymbol(ASTPHP5Symbols.T_QUESTION_MARK);
2069
          { return createSymbol(ASTPHP5Symbols.T_QUESTION_MARK);
2036
          }
2070
          }
2037
        case 228: break;
2071
        case 230: break;
2038
        case 119:
2072
        case 119:
2039
          { return createFullSymbol(ASTPHP5Symbols.T_VAR);
2073
          { return createFullSymbol(ASTPHP5Symbols.T_VAR);
2040
          }
2074
          }
2041
        case 229: break;
2075
        case 231: break;
2042
        case 202:
2076
        case 202:
2043
          { return createFullSymbol(ASTPHP5Symbols.T_FUNC_C);
2077
          { return createFullSymbol(ASTPHP5Symbols.T_FUNC_C);
2044
          }
2078
          }
2045
        case 230: break;
2079
        case 232: break;
2046
        case 141:
2080
        case 141:
2047
          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT);
2081
          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT);
2048
          }
2082
          }
2049
        case 231: break;
2083
        case 233: break;
2050
        case 159:
2084
        case 159:
2051
          { return createFullSymbol(ASTPHP5Symbols.T_STATIC);
2085
          { return createFullSymbol(ASTPHP5Symbols.T_STATIC);
2052
          }
2086
          }
2053
        case 232: break;
2087
        case 234: break;
2054
        case 131:
2088
        case 131:
2055
          { return createFullSymbol(ASTPHP5Symbols.T_EVAL);
2089
          { return createFullSymbol(ASTPHP5Symbols.T_EVAL);
2056
          }
2090
          }
2057
        case 233: break;
2091
        case 235: break;
2058
        case 161:
2092
        case 161:
2059
          { return createFullSymbol(ASTPHP5Symbols.T_RETURN);
2093
          { return createFullSymbol(ASTPHP5Symbols.T_RETURN);
2060
          }
2094
          }
2061
        case 234: break;
2095
        case 236: break;
2062
        case 144:
2096
        case 144:
2063
          { return createFullSymbol(ASTPHP5Symbols.T_UNSET);
2097
          { return createFullSymbol(ASTPHP5Symbols.T_UNSET);
2064
          }
2098
          }
2065
        case 235: break;
2099
        case 237: break;
2066
        case 85:
2100
        case 85:
2067
          { return createSymbol(ASTPHP5Symbols.T_DIV_EQUAL);
2101
          { return createSymbol(ASTPHP5Symbols.T_DIV_EQUAL);
2068
          }
2102
          }
2069
        case 236: break;
2103
        case 238: break;
2070
        case 126:
2104
        case 126:
2071
          { String text = yytext();
2105
          { String text = yytext();
2072
2106
Lines 2091-2134 Link Here
2091
	}
2125
	}
2092
	yypushback(1);
2126
	yypushback(1);
2093
          }
2127
          }
2094
        case 237: break;
2128
        case 239: break;
2095
        case 46:
2129
        case 46:
2096
          { popState();
2130
          { popState();
2097
    return createFullSymbol(ASTPHP5Symbols.T_STRING);
2131
    return createFullSymbol(ASTPHP5Symbols.T_STRING);
2098
          }
2132
          }
2099
        case 238: break;
2133
        case 240: break;
2100
        case 199:
2134
        case 199:
2101
          { return createFullSymbol(ASTPHP5Symbols.T_METHOD_C);
2135
          { return createFullSymbol(ASTPHP5Symbols.T_METHOD_C);
2102
          }
2136
          }
2103
        case 239: break;
2137
        case 241: break;
2104
        case 195:
2138
        case 195:
2105
          { return createFullSymbol(ASTPHP5Symbols.T_ENDFOREACH);
2139
          { return createFullSymbol(ASTPHP5Symbols.T_ENDFOREACH);
2106
          }
2140
          }
2107
        case 240: break;
2141
        case 242: break;
2108
        case 170:
2142
        case 170:
2109
          { return createFullSymbol(ASTPHP5Symbols.T_FINALLY);
2143
          { return createFullSymbol(ASTPHP5Symbols.T_FINALLY);
2110
          }
2144
          }
2111
        case 241: break;
2145
        case 243: break;
2112
        case 81:
2146
        case 81:
2113
          { return createSymbol(ASTPHP5Symbols.T_IS_SMALLER_OR_EQUAL);
2147
          { return createSymbol(ASTPHP5Symbols.T_IS_SMALLER_OR_EQUAL);
2114
          }
2148
          }
2115
        case 242: break;
2149
        case 244: break;
2116
        case 68:
2150
        case 68:
2117
          { return createFullSymbol(ASTPHP5Symbols.T_CONSTANT_ENCAPSED_STRING);
2151
          { return createFullSymbol(ASTPHP5Symbols.T_CONSTANT_ENCAPSED_STRING);
2118
          }
2152
          }
2119
        case 243: break;
2153
        case 245: break;
2120
        case 111:
2154
        case 111:
2121
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_AND);
2155
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_AND);
2122
          }
2156
          }
2123
        case 244: break;
2157
        case 246: break;
2124
        case 146:
2158
        case 146:
2125
          { return createFullSymbol(ASTPHP5Symbols.T_CONST);
2159
          { return createFullSymbol(ASTPHP5Symbols.T_CONST);
2126
          }
2160
          }
2127
        case 245: break;
2161
        case 247: break;
2128
        case 134:
2162
        case 134:
2129
          { return createFullSymbol(ASTPHP5Symbols.T_GOTO);
2163
          { return createFullSymbol(ASTPHP5Symbols.T_GOTO);
2130
          }
2164
          }
2131
        case 246: break;
2165
        case 248: break;
2132
        case 102:
2166
        case 102:
2133
          { String text = yytext();
2167
          { String text = yytext();
2134
    int length = text.length() - 1;
2168
    int length = text.length() - 1;
Lines 2148-2183 Link Here
2148
        yybegin(ST_NOWDOC);
2182
        yybegin(ST_NOWDOC);
2149
    }
2183
    }
2150
          }
2184
          }
2151
        case 247: break;
2185
        case 249: break;
2152
        case 114:
2186
        case 114:
2153
          { return createFullSymbol(ASTPHP5Symbols.T_EXIT);
2187
          { return createFullSymbol(ASTPHP5Symbols.T_EXIT);
2154
          }
2188
          }
2155
        case 248: break;
2189
        case 250: break;
2156
        case 38:
2190
        case 38:
2157
          { yybegin(ST_IN_SCRIPTING);
2191
          { yybegin(ST_IN_SCRIPTING);
2158
    return createSymbol(ASTPHP5Symbols.T_QUATE);
2192
    return createSymbol(ASTPHP5Symbols.T_QUATE);
2159
          }
2193
          }
2160
        case 249: break;
2194
        case 251: break;
2161
        case 181:
2195
        case 181:
2162
          { return createFullSymbol(ASTPHP5Symbols.T_CALLABLE);
2196
          { return createFullSymbol(ASTPHP5Symbols.T_CALLABLE);
2163
          }
2197
          }
2164
        case 250: break;
2198
        case 252: break;
2165
        case 120:
2199
        case 120:
2166
          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_IDENTICAL);
2200
          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_IDENTICAL);
2167
          }
2201
          }
2168
        case 251: break;
2202
        case 253: break;
2169
        case 44:
2203
        case 44:
2170
          { nowdoc=null;
2204
          { nowdoc=null;
2171
    nowdoc_len=0;
2205
    nowdoc_len=0;
2172
    yybegin(ST_IN_SCRIPTING);
2206
    yybegin(ST_IN_SCRIPTING);
2173
    return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
2207
    return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
2174
          }
2208
          }
2175
        case 252: break;
2209
        case 254: break;
2176
        case 158:
2210
        case 158:
2177
          { /* not a keyword, hust for recognize constans.*/
2211
          { /* not a keyword, hust for recognize constans.*/
2178
    return createFullSymbol(ASTPHP5Symbols.T_DEFINE);
2212
    return createFullSymbol(ASTPHP5Symbols.T_DEFINE);
2179
          }
2213
          }
2180
        case 253: break;
2214
        case 255: break;
2181
        case 58:
2215
        case 58:
2182
          { String yytext = yytext();
2216
          { String yytext = yytext();
2183
	switch (yytext.charAt(yytext.length() - 1)) {
2217
	switch (yytext.charAt(yytext.length() - 1)) {
Lines 2192-2405 Link Here
2192
	}
2226
	}
2193
//	yymore();
2227
//	yymore();
2194
          }
2228
          }
2195
        case 254: break;
2229
        case 256: break;
2196
        case 91:
2230
        case 91:
2197
          { return createSymbol(ASTPHP5Symbols.T_OR_EQUAL);
2231
          { return createSymbol(ASTPHP5Symbols.T_OR_EQUAL);
2198
          }
2232
          }
2199
        case 255: break;
2233
        case 257: break;
2200
        case 139:
2234
        case 139:
2201
          { return createFullSymbol(ASTPHP5Symbols.T_BREAK);
2235
          { return createFullSymbol(ASTPHP5Symbols.T_BREAK);
2202
          }
2236
          }
2203
        case 256: break;
2237
        case 258: break;
2204
        case 205:
2238
        case 206:
2205
          { yybegin(ST_HALTED_COMPILER);
2239
          { yybegin(ST_HALTED_COMPILER);
2206
	return createSymbol(ASTPHP5Symbols.T_HALT_COMPILER);
2240
	return createSymbol(ASTPHP5Symbols.T_HALT_COMPILER);
2207
          }
2241
          }
2208
        case 257: break;
2242
        case 259: break;
2209
        case 59:
2243
        case 59:
2210
          { yybegin(ST_IN_SCRIPTING);
2244
          { yybegin(ST_IN_SCRIPTING);
2211
    return createSymbol(ASTPHP5Symbols.T_ECHO);
2245
    return createSymbol(ASTPHP5Symbols.T_ECHO);
2212
          }
2246
          }
2213
        case 258: break;
2247
        case 260: break;
2214
        case 160:
2248
        case 160:
2215
          { return createFullSymbol(ASTPHP5Symbols.T_SWITCH);
2249
          { return createFullSymbol(ASTPHP5Symbols.T_SWITCH);
2216
          }
2250
          }
2217
        case 259: break;
2251
        case 261: break;
2218
        case 54:
2252
        case 54:
2219
          { popState();
2253
          { popState();
2220
	return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
2254
	return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
2221
          }
2255
          }
2222
        case 260: break;
2256
        case 262: break;
2223
        case 33:
2257
        case 33:
2224
          { return createSymbol(ASTPHP5Symbols.T_TILDA);
2258
          { return createSymbol(ASTPHP5Symbols.T_TILDA);
2225
          }
2259
          }
2226
        case 261: break;
2260
        case 263: break;
2227
        case 71:
2261
        case 71:
2228
          { return createFullSymbol(ASTPHP5Symbols.T_IF);
2262
          { return createFullSymbol(ASTPHP5Symbols.T_IF);
2229
          }
2263
          }
2230
        case 262: break;
2264
        case 264: break;
2231
        case 172:
2265
        case 172:
2232
          { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE);
2266
          { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE);
2233
          }
2267
          }
2234
        case 263: break;
2268
        case 265: break;
2235
        case 18:
2269
        case 18:
2236
          { return createSymbol(ASTPHP5Symbols.T_NEKUDOTAIM);
2270
          { return createSymbol(ASTPHP5Symbols.T_NEKUDOTAIM);
2237
          }
2271
          }
2238
        case 264: break;
2272
        case 266: break;
2239
        case 26:
2273
        case 26:
2240
          { return createSymbol(ASTPHP5Symbols.T_REFERENCE);
2274
          { return createSymbol(ASTPHP5Symbols.T_REFERENCE);
2241
          }
2275
          }
2242
        case 265: break;
2276
        case 267: break;
2243
        case 86:
2277
        case 86:
2244
          { handleCommentStart();
2278
          { handleCommentStart();
2245
    yybegin(ST_COMMENT);
2279
    yybegin(ST_COMMENT);
2246
          }
2280
          }
2247
        case 266: break;
2281
        case 268: break;
2248
        case 42:
2282
        case 42:
2249
          { heredoc = null;
2283
          { heredoc = null;
2250
	yybegin(ST_IN_SCRIPTING);
2284
	yybegin(ST_IN_SCRIPTING);
2251
	return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
2285
	return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
2252
          }
2286
          }
2253
        case 267: break;
2287
        case 269: break;
2254
        case 190:
2288
        case 190:
2255
          { return createFullSymbol(ASTPHP5Symbols.T_NAMESPACE);
2289
          { return createFullSymbol(ASTPHP5Symbols.T_NAMESPACE);
2256
          }
2290
          }
2257
        case 268: break;
2291
        case 270: break;
2258
        case 197:
2292
        case 197:
2259
          { return createFullSymbol(ASTPHP5Symbols.T_IMPLEMENTS);
2293
          { return createFullSymbol(ASTPHP5Symbols.T_IMPLEMENTS);
2260
          }
2294
          }
2261
        case 269: break;
2295
        case 271: break;
2262
        case 149:
2296
        case 149:
2263
          { return createFullSymbol(ASTPHP5Symbols.T_YIELD);
2297
          { return createFullSymbol(ASTPHP5Symbols.T_YIELD);
2264
          }
2298
          }
2265
        case 270: break;
2299
        case 272: break;
2266
        case 16:
2300
        case 16:
2267
          { return createSymbol(ASTPHP5Symbols.T_MINUS);
2301
          { return createSymbol(ASTPHP5Symbols.T_MINUS);
2268
          }
2302
          }
2269
        case 271: break;
2303
        case 273: break;
2270
        case 193:
2304
        case 193:
2271
          { return createFullSymbol(ASTPHP5Symbols.T_CLASS_C);
2305
          { return createFullSymbol(ASTPHP5Symbols.T_CLASS_C);
2272
          }
2306
          }
2273
        case 272: break;
2307
        case 274: break;
2274
        case 106:
2308
        case 106:
2275
          { handlePHPDocEnd();
2309
          { handlePHPDocEnd();
2276
     yybegin(ST_IN_SCRIPTING);
2310
     yybegin(ST_IN_SCRIPTING);
2277
          }
2311
          }
2278
        case 273: break;
2312
        case 275: break;
2279
        case 204:
2313
        case 204:
2280
          { return createFullSymbol(ASTPHP5Symbols.T_NS_C);
2314
          { return createFullSymbol(ASTPHP5Symbols.T_NS_C);
2281
          }
2315
          }
2282
        case 274: break;
2316
        case 276: break;
2283
        case 152:
2317
        case 152:
2284
          { return createSymbol(ASTPHP5Symbols.T_INT_CAST);
2318
          { return createSymbol(ASTPHP5Symbols.T_INT_CAST);
2285
          }
2319
          }
2286
        case 275: break;
2320
        case 277: break;
2287
        case 157:
2321
        case 157:
2288
          { return createFullSymbol(ASTPHP5Symbols.T_ELSEIF);
2322
          { return createFullSymbol(ASTPHP5Symbols.T_ELSEIF);
2289
          }
2323
          }
2290
        case 276: break;
2324
        case 278: break;
2291
        case 95:
2325
        case 95:
2292
          { return createSymbol(ASTPHP5Symbols.T_COALESCE);
2326
          { return createSymbol(ASTPHP5Symbols.T_COALESCE);
2293
          }
2327
          }
2294
        case 277: break;
2328
        case 279: break;
2295
        case 194:
2329
        case 194:
2296
          { return createFullSymbol(ASTPHP5Symbols.T_ENDDECLARE);
2330
          { return createFullSymbol(ASTPHP5Symbols.T_ENDDECLARE);
2297
          }
2331
          }
2298
        case 278: break;
2332
        case 280: break;
2299
        case 75:
2333
        case 75:
2300
          { return createSymbol(ASTPHP5Symbols.T_DEC);
2334
          { return createSymbol(ASTPHP5Symbols.T_DEC);
2301
          }
2335
          }
2302
        case 279: break;
2336
        case 281: break;
2303
        case 96:
2337
        case 96:
2304
          { yypushback(1);
2338
          { yypushback(1);
2305
    /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[\"]))*/
2339
    /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[\"]))*/
2306
    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2340
    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2307
          }
2341
          }
2308
        case 280: break;
2342
        case 282: break;
2309
        case 179:
2343
        case 179:
2310
          { return createFullSymbol(ASTPHP5Symbols.T_ABSTRACT);
2344
          { return createFullSymbol(ASTPHP5Symbols.T_ABSTRACT);
2311
          }
2345
          }
2312
        case 281: break;
2346
        case 283: break;
2313
        case 130:
2347
        case 130:
2314
          { return createFullSymbol(ASTPHP5Symbols.T_ELSE);
2348
          { return createFullSymbol(ASTPHP5Symbols.T_ELSE);
2315
          }
2349
          }
2316
        case 282: break;
2350
        case 284: break;
2317
        case 189:
2351
        case 189:
2318
          { return createFullSymbol(ASTPHP5Symbols.T_INSTEADOF);
2352
          { return createFullSymbol(ASTPHP5Symbols.T_INSTEADOF);
2319
          }
2353
          }
2320
        case 283: break;
2354
        case 285: break;
2321
        case 76:
2355
        case 76:
2322
          { pushState(ST_LOOKING_FOR_PROPERTY);
2356
          { pushState(ST_LOOKING_FOR_PROPERTY);
2323
    return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
2357
    return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
2324
          }
2358
          }
2325
        case 284: break;
2359
        case 286: break;
2326
        case 14:
2360
        case 14:
2327
          { return createSymbol(ASTPHP5Symbols.T_SEMICOLON);
2361
          { return createSymbol(ASTPHP5Symbols.T_SEMICOLON);
2328
          }
2362
          }
2329
        case 285: break;
2363
        case 287: break;
2330
        case 3:
2364
        case 3:
2331
          { // do nothing
2365
          { // do nothing
2332
          }
2366
          }
2333
        case 286: break;
2367
        case 288: break;
2334
        case 48:
2368
        case 48:
2335
          { popState();
2369
          { popState();
2336
    pushState(ST_IN_SCRIPTING);
2370
    pushState(ST_IN_SCRIPTING);
2337
    return createFullSymbol(ASTPHP5Symbols.T_STRING_VARNAME);
2371
    return createFullSymbol(ASTPHP5Symbols.T_STRING_VARNAME);
2338
          }
2372
          }
2339
        case 287: break;
2373
        case 289: break;
2340
        case 17:
2374
        case 17:
2341
          { return createSymbol(ASTPHP5Symbols.T_LGREATER);
2375
          { return createSymbol(ASTPHP5Symbols.T_LGREATER);
2342
          }
2376
          }
2343
        case 288: break;
2377
        case 290: break;
2344
        case 133:
2378
        case 133:
2345
          { return createFullSymbol(ASTPHP5Symbols.T_LIST);
2379
          { return createFullSymbol(ASTPHP5Symbols.T_LIST);
2346
          }
2380
          }
2347
        case 289: break;
2381
        case 291: break;
2348
        case 105:
2382
        case 105:
2349
          { handleMultilineCommentEnd();
2383
          { handleMultilineCommentEnd();
2350
    yybegin(ST_IN_SCRIPTING);
2384
    yybegin(ST_IN_SCRIPTING);
2351
          }
2385
          }
2352
        case 290: break;
2386
        case 292: break;
2353
        case 156:
2387
        case 156:
2354
          { return createFullSymbol(ASTPHP5Symbols.T_ENDFOR);
2388
          { return createFullSymbol(ASTPHP5Symbols.T_ENDFOR);
2355
          }
2389
          }
2356
        case 291: break;
2390
        case 293: break;
2357
        case 4:
2391
        case 4:
2358
          { return createFullSymbol(ASTPHP5Symbols.T_LNUMBER);
2392
          { return createFullSymbol(ASTPHP5Symbols.T_LNUMBER);
2359
          }
2393
          }
2360
        case 292: break;
2394
        case 294: break;
2361
        case 99:
2395
        case 99:
2362
          { yypushback(1);
2396
          { yypushback(1);
2363
        /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[`]))*/
2397
        /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[`]))*/
2364
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2398
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2365
          }
2399
          }
2366
        case 293: break;
2400
        case 295: break;
2367
        case 135:
2401
        case 135:
2368
          { handleCommentStart();
2402
          { handleCommentStart();
2369
          }
2403
          }
2370
        case 294: break;
2404
        case 296: break;
2371
        case 138:
2405
        case 138:
2372
          { return createFullSymbol(ASTPHP5Symbols.T_ARRAY);
2406
          { return createFullSymbol(ASTPHP5Symbols.T_ARRAY);
2373
          }
2407
          }
2374
        case 295: break;
2408
        case 297: break;
2375
        case 129:
2409
        case 129:
2376
          { return createFullSymbol(ASTPHP5Symbols.T_ECHO);
2410
          { return createFullSymbol(ASTPHP5Symbols.T_ECHO);
2377
          }
2411
          }
2378
        case 296: break;
2412
        case 298: break;
2379
        case 49:
2413
        case 49:
2380
          { return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
2414
          { return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
2381
          }
2415
          }
2382
        case 297: break;
2416
        case 299: break;
2383
        case 89:
2417
        case 89:
2384
          { return createSymbol(ASTPHP5Symbols.T_AND_EQUAL);
2418
          { return createSymbol(ASTPHP5Symbols.T_AND_EQUAL);
2385
          }
2419
          }
2386
        case 298: break;
2420
        case 300: break;
2387
        case 53:
2421
        case 53:
2388
          { bracket++; return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
2422
          { bracket++; return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
2389
          }
2423
          }
2390
        case 299: break;
2424
        case 301: break;
2391
        case 142:
2425
        case 142:
2392
          { return createFullSymbol(ASTPHP5Symbols.T_THROW);
2426
          { return createFullSymbol(ASTPHP5Symbols.T_THROW);
2393
          }
2427
          }
2394
        case 300: break;
2428
        case 302: break;
2395
        case 150:
2429
        case 150:
2396
          { return createFullSymbol(ASTPHP5Symbols.T_WHILE);
2430
          { return createFullSymbol(ASTPHP5Symbols.T_WHILE);
2397
          }
2431
          }
2398
        case 301: break;
2432
        case 303: break;
2399
        case 187:
2433
        case 187:
2400
          { return createFullSymbol(ASTPHP5Symbols.T_ENDSWITCH);
2434
          { return createFullSymbol(ASTPHP5Symbols.T_ENDSWITCH);
2401
          }
2435
          }
2402
        case 302: break;
2436
        case 304: break;
2403
        case 60:
2437
        case 60:
2404
          { if (asp_tags) {
2438
          { if (asp_tags) {
2405
        yybegin(ST_IN_SCRIPTING);
2439
        yybegin(ST_IN_SCRIPTING);
Lines 2409-2452 Link Here
2409
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2443
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2410
    }
2444
    }
2411
          }
2445
          }
2412
        case 303: break;
2446
        case 305: break;
2413
        case 174:
2447
        case 174:
2414
          { return createSymbol(ASTPHP5Symbols.T_ARRAY_CAST);
2448
          { return createSymbol(ASTPHP5Symbols.T_ARRAY_CAST);
2415
          }
2449
          }
2416
        case 304: break;
2450
        case 306: break;
2417
        case 98:
2451
        case 98:
2418
          { pushState(ST_IN_SCRIPTING);
2452
          { pushState(ST_IN_SCRIPTING);
2419
    yypushback(yylength()-1);
2453
    yypushback(yylength()-1);
2420
    bracket++;
2454
    bracket++;
2421
    return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN_WITH_DOLAR);
2455
    return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN_WITH_DOLAR);
2422
          }
2456
          }
2423
        case 305: break;
2457
        case 307: break;
2424
        case 168:
2458
        case 168:
2425
          { return createFullSymbol(ASTPHP5Symbols.T_DEFAULT);
2459
          { return createFullSymbol(ASTPHP5Symbols.T_DEFAULT);
2426
          }
2460
          }
2427
        case 306: break;
2461
        case 308: break;
2428
        case 165:
2462
        case 165:
2429
          { return createSymbol(ASTPHP5Symbols.T_DOUBLE_CAST);
2463
          { return createSymbol(ASTPHP5Symbols.T_DOUBLE_CAST);
2430
          }
2464
          }
2431
        case 307: break;
2465
        case 309: break;
2432
        case 12:
2466
        case 12:
2433
          { yybegin(ST_BACKQUOTE);
2467
          { yybegin(ST_BACKQUOTE);
2434
    return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2468
    return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2435
          }
2469
          }
2436
        case 308: break;
2470
        case 310: break;
2437
        case 31:
2471
        case 31:
2438
          { return createSymbol(ASTPHP5Symbols.T_OPEN_RECT);
2472
          { return createSymbol(ASTPHP5Symbols.T_OPEN_RECT);
2439
          }
2473
          }
2440
        case 309: break;
2474
        case 311: break;
2441
        case 145:
2475
        case 145:
2442
          { return createFullSymbol(ASTPHP5Symbols.T_CATCH);
2476
          { return createFullSymbol(ASTPHP5Symbols.T_CATCH);
2443
          }
2477
          }
2444
        case 310: break;
2478
        case 312: break;
2445
        case 97:
2479
        case 97:
2446
          { pushState(ST_LOOKING_FOR_VARNAME);
2480
          { pushState(ST_LOOKING_FOR_VARNAME);
2447
    return createSymbol(ASTPHP5Symbols.T_DOLLAR_OPEN_CURLY_BRACES);
2481
    return createSymbol(ASTPHP5Symbols.T_DOLLAR_OPEN_CURLY_BRACES);
2448
          }
2482
          }
2449
        case 311: break;
2483
        case 313: break;
2450
        case 35:
2484
        case 35:
2451
          { /* This is a temporary fix which is dependant on flex and it's implementation */
2485
          { /* This is a temporary fix which is dependant on flex and it's implementation */
2452
    if (!stack.isEmpty()) {
2486
    if (!stack.isEmpty()) {
Lines 2455-2539 Link Here
2455
    bracket--;
2489
    bracket--;
2456
    return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
2490
    return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
2457
          }
2491
          }
2458
        case 312: break;
2492
        case 314: break;
2459
        case 87:
2493
        case 87:
2460
          { return createSymbol(ASTPHP5Symbols.T_MOD_EQUAL);
2494
          { return createSymbol(ASTPHP5Symbols.T_MOD_EQUAL);
2461
          }
2495
          }
2462
        case 313: break;
2496
        case 315: break;
2463
        case 24:
2497
        case 24:
2464
          { return createSymbol(ASTPHP5Symbols.T_DIV);
2498
          { return createSymbol(ASTPHP5Symbols.T_DIV);
2465
          }
2499
          }
2466
        case 314: break;
2500
        case 316: break;
2467
        case 32:
2501
        case 32:
2468
          { return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
2502
          { return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
2469
          }
2503
          }
2470
        case 315: break;
2504
        case 317: break;
2471
        case 121:
2505
        case 121:
2472
          { return createSymbol(ASTPHP5Symbols.T_SPACESHIP);
2506
          { return createSymbol(ASTPHP5Symbols.T_SPACESHIP);
2473
          }
2507
          }
2474
        case 316: break;
2508
        case 318: break;
2475
        case 7:
2509
        case 7:
2476
          { return createSymbol(ASTPHP5Symbols.T_PLUS);
2510
          { return createSymbol(ASTPHP5Symbols.T_PLUS);
2477
          }
2511
          }
2478
        case 317: break;
2512
        case 319: break;
2479
        case 147:
2513
        case 147:
2480
          { return createFullSymbol(ASTPHP5Symbols.T_CLASS);
2514
          { return createFullSymbol(ASTPHP5Symbols.T_CLASS);
2481
          }
2515
          }
2482
        case 318: break;
2516
        case 320: break;
2483
        case 115:
2517
        case 115:
2484
          { return createFullSymbol(ASTPHP5Symbols.T_FOR);
2518
          { return createFullSymbol(ASTPHP5Symbols.T_FOR);
2485
          }
2519
          }
2486
        case 319: break;
2520
        case 321: break;
2487
        case 77:
2521
        case 77:
2488
          { return createSymbol(ASTPHP5Symbols.T_IS_GREATER_OR_EQUAL);
2522
          { return createSymbol(ASTPHP5Symbols.T_IS_GREATER_OR_EQUAL);
2489
          }
2523
          }
2490
        case 320: break;
2524
        case 322: break;
2491
        case 72:
2525
        case 72:
2492
          { return createFullSymbol(ASTPHP5Symbols.T_DO);
2526
          { return createFullSymbol(ASTPHP5Symbols.T_DO);
2493
          }
2527
          }
2494
        case 321: break;
2528
        case 323: break;
2495
        case 39:
2529
        case 39:
2496
          { /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}+*/
2530
          { /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}+*/
2497
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2531
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2498
          }
2532
          }
2499
        case 322: break;
2533
        case 324: break;
2500
        case 37:
2534
        case 37:
2501
          { /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}+*/
2535
          { /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}+*/
2502
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2536
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2503
          }
2537
          }
2504
        case 323: break;
2538
        case 325: break;
2505
        case 90:
2539
        case 90:
2506
          { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_AND);
2540
          { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_AND);
2507
          }
2541
          }
2508
        case 324: break;
2542
        case 326: break;
2509
        case 6:
2543
        case 6:
2510
          { return createFullSymbol(ASTPHP5Symbols.T_STRING);
2544
          { return createFullSymbol(ASTPHP5Symbols.T_STRING);
2511
          }
2545
          }
2512
        case 325: break;
2546
        case 327: break;
2513
        case 167:
2547
        case 167:
2514
          { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE);
2548
          { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE);
2515
          }
2549
          }
2516
        case 326: break;
2550
        case 328: break;
2517
        case 5:
2551
        case 5:
2518
          { return createSymbol(ASTPHP5Symbols.T_NEKUDA);
2552
          { return createSymbol(ASTPHP5Symbols.T_NEKUDA);
2519
          }
2553
          }
2520
        case 327: break;
2554
        case 329: break;
2521
        case 136:
2555
        case 136:
2522
          { return createFullSymbol(ASTPHP5Symbols.T_ENDIF);
2556
          { return createFullSymbol(ASTPHP5Symbols.T_ENDIF);
2523
          }
2557
          }
2524
        case 328: break;
2558
        case 330: break;
2525
        case 117:
2559
        case 117:
2526
          { return createFullSymbol(ASTPHP5Symbols.T_NEW);
2560
          { return createFullSymbol(ASTPHP5Symbols.T_NEW);
2527
          }
2561
          }
2528
        case 329: break;
2562
        case 331: break;
2529
        case 55:
2563
        case 55:
2530
          { bracket--; return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
2564
          { bracket--; return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
2531
          }
2565
          }
2532
        case 330: break;
2566
        case 332: break;
2533
        case 196:
2567
        case 196:
2534
          { return createFullSymbol(ASTPHP5Symbols.T_INSTANCEOF);
2568
          { return createFullSymbol(ASTPHP5Symbols.T_INSTANCEOF);
2535
          }
2569
          }
2536
        case 331: break;
2570
        case 333: break;
2537
        case 177:
2571
        case 177:
2538
          { int bprefix = (yytext().charAt(0) != '<') ? 1 : 0;
2572
          { int bprefix = (yytext().charAt(0) != '<') ? 1 : 0;
2539
        int startString=3+bprefix;
2573
        int startString=3+bprefix;
Lines 2549-2561 Link Here
2549
        yybegin(ST_START_NOWDOC);
2583
        yybegin(ST_START_NOWDOC);
2550
        return createSymbol(ASTPHP5Symbols.T_START_NOWDOC);
2584
        return createSymbol(ASTPHP5Symbols.T_START_NOWDOC);
2551
          }
2585
          }
2552
        case 332: break;
2586
        case 334: break;
2553
        case 47:
2587
        case 47:
2554
          { yypushback(yylength());
2588
          { yypushback(yylength());
2555
    popState();
2589
    popState();
2556
    pushState(ST_IN_SCRIPTING);
2590
    pushState(ST_IN_SCRIPTING);
2557
          }
2591
          }
2558
        case 333: break;
2592
        case 335: break;
2559
        case 155:
2593
        case 155:
2560
          { isEndedPhp = false;
2594
          { isEndedPhp = false;
2561
    whitespaceEndPosition = getTokenStartPosition() + yylength();
2595
    whitespaceEndPosition = getTokenStartPosition() + yylength();
Lines 2563-2609 Link Here
2563
    //return T_OPEN_TAG;
2597
    //return T_OPEN_TAG;
2564
    //return createSymbol(ASTPHP5Symbols.T_OPEN_TAG);
2598
    //return createSymbol(ASTPHP5Symbols.T_OPEN_TAG);
2565
          }
2599
          }
2566
        case 334: break;
2600
        case 336: break;
2567
        case 65:
2601
        case 65:
2568
          { return createSymbol(ASTPHP5Symbols.T_PLUS_EQUAL);
2602
          { return createSymbol(ASTPHP5Symbols.T_PLUS_EQUAL);
2569
          }
2603
          }
2570
        case 335: break;
2604
        case 337: break;
2571
        case 9:
2605
        case 9:
2572
          { whitespaceEndPosition = getTokenStartPosition() + yylength();
2606
          { whitespaceEndPosition = getTokenStartPosition() + yylength();
2573
          }
2607
          }
2574
        case 336: break;
2608
        case 338: break;
2575
        case 173:
2609
        case 173:
2576
          { return createFullSymbol(ASTPHP5Symbols.T_PRIVATE);
2610
          { return createFullSymbol(ASTPHP5Symbols.T_PRIVATE);
2577
          }
2611
          }
2578
        case 337: break;
2612
        case 339: break;
2579
        case 201:
2613
        case 201:
2580
          { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE_ONCE);
2614
          { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE_ONCE);
2581
          }
2615
          }
2582
        case 338: break;
2616
        case 340: break;
2583
        case 171:
2617
        case 171:
2584
          { return createFullSymbol(ASTPHP5Symbols.T_FOREACH);
2618
          { return createFullSymbol(ASTPHP5Symbols.T_FOREACH);
2585
          }
2619
          }
2586
        case 339: break;
2620
        case 341: break;
2587
        case 148:
2621
        case 148:
2588
          { return createFullSymbol(ASTPHP5Symbols.T_CLONE);
2622
          { return createFullSymbol(ASTPHP5Symbols.T_CLONE);
2589
          }
2623
          }
2590
        case 340: break;
2624
        case 342: break;
2591
        case 140:
2625
        case 140:
2592
          { return createFullSymbol(ASTPHP5Symbols.T_ISSET);
2626
          { return createFullSymbol(ASTPHP5Symbols.T_ISSET);
2593
          }
2627
          }
2594
        case 341: break;
2628
        case 343: break;
2595
        case 19:
2629
        case 19:
2596
          { return createSymbol(ASTPHP5Symbols.T_OPEN_PARENTHESE);
2630
          { return createSymbol(ASTPHP5Symbols.T_OPEN_PARENTHESE);
2597
          }
2631
          }
2598
        case 342: break;
2632
        case 344: break;
2599
        case 163:
2633
        case 163:
2600
          { return createFullSymbol(ASTPHP5Symbols.T_PUBLIC);
2634
          { return createFullSymbol(ASTPHP5Symbols.T_PUBLIC);
2601
          }
2635
          }
2602
        case 343: break;
2636
        case 345: break;
2603
        case 118:
2637
        case 118:
2604
          { return createSymbol(ASTPHP5Symbols.T_SR_EQUAL);
2638
          { return createSymbol(ASTPHP5Symbols.T_SR_EQUAL);
2605
          }
2639
          }
2606
        case 344: break;
2640
        case 346: break;
2607
        case 61:
2641
        case 61:
2608
          { if (short_tags_allowed || yylength()>2) { /* yyleng>2 means it's not <? but <script> */
2642
          { if (short_tags_allowed || yylength()>2) { /* yyleng>2 means it's not <? but <script> */
2609
        yybegin(ST_IN_SCRIPTING);
2643
        yybegin(ST_IN_SCRIPTING);
Lines 2613-2702 Link Here
2613
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2647
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2614
    }
2648
    }
2615
          }
2649
          }
2616
        case 345: break;
2650
        case 347: break;
2617
        case 137:
2651
        case 137:
2618
          { return createFullSymbol(ASTPHP5Symbols.T_EMPTY);
2652
          { return createFullSymbol(ASTPHP5Symbols.T_EMPTY);
2619
          }
2653
          }
2620
        case 346: break;
2654
        case 348: break;
2621
        case 80:
2655
        case 80:
2622
          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_EQUAL);
2656
          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_EQUAL);
2623
          }
2657
          }
2624
        case 347: break;
2658
        case 349: break;
2625
        case 83:
2659
        case 83:
2626
          { return createSymbol(ASTPHP5Symbols.T_MUL_EQUAL);
2660
          { return createSymbol(ASTPHP5Symbols.T_MUL_EQUAL);
2627
          }
2661
          }
2628
        case 348: break;
2662
        case 350: break;
2629
        case 124:
2663
        case 124:
2630
          { if (!parsePHPDoc()) {
2664
          { if (!parsePHPDoc()) {
2631
handleCommentStart();
2665
handleCommentStart();
2632
yybegin(ST_DOCBLOCK);
2666
yybegin(ST_DOCBLOCK);
2633
}
2667
}
2634
          }
2668
          }
2635
        case 349: break;
2669
        case 351: break;
2636
        case 122:
2670
        case 122:
2637
          { return createSymbol(ASTPHP5Symbols.T_SL_EQUAL);
2671
          { return createSymbol(ASTPHP5Symbols.T_SL_EQUAL);
2638
          }
2672
          }
2639
        case 350: break;
2673
        case 352: break;
2640
        case 113:
2674
        case 113:
2641
          { return createFullSymbol(ASTPHP5Symbols.T_TRY);
2675
          { return createFullSymbol(ASTPHP5Symbols.T_TRY);
2642
          }
2676
          }
2643
        case 351: break;
2677
        case 353: break;
2644
        case 128:
2678
        case 128:
2645
          { int len = yylength();
2679
          { int len = yylength();
2646
        yypushback(2); // go back to mark end of comment in the next token
2680
        yypushback(2); // go back to mark end of comment in the next token
2647
        comment = yytext();
2681
        comment = yytext();
2648
          }
2682
          }
2649
        case 352: break;
2683
        case 354: break;
2650
        case 143:
2684
        case 143:
2651
          { return createFullSymbol(ASTPHP5Symbols.T_FINAL);
2685
          { return createFullSymbol(ASTPHP5Symbols.T_FINAL);
2652
          }
2686
          }
2653
        case 353: break;
2687
        case 355: break;
2654
        case 184:
2688
        case 184:
2655
          { return createSymbol(ASTPHP5Symbols.T_OBJECT_CAST);
2689
          { return createSymbol(ASTPHP5Symbols.T_OBJECT_CAST);
2656
          }
2690
          }
2657
        case 354: break;
2691
        case 356: break;
2658
        case 100:
2692
        case 100:
2659
          { yypushback(1);
2693
          { yypushback(1);
2660
    /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{""{"+|"$""$"+)*/
2694
    /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{""{"+|"$""$"+)*/
2661
    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2695
    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2662
          }
2696
          }
2663
        case 355: break;
2697
        case 357: break;
2664
        case 164:
2698
        case 164:
2665
          { return createSymbol(ASTPHP5Symbols.T_BOOL_CAST);
2699
          { return createSymbol(ASTPHP5Symbols.T_BOOL_CAST);
2666
          }
2700
          }
2667
        case 356: break;
2701
        case 358: break;
2668
        case 40:
2702
        case 40:
2669
          { yybegin(ST_IN_SCRIPTING);
2703
          { yybegin(ST_IN_SCRIPTING);
2670
    return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2704
    return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2671
          }
2705
          }
2672
        case 357: break;
2706
        case 359: break;
2673
        case 8:
2707
        case 8:
2674
          { return createSymbol(ASTPHP5Symbols.T_NS_SEPARATOR);
2708
          { return createSymbol(ASTPHP5Symbols.T_NS_SEPARATOR);
2675
          }
2709
          }
2676
        case 358: break;
2710
        case 360: break;
2677
        case 183:
2711
        case 183:
2678
          { return createSymbol(ASTPHP5Symbols.T_STRING_CAST);
2712
          { return createSymbol(ASTPHP5Symbols.T_STRING_CAST);
2679
          }
2713
          }
2680
        case 359: break;
2714
        case 361: break;
2681
        case 110:
2715
        case 110:
2682
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_XOR);
2716
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_XOR);
2683
          }
2717
          }
2684
        case 360: break;
2718
        case 362: break;
2685
        case 50:
2719
        case 50:
2686
          { yypushback(1);
2720
          { yypushback(1);
2687
	popState();
2721
	popState();
2688
        /*<ST_VAR_OFFSET>[ \n\r\t\\'#]*/
2722
        /*<ST_VAR_OFFSET>[ \n\r\t\\'#]*/
2689
	return createSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2723
	return createSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2690
          }
2724
          }
2691
        case 361: break;
2725
        case 363: break;
2692
        case 62:
2726
        case 62:
2693
          { return createFullSymbol(ASTPHP5Symbols.T_DNUMBER);
2727
          { return createFullSymbol(ASTPHP5Symbols.T_DNUMBER);
2694
          }
2728
          }
2695
        case 362: break;
2729
        case 364: break;
2696
        case 25:
2730
        case 25:
2697
          { return createSymbol(ASTPHP5Symbols.T_PRECENT);
2731
          { return createSymbol(ASTPHP5Symbols.T_PRECENT);
2698
          }
2732
          }
2699
        case 363: break;
2733
        case 365: break;
2700
        case 203:
2734
        case 203:
2701
          { comment = yytext();
2735
          { comment = yytext();
2702
    handleVarComment();
2736
    handleVarComment();
Lines 2704-2716 Link Here
2704
    // but it needs some changes in parser grammar. see issue #154967
2738
    // but it needs some changes in parser grammar. see issue #154967
2705
    //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT);
2739
    //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT);
2706
          }
2740
          }
2707
        case 364: break;
2741
        case 366: break;
2708
        case 94:
2742
        case 94:
2709
          { isEndedPhp = true;
2743
          { isEndedPhp = true;
2710
    yybegin(YYINITIAL);
2744
    yybegin(YYINITIAL);
2711
    return createSymbol(ASTPHP5Symbols.T_SEMICOLON);  /* implicit ';' at php-end tag */
2745
    return createSymbol(ASTPHP5Symbols.T_SEMICOLON);  /* implicit ';' at php-end tag */
2712
          }
2746
          }
2713
        case 365: break;
2747
        case 367: break;
2714
        case 88:
2748
        case 88:
2715
          { if (asp_tags) {
2749
          { if (asp_tags) {
2716
        yybegin(YYINITIAL);
2750
        yybegin(YYINITIAL);
Lines 2719-2787 Link Here
2719
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2753
        return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
2720
    }
2754
    }
2721
          }
2755
          }
2722
        case 366: break;
2756
        case 368: break;
2723
        case 180:
2757
        case 180:
2724
          { return createFullSymbol(ASTPHP5Symbols.T_FUNCTION);
2758
          { return createFullSymbol(ASTPHP5Symbols.T_FUNCTION);
2725
          }
2759
          }
2726
        case 367: break;
2760
        case 369: break;
2727
        case 178:
2761
        case 178:
2728
          { return createFullSymbol(ASTPHP5Symbols.T_ENDWHILE);
2762
          { return createFullSymbol(ASTPHP5Symbols.T_ENDWHILE);
2729
          }
2763
          }
2730
        case 368: break;
2764
        case 370: break;
2731
        case 28:
2765
        case 28:
2732
          { return createSymbol(ASTPHP5Symbols.T_KOVA);
2766
          { return createSymbol(ASTPHP5Symbols.T_KOVA);
2733
          }
2767
          }
2734
        case 369: break;
2768
        case 371: break;
2735
        case 11:
2769
        case 11:
2736
          { yybegin(ST_DOUBLE_QUOTES);
2770
          { yybegin(ST_DOUBLE_QUOTES);
2737
    return createSymbol(ASTPHP5Symbols.T_QUATE);
2771
    return createSymbol(ASTPHP5Symbols.T_QUATE);
2738
          }
2772
          }
2739
        case 370: break;
2773
        case 372: break;
2740
        case 182:
2774
        case 182:
2741
          { return createFullSymbol(ASTPHP5Symbols.T_CONTINUE);
2775
          { return createFullSymbol(ASTPHP5Symbols.T_CONTINUE);
2742
          }
2776
          }
2743
        case 371: break;
2777
        case 373: break;
2744
        case 1:
2778
        case 1:
2745
          { /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?*/
2779
          { /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?*/
2746
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2780
	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
2747
          }
2781
          }
2748
        case 372: break;
2782
        case 374: break;
2749
        case 112:
2783
        case 112:
2750
          { return createSymbol(ASTPHP5Symbols.T_IS_IDENTICAL);
2784
          { return createSymbol(ASTPHP5Symbols.T_IS_IDENTICAL);
2751
          }
2785
          }
2752
        case 373: break;
2786
        case 375: break;
2753
        case 70:
2787
        case 70:
2754
          { return createSymbol(ASTPHP5Symbols.T_DOUBLE_ARROW);
2788
          { return createSymbol(ASTPHP5Symbols.T_DOUBLE_ARROW);
2755
          }
2789
          }
2756
        case 374: break;
2790
        case 376: break;
2757
        case 192:
2791
        case 192:
2758
          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT_C);
2792
          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT_C);
2759
          }
2793
          }
2760
        case 375: break;
2794
        case 377: break;
2761
        case 79:
2795
        case 79:
2762
          { return createSymbol(ASTPHP5Symbols.T_PAAMAYIM_NEKUDOTAYIM);
2796
          { return createSymbol(ASTPHP5Symbols.T_PAAMAYIM_NEKUDOTAYIM);
2763
          }
2797
          }
2764
        case 376: break;
2798
        case 378: break;
2765
        case 116:
2799
        case 116:
2766
          { return createFullSymbol(ASTPHP5Symbols.T_USE);
2800
          { return createFullSymbol(ASTPHP5Symbols.T_USE);
2767
          }
2801
          }
2768
        case 377: break;
2802
        case 379: break;
2769
        case 78:
2803
        case 78:
2770
          { return createSymbol(ASTPHP5Symbols.T_SR);
2804
          { return createSymbol(ASTPHP5Symbols.T_SR);
2771
          }
2805
          }
2772
        case 378: break;
2806
        case 380: break;
2773
        case 15:
2807
        case 15:
2774
          { return createSymbol(ASTPHP5Symbols.T_EQUAL);
2808
          { return createSymbol(ASTPHP5Symbols.T_EQUAL);
2775
          }
2809
          }
2776
        case 379: break;
2810
        case 381: break;
2777
        case 30:
2811
        case 30:
2778
          { return createSymbol(ASTPHP5Symbols.T_COMMA);
2812
          { return createSymbol(ASTPHP5Symbols.T_COMMA);
2779
          }
2813
          }
2780
        case 380: break;
2814
        case 382: break;
2781
        case 176:
2815
        case 176:
2782
          { return createFullSymbol(ASTPHP5Symbols.T_DIR);
2816
          { return createFullSymbol(ASTPHP5Symbols.T_DIR);
2783
          }
2817
          }
2784
        case 381: break;
2818
        case 383: break;
2785
        case 107:
2819
        case 107:
2786
          { if (asp_tags || yytext().charAt(0)!='%') { /* asp comment? */
2820
          { if (asp_tags || yytext().charAt(0)!='%') { /* asp comment? */
2787
        isEndedPhp = true;
2821
        isEndedPhp = true;
Lines 2791-2831 Link Here
2791
		//return T_COMMENT;
2825
		//return T_COMMENT;
2792
	}
2826
	}
2793
          }
2827
          }
2794
        case 382: break;
2828
        case 384: break;
2795
        case 191:
2829
        case 191:
2796
          { return createFullSymbol(ASTPHP5Symbols.T_PROTECTED);
2830
          { return createFullSymbol(ASTPHP5Symbols.T_PROTECTED);
2797
          }
2831
          }
2798
        case 383: break;
2832
        case 385: break;
2799
        case 63:
2833
        case 63:
2800
          { return createSymbol(ASTPHP5Symbols.T_CONCAT_EQUAL);
2834
          { return createSymbol(ASTPHP5Symbols.T_CONCAT_EQUAL);
2801
          }
2835
          }
2802
        case 384: break;
2836
        case 386: break;
2803
        case 104:
2837
        case 104:
2804
          { /* treat numbers (almost) as strings inside encapsulated strings */
2838
          { /* treat numbers (almost) as strings inside encapsulated strings */
2805
    return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
2839
    return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
2806
          }
2840
          }
2807
        case 385: break;
2841
        case 387: break;
2808
        case 10:
2842
        case 10:
2809
          { return createSymbol(ASTPHP5Symbols.T_DOLLAR);
2843
          { return createSymbol(ASTPHP5Symbols.T_DOLLAR);
2810
          }
2844
          }
2811
        case 386: break;
2845
        case 388: break;
2812
        case 64:
2846
        case 64:
2813
          { return createSymbol(ASTPHP5Symbols.T_INC);
2847
          { return createSymbol(ASTPHP5Symbols.T_INC);
2814
          }
2848
          }
2815
        case 387: break;
2849
        case 389: break;
2816
        case 43:
2850
        case 43:
2817
          { yypushback(1);
2851
          { yypushback(1);
2818
	yybegin(ST_NOWDOC);
2852
	yybegin(ST_NOWDOC);
2819
          }
2853
          }
2820
        case 388: break;
2854
        case 390: break;
2821
        case 73:
2855
        case 73:
2822
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_OR);
2856
          { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_OR);
2823
          }
2857
          }
2824
        case 389: break;
2858
        case 391: break;
2825
        case 82:
2859
        case 82:
2826
          { return createSymbol(ASTPHP5Symbols.T_SL);
2860
          { return createSymbol(ASTPHP5Symbols.T_SL);
2827
          }
2861
          }
2828
        case 390: break;
2862
        case 392: break;
2829
        case 127:
2863
        case 127:
2830
          { String text = yytext();
2864
          { String text = yytext();
2831
2865
Lines 2848-2930 Link Here
2848
    }
2882
    }
2849
    yypushback(1);
2883
    yypushback(1);
2850
          }
2884
          }
2851
        case 391: break;
2885
        case 393: break;
2852
        case 66:
2886
        case 66:
2853
          { return createFullSymbol(ASTPHP5Symbols.T_AS);
2887
          { return createFullSymbol(ASTPHP5Symbols.T_AS);
2854
          }
2888
          }
2855
        case 392: break;
2889
        case 394: break;
2856
        case 200:
2890
        case 200:
2857
          { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE_ONCE);
2891
          { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE_ONCE);
2858
          }
2892
          }
2859
        case 393: break;
2893
        case 395: break;
2860
        case 123:
2894
        case 123:
2861
          { return createSymbol(ASTPHP5Symbols.T_POW_EQUAL);
2895
          { return createSymbol(ASTPHP5Symbols.T_POW_EQUAL);
2862
          }
2896
          }
2863
        case 394: break;
2897
        case 396: break;
2864
        case 69:
2898
        case 69:
2865
          { return createSymbol(ASTPHP5Symbols.T_IS_EQUAL);
2899
          { return createSymbol(ASTPHP5Symbols.T_IS_EQUAL);
2866
          }
2900
          }
2867
        case 395: break;
2901
        case 397: break;
2868
        case 34:
2902
        case 34:
2869
          { return createSymbol(ASTPHP5Symbols.T_AT);
2903
          { return createSymbol(ASTPHP5Symbols.T_AT);
2870
          }
2904
          }
2871
        case 396: break;
2905
        case 398: break;
2872
        case 51:
2906
        case 51:
2873
          { return createSymbol(ASTPHP5Symbols.T_QUATE);
2907
          { return createSymbol(ASTPHP5Symbols.T_QUATE);
2874
          }
2908
          }
2875
        case 397: break;
2909
        case 399: break;
2876
        case 186:
2910
        case 186:
2877
          { return createFullSymbol(ASTPHP5Symbols.T_LINE);
2911
          { return createFullSymbol(ASTPHP5Symbols.T_LINE);
2878
          }
2912
          }
2879
        case 398: break;
2913
        case 400: break;
2880
        case 166:
2914
        case 166:
2881
          { return createFullSymbol(ASTPHP5Symbols.T_EXTENDS);
2915
          { return createFullSymbol(ASTPHP5Symbols.T_EXTENDS);
2882
          }
2916
          }
2883
        case 399: break;
2917
        case 401: break;
2884
        case 67:
2918
        case 67:
2885
          { return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
2919
          { return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
2886
          }
2920
          }
2887
        case 400: break;
2921
        case 402: break;
2888
        case 198:
2922
        case 198:
2889
          { return createSymbol(ASTPHP5Symbols.T_YIELD_FROM);
2923
          { return createSymbol(ASTPHP5Symbols.T_YIELD_FROM);
2890
          }
2924
          }
2891
        case 401: break;
2925
        case 403: break;
2892
        case 169:
2926
        case 169:
2893
          { return createFullSymbol(ASTPHP5Symbols.T_DECLARE);
2927
          { return createFullSymbol(ASTPHP5Symbols.T_DECLARE);
2894
          }
2928
          }
2895
        case 402: break;
2929
        case 404: break;
2896
        case 93:
2930
        case 93:
2897
          { return createSymbol(ASTPHP5Symbols.T_XOR_EQUAL);
2931
          { return createSymbol(ASTPHP5Symbols.T_XOR_EQUAL);
2898
          }
2932
          }
2899
        case 403: break;
2933
        case 405: break;
2900
        case 84:
2934
        case 84:
2901
          { return createSymbol(ASTPHP5Symbols.T_POW);
2935
          { return createSymbol(ASTPHP5Symbols.T_POW);
2902
          }
2936
          }
2903
        case 404: break;
2937
        case 406: break;
2904
        case 132:
2938
        case 132:
2905
          { return createFullSymbol(ASTPHP5Symbols.T_CASE);
2939
          { return createFullSymbol(ASTPHP5Symbols.T_CASE);
2906
          }
2940
          }
2907
        case 405: break;
2941
        case 407: break;
2908
        case 185:
2942
        case 185:
2909
          { return createFullSymbol(ASTPHP5Symbols.T_FILE);
2943
          { return createFullSymbol(ASTPHP5Symbols.T_FILE);
2910
          }
2944
          }
2911
        case 406: break;
2945
        case 408: break;
2912
        case 103:
2946
        case 103:
2913
          { return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
2947
          { return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
2914
          }
2948
          }
2915
        case 407: break;
2949
        case 409: break;
2916
        case 109:
2950
        case 109:
2917
          { return createSymbol(ASTPHP5Symbols.T_ELLIPSIS);
2951
          { return createSymbol(ASTPHP5Symbols.T_ELLIPSIS);
2918
          }
2952
          }
2919
        case 408: break;
2953
        case 410: break;
2920
        case 52:
2954
        case 52:
2921
          { return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2955
          { return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
2922
          }
2956
          }
2923
        case 409: break;
2957
        case 411: break;
2924
        case 56:
2958
        case 56:
2925
          {
2959
          {
2926
          }
2960
          }
2927
        case 410: break;
2961
        case 412: break;
2928
        default:
2962
        default:
2929
          if (zzInput == YYEOF && (zzStartRead == zzCurrentPos || zzLexicalState == ST_DOCBLOCK)) {
2963
          if (zzInput == YYEOF && (zzStartRead == zzCurrentPos || zzLexicalState == ST_DOCBLOCK)) {
2930
            zzAtEOF = true;
2964
            zzAtEOF = true;
Lines 2939-2945 Link Here
2939
                return createSymbol(ASTPHP5Symbols.EOF);
2973
                return createSymbol(ASTPHP5Symbols.EOF);
2940
              }
2974
              }
2941
            }
2975
            }
2942
            case 765: break;
2976
            case 786: break;
2943
            default:
2977
            default:
2944
              {     return createSymbol(ASTPHP5Symbols.EOF);
2978
              {     return createSymbol(ASTPHP5Symbols.EOF);
2945
 }
2979
 }
(-)a/php.editor/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParser.java (-7 / +26 lines)
Lines 51-56 Link Here
51
import org.netbeans.modules.php.editor.parser.astnodes.PHPVarComment;
51
import org.netbeans.modules.php.editor.parser.astnodes.PHPVarComment;
52
52
53
/**
53
/**
54
 * PHPVarComment pattern: The first one is the IDE's own pattern. See
55
 * {@link https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md}
56
 * about the second one.
57
 * <pre>
58
 * &#47;*  @var $variableName TypeName *&#47;
59
 * &#47;** @var TypeName $variableName Description *&#47;
60
 * </pre>
54
 *
61
 *
55
 * @author Petr Pisl
62
 * @author Petr Pisl
56
 */
63
 */
Lines 59-64 Link Here
59
    private static final String PHPDOCTAG = "@" + PHPDocTag.Type.VAR.name().toLowerCase(); //NOI18N
66
    private static final String PHPDOCTAG = "@" + PHPDocTag.Type.VAR.name().toLowerCase(); //NOI18N
60
67
61
    PHPVarComment parse(final int startOffset, final int endOffset, final String comment) {
68
    PHPVarComment parse(final int startOffset, final int endOffset, final String comment) {
69
        boolean isPHPDoc = comment.startsWith("/**"); // NOI18N
70
        int variableIndex = isPHPDoc ? 2 : 1;
71
        int typeIndex = isPHPDoc ? 1 : 2;
72
62
        int index = comment.indexOf(PHPDOCTAG);
73
        int index = comment.indexOf(PHPDOCTAG);
63
        if (index > -1) {
74
        if (index > -1) {
64
            String definition = comment.substring(index);
75
            String definition = comment.substring(index);
Lines 69-81 Link Here
69
            int startDocNode;
80
            int startDocNode;
70
            int endPosition = 0;
81
            int endPosition = 0;
71
            String[] parts = definition.split("[ \t]+"); //NOI18N
82
            String[] parts = definition.split("[ \t]+"); //NOI18N
72
            if (parts.length == 3 && parts[1].charAt(0) == '$') { //NOI18N
83
            if (isExpectedPatrsLength(isPHPDoc, parts)
84
                    && parts[variableIndex].charAt(0) == '$') { //NOI18N
73
                //counting types
85
                //counting types
74
                String[] types = parts[2].split("[|]"); //NOI18N
86
                String[] types = parts[typeIndex].split("[|]"); //NOI18N
75
                int typePosition = startOffset + comment.indexOf(parts[2]);
87
                int typePosition = startOffset + comment.indexOf(parts[typeIndex]);
76
                ArrayList<PHPDocTypeNode> typeNodes = new ArrayList<>();
88
                ArrayList<PHPDocTypeNode> typeNodes = new ArrayList<>();
77
                for (String type: types) {
89
                for (String type: types) {
78
                    startDocNode = typePosition + parts[2].indexOf(type);
90
                    startDocNode = typePosition + parts[typeIndex].indexOf(type);
79
                    index = type.indexOf("::"); //NOI18N
91
                    index = type.indexOf("::"); //NOI18N
80
                    boolean isArray = (type.indexOf('[') > 0  && type.indexOf(']') > 0);
92
                    boolean isArray = (type.indexOf('[') > 0  && type.indexOf(']') > 0);
81
                    if (isArray) {
93
                    if (isArray) {
Lines 95-104 Link Here
95
                    typeNodes.add(docType);
107
                    typeNodes.add(docType);
96
                }
108
                }
97
                // counting variable
109
                // counting variable
98
                String variableName = parts[1];
110
                String variableName = parts[variableIndex];
99
                int indexOfArrayDimension = parts[1].indexOf("["); //NOI18N
111
                int indexOfArrayDimension = parts[variableIndex].indexOf("["); //NOI18N
100
                if (indexOfArrayDimension != -1) {
112
                if (indexOfArrayDimension != -1) {
101
                    variableName = parts[1].substring(0, indexOfArrayDimension);
113
                    variableName = parts[variableIndex].substring(0, indexOfArrayDimension);
102
                }
114
                }
103
                startDocNode = startOffset + comment.indexOf(variableName);
115
                startDocNode = startOffset + comment.indexOf(variableName);
104
                PHPDocNode variableNode = new PHPDocNode(startDocNode, startDocNode + variableName.length(), variableName);
116
                PHPDocNode variableNode = new PHPDocNode(startDocNode, startDocNode + variableName.length(), variableName);
Lines 109-112 Link Here
109
        }
121
        }
110
        return null;
122
        return null;
111
    }
123
    }
124
125
    private boolean isExpectedPatrsLength(boolean isPHPDoc, String[] parts) {
126
        if (isPHPDoc) {
127
            return parts.length >= 3;
128
        }
129
        return parts.length == 3;
130
    }
112
}
131
}
(-)a/php.editor/src/org/netbeans/modules/php/editor/parser/astnodes/PHPVarComment.java (+6 lines)
Lines 46-51 Link Here
46
 * Represents a single line comment, where user is able to assigna a type to variable
46
 * Represents a single line comment, where user is able to assigna a type to variable
47
 * <pre> @var $variable type </pre> . It has to be single line comment. Also it can
47
 * <pre> @var $variable type </pre> . It has to be single line comment. Also it can
48
 * contains mixed type. e.g. <pre> @var $variable type1|type2 </pre>
48
 * contains mixed type. e.g. <pre> @var $variable type1|type2 </pre>
49
 *
50
 * <b>NOTE:</b> There is an order difference.
51
 * <pre>
52
 * &#47;*  @var $variableName TypeName *&#47;
53
 * &#47;** @var TypeName $variableName Description *&#47;
54
 * </pre>
49
 * @author Petr Pisl
55
 * @author Petr Pisl
50
 */
56
 */
51
public class PHPVarComment extends Comment {
57
public class PHPVarComment extends Comment {
(-)a/php.editor/src/org/netbeans/modules/php/editor/resources/code-templates.xml (-1 / +6 lines)
Lines 321-327 Link Here
321
<![CDATA[throw new ${Exception};]]>
321
<![CDATA[throw new ${Exception};]]>
322
        </code>
322
        </code>
323
    </codetemplate>
323
    </codetemplate>
324
<codetemplate uuid="org.netbeans.modules.php.editor.codetemplate.vdoc" abbreviation="vdoc" contexts="php-code">
324
    <codetemplate uuid="org.netbeans.modules.php.editor.codetemplate.vdoc" abbreviation="vdoc" contexts="php-code">
325
        <code>
326
<![CDATA[/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */]]>
327
        </code>
328
    </codetemplate>
329
    <codetemplate uuid="org.netbeans.modules.php.editor.codetemplate.vdocl" abbreviation="vdocl" contexts="php-code">
325
        <code>
330
        <code>
326
<![CDATA[/* @var $$${VARIABLE variableFromNextAssignmentName default="variable"} ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} */]]>
331
<![CDATA[/* @var $$${VARIABLE variableFromNextAssignmentName default="variable"} ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} */]]>
327
        </code>
332
        </code>
(-)a/php.editor/src/org/netbeans/modules/php/editor/verification/VarDocSuggestion.java (-2 / +2 lines)
Lines 91-97 Link Here
91
    }
91
    }
92
92
93
    @Override
93
    @Override
94
    @Messages("VarDocHintDispName=Generate Type Comment For Variable /* @var $myvariable MyClass */")
94
    @Messages("VarDocHintDispName=Generate Type Comment For Variable /** @var MyClass $myvariable */")
95
    public String getDisplayName() {
95
    public String getDisplayName() {
96
        return Bundle.VarDocHintDispName();
96
        return Bundle.VarDocHintDispName();
97
    }
97
    }
Lines 196-202 Link Here
196
        }
196
        }
197
197
198
        private String getCommentText() {
198
        private String getCommentText() {
199
            return String.format("%n/* @var %s %s */", vName.getName(), getTypeTemplate()); //NOI18N
199
            return String.format("%n/** @var %s %s */", getTypeTemplate(), vName.getName()); //NOI18N
200
        }
200
        }
201
201
202
        private String getTypeTemplate() {
202
        private String getTypeTemplate() {
(-)a/php.editor/test/unit/data/testfiles/completion/lib/vardoc/vardoc.php (+20 lines)
Line 0 Link Here
1
<?php
2
3
class VarType
4
{
5
    const CONSTANT = "CONSTANT";
6
    public $publicField = "publicField";
7
8
    public function test()
9
    {
10
    }
11
}
12
13
/** @var VarType $varType */
14
$varType = getVarType();
15
$varType->test(); // CC
16
17
/** @var VarType $value */
18
foreach ($array as $value) {
19
    $value->test(); // CC
20
}
(-)a/php.editor/test/unit/data/testfiles/completion/lib/vardoc/vardoc.php.testVarTagType_01.completion (+24 lines)
Line 0 Link Here
1
Code completion result for source line:
2
/** @var |VarType $varType */
3
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
4
CLASS      VarType                         [PUBLIC]   vardoc.php
5
------------------------------------
6
KEYWORD    array                                      null
7
KEYWORD    bool                                       null
8
KEYWORD    boolean                                    null
9
KEYWORD    callable                                   null
10
KEYWORD    callback                                   null
11
KEYWORD    double                                     null
12
KEYWORD    false                                      null
13
KEYWORD    float                                      null
14
KEYWORD    int                                        null
15
KEYWORD    integer                                    null
16
KEYWORD    iterable                                   null
17
KEYWORD    mixed                                      null
18
KEYWORD    null                                       null
19
KEYWORD    object                                     null
20
KEYWORD    resource                                   null
21
KEYWORD    self                                       null
22
KEYWORD    string                                     null
23
KEYWORD    true                                       null
24
KEYWORD    void                                       null
(-)a/php.editor/test/unit/data/testfiles/completion/lib/vardoc/vardoc.php.testVariable_01.completion (+5 lines)
Line 0 Link Here
1
Code completion result for source line:
2
$varType->|test(); // CC
3
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
4
METHOD     test()                          [PUBLIC]   VarType
5
VARIABLE   ? publicField                   [PUBLIC]   VarType
(-)a/php.editor/test/unit/data/testfiles/completion/lib/vardoc/vardoc.php.testVariable_02.completion (+5 lines)
Line 0 Link Here
1
Code completion result for source line:
2
$value->|test(); // CC
3
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
4
METHOD     test()                          [PUBLIC]   VarType
5
VARIABLE   ? publicField                   [PUBLIC]   VarType
(-)a/php.editor/test/unit/data/testfiles/gotodeclaration/testVardoc/testVardoc.php (+24 lines)
Line 0 Link Here
1
<?php
2
3
class VarType
4
{
5
    const CONSTANT = "CONSTANT";
6
    public $publicField = "publicField";
7
8
    public function test()
9
    {
10
    }
11
}
12
13
/** @var VarType $varType */
14
$varType = getVarType();
15
$varType->test();
16
17
/* @var  $varType2   VarType  */
18
$varType2 = getVarType();
19
$varType2->test();
20
21
/** @var    VarType    $value */
22
foreach ($array as $value) {
23
    $value->test();
24
}
(-)a/php.editor/test/unit/data/testfiles/markoccurences/testVardoc/testVardoc.php (+24 lines)
Line 0 Link Here
1
<?php
2
3
class VarType
4
{
5
    const CONSTANT = "CONSTANT";
6
    public $publicField = "publicField";
7
8
    public function test()
9
    {
10
    }
11
}
12
13
/** @var VarType $varType */
14
$varType = getVarType();
15
$varType->test();
16
17
/* @var  $varType2   VarType  */
18
$varType2 = getVarType();
19
$varType2->test();
20
21
/** @var    VarType    $value */
22
foreach ($array as $value) {
23
    $value->test();
24
}
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_01.occurrences (+4 lines)
Line 0 Link Here
1
class |>MARK_OCCURRENCES:V^arType<|
2
/** @var |>MARK_OCCURRENCES:VarType<| $varType */
3
/* @var  $varType2   |>MARK_OCCURRENCES:VarType<|  */
4
/** @var    |>MARK_OCCURRENCES:VarType<|    $value */
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_02.occurrences (+4 lines)
Line 0 Link Here
1
class |>MARK_OCCURRENCES:VarType<|
2
/** @var |>MARK_OCCURRENCES:VarT^ype<| $varType */
3
/* @var  $varType2   |>MARK_OCCURRENCES:VarType<|  */
4
/** @var    |>MARK_OCCURRENCES:VarType<|    $value */
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_03.occurrences (+4 lines)
Line 0 Link Here
1
class |>MARK_OCCURRENCES:VarType<|
2
/** @var |>MARK_OCCURRENCES:VarType<| $varType */
3
/* @var  $varType2   |>MARK_OCCURRENCES:VarType<|  */
4
/** @var    |>MARK_OCCURRENCES:Var^Type<|    $value */
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_04.occurrences (+4 lines)
Line 0 Link Here
1
class |>MARK_OCCURRENCES:VarType<|
2
/** @var |>MARK_OCCURRENCES:VarType<| $varType */
3
/* @var  $varType2   |>MARK_OCCURRENCES:VarT^ype<|  */
4
/** @var    |>MARK_OCCURRENCES:VarType<|    $value */
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_05.occurrences (+4 lines)
Line 0 Link Here
1
    public function |>MARK_OCCURRENCES:tes^t<|()
2
$varType->|>MARK_OCCURRENCES:test<|();
3
$varType2->|>MARK_OCCURRENCES:test<|();
4
    $value->|>MARK_OCCURRENCES:test<|();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_06.occurrences (+4 lines)
Line 0 Link Here
1
    public function |>MARK_OCCURRENCES:test<|()
2
$varType->|>MARK_OCCURRENCES:tes^t<|();
3
$varType2->|>MARK_OCCURRENCES:test<|();
4
    $value->|>MARK_OCCURRENCES:test<|();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_07.occurrences (+4 lines)
Line 0 Link Here
1
    public function |>MARK_OCCURRENCES:test<|()
2
$varType->|>MARK_OCCURRENCES:test<|();
3
$varType2->|>MARK_OCCURRENCES:te^st<|();
4
    $value->|>MARK_OCCURRENCES:test<|();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_08.occurrences (+4 lines)
Line 0 Link Here
1
    public function |>MARK_OCCURRENCES:test<|()
2
$varType->|>MARK_OCCURRENCES:test<|();
3
$varType2->|>MARK_OCCURRENCES:test<|();
4
    $value->^|>MARK_OCCURRENCES:test<|();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_09.occurrences (+3 lines)
Line 0 Link Here
1
/** @var VarType $|>MARK_OCCURRENCES:va^rType<| */
2
$|>MARK_OCCURRENCES:varType<| = getVarType();
3
$|>MARK_OCCURRENCES:varType<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_10.occurrences (+3 lines)
Line 0 Link Here
1
/** @var VarType $|>MARK_OCCURRENCES:varType<| */
2
$^|>MARK_OCCURRENCES:varType<| = getVarType();
3
$|>MARK_OCCURRENCES:varType<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_11.occurrences (+3 lines)
Line 0 Link Here
1
/** @var VarType $|>MARK_OCCURRENCES:varType<| */
2
$|>MARK_OCCURRENCES:varType<| = getVarType();
3
$|>MARK_OCCURRENCES:varT^ype<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_12.occurrences (+3 lines)
Line 0 Link Here
1
/** @var    VarType    $|>MARK_OCCURRENCES:val^ue<| */
2
foreach ($array as $|>MARK_OCCURRENCES:value<|) {
3
    $|>MARK_OCCURRENCES:value<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_13.occurrences (+3 lines)
Line 0 Link Here
1
/** @var    VarType    $|>MARK_OCCURRENCES:value<| */
2
foreach ($array as $^|>MARK_OCCURRENCES:value<|) {
3
    $|>MARK_OCCURRENCES:value<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_14.occurrences (+3 lines)
Line 0 Link Here
1
/** @var    VarType    $|>MARK_OCCURRENCES:value<| */
2
foreach ($array as $|>MARK_OCCURRENCES:value<|) {
3
    $|>MARK_OCCURRENCES:val^ue<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_15.occurrences (+3 lines)
Line 0 Link Here
1
/* @var  $|>MARK_OCCURRENCES:var^Type2<|   VarType  */
2
$|>MARK_OCCURRENCES:varType2<| = getVarType();
3
$|>MARK_OCCURRENCES:varType2<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_16.occurrences (+3 lines)
Line 0 Link Here
1
/* @var  $|>MARK_OCCURRENCES:varType2<|   VarType  */
2
$|>MARK_OCCURRENCES:varT^ype2<| = getVarType();
3
$|>MARK_OCCURRENCES:varType2<|->test();
(-)a/php.editor/test/unit/data/testfiles/testVardoc.php.testVardoc_17.occurrences (+3 lines)
Line 0 Link Here
1
/* @var  $|>MARK_OCCURRENCES:varType2<|   VarType  */
2
$|>MARK_OCCURRENCES:varType2<| = getVarType();
3
$|>MARK_OCCURRENCES:varTyp^e2<|->test();
(-)a/php.editor/test/unit/data/testfiles/verification/testVarDocSuggestion.php.testVarDocSuggestion.hints (-1 / +1 lines)
Lines 1-4 Link Here
1
$foo^Bar;
1
$foo^Bar;
2
-------
2
-------
3
HINT:Generate Type Comment For Variable /* @var $myvariable MyClass */
3
HINT:Generate Type Comment For Variable /** @var MyClass $myvariable */
4
FIX:Generate Type Comment For Variable
4
FIX:Generate Type Comment For Variable
(-)a/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletionVardocTest.java (+80 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 */
40
package org.netbeans.modules.php.editor.completion;
41
42
import java.io.File;
43
import java.util.Collections;
44
import java.util.Map;
45
import org.netbeans.api.java.classpath.ClassPath;
46
import org.netbeans.modules.php.project.api.PhpSourcePath;
47
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
48
import org.openide.filesystems.FileObject;
49
import org.openide.filesystems.FileUtil;
50
51
52
public class PHPCodeCompletionVardocTest extends PHPCodeCompletionTestBase {
53
54
    public PHPCodeCompletionVardocTest(String testName) {
55
        super(testName);
56
    }
57
58
    @Override
59
    protected Map<String, ClassPath> createClassPathsForTest() {
60
        return Collections.singletonMap(
61
            PhpSourcePath.SOURCE_CP,
62
            ClassPathSupport.createClassPath(new FileObject[]{
63
                FileUtil.toFileObject(new File(getDataDir(), "/testfiles/completion/lib/vardoc/"))
64
            })
65
        );
66
    }
67
68
    public void testVariable_01() throws Exception {
69
        checkCompletion("testfiles/completion/lib/vardoc/vardoc.php", "$varType->^test(); // CC", false);
70
    }
71
72
    public void testVariable_02() throws Exception {
73
        checkCompletion("testfiles/completion/lib/vardoc/vardoc.php", "    $value->^test(); // CC", false);
74
    }
75
76
    public void testVarTagType_01() throws Exception {
77
        checkCompletion("testfiles/completion/lib/vardoc/vardoc.php", "/** @var ^VarType $varType */", false);
78
    }
79
80
}
(-)a/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/GotoDeclarationVardocTest.java (+96 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 */
40
package org.netbeans.modules.php.editor.csl;
41
42
public class GotoDeclarationVardocTest extends GotoDeclarationTestBase {
43
44
    public GotoDeclarationVardocTest(String testName) {
45
        super(testName);
46
    }
47
48
    public void testVardoc_01() throws Exception {
49
        checkDeclaration(getTestPath(), "/** @var ^VarType $varType */", "class ^VarType");
50
    }
51
52
    public void testVardoc_02() throws Exception {
53
        checkDeclaration(getTestPath(), "/* @var  $varType2   VarT^ype  */", "class ^VarType");
54
    }
55
56
    public void testVardoc_03() throws Exception {
57
        checkDeclaration(getTestPath(), "/** @var    VarTy^pe    $value */", "class ^VarType");
58
    }
59
60
    public void testVardoc_04() throws Exception {
61
        checkDeclaration(getTestPath(), "$varType->tes^t();", "    public function ^test()");
62
    }
63
64
    public void testVardoc_05() throws Exception {
65
        checkDeclaration(getTestPath(), "$varType2->^test();", "    public function ^test()");
66
    }
67
68
    public void testVardoc_06() throws Exception {
69
        checkDeclaration(getTestPath(), "    $value->te^st();", "    public function ^test()");
70
    }
71
72
    public void testVardoc_07() throws Exception {
73
        checkDeclaration(getTestPath(), "/** @var VarType $var^Type */", "$^varType = getVarType();");
74
    }
75
76
    public void testVardoc_08() throws Exception {
77
        checkDeclaration(getTestPath(), "$var^Type->test();", "$^varType = getVarType();");
78
    }
79
80
    public void testVardoc_09() throws Exception {
81
        checkDeclaration(getTestPath(), "/* @var  $varT^ype2   VarType  */", "$^varType2 = getVarType();");
82
    }
83
84
    public void testVardoc_10() throws Exception {
85
        checkDeclaration(getTestPath(), "$varT^ype2->test();", "$^varType2 = getVarType();");
86
    }
87
88
    public void testVardoc_11() throws Exception {
89
        checkDeclaration(getTestPath(), "/** @var    VarType    $va^lue */", "foreach ($array as $^value) {");
90
    }
91
92
    public void testVardoc_12() throws Exception {
93
        checkDeclaration(getTestPath(), "    $va^lue->test();", "foreach ($array as $^value) {");
94
    }
95
96
}
(-)a/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/OccurrencesFinderImplVardocTest.java (+117 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 */
40
package org.netbeans.modules.php.editor.csl;
41
42
43
public class OccurrencesFinderImplVardocTest extends OccurrencesFinderImplTestBase {
44
45
    public OccurrencesFinderImplVardocTest(String testName) {
46
        super(testName);
47
    }
48
49
    public void testVardoc_01() throws Exception {
50
        checkOccurrences(getTestPath(), "class V^arType", true);
51
    }
52
53
    public void testVardoc_02() throws Exception {
54
        checkOccurrences(getTestPath(), "/** @var VarT^ype $varType */", true);
55
    }
56
57
    public void testVardoc_03() throws Exception {
58
        checkOccurrences(getTestPath(), "/** @var    Var^Type    $value */", true);
59
    }
60
61
    public void testVardoc_04() throws Exception {
62
        checkOccurrences(getTestPath(), "/* @var  $varType2   VarT^ype  */", true);
63
    }
64
65
    public void testVardoc_05() throws Exception {
66
        checkOccurrences(getTestPath(), "    public function tes^t()", true);
67
    }
68
69
    public void testVardoc_06() throws Exception {
70
        checkOccurrences(getTestPath(), "$varType->tes^t();", true);
71
    }
72
73
    public void testVardoc_07() throws Exception {
74
        checkOccurrences(getTestPath(), "$varType2->te^st();", true);
75
    }
76
77
    public void testVardoc_08() throws Exception {
78
        checkOccurrences(getTestPath(), "    $value->^test();", true);
79
    }
80
81
    public void testVardoc_09() throws Exception {
82
        checkOccurrences(getTestPath(), "/** @var VarType $va^rType */", true);
83
    }
84
85
    public void testVardoc_10() throws Exception {
86
        checkOccurrences(getTestPath(), "$^varType = getVarType();", true);
87
    }
88
89
    public void testVardoc_11() throws Exception {
90
        checkOccurrences(getTestPath(), "$varT^ype->test();", true);
91
    }
92
93
    public void testVardoc_12() throws Exception {
94
        checkOccurrences(getTestPath(), "/** @var    VarType    $val^ue */", true);
95
    }
96
97
    public void testVardoc_13() throws Exception {
98
        checkOccurrences(getTestPath(), "foreach ($array as $^value) {", true);
99
    }
100
101
    public void testVardoc_14() throws Exception {
102
        checkOccurrences(getTestPath(), "    $val^ue->test();", true);
103
    }
104
105
    public void testVardoc_15() throws Exception {
106
        checkOccurrences(getTestPath(), "/* @var  $var^Type2   VarType  */", true);
107
    }
108
109
    public void testVardoc_16() throws Exception {
110
        checkOccurrences(getTestPath(), "$varT^ype2 = getVarType();", true);
111
    }
112
113
    public void testVardoc_17() throws Exception {
114
        checkOccurrences(getTestPath(), "$varTyp^e2->test();", true);
115
    }
116
117
}
(-)a/php.editor/test/unit/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParserTest.java (+54 lines)
Lines 91-94 Link Here
91
        assertEquals(1, varComment.getVariable().getTypes().size());
91
        assertEquals(1, varComment.getVariable().getTypes().size());
92
    }
92
    }
93
93
94
    public void testArrayForPHPDocPattern_01() throws Exception {
95
        String comment = "/** @var TestClass $b['y'] */";
96
        PHPVarCommentParser parser = new PHPVarCommentParser();
97
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
98
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
99
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
100
        assertEquals(1, varComment.getVariable().getTypes().size());
101
    }
102
103
    public void testArrayForPHPDocPattern_02() throws Exception {
104
        String comment = "/** @var TestClass $b[\"y\"] */";
105
        PHPVarCommentParser parser = new PHPVarCommentParser();
106
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
107
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
108
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
109
        assertEquals(1, varComment.getVariable().getTypes().size());
110
    }
111
112
    public void testPHPDocPattern_01() throws Exception {
113
        String comment = "/** @var Type	$b */"; // TAB
114
        PHPVarCommentParser parser = new PHPVarCommentParser();
115
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
116
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
117
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
118
        assertEquals(1, varComment.getVariable().getTypes().size());
119
    }
120
121
    public void testForPHPDocPattern_02() throws Exception {
122
        String comment = "/** @var 	Type	  $b */"; // TAB + space
123
        PHPVarCommentParser parser = new PHPVarCommentParser();
124
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
125
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
126
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
127
        assertEquals(1, varComment.getVariable().getTypes().size());
128
    }
129
130
    public void testForPHPDocPattern_03() throws Exception {
131
        String comment = "/** @var Type $b Description */";
132
        PHPVarCommentParser parser = new PHPVarCommentParser();
133
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
134
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
135
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
136
        assertEquals(1, varComment.getVariable().getTypes().size());
137
    }
138
139
    public void testForPHPDocPattern_04() throws Exception {
140
        String comment = "/** @var Type $b Long Description Something.*/";
141
        PHPVarCommentParser parser = new PHPVarCommentParser();
142
        PHPVarComment varComment = parser.parse(0, comment.length(), comment);
143
        assertEquals(Comment.Type.TYPE_VARTYPE, varComment.getCommentType());
144
        assertEquals("$b", varComment.getVariable().getVariable().getValue());
145
        assertEquals(1, varComment.getVariable().getTypes().size());
146
    }
147
94
}
148
}
(-)a/php.editor/tools/ASTPHP5Scanner.flex (+5 lines)
Lines 1046-1051 Link Here
1046
    //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT);
1046
    //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT);
1047
}
1047
}
1048
1048
1049
<ST_IN_SCRIPTING>"/**"{WHITESPACE}*"@var"{WHITESPACE}{QUALIFIED_LABEL}("[""]")*([|]{QUALIFIED_LABEL}("[""]")*)*{WHITESPACE}("$"){LABEL}("["({LABEL} | "\"" | "'")*"]")*{WHITESPACE}?[^\n\r]*"*/" {
1050
    comment = yytext();
1051
    handleVarComment();
1052
}
1053
1049
<ST_IN_SCRIPTING>"/**" {
1054
<ST_IN_SCRIPTING>"/**" {
1050
if (!parsePHPDoc()) {
1055
if (!parsePHPDoc()) {
1051
handleCommentStart();
1056
handleCommentStart();

Return to bug 267470