diff --git a/src/test/java/com/falsepattern/zigbrains/LICENSE b/src/test/java/com/falsepattern/zigbrains/LICENSE
new file mode 100644
index 000000000..4cb800976
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/LICENSE
@@ -0,0 +1,32 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+Zigbrains is Copyright (C) 2023-2025 FalsePattern, All Rights Reserved
+ZigBrains is licensed under the LGPLv3 license.
+
+The generated zig parser, lexer, and the following classes:
+com.falsepattern.zigbrains.zig.ZigFileType
+com.falsepattern.zigbrains.zig.ZigLanguage
+com.falsepattern.zigbrains.zig.psi.ZigFile
+com.falsepattern.zigbrains.zig.parser.ZigElementType
+com.falsepattern.zigbrains.zig.parser.ZigParserDefinition
+com.falsepattern.zigbrains.zig.parser.ZigTokenSets
+com.falsepattern.zigbrains.zig.parser.ZigTokenType
+com.falsepattern.zigbrains.zig.lexer.ZigLexerAdapter
+
+have been dual-licensed under the EPL2.0 license for use in testing
+of the LSP4IJ plugin.
+This message, along with the attached signature, signed by
+FalsePattern's PGP key, shall serve as proof of this.
+
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAEBCgAdFiEE4S1HwWvKg24eRaEg6TDN7FDFDiMFAmerq5QACgkQ6TDN7FDF
+DiN7WAgAvWjmAwupQUup/B9m2vkGBdGXpu600XnWm3vGc8krwhcZXvTY33M9nNis
+t2sNbrugBiCqQtkvM3cPXcRaf765ahSBuzmVUfshyDC5HTpaAKSYavq2iT4CE4Xb
+4hPGJ6GT25n+BkTGwYr73leYEQYsWfL9uEGZL+bf1sMNRQAGUROmBCYCXYRvwQye
+/vSrvGymhHkDvwZMs+p5hzID1Z6Sc9LLQJyyViJf3lZresS1KbxPHz63ACjJaNu/
++SNNXS+zI05HrJoR01q9ma7BQPMn/elqPinapC3nHAbqYYBjqv8N+9oDQk+RjNdC
+PQAkfdgRJkfrGlTHX047mOSoC15VXw==
+=S7Yw
+-----END PGP SIGNATURE-----
\ No newline at end of file
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/lexer/ZigFlexLexer.java b/src/test/java/com/falsepattern/zigbrains/zig/lexer/ZigFlexLexer.java
new file mode 100644
index 000000000..120761da0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/lexer/ZigFlexLexer.java
@@ -0,0 +1,1615 @@
+// Generated by JFlex 1.9.2 http://jflex.de/ (tweaked for IntelliJ platform)
+// source: src/main/grammar/Zig.flex
+
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+package com.falsepattern.zigbrains.zig.lexer;
+
+import com.intellij.lexer.FlexLexer;
+import com.intellij.psi.tree.IElementType;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+import static com.intellij.psi.TokenType.BAD_CHARACTER;
+import static com.intellij.psi.TokenType.WHITE_SPACE;
+
+
+class ZigFlexLexer implements FlexLexer {
+
+ /** This character denotes the end of file */
+ public static final int YYEOF = -1;
+
+ /** initial size of the lookahead buffer */
+ private static final int ZZ_BUFFERSIZE = 16384;
+
+ /** lexical states */
+ public static final int YYINITIAL = 0;
+ public static final int STR_LIT = 2;
+ public static final int STR_MULT_LINE = 4;
+ public static final int CHAR_LIT = 6;
+ public static final int ID_QUOT = 8;
+ public static final int UNT_SQUOT = 10;
+ public static final int UNT_DQUOT = 12;
+ public static final int CDOC_CMT = 14;
+ public static final int DOC_CMT = 16;
+ public static final int LINE_CMT = 18;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static final int ZZ_LEXSTATE[] = {
+ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
+ 8, 8, 9, 9
+ };
+
+ /**
+ * Top-level table for translating characters to character classes
+ */
+ private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();
+
+ private static final String ZZ_CMAP_TOP_PACKED_0 =
+ "\1\0\25\u0100\1\u0200\11\u0100\1\u0300\17\u0100\1\u0400\247\u0100"+
+ "\10\u0500\u1020\u0100";
+
+ private static int [] zzUnpackcmap_top() {
+ int [] result = new int[4352];
+ int offset = 0;
+ offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Second-level tables for translating characters to character classes
+ */
+ private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();
+
+ private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
+ "\11\0\1\1\1\2\2\3\1\4\22\0\1\5\1\6"+
+ "\1\7\2\0\1\10\1\11\1\12\1\13\1\14\1\15"+
+ "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\6\25"+
+ "\2\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35"+
+ "\4\36\1\37\1\36\11\40\1\41\12\40\1\42\1\43"+
+ "\1\44\1\45\1\46\1\0\1\47\1\50\1\51\1\52"+
+ "\1\53\1\54\1\55\1\56\1\57\1\40\1\60\1\61"+
+ "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\1\71"+
+ "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+
+ "\1\102\1\103\6\0\1\3\32\0\1\1\u01df\0\1\1"+
+ "\177\0\13\1\35\0\2\3\5\0\1\1\57\0\1\1"+
+ "\240\0\1\1\u01ff\0";
+
+ private static int [] zzUnpackcmap_blocks() {
+ int [] result = new int[1536];
+ int offset = 0;
+ offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int [] ZZ_ACTION = zzUnpackAction();
+
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\12\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+
+ "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+
+ "\2\20\1\21\1\22\1\23\1\24\1\25\1\26\1\1"+
+ "\1\27\1\30\1\1\1\31\1\32\21\27\1\33\1\34"+
+ "\1\35\1\36\2\37\1\40\1\37\1\41\1\42\2\43"+
+ "\1\44\1\43\1\37\1\45\1\37\1\41\3\46\3\47"+
+ "\1\41\1\50\1\41\1\51\1\41\1\52\1\53\1\54"+
+ "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+
+ "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+
+ "\1\75\1\76\6\0\1\77\1\100\1\101\1\102\1\103"+
+ "\1\104\1\105\1\106\1\107\1\110\15\27\1\111\1\27"+
+ "\1\112\4\27\1\113\16\27\1\114\1\115\2\0\1\40"+
+ "\4\0\1\44\2\0\1\45\6\0\1\116\1\117\1\120"+
+ "\1\121\1\122\1\123\1\124\1\125\1\126\1\127\1\0"+
+ "\1\127\3\20\1\130\1\131\1\132\3\27\1\133\1\27"+
+ "\1\134\15\27\1\135\10\27\1\136\7\27\1\137\3\27"+
+ "\1\140\2\27\1\41\2\0\1\141\16\27\1\142\1\143"+
+ "\21\27\1\144\6\27\1\127\1\27\1\145\3\27\1\146"+
+ "\1\147\1\150\1\27\1\151\1\27\1\152\1\27\1\153"+
+ "\1\27\1\154\20\27\1\155\3\27\1\156\10\27\1\157"+
+ "\1\160\1\161\4\27\1\162\1\163\1\164\1\165\1\166"+
+ "\1\167\1\27\1\170\7\27\1\171\5\27\1\172\2\27"+
+ "\1\173\6\27\1\174\1\175\1\176\1\177\1\200\1\27"+
+ "\1\201\4\27\1\202\1\203\1\204\1\27\1\205\7\27"+
+ "\1\206\1\207\1\210\3\27\1\211";
+
+ private static int [] zzUnpackAction() {
+ int [] result = new int[395];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private static final String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\104\0\210\0\314\0\u0110\0\u0154\0\u0198\0\u01dc"+
+ "\0\u0220\0\u0264\0\u02a8\0\u02ec\0\u0330\0\u02a8\0\u0374\0\u03b8"+
+ "\0\u02a8\0\u02a8\0\u02a8\0\u03fc\0\u0440\0\u02a8\0\u0484\0\u04c8"+
+ "\0\u050c\0\u0550\0\u0594\0\u02a8\0\u02a8\0\u05d8\0\u061c\0\u0660"+
+ "\0\u02a8\0\u06a4\0\u06e8\0\u02a8\0\u072c\0\u02a8\0\u0770\0\u07b4"+
+ "\0\u07f8\0\u083c\0\u0880\0\u08c4\0\u0908\0\u094c\0\u0990\0\u09d4"+
+ "\0\u0a18\0\u0a5c\0\u0aa0\0\u0ae4\0\u0b28\0\u0b6c\0\u0bb0\0\u0bf4"+
+ "\0\u02a8\0\u0c38\0\u02a8\0\u02a8\0\u0c7c\0\u02a8\0\u02a8\0\u0cc0"+
+ "\0\u0d04\0\u0d48\0\u0d8c\0\u02a8\0\u02a8\0\u0dd0\0\u0e14\0\u02a8"+
+ "\0\u0e58\0\u0e9c\0\u02a8\0\u0e9c\0\u0ee0\0\u02a8\0\u0e9c\0\u0f24"+
+ "\0\u0f68\0\u0fac\0\u0ff0\0\u1034\0\u1078\0\u10bc\0\u02a8\0\u02a8"+
+ "\0\u02a8\0\u1100\0\u02a8\0\u02a8\0\u1144\0\u1188\0\u02a8\0\u02a8"+
+ "\0\u11cc\0\u1210\0\u02a8\0\u02a8\0\u1254\0\u02a8\0\u1298\0\u02a8"+
+ "\0\u12dc\0\u02a8\0\u1320\0\u1364\0\u13a8\0\u13ec\0\u1430\0\u1474"+
+ "\0\u14b8\0\u02a8\0\u02a8\0\u02a8\0\u02a8\0\u14fc\0\u02a8\0\u1540"+
+ "\0\u02a8\0\u02a8\0\u1584\0\u15c8\0\u160c\0\u1650\0\u1694\0\u16d8"+
+ "\0\u171c\0\u1760\0\u17a4\0\u17e8\0\u182c\0\u1870\0\u18b4\0\u06e8"+
+ "\0\u18f8\0\u06e8\0\u193c\0\u1980\0\u19c4\0\u1a08\0\u1a4c\0\u1a90"+
+ "\0\u1ad4\0\u1b18\0\u1b5c\0\u1ba0\0\u1be4\0\u1c28\0\u1c6c\0\u1cb0"+
+ "\0\u1cf4\0\u1d38\0\u1d7c\0\u1dc0\0\u1e04\0\u02a8\0\u02a8\0\u0c7c"+
+ "\0\u0cc0\0\u0c7c\0\u0d48\0\u1e48\0\u0d8c\0\u0dd0\0\u0d8c\0\u0e14"+
+ "\0\u0e58\0\u0e14\0\u0fac\0\u1e8c\0\u1034\0\u1ed0\0\u10bc\0\u1f14"+
+ "\0\u02a8\0\u02a8\0\u02a8\0\u02a8\0\u02a8\0\u02a8\0\u02a8\0\u02a8"+
+ "\0\u02a8\0\u1f58\0\u1f9c\0\u1fe0\0\u2024\0\u2068\0\u20ac\0\u02a8"+
+ "\0\u20f0\0\u02a8\0\u2134\0\u2178\0\u21bc\0\u06e8\0\u2200\0\u06e8"+
+ "\0\u2244\0\u2288\0\u22cc\0\u2310\0\u2354\0\u2398\0\u23dc\0\u2420"+
+ "\0\u2464\0\u24a8\0\u24ec\0\u2530\0\u2574\0\u06e8\0\u25b8\0\u25fc"+
+ "\0\u2640\0\u2684\0\u26c8\0\u270c\0\u2750\0\u2794\0\u06e8\0\u27d8"+
+ "\0\u281c\0\u2860\0\u28a4\0\u28e8\0\u292c\0\u2970\0\u06e8\0\u29b4"+
+ "\0\u29f8\0\u2a3c\0\u06e8\0\u2a80\0\u2ac4\0\u02a8\0\u2b08\0\u2b4c"+
+ "\0\u02a8\0\u2b90\0\u2bd4\0\u2c18\0\u2c5c\0\u2ca0\0\u2ce4\0\u2d28"+
+ "\0\u2d6c\0\u2db0\0\u2df4\0\u2e38\0\u2e7c\0\u2ec0\0\u2f04\0\u06e8"+
+ "\0\u06e8\0\u2f48\0\u2f8c\0\u2fd0\0\u3014\0\u3058\0\u309c\0\u30e0"+
+ "\0\u3124\0\u3168\0\u31ac\0\u31f0\0\u3234\0\u3278\0\u32bc\0\u3300"+
+ "\0\u3344\0\u3388\0\u06e8\0\u33cc\0\u3410\0\u3454\0\u3498\0\u34dc"+
+ "\0\u3520\0\u3564\0\u35a8\0\u06e8\0\u35ec\0\u3630\0\u3674\0\u06e8"+
+ "\0\u06e8\0\u06e8\0\u36b8\0\u06e8\0\u36fc\0\u06e8\0\u3740\0\u06e8"+
+ "\0\u3784\0\u06e8\0\u37c8\0\u380c\0\u3850\0\u3894\0\u38d8\0\u391c"+
+ "\0\u3960\0\u39a4\0\u39e8\0\u3a2c\0\u3a70\0\u3ab4\0\u3af8\0\u3b3c"+
+ "\0\u3b80\0\u3bc4\0\u06e8\0\u3c08\0\u3c4c\0\u3c90\0\u06e8\0\u3cd4"+
+ "\0\u3d18\0\u3d5c\0\u3da0\0\u3de4\0\u3e28\0\u3e6c\0\u3eb0\0\u06e8"+
+ "\0\u06e8\0\u06e8\0\u3ef4\0\u3f38\0\u3f7c\0\u3fc0\0\u06e8\0\u06e8"+
+ "\0\u06e8\0\u06e8\0\u06e8\0\u06e8\0\u4004\0\u06e8\0\u4048\0\u408c"+
+ "\0\u40d0\0\u4114\0\u4158\0\u419c\0\u41e0\0\u06e8\0\u4224\0\u4268"+
+ "\0\u42ac\0\u42f0\0\u4334\0\u06e8\0\u4378\0\u43bc\0\u06e8\0\u4400"+
+ "\0\u4444\0\u4488\0\u44cc\0\u4510\0\u4554\0\u06e8\0\u06e8\0\u06e8"+
+ "\0\u06e8\0\u06e8\0\u4598\0\u06e8\0\u45dc\0\u4620\0\u4664\0\u46a8"+
+ "\0\u06e8\0\u06e8\0\u06e8\0\u46ec\0\u06e8\0\u4730\0\u4774\0\u47b8"+
+ "\0\u47fc\0\u4840\0\u4884\0\u48c8\0\u06e8\0\u06e8\0\u06e8\0\u490c"+
+ "\0\u4950\0\u4994\0\u06e8";
+
+ private static int [] zzUnpackRowMap() {
+ int [] result = new int[395];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length() - 1;
+ while (i < l) {
+ int high = packed.charAt(i++) << 16;
+ result[j++] = high | packed.charAt(i++);
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static final int [] ZZ_TRANS = zzUnpacktrans();
+
+ private static final String ZZ_TRANS_PACKED_0 =
+ "\1\13\5\14\1\15\1\16\1\17\1\20\1\21\1\22"+
+ "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+
+ "\3\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42"+
+ "\4\43\1\44\1\45\1\46\1\47\1\43\1\50\1\51"+
+ "\1\52\1\53\1\54\1\55\2\43\1\56\1\43\1\57"+
+ "\1\43\1\60\1\61\1\62\1\43\1\63\1\64\1\65"+
+ "\1\66\1\67\1\70\3\43\1\71\1\72\1\73\1\74"+
+ "\2\75\1\76\4\75\1\77\33\75\1\100\40\75\2\101"+
+ "\1\102\101\101\2\103\1\104\7\103\1\105\30\103\1\106"+
+ "\40\103\2\107\1\76\4\107\1\110\33\107\1\111\40\107"+
+ "\2\112\1\113\1\114\1\115\101\112\1\116\1\117\1\120"+
+ "\77\112\2\121\1\122\101\121\2\123\1\124\101\123\2\125"+
+ "\1\126\101\125\105\0\5\14\130\0\1\127\103\0\1\130"+
+ "\103\0\1\131\61\0\1\132\4\0\1\133\14\0\1\134"+
+ "\46\0\1\135\12\0\1\136\5\0\1\137\13\0\1\140"+
+ "\46\0\1\141\12\0\1\142\21\0\1\143\1\144\45\0"+
+ "\1\145\17\0\1\146\3\0\1\147\12\0\1\150\71\0"+
+ "\1\151\7\0\1\152\72\0\1\153\1\0\4\33\10\0"+
+ "\1\154\6\0\1\155\1\0\1\156\2\0\1\154\10\0"+
+ "\1\157\10\0\1\160\27\0\1\153\1\0\4\33\10\0"+
+ "\1\154\6\0\1\155\4\0\1\154\61\0\1\161\1\162"+
+ "\103\0\1\163\1\164\102\0\1\165\1\166\57\0\1\167"+
+ "\26\0\4\170\4\0\32\170\27\0\4\43\7\0\4\43"+
+ "\4\0\32\43\47\0\1\171\72\0\1\172\74\0\4\43"+
+ "\7\0\4\43\4\0\4\43\1\173\6\43\1\174\1\43"+
+ "\1\175\4\43\1\176\3\43\1\177\3\43\27\0\4\43"+
+ "\7\0\4\43\4\0\21\43\1\200\10\43\27\0\4\43"+
+ "\7\0\4\43\4\0\1\43\1\201\14\43\1\202\13\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\203\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\13\43\1\204\1\43"+
+ "\1\205\3\43\1\206\5\43\1\207\2\43\27\0\4\43"+
+ "\7\0\4\43\4\0\15\43\1\210\1\211\13\43\27\0"+
+ "\4\43\7\0\4\43\4\0\6\43\1\212\6\43\1\213"+
+ "\14\43\27\0\4\43\7\0\4\43\4\0\11\43\1\214"+
+ "\20\43\27\0\4\43\7\0\4\43\4\0\16\43\1\215"+
+ "\13\43\27\0\4\43\7\0\4\43\4\0\17\43\1\216"+
+ "\1\43\1\217\10\43\27\0\4\43\7\0\4\43\4\0"+
+ "\1\43\1\220\22\43\1\221\5\43\27\0\4\43\7\0"+
+ "\4\43\4\0\5\43\1\222\24\43\27\0\4\43\7\0"+
+ "\4\43\4\0\23\43\1\223\1\224\1\43\1\225\3\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\226\2\43"+
+ "\1\227\10\43\1\230\10\43\27\0\4\43\7\0\4\43"+
+ "\4\0\15\43\1\231\4\43\1\232\7\43\27\0\4\43"+
+ "\7\0\4\43\4\0\1\43\1\233\14\43\1\234\13\43"+
+ "\27\0\4\43\7\0\4\43\4\0\10\43\1\235\21\43"+
+ "\36\0\1\236\46\0\1\237\2\0\2\240\1\0\4\240"+
+ "\1\77\33\240\1\241\42\240\1\0\4\240\1\242\33\240"+
+ "\1\241\40\240\2\101\1\243\101\101\2\0\1\243\2\0"+
+ "\1\243\35\0\1\244\40\0\2\245\1\0\7\245\1\105"+
+ "\30\245\1\246\42\245\1\0\7\245\1\247\30\245\1\246"+
+ "\40\245\2\250\1\0\4\250\1\110\33\250\1\251\42\250"+
+ "\1\0\4\250\1\252\33\250\1\251\40\250\2\112\1\0"+
+ "\103\112\1\113\103\112\1\116\101\112\2\121\1\253\101\121"+
+ "\2\0\1\253\2\0\1\253\14\0\1\254\61\0\2\123"+
+ "\1\255\101\123\2\0\1\255\2\0\1\255\14\0\1\256"+
+ "\61\0\2\125\1\257\101\125\2\0\1\257\2\0\1\257"+
+ "\14\0\1\260\113\0\1\261\103\0\1\262\103\0\1\263"+
+ "\103\0\1\264\103\0\1\265\103\0\1\266\72\0\1\267"+
+ "\70\0\1\270\13\0\1\271\104\0\4\272\73\0\1\273"+
+ "\1\0\1\273\2\0\4\274\100\0\4\33\100\0\2\275"+
+ "\102\0\3\276\101\0\4\277\7\0\2\277\7\0\6\277"+
+ "\61\0\1\300\46\0\1\301\34\0\1\302\74\0\4\170"+
+ "\7\0\4\170\4\0\32\170\27\0\4\43\7\0\4\43"+
+ "\4\0\4\43\1\303\25\43\27\0\4\43\7\0\4\43"+
+ "\4\0\11\43\1\304\1\43\1\305\16\43\27\0\4\43"+
+ "\7\0\4\43\4\0\4\43\1\306\23\43\1\307\1\43"+
+ "\27\0\4\43\7\0\4\43\4\0\14\43\1\310\13\43"+
+ "\1\311\1\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\312\30\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\313\24\43\27\0\4\43\7\0\4\43\4\0\13\43"+
+ "\1\314\7\43\1\315\6\43\27\0\4\43\7\0\4\43"+
+ "\4\0\14\43\1\316\1\317\14\43\27\0\4\43\7\0"+
+ "\4\43\4\0\6\43\1\320\23\43\27\0\4\43\7\0"+
+ "\4\43\4\0\22\43\1\321\7\43\27\0\4\43\7\0"+
+ "\4\43\4\0\24\43\1\322\5\43\27\0\4\43\7\0"+
+ "\4\43\4\0\21\43\1\323\10\43\27\0\4\43\7\0"+
+ "\4\43\4\0\17\43\1\324\3\43\1\325\6\43\27\0"+
+ "\4\43\7\0\4\43\4\0\21\43\1\326\10\43\27\0"+
+ "\4\43\7\0\4\43\4\0\13\43\1\327\16\43\27\0"+
+ "\4\43\7\0\4\43\4\0\15\43\1\330\14\43\27\0"+
+ "\4\43\7\0\4\43\4\0\1\43\1\331\7\43\1\332"+
+ "\10\43\1\333\7\43\27\0\4\43\7\0\4\43\4\0"+
+ "\1\43\1\334\30\43\27\0\4\43\7\0\4\43\4\0"+
+ "\5\43\1\335\24\43\27\0\4\43\7\0\4\43\4\0"+
+ "\3\43\1\336\26\43\27\0\4\43\7\0\4\43\4\0"+
+ "\2\43\1\337\27\43\27\0\4\43\7\0\4\43\4\0"+
+ "\22\43\1\340\1\341\6\43\27\0\4\43\7\0\4\43"+
+ "\4\0\21\43\1\342\10\43\27\0\4\43\7\0\4\43"+
+ "\4\0\22\43\1\343\7\43\27\0\4\43\7\0\4\43"+
+ "\4\0\11\43\1\344\20\43\27\0\4\43\7\0\4\43"+
+ "\4\0\22\43\1\345\7\43\27\0\4\43\7\0\4\43"+
+ "\4\0\21\43\1\346\10\43\27\0\4\43\7\0\4\43"+
+ "\4\0\30\43\1\347\1\43\27\0\4\43\7\0\4\43"+
+ "\4\0\11\43\1\350\7\43\1\351\10\43\27\0\4\43"+
+ "\7\0\4\43\4\0\11\43\1\352\20\43\27\0\4\43"+
+ "\7\0\4\43\4\0\21\43\1\353\10\43\27\0\4\43"+
+ "\7\0\4\43\4\0\13\43\1\354\16\43\27\0\4\43"+
+ "\7\0\4\43\4\0\11\43\1\355\20\43\47\0\1\356"+
+ "\62\0\1\357\103\0\1\260\103\0\1\356\104\0\4\272"+
+ "\10\0\1\154\6\0\1\153\4\0\1\154\53\0\4\274"+
+ "\100\0\4\274\17\0\1\273\60\0\2\275\21\0\1\156"+
+ "\60\0\3\276\20\0\1\157\56\0\1\360\1\0\4\277"+
+ "\7\0\2\277\1\0\1\154\4\0\1\160\6\277\10\0"+
+ "\1\154\50\0\1\361\74\0\4\43\7\0\4\43\4\0"+
+ "\21\43\1\362\10\43\27\0\4\43\7\0\4\43\4\0"+
+ "\7\43\1\363\22\43\27\0\4\43\7\0\4\43\4\0"+
+ "\16\43\1\364\13\43\27\0\4\43\7\0\4\43\4\0"+
+ "\6\43\1\365\14\43\1\366\6\43\27\0\4\43\7\0"+
+ "\4\43\4\0\15\43\1\367\14\43\27\0\4\43\7\0"+
+ "\4\43\4\0\11\43\1\370\20\43\27\0\4\43\7\0"+
+ "\4\43\4\0\1\43\1\371\30\43\27\0\4\43\7\0"+
+ "\4\43\4\0\13\43\1\372\16\43\27\0\4\43\7\0"+
+ "\4\43\4\0\3\43\1\373\26\43\27\0\4\43\7\0"+
+ "\4\43\4\0\17\43\1\374\12\43\27\0\4\43\7\0"+
+ "\4\43\4\0\22\43\1\375\1\376\6\43\27\0\4\43"+
+ "\7\0\4\43\4\0\5\43\1\377\24\43\27\0\4\43"+
+ "\7\0\4\43\4\0\5\43\1\u0100\24\43\27\0\4\43"+
+ "\7\0\4\43\4\0\14\43\1\u0101\15\43\27\0\4\43"+
+ "\7\0\4\43\4\0\4\43\1\u0102\11\43\1\u0103\13\43"+
+ "\27\0\4\43\7\0\4\43\4\0\16\43\1\u0104\13\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0105\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\11\43\1\u0106\20\43"+
+ "\27\0\4\43\7\0\4\43\4\0\12\43\1\u0107\17\43"+
+ "\27\0\4\43\7\0\4\43\4\0\13\43\1\u0108\16\43"+
+ "\27\0\4\43\7\0\4\43\4\0\15\43\1\u0109\14\43"+
+ "\27\0\4\43\7\0\4\43\4\0\24\43\1\u010a\5\43"+
+ "\27\0\4\43\7\0\4\43\4\0\20\43\1\u010b\11\43"+
+ "\27\0\4\43\7\0\4\43\4\0\13\43\1\u010c\16\43"+
+ "\27\0\4\43\7\0\4\43\4\0\12\43\1\u010d\17\43"+
+ "\27\0\4\43\7\0\4\43\4\0\24\43\1\u010e\5\43"+
+ "\27\0\4\43\7\0\4\43\4\0\24\43\1\u010f\5\43"+
+ "\27\0\4\43\7\0\4\43\4\0\24\43\1\u0110\5\43"+
+ "\27\0\4\43\7\0\4\43\4\0\17\43\1\u0111\12\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u0112\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u0113\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0114\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\16\43\1\u0115\13\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0116\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\15\43\1\u0117\14\43"+
+ "\27\0\4\43\7\0\4\43\4\0\1\43\1\u0118\30\43"+
+ "\27\0\4\43\7\0\4\43\4\0\13\43\1\u0119\16\43"+
+ "\12\0\1\356\120\0\4\u011a\7\0\2\u011a\7\0\6\u011a"+
+ "\52\0\4\43\7\0\4\43\4\0\22\43\1\u011b\7\43"+
+ "\27\0\4\43\7\0\4\43\4\0\15\43\1\u011c\14\43"+
+ "\27\0\4\43\7\0\4\43\4\0\26\43\1\u011d\3\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u011e\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\30\43\1\u011f\1\43"+
+ "\27\0\4\43\7\0\4\43\4\0\3\43\1\u0120\26\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u0121\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\12\43\1\u0122\17\43"+
+ "\27\0\4\43\7\0\4\43\4\0\3\43\1\u0123\26\43"+
+ "\27\0\4\43\7\0\4\43\4\0\10\43\1\u0124\21\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u0125\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u0126\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\11\43\1\u0127\20\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u0128\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0129\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u012a\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u012b\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u012c\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\15\43\1\u012d\14\43"+
+ "\27\0\4\43\7\0\4\43\4\0\22\43\1\u012e\7\43"+
+ "\27\0\4\43\7\0\4\43\4\0\11\43\1\u012f\20\43"+
+ "\27\0\4\43\7\0\4\43\4\0\13\43\1\u0130\16\43"+
+ "\27\0\4\43\7\0\4\43\4\0\22\43\1\u0131\7\43"+
+ "\27\0\4\43\7\0\4\43\4\0\24\43\1\u0132\5\43"+
+ "\27\0\4\43\7\0\4\43\4\0\22\43\1\u0133\7\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0134\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\14\43\1\u0135\15\43"+
+ "\27\0\4\43\7\0\4\43\4\0\21\43\1\u0136\10\43"+
+ "\27\0\4\43\7\0\4\43\4\0\3\43\1\u0137\26\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u0138\24\43"+
+ "\27\0\4\43\7\0\4\43\4\0\3\43\1\u0139\26\43"+
+ "\27\0\4\43\7\0\4\43\4\0\1\43\1\u013a\30\43"+
+ "\27\0\4\43\7\0\4\43\4\0\15\43\1\u013b\14\43"+
+ "\27\0\4\43\7\0\4\43\4\0\1\43\1\u013c\30\43"+
+ "\27\0\4\43\7\0\4\43\4\0\7\43\1\u013d\22\43"+
+ "\27\0\4\43\7\0\4\43\4\0\23\43\1\u013e\6\43"+
+ "\27\0\4\43\7\0\4\43\4\0\5\43\1\u013f\24\43"+
+ "\27\0\4\u011a\7\0\2\u011a\1\0\1\154\4\0\1\360"+
+ "\6\u011a\10\0\1\154\41\0\4\43\7\0\4\43\4\0"+
+ "\17\43\1\u0140\12\43\27\0\4\43\7\0\4\43\4\0"+
+ "\31\43\1\u0141\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u0142\30\43\27\0\4\43\7\0\4\43\4\0\17\43"+
+ "\1\u0143\12\43\27\0\4\43\7\0\4\43\4\0\16\43"+
+ "\1\u0144\13\43\27\0\4\43\7\0\4\43\4\0\11\43"+
+ "\1\u0145\20\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0146\14\43\27\0\4\43\7\0\4\43\4\0\6\43"+
+ "\1\u0147\23\43\27\0\4\43\7\0\4\43\4\0\23\43"+
+ "\1\u0148\6\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0149\14\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u014a\24\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u014b\24\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u014c\30\43\27\0\4\43\7\0\4\43\4\0\11\43"+
+ "\1\u014d\20\43\27\0\4\43\7\0\4\43\4\0\17\43"+
+ "\1\u014e\12\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u014f\24\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0150\24\43\27\0\4\43\7\0\4\43\4\0\4\43"+
+ "\1\u0151\25\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0152\24\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0153\14\43\27\0\4\43\7\0\4\43\4\0\23\43"+
+ "\1\u0154\6\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0155\14\43\27\0\4\43\7\0\4\43\4\0\10\43"+
+ "\1\u0156\21\43\27\0\4\43\7\0\4\43\4\0\4\43"+
+ "\1\u0157\25\43\27\0\4\43\7\0\4\43\4\0\3\43"+
+ "\1\u0158\26\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0159\14\43\27\0\4\43\7\0\4\43\4\0\11\43"+
+ "\1\u015a\20\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u015b\30\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u015c\24\43\27\0\4\43\7\0\4\43\4\0\14\43"+
+ "\1\u015d\15\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u015e\24\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u015f\14\43\27\0\4\43\7\0\4\43\4\0\14\43"+
+ "\1\u0160\15\43\27\0\4\43\7\0\4\43\4\0\24\43"+
+ "\1\u0161\5\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0162\24\43\27\0\4\43\7\0\4\43\4\0\3\43"+
+ "\1\u0163\26\43\27\0\4\43\7\0\4\43\4\0\22\43"+
+ "\1\u0164\7\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0165\14\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0166\24\43\27\0\4\43\7\0\4\43\4\0\4\43"+
+ "\1\u0167\25\43\27\0\4\43\7\0\4\43\4\0\13\43"+
+ "\1\u0168\16\43\27\0\4\43\7\0\4\43\4\0\10\43"+
+ "\1\u0169\21\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u016a\30\43\27\0\4\43\7\0\4\43\4\0\13\43"+
+ "\1\u016b\16\43\27\0\4\43\7\0\4\43\4\0\3\43"+
+ "\1\u016c\26\43\27\0\4\43\7\0\4\43\4\0\21\43"+
+ "\1\u016d\10\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u016e\24\43\27\0\4\43\7\0\4\43\4\0\25\43"+
+ "\1\u016f\4\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0170\24\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0171\24\43\27\0\4\43\7\0\4\43\4\0\21\43"+
+ "\1\u0172\10\43\27\0\4\43\7\0\4\43\4\0\23\43"+
+ "\1\u0173\6\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0174\24\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0175\14\43\27\0\4\43\7\0\4\43\4\0\16\43"+
+ "\1\u0176\13\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u0177\30\43\27\0\4\43\7\0\4\43\4\0\14\43"+
+ "\1\u0178\15\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0179\24\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u017a\24\43\27\0\4\43\7\0\4\43\4\0\16\43"+
+ "\1\u017b\13\43\27\0\4\43\7\0\4\43\4\0\11\43"+
+ "\1\u017c\20\43\27\0\4\43\7\0\4\43\4\0\4\43"+
+ "\1\u017d\25\43\27\0\4\43\7\0\4\43\4\0\3\43"+
+ "\1\u017e\26\43\27\0\4\43\7\0\4\43\4\0\2\43"+
+ "\1\u017f\27\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0180\24\43\27\0\4\43\7\0\4\43\4\0\16\43"+
+ "\1\u0181\13\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u0182\30\43\27\0\4\43\7\0\4\43\4\0\13\43"+
+ "\1\u0183\16\43\27\0\4\43\7\0\4\43\4\0\22\43"+
+ "\1\u0184\7\43\27\0\4\43\7\0\4\43\4\0\15\43"+
+ "\1\u0185\14\43\27\0\4\43\7\0\4\43\4\0\13\43"+
+ "\1\u0186\16\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u0187\24\43\27\0\4\43\7\0\4\43\4\0\17\43"+
+ "\1\u0188\12\43\27\0\4\43\7\0\4\43\4\0\1\43"+
+ "\1\u0189\30\43\27\0\4\43\7\0\4\43\4\0\3\43"+
+ "\1\u018a\26\43\27\0\4\43\7\0\4\43\4\0\5\43"+
+ "\1\u018b\24\43\4\0";
+
+ private static int [] zzUnpacktrans() {
+ int [] result = new int[18904];
+ int offset = 0;
+ offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpacktrans(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ private static final int ZZ_NO_MATCH = 1;
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static final String[] ZZ_ERROR_MSG = {
+ "Unknown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}
+ */
+ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\12\0\1\11\2\1\1\11\2\1\3\11\2\1\1\11"+
+ "\5\1\2\11\3\1\1\11\2\1\1\11\1\1\1\11"+
+ "\22\1\1\11\1\1\2\11\1\1\2\11\4\1\2\11"+
+ "\2\1\1\11\2\1\1\11\2\1\1\11\10\1\3\11"+
+ "\1\1\2\11\2\1\2\11\2\1\2\11\1\1\1\11"+
+ "\1\1\1\11\1\1\1\11\6\0\1\1\4\11\1\1"+
+ "\1\11\1\1\2\11\43\1\2\11\2\0\1\1\4\0"+
+ "\1\1\2\0\1\1\6\0\11\11\1\1\1\0\4\1"+
+ "\1\11\1\1\1\11\53\1\1\11\2\0\1\11\232\1";
+
+ private static int [] zzUnpackAttribute() {
+ int [] result = new int[395];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /** the input device */
+ private java.io.Reader zzReader;
+
+ /** the current state of the DFA */
+ private int zzState;
+
+ /** the current lexical state */
+ private int zzLexicalState = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private CharSequence zzBuffer = "";
+
+ /** the textposition at the last accepting state */
+ private int zzMarkedPos;
+
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
+
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
+
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
+
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private boolean zzAtEOF;
+
+ /** Number of newlines encountered up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ private int yyline;
+
+ /** Number of characters from the last newline up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ protected int yycolumn;
+
+ /** Number of characters up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ private long yychar;
+
+ /** Whether the scanner is currently at the beginning of a line. */
+ @SuppressWarnings("unused")
+ private boolean zzAtBOL = true;
+
+ /** Whether the user-EOF-code has already been executed. */
+ @SuppressWarnings("unused")
+ private boolean zzEOFDone;
+
+
+ /**
+ * Creates a new scanner
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ ZigFlexLexer(java.io.Reader in) {
+ this.zzReader = in;
+ }
+
+
+ /** Returns the maximum size of the scanner buffer, which limits the size of tokens. */
+ private int zzMaxBufferLen() {
+ return Integer.MAX_VALUE;
+ }
+
+ /** Whether the scanner buffer can grow to accommodate a larger token. */
+ private boolean zzCanGrow() {
+ return true;
+ }
+
+ /**
+ * Translates raw input code points to DFA table row
+ */
+ private static int zzCMap(int input) {
+ int offset = input & 255;
+ return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];
+ }
+
+ public final int getTokenStart() {
+ return zzStartRead;
+ }
+
+ public final int getTokenEnd() {
+ return getTokenStart() + yylength();
+ }
+
+ public void reset(CharSequence buffer, int start, int end, int initialState) {
+ zzBuffer = buffer;
+ zzCurrentPos = zzMarkedPos = zzStartRead = start;
+ zzAtEOF = false;
+ zzAtBOL = true;
+ zzEndRead = end;
+ yybegin(initialState);
+ }
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return {@code false}, iff there was new input.
+ *
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ private boolean zzRefill() throws java.io.IOException {
+ return true;
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public final CharSequence yytext() {
+ return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
+ }
+
+
+ /**
+ * Returns the character at position {@code pos} from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ *
+ * @return the character at position pos
+ */
+ public final char yycharat(int pos) {
+ return zzBuffer.charAt(zzStartRead+pos);
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ public final int yylength() {
+ return zzMarkedPos-zzStartRead;
+ }
+
+
+ /**
+ * Reports an error that occurred while scanning.
+ *
+ * In a wellformed scanner (no or only correct usage of
+ * yypushback(int) and a match-all fallback rule) this method
+ * will only be called with things that "Can't Possibly Happen".
+ * If this method is called, something is seriously wrong
+ * (e.g. a JFlex bug producing a faulty scanner etc.).
+ *
+ * Usual syntax/scanner level error handling should be done
+ * in error fallback rules.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void zzScanError(int errorCode) {
+ String message;
+ try {
+ message = ZZ_ERROR_MSG[errorCode];
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Error(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number) {
+ if ( number > yylength() )
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ public IElementType advance() throws java.io.IOException
+ {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ CharSequence zzBufferL = zzBuffer;
+
+ int [] zzTransL = ZZ_TRANS;
+ int [] zzRowMapL = ZZ_ROWMAP;
+ int [] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ }
+
+
+ zzForAction: {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ }
+ int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( (zzAttributes & 8) == 8 ) break zzForAction;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ switch (zzLexicalState) {
+ case STR_LIT: {
+ yybegin(YYINITIAL); return BAD_DQUOT;
+ } // fall though
+ case 396: break;
+ case STR_MULT_LINE: {
+ yybegin(YYINITIAL); return STRING_LITERAL_MULTI;
+ } // fall though
+ case 397: break;
+ case CHAR_LIT: {
+ yybegin(YYINITIAL); return BAD_SQUOT;
+ } // fall though
+ case 398: break;
+ case ID_QUOT: {
+ yybegin(YYINITIAL); return BAD_DQUOT;
+ } // fall though
+ case 399: break;
+ case UNT_SQUOT: {
+ yybegin(YYINITIAL); return BAD_SQUOT;
+ } // fall though
+ case 400: break;
+ case UNT_DQUOT: {
+ yybegin(YYINITIAL); return BAD_DQUOT;
+ } // fall though
+ case 401: break;
+ case CDOC_CMT: {
+ yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT;
+ } // fall though
+ case 402: break;
+ case DOC_CMT: {
+ yybegin(YYINITIAL); return DOC_COMMENT;
+ } // fall though
+ case 403: break;
+ case LINE_CMT: {
+ yybegin(YYINITIAL); return LINE_COMMENT;
+ } // fall though
+ case 404: break;
+ default:
+ return null;
+ }
+ }
+ else {
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1:
+ { return BAD_CHARACTER;
+ }
+ // fall through
+ case 138: break;
+ case 2:
+ { return WHITE_SPACE;
+ }
+ // fall through
+ case 139: break;
+ case 3:
+ { return EXCLAMATIONMARK;
+ }
+ // fall through
+ case 140: break;
+ case 4:
+ { yybegin(STR_LIT);
+ }
+ // fall through
+ case 141: break;
+ case 5:
+ { return PERCENT;
+ }
+ // fall through
+ case 142: break;
+ case 6:
+ { return AMPERSAND;
+ }
+ // fall through
+ case 143: break;
+ case 7:
+ { yybegin(CHAR_LIT);
+ }
+ // fall through
+ case 144: break;
+ case 8:
+ { return LPAREN;
+ }
+ // fall through
+ case 145: break;
+ case 9:
+ { return RPAREN;
+ }
+ // fall through
+ case 146: break;
+ case 10:
+ { return ASTERISK;
+ }
+ // fall through
+ case 147: break;
+ case 11:
+ { return PLUS;
+ }
+ // fall through
+ case 148: break;
+ case 12:
+ { return COMMA;
+ }
+ // fall through
+ case 149: break;
+ case 13:
+ { return MINUS;
+ }
+ // fall through
+ case 150: break;
+ case 14:
+ { return DOT;
+ }
+ // fall through
+ case 151: break;
+ case 15:
+ { return SLASH;
+ }
+ // fall through
+ case 152: break;
+ case 16:
+ { return INTEGER;
+ }
+ // fall through
+ case 153: break;
+ case 17:
+ { return COLON;
+ }
+ // fall through
+ case 154: break;
+ case 18:
+ { return SEMICOLON;
+ }
+ // fall through
+ case 155: break;
+ case 19:
+ { return LARROW;
+ }
+ // fall through
+ case 156: break;
+ case 20:
+ { return EQUAL;
+ }
+ // fall through
+ case 157: break;
+ case 21:
+ { return RARROW;
+ }
+ // fall through
+ case 158: break;
+ case 22:
+ { return QUESTIONMARK;
+ }
+ // fall through
+ case 159: break;
+ case 23:
+ { return IDENTIFIER;
+ }
+ // fall through
+ case 160: break;
+ case 24:
+ { return LBRACKET;
+ }
+ // fall through
+ case 161: break;
+ case 25:
+ { return RBRACKET;
+ }
+ // fall through
+ case 162: break;
+ case 26:
+ { return CARET;
+ }
+ // fall through
+ case 163: break;
+ case 27:
+ { return LBRACE;
+ }
+ // fall through
+ case 164: break;
+ case 28:
+ { return PIPE;
+ }
+ // fall through
+ case 165: break;
+ case 29:
+ { return RBRACE;
+ }
+ // fall through
+ case 166: break;
+ case 30:
+ { return TILDE;
+ }
+ // fall through
+ case 167: break;
+ case 31:
+ { yypushback(1); yybegin(UNT_DQUOT);
+ }
+ // fall through
+ case 168: break;
+ case 32:
+ { yybegin(YYINITIAL); return STRING_LITERAL_SINGLE;
+ }
+ // fall through
+ case 169: break;
+ case 33:
+ {
+ }
+ // fall through
+ case 170: break;
+ case 34:
+ { yybegin(YYINITIAL); return STRING_LITERAL_MULTI;
+ }
+ // fall through
+ case 171: break;
+ case 35:
+ { yypushback(1); yybegin(UNT_SQUOT);
+ }
+ // fall through
+ case 172: break;
+ case 36:
+ { yybegin(YYINITIAL); return CHAR_LITERAL;
+ }
+ // fall through
+ case 173: break;
+ case 37:
+ { yybegin(YYINITIAL); return IDENTIFIER;
+ }
+ // fall through
+ case 174: break;
+ case 38:
+ { yybegin(YYINITIAL); return BAD_SQUOT;
+ }
+ // fall through
+ case 175: break;
+ case 39:
+ { yybegin(YYINITIAL); return BAD_DQUOT;
+ }
+ // fall through
+ case 176: break;
+ case 40:
+ { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT;
+ }
+ // fall through
+ case 177: break;
+ case 41:
+ { yybegin(YYINITIAL); return DOC_COMMENT;
+ }
+ // fall through
+ case 178: break;
+ case 42:
+ { yybegin(YYINITIAL); return LINE_COMMENT;
+ }
+ // fall through
+ case 179: break;
+ case 43:
+ { return EXCLAMATIONMARKEQUAL;
+ }
+ // fall through
+ case 180: break;
+ case 44:
+ { return PERCENTEQUAL;
+ }
+ // fall through
+ case 181: break;
+ case 45:
+ { return AMPERSANDEQUAL;
+ }
+ // fall through
+ case 182: break;
+ case 46:
+ { return ASTERISKPERCENT;
+ }
+ // fall through
+ case 183: break;
+ case 47:
+ { return ASTERISK2;
+ }
+ // fall through
+ case 184: break;
+ case 48:
+ { return ASTERISKEQUAL;
+ }
+ // fall through
+ case 185: break;
+ case 49:
+ { return ASTERISKPIPE;
+ }
+ // fall through
+ case 186: break;
+ case 50:
+ { return PLUSPERCENT;
+ }
+ // fall through
+ case 187: break;
+ case 51:
+ { return PLUS2;
+ }
+ // fall through
+ case 188: break;
+ case 52:
+ { return PLUSEQUAL;
+ }
+ // fall through
+ case 189: break;
+ case 53:
+ { return PLUSPIPE;
+ }
+ // fall through
+ case 190: break;
+ case 54:
+ { return MINUSPERCENT;
+ }
+ // fall through
+ case 191: break;
+ case 55:
+ { return MINUSEQUAL;
+ }
+ // fall through
+ case 192: break;
+ case 56:
+ { return MINUSRARROW;
+ }
+ // fall through
+ case 193: break;
+ case 57:
+ { return MINUSPIPE;
+ }
+ // fall through
+ case 194: break;
+ case 58:
+ { return DOTASTERISK;
+ }
+ // fall through
+ case 195: break;
+ case 59:
+ { return DOT2;
+ }
+ // fall through
+ case 196: break;
+ case 60:
+ { return DOTQUESTIONMARK;
+ }
+ // fall through
+ case 197: break;
+ case 61:
+ { yybegin(LINE_CMT);
+ }
+ // fall through
+ case 198: break;
+ case 62:
+ { return SLASHEQUAL;
+ }
+ // fall through
+ case 199: break;
+ case 63:
+ { return LARROW2;
+ }
+ // fall through
+ case 200: break;
+ case 64:
+ { return LARROWEQUAL;
+ }
+ // fall through
+ case 201: break;
+ case 65:
+ { return EQUALEQUAL;
+ }
+ // fall through
+ case 202: break;
+ case 66:
+ { return EQUALRARROW;
+ }
+ // fall through
+ case 203: break;
+ case 67:
+ { return RARROWEQUAL;
+ }
+ // fall through
+ case 204: break;
+ case 68:
+ { return RARROW2;
+ }
+ // fall through
+ case 205: break;
+ case 69:
+ { yybegin(ID_QUOT);
+ }
+ // fall through
+ case 206: break;
+ case 70:
+ { return BUILTINIDENTIFIER;
+ }
+ // fall through
+ case 207: break;
+ case 71:
+ { yybegin(STR_MULT_LINE);
+ }
+ // fall through
+ case 208: break;
+ case 72:
+ { return CARETEQUAL;
+ }
+ // fall through
+ case 209: break;
+ case 73:
+ { return KEYWORD_FN;
+ }
+ // fall through
+ case 210: break;
+ case 74:
+ { return KEYWORD_IF;
+ }
+ // fall through
+ case 211: break;
+ case 75:
+ { return KEYWORD_OR;
+ }
+ // fall through
+ case 212: break;
+ case 76:
+ { return PIPEEQUAL;
+ }
+ // fall through
+ case 213: break;
+ case 77:
+ { return PIPE2;
+ }
+ // fall through
+ case 214: break;
+ case 78:
+ { return ASTERISKPERCENTEQUAL;
+ }
+ // fall through
+ case 215: break;
+ case 79:
+ { return ASTERISKPIPEEQUAL;
+ }
+ // fall through
+ case 216: break;
+ case 80:
+ { return PLUSPERCENTEQUAL;
+ }
+ // fall through
+ case 217: break;
+ case 81:
+ { return PLUSPIPEEQUAL;
+ }
+ // fall through
+ case 218: break;
+ case 82:
+ { return MINUSPERCENTEQUAL;
+ }
+ // fall through
+ case 219: break;
+ case 83:
+ { return MINUSPIPEEQUAL;
+ }
+ // fall through
+ case 220: break;
+ case 84:
+ { return DOT3;
+ }
+ // fall through
+ case 221: break;
+ case 85:
+ { yybegin(CDOC_CMT);
+ }
+ // fall through
+ case 222: break;
+ case 86:
+ { yybegin(DOC_CMT);
+ }
+ // fall through
+ case 223: break;
+ case 87:
+ { return FLOAT;
+ }
+ // fall through
+ case 224: break;
+ case 88:
+ { return LARROW2EQUAL;
+ }
+ // fall through
+ case 225: break;
+ case 89:
+ { return LARROW2PIPE;
+ }
+ // fall through
+ case 226: break;
+ case 90:
+ { return RARROW2EQUAL;
+ }
+ // fall through
+ case 227: break;
+ case 91:
+ { return KEYWORD_AND;
+ }
+ // fall through
+ case 228: break;
+ case 92:
+ { return KEYWORD_ASM;
+ }
+ // fall through
+ case 229: break;
+ case 93:
+ { return KEYWORD_FOR;
+ }
+ // fall through
+ case 230: break;
+ case 94:
+ { return KEYWORD_PUB;
+ }
+ // fall through
+ case 231: break;
+ case 95:
+ { return KEYWORD_TRY;
+ }
+ // fall through
+ case 232: break;
+ case 96:
+ { return KEYWORD_VAR;
+ }
+ // fall through
+ case 233: break;
+ case 97:
+ { return LARROW2PIPEEQUAL;
+ }
+ // fall through
+ case 234: break;
+ case 98:
+ { return KEYWORD_ELSE;
+ }
+ // fall through
+ case 235: break;
+ case 99:
+ { return KEYWORD_ENUM;
+ }
+ // fall through
+ case 236: break;
+ case 100:
+ { return KEYWORD_TEST;
+ }
+ // fall through
+ case 237: break;
+ case 101:
+ { return KEYWORD_ALIGN;
+ }
+ // fall through
+ case 238: break;
+ case 102:
+ { return KEYWORD_ASYNC;
+ }
+ // fall through
+ case 239: break;
+ case 103:
+ { return KEYWORD_AWAIT;
+ }
+ // fall through
+ case 240: break;
+ case 104:
+ { return KEYWORD_BREAK;
+ }
+ // fall through
+ case 241: break;
+ case 105:
+ { return KEYWORD_CATCH;
+ }
+ // fall through
+ case 242: break;
+ case 106:
+ { return KEYWORD_CONST;
+ }
+ // fall through
+ case 243: break;
+ case 107:
+ { return KEYWORD_DEFER;
+ }
+ // fall through
+ case 244: break;
+ case 108:
+ { return KEYWORD_ERROR;
+ }
+ // fall through
+ case 245: break;
+ case 109:
+ { return KEYWORD_UNION;
+ }
+ // fall through
+ case 246: break;
+ case 110:
+ { return KEYWORD_WHILE;
+ }
+ // fall through
+ case 247: break;
+ case 111:
+ { return KEYWORD_EXPORT;
+ }
+ // fall through
+ case 248: break;
+ case 112:
+ { return KEYWORD_EXTERN;
+ }
+ // fall through
+ case 249: break;
+ case 113:
+ { return KEYWORD_INLINE;
+ }
+ // fall through
+ case 250: break;
+ case 114:
+ { return KEYWORD_OPAQUE;
+ }
+ // fall through
+ case 251: break;
+ case 115:
+ { return KEYWORD_ORELSE;
+ }
+ // fall through
+ case 252: break;
+ case 116:
+ { return KEYWORD_PACKED;
+ }
+ // fall through
+ case 253: break;
+ case 117:
+ { return KEYWORD_RESUME;
+ }
+ // fall through
+ case 254: break;
+ case 118:
+ { return KEYWORD_RETURN;
+ }
+ // fall through
+ case 255: break;
+ case 119:
+ { return KEYWORD_STRUCT;
+ }
+ // fall through
+ case 256: break;
+ case 120:
+ { return KEYWORD_SWITCH;
+ }
+ // fall through
+ case 257: break;
+ case 121:
+ { return KEYWORD_ANYTYPE;
+ }
+ // fall through
+ case 258: break;
+ case 122:
+ { return KEYWORD_NOALIAS;
+ }
+ // fall through
+ case 259: break;
+ case 123:
+ { return KEYWORD_SUSPEND;
+ }
+ // fall through
+ case 260: break;
+ case 124:
+ { return KEYWORD_ANYFRAME;
+ }
+ // fall through
+ case 261: break;
+ case 125:
+ { return KEYWORD_CALLCONV;
+ }
+ // fall through
+ case 262: break;
+ case 126:
+ { return KEYWORD_COMPTIME;
+ }
+ // fall through
+ case 263: break;
+ case 127:
+ { return KEYWORD_CONTINUE;
+ }
+ // fall through
+ case 264: break;
+ case 128:
+ { return KEYWORD_ERRDEFER;
+ }
+ // fall through
+ case 265: break;
+ case 129:
+ { return KEYWORD_NOINLINE;
+ }
+ // fall through
+ case 266: break;
+ case 130:
+ { return KEYWORD_VOLATILE;
+ }
+ // fall through
+ case 267: break;
+ case 131:
+ { return KEYWORD_ADDRSPACE;
+ }
+ // fall through
+ case 268: break;
+ case 132:
+ { return KEYWORD_ALLOWZERO;
+ }
+ // fall through
+ case 269: break;
+ case 133:
+ { return KEYWORD_NOSUSPEND;
+ }
+ // fall through
+ case 270: break;
+ case 134:
+ { return KEYWORD_LINKSECTION;
+ }
+ // fall through
+ case 271: break;
+ case 135:
+ { return KEYWORD_THREADLOCAL;
+ }
+ // fall through
+ case 272: break;
+ case 136:
+ { return KEYWORD_UNREACHABLE;
+ }
+ // fall through
+ case 273: break;
+ case 137:
+ { return KEYWORD_USINGNAMESPACE;
+ }
+ // fall through
+ case 274: break;
+ default:
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/parser/ZigParser.java b/src/test/java/com/falsepattern/zigbrains/zig/parser/ZigParser.java
new file mode 100644
index 000000000..cbda170b7
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/parser/ZigParser.java
@@ -0,0 +1,4598 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.parser;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.lang.LightPsiParser;
+import com.intellij.lang.PsiBuilder;
+import com.intellij.lang.PsiBuilder.Marker;
+import com.intellij.lang.PsiParser;
+import com.intellij.psi.tree.IElementType;
+import com.intellij.psi.tree.TokenSet;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+import static com.intellij.lang.parser.GeneratedParserUtilBase.*;
+
+@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
+public class ZigParser implements PsiParser, LightPsiParser {
+
+ public ASTNode parse(IElementType root_, PsiBuilder builder_) {
+ parseLight(root_, builder_);
+ return builder_.getTreeBuilt();
+ }
+
+ public void parseLight(IElementType root_, PsiBuilder builder_) {
+ boolean result_;
+ builder_ = adapt_builder_(root_, builder_, this, EXTENDS_SETS_);
+ Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null);
+ result_ = parse_root_(root_, builder_);
+ exit_section_(builder_, 0, marker_, root_, result_, true, TRUE_CONDITION);
+ }
+
+ protected boolean parse_root_(IElementType root_, PsiBuilder builder_) {
+ return parse_root_(root_, builder_, 0);
+ }
+
+ static boolean parse_root_(IElementType root_, PsiBuilder builder_, int level_) {
+ return Root(builder_, level_ + 1);
+ }
+
+ public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] {
+ create_token_set_(ADDITION_EXPR, ASM_EXPR, ASSIGN_EXPR, BITWISE_EXPR,
+ BIT_SHIFT_EXPR, BLOCK_EXPR, BOOL_AND_EXPR, BOOL_OR_EXPR,
+ COMPARE_EXPR, CURLY_SUFFIX_EXPR, ERROR_UNION_EXPR, EXPR,
+ FOR_EXPR, FOR_TYPE_EXPR, GROUPED_EXPR, IF_EXPR,
+ IF_TYPE_EXPR, LABELED_TYPE_EXPR, LOOP_EXPR, LOOP_TYPE_EXPR,
+ MULTIPLY_EXPR, PREFIX_EXPR, PRIMARY_EXPR, PRIMARY_TYPE_EXPR,
+ SINGLE_ASSIGN_EXPR, SUFFIX_EXPR, SWITCH_EXPR, TYPE_EXPR,
+ WHILE_CONTINUE_EXPR, WHILE_EXPR, WHILE_TYPE_EXPR),
+ };
+
+ /* ********************************************************** */
+ // MultiplyExpr (AdditionOp MultiplyExpr)*
+ public static boolean AdditionExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AdditionExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, ADDITION_EXPR, "");
+ result_ = MultiplyExpr(builder_, level_ + 1);
+ result_ = result_ && AdditionExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (AdditionOp MultiplyExpr)*
+ private static boolean AdditionExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AdditionExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!AdditionExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "AdditionExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // AdditionOp MultiplyExpr
+ private static boolean AdditionExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AdditionExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AdditionOp(builder_, level_ + 1);
+ result_ = result_ && MultiplyExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PLUS
+ // | MINUS
+ // | PLUS2
+ // | PLUSPERCENT
+ // | MINUSPERCENT
+ // | PLUSPIPE
+ // | MINUSPIPE
+ public static boolean AdditionOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AdditionOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, ADDITION_OP, "");
+ result_ = consumeToken(builder_, PLUS);
+ if (!result_) result_ = consumeToken(builder_, MINUS);
+ if (!result_) result_ = consumeToken(builder_, PLUS2);
+ if (!result_) result_ = consumeToken(builder_, PLUSPERCENT);
+ if (!result_) result_ = consumeToken(builder_, MINUSPERCENT);
+ if (!result_) result_ = consumeToken(builder_, PLUSPIPE);
+ if (!result_) result_ = consumeToken(builder_, MINUSPIPE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ADDRSPACE LPAREN Expr RPAREN
+ public static boolean AddrSpace(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AddrSpace")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_ADDRSPACE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_ADDRSPACE, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, ADDR_SPACE, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LBRACKET Expr (COLON Expr)? RBRACKET
+ public static boolean ArrayTypeStart(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ArrayTypeStart")) return false;
+ if (!nextTokenIs(builder_, LBRACKET)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, LBRACKET);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && ArrayTypeStart_2(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RBRACKET);
+ exit_section_(builder_, marker_, ARRAY_TYPE_START, result_);
+ return result_;
+ }
+
+ // (COLON Expr)?
+ private static boolean ArrayTypeStart_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ArrayTypeStart_2")) return false;
+ ArrayTypeStart_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // COLON Expr
+ private static boolean ArrayTypeStart_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ArrayTypeStart_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // COLON StringList
+ public static boolean AsmClobbers(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmClobbers")) return false;
+ if (!nextTokenIs(builder_, COLON)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && StringList(builder_, level_ + 1);
+ exit_section_(builder_, marker_, ASM_CLOBBERS, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ASM KEYWORD_VOLATILE? LPAREN Expr AsmOutput? RPAREN
+ public static boolean AsmExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_ASM)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ASM);
+ result_ = result_ && AsmExpr_1(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && AsmExpr_4(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, ASM_EXPR, result_);
+ return result_;
+ }
+
+ // KEYWORD_VOLATILE?
+ private static boolean AsmExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmExpr_1")) return false;
+ consumeToken(builder_, KEYWORD_VOLATILE);
+ return true;
+ }
+
+ // AsmOutput?
+ private static boolean AsmExpr_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmExpr_4")) return false;
+ AsmOutput(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // COLON AsmInputList AsmClobbers?
+ public static boolean AsmInput(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInput")) return false;
+ if (!nextTokenIs(builder_, COLON)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && AsmInputList(builder_, level_ + 1);
+ result_ = result_ && AsmInput_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, ASM_INPUT, result_);
+ return result_;
+ }
+
+ // AsmClobbers?
+ private static boolean AsmInput_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInput_2")) return false;
+ AsmClobbers(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // LBRACKET IDENTIFIER RBRACKET StringLiteral LPAREN Expr RPAREN
+ public static boolean AsmInputItem(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInputItem")) return false;
+ if (!nextTokenIs(builder_, LBRACKET)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, LBRACKET, IDENTIFIER, RBRACKET);
+ result_ = result_ && StringLiteral(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, ASM_INPUT_ITEM, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (AsmInputItem COMMA)* AsmInputItem?
+ public static boolean AsmInputList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInputList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, ASM_INPUT_LIST, "");
+ result_ = AsmInputList_0(builder_, level_ + 1);
+ result_ = result_ && AsmInputList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (AsmInputItem COMMA)*
+ private static boolean AsmInputList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInputList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!AsmInputList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "AsmInputList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // AsmInputItem COMMA
+ private static boolean AsmInputList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInputList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AsmInputItem(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // AsmInputItem?
+ private static boolean AsmInputList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmInputList_1")) return false;
+ AsmInputItem(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // COLON AsmOutputList AsmInput?
+ public static boolean AsmOutput(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutput")) return false;
+ if (!nextTokenIs(builder_, COLON)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && AsmOutputList(builder_, level_ + 1);
+ result_ = result_ && AsmOutput_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, ASM_OUTPUT, result_);
+ return result_;
+ }
+
+ // AsmInput?
+ private static boolean AsmOutput_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutput_2")) return false;
+ AsmInput(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // LBRACKET IDENTIFIER RBRACKET StringLiteral LPAREN (MINUSRARROW TypeExpr | IDENTIFIER) RPAREN
+ public static boolean AsmOutputItem(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputItem")) return false;
+ if (!nextTokenIs(builder_, LBRACKET)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, LBRACKET, IDENTIFIER, RBRACKET);
+ result_ = result_ && StringLiteral(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, LPAREN);
+ result_ = result_ && AsmOutputItem_5(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, ASM_OUTPUT_ITEM, result_);
+ return result_;
+ }
+
+ // MINUSRARROW TypeExpr | IDENTIFIER
+ private static boolean AsmOutputItem_5(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputItem_5")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AsmOutputItem_5_0(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, IDENTIFIER);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // MINUSRARROW TypeExpr
+ private static boolean AsmOutputItem_5_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputItem_5_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, MINUSRARROW);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (AsmOutputItem COMMA)* AsmOutputItem?
+ public static boolean AsmOutputList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, ASM_OUTPUT_LIST, "");
+ result_ = AsmOutputList_0(builder_, level_ + 1);
+ result_ = result_ && AsmOutputList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (AsmOutputItem COMMA)*
+ private static boolean AsmOutputList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!AsmOutputList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "AsmOutputList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // AsmOutputItem COMMA
+ private static boolean AsmOutputList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AsmOutputItem(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // AsmOutputItem?
+ private static boolean AsmOutputList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AsmOutputList_1")) return false;
+ AsmOutputItem(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // Expr (AssignOp Expr | (COMMA Expr)+ EQUAL Expr)?
+ public static boolean AssignExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, ASSIGN_EXPR, "");
+ result_ = Expr(builder_, level_ + 1);
+ result_ = result_ && AssignExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (AssignOp Expr | (COMMA Expr)+ EQUAL Expr)?
+ private static boolean AssignExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1")) return false;
+ AssignExpr_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // AssignOp Expr | (COMMA Expr)+ EQUAL Expr
+ private static boolean AssignExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr_1_0_0(builder_, level_ + 1);
+ if (!result_) result_ = AssignExpr_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // AssignOp Expr
+ private static boolean AssignExpr_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignOp(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COMMA Expr)+ EQUAL Expr
+ private static boolean AssignExpr_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr_1_0_1_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, EQUAL);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COMMA Expr)+
+ private static boolean AssignExpr_1_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr_1_0_1_0_0(builder_, level_ + 1);
+ while (result_) {
+ int pos_ = current_position_(builder_);
+ if (!AssignExpr_1_0_1_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "AssignExpr_1_0_1_0", pos_)) break;
+ }
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA Expr
+ private static boolean AssignExpr_1_0_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignExpr_1_0_1_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ASTERISKEQUAL
+ // | ASTERISKPIPEEQUAL
+ // | SLASHEQUAL
+ // | PERCENTEQUAL
+ // | PLUSEQUAL
+ // | PLUSPIPEEQUAL
+ // | MINUSEQUAL
+ // | MINUSPIPEEQUAL
+ // | LARROW2EQUAL
+ // | LARROW2PIPEEQUAL
+ // | RARROW2EQUAL
+ // | AMPERSANDEQUAL
+ // | CARETEQUAL
+ // | PIPEEQUAL
+ // | ASTERISKPERCENTEQUAL
+ // | PLUSPERCENTEQUAL
+ // | MINUSPERCENTEQUAL
+ // | EQUAL
+ public static boolean AssignOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AssignOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, ASSIGN_OP, "");
+ result_ = consumeToken(builder_, ASTERISKEQUAL);
+ if (!result_) result_ = consumeToken(builder_, ASTERISKPIPEEQUAL);
+ if (!result_) result_ = consumeToken(builder_, SLASHEQUAL);
+ if (!result_) result_ = consumeToken(builder_, PERCENTEQUAL);
+ if (!result_) result_ = consumeToken(builder_, PLUSEQUAL);
+ if (!result_) result_ = consumeToken(builder_, PLUSPIPEEQUAL);
+ if (!result_) result_ = consumeToken(builder_, MINUSEQUAL);
+ if (!result_) result_ = consumeToken(builder_, MINUSPIPEEQUAL);
+ if (!result_) result_ = consumeToken(builder_, LARROW2EQUAL);
+ if (!result_) result_ = consumeToken(builder_, LARROW2PIPEEQUAL);
+ if (!result_) result_ = consumeToken(builder_, RARROW2EQUAL);
+ if (!result_) result_ = consumeToken(builder_, AMPERSANDEQUAL);
+ if (!result_) result_ = consumeToken(builder_, CARETEQUAL);
+ if (!result_) result_ = consumeToken(builder_, PIPEEQUAL);
+ if (!result_) result_ = consumeToken(builder_, ASTERISKPERCENTEQUAL);
+ if (!result_) result_ = consumeToken(builder_, PLUSPERCENTEQUAL);
+ if (!result_) result_ = consumeToken(builder_, MINUSPERCENTEQUAL);
+ if (!result_) result_ = consumeToken(builder_, EQUAL);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // AdditionExpr (BitShiftOp AdditionExpr)*
+ public static boolean BitShiftExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitShiftExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BIT_SHIFT_EXPR, "");
+ result_ = AdditionExpr(builder_, level_ + 1);
+ result_ = result_ && BitShiftExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (BitShiftOp AdditionExpr)*
+ private static boolean BitShiftExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitShiftExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!BitShiftExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "BitShiftExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // BitShiftOp AdditionExpr
+ private static boolean BitShiftExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitShiftExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BitShiftOp(builder_, level_ + 1);
+ result_ = result_ && AdditionExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LARROW2
+ // | RARROW2
+ // | LARROW2PIPE
+ public static boolean BitShiftOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitShiftOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, BIT_SHIFT_OP, "");
+ result_ = consumeToken(builder_, LARROW2);
+ if (!result_) result_ = consumeToken(builder_, RARROW2);
+ if (!result_) result_ = consumeToken(builder_, LARROW2PIPE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BitShiftExpr (BitwiseOp BitShiftExpr)*
+ public static boolean BitwiseExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BITWISE_EXPR, "");
+ result_ = BitShiftExpr(builder_, level_ + 1);
+ result_ = result_ && BitwiseExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (BitwiseOp BitShiftExpr)*
+ private static boolean BitwiseExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!BitwiseExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "BitwiseExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // BitwiseOp BitShiftExpr
+ private static boolean BitwiseExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BitwiseOp(builder_, level_ + 1);
+ result_ = result_ && BitShiftExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // AMPERSAND
+ // | CARET
+ // | PIPE
+ // | KEYWORD_ORELSE
+ // | KEYWORD_CATCH Payload?
+ public static boolean BitwiseOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, BITWISE_OP, "");
+ result_ = consumeToken(builder_, AMPERSAND);
+ if (!result_) result_ = consumeToken(builder_, CARET);
+ if (!result_) result_ = consumeToken(builder_, PIPE);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_ORELSE);
+ if (!result_) result_ = BitwiseOp_4(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_CATCH Payload?
+ private static boolean BitwiseOp_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseOp_4")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_CATCH);
+ result_ = result_ && BitwiseOp_4_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean BitwiseOp_4_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BitwiseOp_4_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // LBRACE ZB_Block_Statement RBRACE
+ public static boolean Block(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Block")) return false;
+ if (!nextTokenIs(builder_, LBRACE)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, BLOCK, null);
+ result_ = consumeToken(builder_, LBRACE);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_Block_Statement(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RBRACE) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // BlockLabel? Block
+ public static boolean BlockExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BlockExpr")) return false;
+ if (!nextTokenIs(builder_, "", IDENTIFIER, LBRACE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, BLOCK_EXPR, "");
+ result_ = BlockExpr_0(builder_, level_ + 1);
+ result_ = result_ && Block(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // BlockLabel?
+ private static boolean BlockExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BlockExpr_0")) return false;
+ BlockLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // BlockExpr
+ // | ZB_BlockExprStatement_AssignExpr
+ public static boolean BlockExprStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BlockExprStatement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, BLOCK_EXPR_STATEMENT, "");
+ result_ = BlockExpr(builder_, level_ + 1);
+ if (!result_) result_ = ZB_BlockExprStatement_AssignExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // IDENTIFIER COLON
+ public static boolean BlockLabel(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BlockLabel")) return false;
+ if (!nextTokenIs(builder_, IDENTIFIER)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, IDENTIFIER, COLON);
+ exit_section_(builder_, marker_, BLOCK_LABEL, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // CompareExpr (KEYWORD_AND CompareExpr)*
+ public static boolean BoolAndExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolAndExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BOOL_AND_EXPR, "");
+ result_ = CompareExpr(builder_, level_ + 1);
+ result_ = result_ && BoolAndExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (KEYWORD_AND CompareExpr)*
+ private static boolean BoolAndExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolAndExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!BoolAndExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "BoolAndExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // KEYWORD_AND CompareExpr
+ private static boolean BoolAndExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolAndExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_AND);
+ result_ = result_ && CompareExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BoolAndExpr (KEYWORD_OR BoolAndExpr)*
+ public static boolean BoolOrExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolOrExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BOOL_OR_EXPR, "");
+ result_ = BoolAndExpr(builder_, level_ + 1);
+ result_ = result_ && BoolOrExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (KEYWORD_OR BoolAndExpr)*
+ private static boolean BoolOrExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolOrExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!BoolOrExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "BoolOrExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // KEYWORD_OR BoolAndExpr
+ private static boolean BoolOrExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BoolOrExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_OR);
+ result_ = result_ && BoolAndExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // COLON IDENTIFIER
+ public static boolean BreakLabel(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "BreakLabel")) return false;
+ if (!nextTokenIs(builder_, COLON)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, COLON, IDENTIFIER);
+ exit_section_(builder_, marker_, BREAK_LABEL, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ALIGN LPAREN Expr RPAREN
+ public static boolean ByteAlign(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ByteAlign")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_ALIGN)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_ALIGN, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, BYTE_ALIGN, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_CALLCONV LPAREN Expr RPAREN
+ public static boolean CallConv(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CallConv")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_CALLCONV)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_CALLCONV, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, CALL_CONV, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BitwiseExpr (CompareOp BitwiseExpr)?
+ public static boolean CompareExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CompareExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, COMPARE_EXPR, "");
+ result_ = BitwiseExpr(builder_, level_ + 1);
+ result_ = result_ && CompareExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (CompareOp BitwiseExpr)?
+ private static boolean CompareExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CompareExpr_1")) return false;
+ CompareExpr_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // CompareOp BitwiseExpr
+ private static boolean CompareExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CompareExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = CompareOp(builder_, level_ + 1);
+ result_ = result_ && BitwiseExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // EQUALEQUAL
+ // | EXCLAMATIONMARKEQUAL
+ // | LARROW
+ // | RARROW
+ // | LARROWEQUAL
+ // | RARROWEQUAL
+ public static boolean CompareOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CompareOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, COMPARE_OP, "");
+ result_ = consumeToken(builder_, EQUALEQUAL);
+ if (!result_) result_ = consumeToken(builder_, EXCLAMATIONMARKEQUAL);
+ if (!result_) result_ = consumeToken(builder_, LARROW);
+ if (!result_) result_ = consumeToken(builder_, RARROW);
+ if (!result_) result_ = consumeToken(builder_, LARROWEQUAL);
+ if (!result_) result_ = consumeToken(builder_, RARROWEQUAL);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_COMPTIME Block
+ public static boolean ComptimeDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ComptimeDecl")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_COMPTIME)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_COMPTIME);
+ result_ = result_ && Block(builder_, level_ + 1);
+ exit_section_(builder_, marker_, COMPTIME_DECL, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BlockExpr
+ // | VarDeclExprStatement
+ public static boolean ComptimeStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ComptimeStatement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, COMPTIME_STATEMENT, "");
+ result_ = BlockExpr(builder_, level_ + 1);
+ if (!result_) result_ = VarDeclExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (KEYWORD_EXTERN | KEYWORD_PACKED)? ContainerDeclAuto
+ public static boolean ContainerDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDecl")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_DECL, "");
+ result_ = ContainerDecl_0(builder_, level_ + 1);
+ result_ = result_ && ContainerDeclAuto(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (KEYWORD_EXTERN | KEYWORD_PACKED)?
+ private static boolean ContainerDecl_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDecl_0")) return false;
+ ContainerDecl_0_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_EXTERN | KEYWORD_PACKED
+ private static boolean ContainerDecl_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDecl_0_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, KEYWORD_EXTERN);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_PACKED);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ContainerDeclType LBRACE CONTAINER_DOC_COMMENT? ZB_ContainerDeclAuto_ContainerMembers RBRACE
+ public static boolean ContainerDeclAuto(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclAuto")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_DECL_AUTO, "");
+ result_ = ContainerDeclType(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, LBRACE);
+ pinned_ = result_; // pin = 2
+ result_ = result_ && report_error_(builder_, ContainerDeclAuto_2(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, ZB_ContainerDeclAuto_ContainerMembers(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && consumeToken(builder_, RBRACE) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // CONTAINER_DOC_COMMENT?
+ private static boolean ContainerDeclAuto_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclAuto_2")) return false;
+ consumeToken(builder_, CONTAINER_DOC_COMMENT);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_STRUCT (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ // | KEYWORD_OPAQUE
+ // | KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ // | KEYWORD_UNION (LPAREN (KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)? | ZB_ContainerDeclType_Expr) RPAREN)?
+ public static boolean ContainerDeclType(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_DECL_TYPE, "");
+ result_ = ContainerDeclType_0(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_OPAQUE);
+ if (!result_) result_ = ContainerDeclType_2(builder_, level_ + 1);
+ if (!result_) result_ = ContainerDeclType_3(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_STRUCT (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, KEYWORD_STRUCT);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ContainerDeclType_0_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_0_1")) return false;
+ ContainerDeclType_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // LPAREN ZB_ContainerDeclType_Expr RPAREN
+ private static boolean ContainerDeclType_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_0_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_ContainerDeclType_Expr(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_2")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, KEYWORD_ENUM);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ContainerDeclType_2_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_2_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_2_1")) return false;
+ ContainerDeclType_2_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // LPAREN ZB_ContainerDeclType_Expr RPAREN
+ private static boolean ContainerDeclType_2_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_2_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_ContainerDeclType_Expr(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // KEYWORD_UNION (LPAREN (KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)? | ZB_ContainerDeclType_Expr) RPAREN)?
+ private static boolean ContainerDeclType_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, KEYWORD_UNION);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ContainerDeclType_3_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (LPAREN (KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)? | ZB_ContainerDeclType_Expr) RPAREN)?
+ private static boolean ContainerDeclType_3_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1")) return false;
+ ContainerDeclType_3_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // LPAREN (KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)? | ZB_ContainerDeclType_Expr) RPAREN
+ private static boolean ContainerDeclType_3_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ContainerDeclType_3_1_0_1(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)? | ZB_ContainerDeclType_Expr
+ private static boolean ContainerDeclType_3_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ContainerDeclType_3_1_0_1_0(builder_, level_ + 1);
+ if (!result_) result_ = ZB_ContainerDeclType_Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ENUM (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_3_1_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1_0_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, KEYWORD_ENUM);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ContainerDeclType_3_1_0_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (LPAREN ZB_ContainerDeclType_Expr RPAREN)?
+ private static boolean ContainerDeclType_3_1_0_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1_0_1_0_1")) return false;
+ ContainerDeclType_3_1_0_1_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // LPAREN ZB_ContainerDeclType_Expr RPAREN
+ private static boolean ContainerDeclType_3_1_0_1_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclType_3_1_0_1_0_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_ContainerDeclType_Expr(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // TestDecl | ComptimeDecl | DOC_COMMENT? KEYWORD_PUB? Decl
+ public static boolean ContainerDeclaration(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclaration")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_DECLARATION, "");
+ result_ = TestDecl(builder_, level_ + 1);
+ if (!result_) result_ = ComptimeDecl(builder_, level_ + 1);
+ if (!result_) result_ = ContainerDeclaration_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // DOC_COMMENT? KEYWORD_PUB? Decl
+ private static boolean ContainerDeclaration_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclaration_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ContainerDeclaration_2_0(builder_, level_ + 1);
+ result_ = result_ && ContainerDeclaration_2_1(builder_, level_ + 1);
+ result_ = result_ && Decl(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // DOC_COMMENT?
+ private static boolean ContainerDeclaration_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclaration_2_0")) return false;
+ consumeToken(builder_, DOC_COMMENT);
+ return true;
+ }
+
+ // KEYWORD_PUB?
+ private static boolean ContainerDeclaration_2_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerDeclaration_2_1")) return false;
+ consumeToken(builder_, KEYWORD_PUB);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // DOC_COMMENT? KEYWORD_COMPTIME? !KEYWORD_FN (IDENTIFIER COLON)? TypeExpr ByteAlign? (EQUAL Expr)?
+ public static boolean ContainerField(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_FIELD, "");
+ result_ = ContainerField_0(builder_, level_ + 1);
+ result_ = result_ && ContainerField_1(builder_, level_ + 1);
+ result_ = result_ && ContainerField_2(builder_, level_ + 1);
+ result_ = result_ && ContainerField_3(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ pinned_ = result_; // pin = 5
+ result_ = result_ && report_error_(builder_, ContainerField_5(builder_, level_ + 1));
+ result_ = pinned_ && ContainerField_6(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // DOC_COMMENT?
+ private static boolean ContainerField_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_0")) return false;
+ consumeToken(builder_, DOC_COMMENT);
+ return true;
+ }
+
+ // KEYWORD_COMPTIME?
+ private static boolean ContainerField_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_1")) return false;
+ consumeToken(builder_, KEYWORD_COMPTIME);
+ return true;
+ }
+
+ // !KEYWORD_FN
+ private static boolean ContainerField_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !consumeToken(builder_, KEYWORD_FN);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (IDENTIFIER COLON)?
+ private static boolean ContainerField_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_3")) return false;
+ ContainerField_3_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // IDENTIFIER COLON
+ private static boolean ContainerField_3_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_3_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, IDENTIFIER, COLON);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ByteAlign?
+ private static boolean ContainerField_5(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_5")) return false;
+ ByteAlign(builder_, level_ + 1);
+ return true;
+ }
+
+ // (EQUAL Expr)?
+ private static boolean ContainerField_6(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_6")) return false;
+ ContainerField_6_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // EQUAL Expr
+ private static boolean ContainerField_6_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerField_6_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, EQUAL);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ContainerDeclaration* (ContainerField COMMA)* (ContainerField | ContainerDeclaration*)
+ public static boolean ContainerMembers(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, CONTAINER_MEMBERS, "");
+ result_ = ContainerMembers_0(builder_, level_ + 1);
+ result_ = result_ && ContainerMembers_1(builder_, level_ + 1);
+ result_ = result_ && ContainerMembers_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // ContainerDeclaration*
+ private static boolean ContainerMembers_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ContainerDeclaration(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ContainerMembers_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // (ContainerField COMMA)*
+ private static boolean ContainerMembers_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ContainerMembers_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ContainerMembers_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // ContainerField COMMA
+ private static boolean ContainerMembers_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ContainerField(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ContainerField | ContainerDeclaration*
+ private static boolean ContainerMembers_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ContainerField(builder_, level_ + 1);
+ if (!result_) result_ = ContainerMembers_2_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ContainerDeclaration*
+ private static boolean ContainerMembers_2_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ContainerMembers_2_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ContainerDeclaration(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ContainerMembers_2_1", pos_)) break;
+ }
+ return true;
+ }
+
+ /* ********************************************************** */
+ // TypeExpr InitList?
+ public static boolean CurlySuffixExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CurlySuffixExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, CURLY_SUFFIX_EXPR, "");
+ result_ = TypeExpr(builder_, level_ + 1);
+ result_ = result_ && CurlySuffixExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // InitList?
+ private static boolean CurlySuffixExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "CurlySuffixExpr_1")) return false;
+ InitList(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE? | KEYWORD_INLINE | KEYWORD_NOINLINE)? FnProto (SEMICOLON | Block)
+ // | (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE?)? KEYWORD_THREADLOCAL? GlobalVarDecl
+ // | KEYWORD_USINGNAMESPACE Expr SEMICOLON
+ public static boolean Decl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, DECL, "");
+ result_ = Decl_0(builder_, level_ + 1);
+ if (!result_) result_ = Decl_1(builder_, level_ + 1);
+ if (!result_) result_ = Decl_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE? | KEYWORD_INLINE | KEYWORD_NOINLINE)? FnProto (SEMICOLON | Block)
+ private static boolean Decl_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = Decl_0_0(builder_, level_ + 1);
+ result_ = result_ && FnProto(builder_, level_ + 1);
+ result_ = result_ && Decl_0_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE? | KEYWORD_INLINE | KEYWORD_NOINLINE)?
+ private static boolean Decl_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0_0")) return false;
+ Decl_0_0_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE? | KEYWORD_INLINE | KEYWORD_NOINLINE
+ private static boolean Decl_0_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_EXPORT);
+ if (!result_) result_ = Decl_0_0_0_1(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_INLINE);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_NOINLINE);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_EXTERN STRING_LITERAL_SINGLE?
+ private static boolean Decl_0_0_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0_0_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_EXTERN);
+ result_ = result_ && Decl_0_0_0_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // STRING_LITERAL_SINGLE?
+ private static boolean Decl_0_0_0_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0_0_0_1_1")) return false;
+ consumeToken(builder_, STRING_LITERAL_SINGLE);
+ return true;
+ }
+
+ // SEMICOLON | Block
+ private static boolean Decl_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_0_2")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, SEMICOLON);
+ if (!result_) result_ = Block(builder_, level_ + 1);
+ return result_;
+ }
+
+ // (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE?)? KEYWORD_THREADLOCAL? GlobalVarDecl
+ private static boolean Decl_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = Decl_1_0(builder_, level_ + 1);
+ result_ = result_ && Decl_1_1(builder_, level_ + 1);
+ result_ = result_ && GlobalVarDecl(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE?)?
+ private static boolean Decl_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1_0")) return false;
+ Decl_1_0_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_EXPORT | KEYWORD_EXTERN STRING_LITERAL_SINGLE?
+ private static boolean Decl_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_EXPORT);
+ if (!result_) result_ = Decl_1_0_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_EXTERN STRING_LITERAL_SINGLE?
+ private static boolean Decl_1_0_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1_0_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_EXTERN);
+ result_ = result_ && Decl_1_0_0_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // STRING_LITERAL_SINGLE?
+ private static boolean Decl_1_0_0_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1_0_0_1_1")) return false;
+ consumeToken(builder_, STRING_LITERAL_SINGLE);
+ return true;
+ }
+
+ // KEYWORD_THREADLOCAL?
+ private static boolean Decl_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_1_1")) return false;
+ consumeToken(builder_, KEYWORD_THREADLOCAL);
+ return true;
+ }
+
+ // KEYWORD_USINGNAMESPACE Expr SEMICOLON
+ private static boolean Decl_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Decl_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_USINGNAMESPACE);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, SEMICOLON);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ERROR LBRACE IdentifierList RBRACE
+ public static boolean ErrorSetDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ErrorSetDecl")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_ERROR)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_ERROR, LBRACE);
+ result_ = result_ && IdentifierList(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RBRACE);
+ exit_section_(builder_, marker_, ERROR_SET_DECL, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // SuffixExpr (EXCLAMATIONMARK TypeExpr)?
+ public static boolean ErrorUnionExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ErrorUnionExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, ERROR_UNION_EXPR, "");
+ result_ = SuffixExpr(builder_, level_ + 1);
+ result_ = result_ && ErrorUnionExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (EXCLAMATIONMARK TypeExpr)?
+ private static boolean ErrorUnionExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ErrorUnionExpr_1")) return false;
+ ErrorUnionExpr_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // EXCLAMATIONMARK TypeExpr
+ private static boolean ErrorUnionExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ErrorUnionExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, EXCLAMATIONMARK);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BoolOrExpr
+ public static boolean Expr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Expr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, EXPR, "");
+ result_ = BoolOrExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (ZB_ExprList_Expr COMMA)* ZB_ExprList_Expr?
+ public static boolean ExprList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ExprList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, EXPR_LIST, "");
+ result_ = ExprList_0(builder_, level_ + 1);
+ result_ = result_ && ExprList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (ZB_ExprList_Expr COMMA)*
+ private static boolean ExprList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ExprList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ExprList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ExprList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // ZB_ExprList_Expr COMMA
+ private static boolean ExprList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ExprList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_ExprList_Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ZB_ExprList_Expr?
+ private static boolean ExprList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ExprList_1")) return false;
+ ZB_ExprList_Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // DOT IDENTIFIER EQUAL Expr
+ public static boolean FieldInit(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FieldInit")) return false;
+ if (!nextTokenIs(builder_, DOT)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, DOT, IDENTIFIER, EQUAL);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, FIELD_INIT, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LPAREN ExprList RPAREN
+ public static boolean FnCallArguments(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnCallArguments")) return false;
+ if (!nextTokenIs(builder_, LPAREN)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FN_CALL_ARGUMENTS, null);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ExprList(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_FN IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
+ public static boolean FnProto(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_FN)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FN_PROTO, null);
+ result_ = consumeToken(builder_, KEYWORD_FN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, FnProto_1(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, consumeToken(builder_, LPAREN)) && result_;
+ result_ = pinned_ && report_error_(builder_, ParamDeclList(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, consumeToken(builder_, RPAREN)) && result_;
+ result_ = pinned_ && report_error_(builder_, FnProto_5(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, FnProto_6(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, FnProto_7(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, FnProto_8(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, FnProto_9(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && TypeExpr(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // IDENTIFIER?
+ private static boolean FnProto_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_1")) return false;
+ consumeToken(builder_, IDENTIFIER);
+ return true;
+ }
+
+ // ByteAlign?
+ private static boolean FnProto_5(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_5")) return false;
+ ByteAlign(builder_, level_ + 1);
+ return true;
+ }
+
+ // AddrSpace?
+ private static boolean FnProto_6(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_6")) return false;
+ AddrSpace(builder_, level_ + 1);
+ return true;
+ }
+
+ // LinkSection?
+ private static boolean FnProto_7(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_7")) return false;
+ LinkSection(builder_, level_ + 1);
+ return true;
+ }
+
+ // CallConv?
+ private static boolean FnProto_8(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_8")) return false;
+ CallConv(builder_, level_ + 1);
+ return true;
+ }
+
+ // EXCLAMATIONMARK?
+ private static boolean FnProto_9(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "FnProto_9")) return false;
+ consumeToken(builder_, EXCLAMATIONMARK);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // ForPrefix Expr (KEYWORD_ELSE Expr)?
+ public static boolean ForExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_FOR)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ForPrefix(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && ForExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, FOR_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE Expr)?
+ private static boolean ForExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForExpr_2")) return false;
+ ForExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Expr
+ private static boolean ForExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // Expr (DOT2 Expr?)?
+ public static boolean ForInput(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForInput")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FOR_INPUT, "");
+ result_ = Expr(builder_, level_ + 1);
+ result_ = result_ && ForInput_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ForInput_Recover);
+ return result_;
+ }
+
+ // (DOT2 Expr?)?
+ private static boolean ForInput_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForInput_1")) return false;
+ ForInput_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // DOT2 Expr?
+ private static boolean ForInput_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForInput_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, DOT2);
+ result_ = result_ && ForInput_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Expr?
+ private static boolean ForInput_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForInput_1_0_1")) return false;
+ Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // PIPE ZB_ForPayload_Item (COMMA ZB_ForPayload_Item)* PIPE
+ public static boolean ForPayload(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForPayload")) return false;
+ if (!nextTokenIs(builder_, PIPE)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FOR_PAYLOAD, null);
+ result_ = consumeToken(builder_, PIPE);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_ForPayload_Item(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, ForPayload_2(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && consumeToken(builder_, PIPE) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (COMMA ZB_ForPayload_Item)*
+ private static boolean ForPayload_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForPayload_2")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ForPayload_2_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ForPayload_2", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA ZB_ForPayload_Item
+ private static boolean ForPayload_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForPayload_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && ZB_ForPayload_Item(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_FOR LPAREN ZB_ForParams RPAREN ForPayload
+ public static boolean ForPrefix(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForPrefix")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_FOR)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FOR_PREFIX, null);
+ result_ = consumeTokens(builder_, 1, KEYWORD_FOR, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_ForParams(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, consumeToken(builder_, RPAREN)) && result_;
+ result_ = pinned_ && ForPayload(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // ForPrefix ZB_ForStatement_Body
+ public static boolean ForStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForStatement")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_FOR)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, FOR_STATEMENT, null);
+ result_ = ForPrefix(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ZB_ForStatement_Body(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // ForPrefix TypeExpr (KEYWORD_ELSE TypeExpr)?
+ public static boolean ForTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForTypeExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_FOR)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ForPrefix(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ result_ = result_ && ForTypeExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, FOR_TYPE_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE TypeExpr)?
+ private static boolean ForTypeExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForTypeExpr_2")) return false;
+ ForTypeExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE TypeExpr
+ private static boolean ForTypeExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ForTypeExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // VarDeclProto (EQUAL Expr)? SEMICOLON
+ public static boolean GlobalVarDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "GlobalVarDecl")) return false;
+ if (!nextTokenIs(builder_, "", KEYWORD_CONST, KEYWORD_VAR)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, GLOBAL_VAR_DECL, "");
+ result_ = VarDeclProto(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, GlobalVarDecl_1(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, SEMICOLON) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (EQUAL Expr)?
+ private static boolean GlobalVarDecl_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "GlobalVarDecl_1")) return false;
+ GlobalVarDecl_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // EQUAL Expr
+ private static boolean GlobalVarDecl_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "GlobalVarDecl_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, EQUAL);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LPAREN Expr RPAREN
+ public static boolean GroupedExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "GroupedExpr")) return false;
+ if (!nextTokenIs(builder_, LPAREN)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, GROUPED_EXPR, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (DOC_COMMENT? IDENTIFIER COMMA)* (DOC_COMMENT? IDENTIFIER)?
+ public static boolean IdentifierList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, IDENTIFIER_LIST, "");
+ result_ = IdentifierList_0(builder_, level_ + 1);
+ result_ = result_ && IdentifierList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (DOC_COMMENT? IDENTIFIER COMMA)*
+ private static boolean IdentifierList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!IdentifierList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "IdentifierList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // DOC_COMMENT? IDENTIFIER COMMA
+ private static boolean IdentifierList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = IdentifierList_0_0_0(builder_, level_ + 1);
+ result_ = result_ && consumeTokens(builder_, 0, IDENTIFIER, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // DOC_COMMENT?
+ private static boolean IdentifierList_0_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_0_0_0")) return false;
+ consumeToken(builder_, DOC_COMMENT);
+ return true;
+ }
+
+ // (DOC_COMMENT? IDENTIFIER)?
+ private static boolean IdentifierList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_1")) return false;
+ IdentifierList_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // DOC_COMMENT? IDENTIFIER
+ private static boolean IdentifierList_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = IdentifierList_1_0_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, IDENTIFIER);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // DOC_COMMENT?
+ private static boolean IdentifierList_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IdentifierList_1_0_0")) return false;
+ consumeToken(builder_, DOC_COMMENT);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // IfPrefix Expr (KEYWORD_ELSE Payload? Expr)?
+ public static boolean IfExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_IF)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = IfPrefix(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && IfExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, IF_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE Payload? Expr)?
+ private static boolean IfExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfExpr_2")) return false;
+ IfExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? Expr
+ private static boolean IfExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && IfExpr_2_0_1(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean IfExpr_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfExpr_2_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_IF ZB_IfPrefix_Operand PtrPayload?
+ public static boolean IfPrefix(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfPrefix")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_IF)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, IF_PREFIX, null);
+ result_ = consumeToken(builder_, KEYWORD_IF);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_IfPrefix_Operand(builder_, level_ + 1));
+ result_ = pinned_ && IfPrefix_2(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // PtrPayload?
+ private static boolean IfPrefix_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfPrefix_2")) return false;
+ PtrPayload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // IfPrefix ZB_IfStatement_Body
+ public static boolean IfStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfStatement")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_IF)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, IF_STATEMENT, null);
+ result_ = IfPrefix(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ZB_IfStatement_Body(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // IfPrefix TypeExpr (KEYWORD_ELSE Payload? TypeExpr)?
+ public static boolean IfTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfTypeExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_IF)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = IfPrefix(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ result_ = result_ && IfTypeExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, IF_TYPE_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE Payload? TypeExpr)?
+ private static boolean IfTypeExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfTypeExpr_2")) return false;
+ IfTypeExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? TypeExpr
+ private static boolean IfTypeExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfTypeExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && IfTypeExpr_2_0_1(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean IfTypeExpr_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "IfTypeExpr_2_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // LBRACE ZB_InitList_Body RBRACE
+ public static boolean InitList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "InitList")) return false;
+ if (!nextTokenIs(builder_, LBRACE)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, INIT_LIST, null);
+ result_ = consumeToken(builder_, LBRACE);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_InitList_Body(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RBRACE) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // BlockLabel? (Block | LoopStatement | SwitchExpr)
+ public static boolean LabeledStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledStatement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, LABELED_STATEMENT, "");
+ result_ = LabeledStatement_0(builder_, level_ + 1);
+ result_ = result_ && LabeledStatement_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // BlockLabel?
+ private static boolean LabeledStatement_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledStatement_0")) return false;
+ BlockLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ // Block | LoopStatement | SwitchExpr
+ private static boolean LabeledStatement_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledStatement_1")) return false;
+ boolean result_;
+ result_ = Block(builder_, level_ + 1);
+ if (!result_) result_ = LoopStatement(builder_, level_ + 1);
+ if (!result_) result_ = SwitchExpr(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BlockLabel Block
+ // | BlockLabel? LoopTypeExpr
+ // | BlockLabel? SwitchExpr
+ public static boolean LabeledTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, LABELED_TYPE_EXPR, "");
+ result_ = LabeledTypeExpr_0(builder_, level_ + 1);
+ if (!result_) result_ = LabeledTypeExpr_1(builder_, level_ + 1);
+ if (!result_) result_ = LabeledTypeExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // BlockLabel Block
+ private static boolean LabeledTypeExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BlockLabel(builder_, level_ + 1);
+ result_ = result_ && Block(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockLabel? LoopTypeExpr
+ private static boolean LabeledTypeExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = LabeledTypeExpr_1_0(builder_, level_ + 1);
+ result_ = result_ && LoopTypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockLabel?
+ private static boolean LabeledTypeExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr_1_0")) return false;
+ BlockLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ // BlockLabel? SwitchExpr
+ private static boolean LabeledTypeExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = LabeledTypeExpr_2_0(builder_, level_ + 1);
+ result_ = result_ && SwitchExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockLabel?
+ private static boolean LabeledTypeExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LabeledTypeExpr_2_0")) return false;
+ BlockLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_LINKSECTION LPAREN Expr RPAREN
+ public static boolean LinkSection(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LinkSection")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_LINKSECTION)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_LINKSECTION, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, LINK_SECTION, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_INLINE? (ForExpr | WhileExpr)
+ public static boolean LoopExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, LOOP_EXPR, "");
+ result_ = LoopExpr_0(builder_, level_ + 1);
+ result_ = result_ && LoopExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_INLINE?
+ private static boolean LoopExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopExpr_0")) return false;
+ consumeToken(builder_, KEYWORD_INLINE);
+ return true;
+ }
+
+ // ForExpr | WhileExpr
+ private static boolean LoopExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopExpr_1")) return false;
+ boolean result_;
+ result_ = ForExpr(builder_, level_ + 1);
+ if (!result_) result_ = WhileExpr(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_INLINE? (ForStatement | WhileStatement)
+ public static boolean LoopStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopStatement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, LOOP_STATEMENT, "");
+ result_ = LoopStatement_0(builder_, level_ + 1);
+ result_ = result_ && LoopStatement_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_INLINE?
+ private static boolean LoopStatement_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopStatement_0")) return false;
+ consumeToken(builder_, KEYWORD_INLINE);
+ return true;
+ }
+
+ // ForStatement | WhileStatement
+ private static boolean LoopStatement_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopStatement_1")) return false;
+ boolean result_;
+ result_ = ForStatement(builder_, level_ + 1);
+ if (!result_) result_ = WhileStatement(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_INLINE? (ForTypeExpr | WhileTypeExpr)
+ public static boolean LoopTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopTypeExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, LOOP_TYPE_EXPR, "");
+ result_ = LoopTypeExpr_0(builder_, level_ + 1);
+ result_ = result_ && LoopTypeExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_INLINE?
+ private static boolean LoopTypeExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopTypeExpr_0")) return false;
+ consumeToken(builder_, KEYWORD_INLINE);
+ return true;
+ }
+
+ // ForTypeExpr | WhileTypeExpr
+ private static boolean LoopTypeExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "LoopTypeExpr_1")) return false;
+ boolean result_;
+ result_ = ForTypeExpr(builder_, level_ + 1);
+ if (!result_) result_ = WhileTypeExpr(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PrefixExpr (MultiplyOp PrefixExpr)*
+ public static boolean MultiplyExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "MultiplyExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, MULTIPLY_EXPR, "");
+ result_ = PrefixExpr(builder_, level_ + 1);
+ result_ = result_ && MultiplyExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (MultiplyOp PrefixExpr)*
+ private static boolean MultiplyExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "MultiplyExpr_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!MultiplyExpr_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "MultiplyExpr_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // MultiplyOp PrefixExpr
+ private static boolean MultiplyExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "MultiplyExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = MultiplyOp(builder_, level_ + 1);
+ result_ = result_ && PrefixExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PIPE2
+ // | ASTERISK
+ // | SLASH
+ // | PERCENT
+ // | ASTERISK2
+ // | ASTERISKPERCENT
+ // | ASTERISKPIPE
+ public static boolean MultiplyOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "MultiplyOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, MULTIPLY_OP, "");
+ result_ = consumeToken(builder_, PIPE2);
+ if (!result_) result_ = consumeToken(builder_, ASTERISK);
+ if (!result_) result_ = consumeToken(builder_, SLASH);
+ if (!result_) result_ = consumeToken(builder_, PERCENT);
+ if (!result_) result_ = consumeToken(builder_, ASTERISK2);
+ if (!result_) result_ = consumeToken(builder_, ASTERISKPERCENT);
+ if (!result_) result_ = consumeToken(builder_, ASTERISKPIPE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // DOC_COMMENT? (KEYWORD_NOALIAS | KEYWORD_COMPTIME)? (IDENTIFIER COLON)? ParamType
+ // | DOT3
+ public static boolean ParamDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PARAM_DECL, "");
+ result_ = ParamDecl_0(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, DOT3);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // DOC_COMMENT? (KEYWORD_NOALIAS | KEYWORD_COMPTIME)? (IDENTIFIER COLON)? ParamType
+ private static boolean ParamDecl_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ParamDecl_0_0(builder_, level_ + 1);
+ result_ = result_ && ParamDecl_0_1(builder_, level_ + 1);
+ result_ = result_ && ParamDecl_0_2(builder_, level_ + 1);
+ result_ = result_ && ParamType(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // DOC_COMMENT?
+ private static boolean ParamDecl_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0_0")) return false;
+ consumeToken(builder_, DOC_COMMENT);
+ return true;
+ }
+
+ // (KEYWORD_NOALIAS | KEYWORD_COMPTIME)?
+ private static boolean ParamDecl_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0_1")) return false;
+ ParamDecl_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_NOALIAS | KEYWORD_COMPTIME
+ private static boolean ParamDecl_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0_1_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, KEYWORD_NOALIAS);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_COMPTIME);
+ return result_;
+ }
+
+ // (IDENTIFIER COLON)?
+ private static boolean ParamDecl_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0_2")) return false;
+ ParamDecl_0_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // IDENTIFIER COLON
+ private static boolean ParamDecl_0_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDecl_0_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, IDENTIFIER, COLON);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (ParamDecl COMMA)* ParamDecl?
+ public static boolean ParamDeclList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDeclList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PARAM_DECL_LIST, "");
+ result_ = ParamDeclList_0(builder_, level_ + 1);
+ result_ = result_ && ParamDeclList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (ParamDecl COMMA)*
+ private static boolean ParamDeclList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDeclList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ParamDeclList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ParamDeclList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // ParamDecl COMMA
+ private static boolean ParamDeclList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDeclList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ParamDecl(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ParamDecl?
+ private static boolean ParamDeclList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamDeclList_1")) return false;
+ ParamDecl(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ANYTYPE
+ // | TypeExpr
+ public static boolean ParamType(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ParamType")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PARAM_TYPE, "");
+ result_ = consumeToken(builder_, KEYWORD_ANYTYPE);
+ if (!result_) result_ = TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PIPE IDENTIFIER PIPE
+ public static boolean Payload(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Payload")) return false;
+ if (!nextTokenIs(builder_, PIPE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, PIPE, IDENTIFIER, PIPE);
+ exit_section_(builder_, marker_, PAYLOAD, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PrefixOp* PrimaryExpr
+ public static boolean PrefixExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, PREFIX_EXPR, "");
+ result_ = PrefixExpr_0(builder_, level_ + 1);
+ result_ = result_ && PrimaryExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // PrefixOp*
+ private static boolean PrefixExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixExpr_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!PrefixOp(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "PrefixExpr_0", pos_)) break;
+ }
+ return true;
+ }
+
+ /* ********************************************************** */
+ // EXCLAMATIONMARK
+ // | MINUS
+ // | TILDE
+ // | MINUSPERCENT
+ // | AMPERSAND
+ // | KEYWORD_TRY
+ // | KEYWORD_AWAIT
+ public static boolean PrefixOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PREFIX_OP, "");
+ result_ = consumeToken(builder_, EXCLAMATIONMARK);
+ if (!result_) result_ = consumeToken(builder_, MINUS);
+ if (!result_) result_ = consumeToken(builder_, TILDE);
+ if (!result_) result_ = consumeToken(builder_, MINUSPERCENT);
+ if (!result_) result_ = consumeToken(builder_, AMPERSAND);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_TRY);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_AWAIT);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // QUESTIONMARK
+ // | KEYWORD_ANYFRAME MINUSRARROW
+ // | SliceTypeStart (ByteAlign | AddrSpace | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ // | PtrTypeStart (AddrSpace | KEYWORD_ALIGN LPAREN Expr (COLON Expr COLON Expr)? RPAREN | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ // | ArrayTypeStart
+ public static boolean PrefixTypeOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PREFIX_TYPE_OP, "");
+ result_ = consumeToken(builder_, QUESTIONMARK);
+ if (!result_) result_ = parseTokens(builder_, 0, KEYWORD_ANYFRAME, MINUSRARROW);
+ if (!result_) result_ = PrefixTypeOp_2(builder_, level_ + 1);
+ if (!result_) result_ = PrefixTypeOp_3(builder_, level_ + 1);
+ if (!result_) result_ = ArrayTypeStart(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // SliceTypeStart (ByteAlign | AddrSpace | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ private static boolean PrefixTypeOp_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = SliceTypeStart(builder_, level_ + 1);
+ result_ = result_ && PrefixTypeOp_2_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (ByteAlign | AddrSpace | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ private static boolean PrefixTypeOp_2_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_2_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!PrefixTypeOp_2_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "PrefixTypeOp_2_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // ByteAlign | AddrSpace | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO
+ private static boolean PrefixTypeOp_2_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_2_1_0")) return false;
+ boolean result_;
+ result_ = ByteAlign(builder_, level_ + 1);
+ if (!result_) result_ = AddrSpace(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_CONST);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_VOLATILE);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_ALLOWZERO);
+ return result_;
+ }
+
+ // PtrTypeStart (AddrSpace | KEYWORD_ALIGN LPAREN Expr (COLON Expr COLON Expr)? RPAREN | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ private static boolean PrefixTypeOp_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = PtrTypeStart(builder_, level_ + 1);
+ result_ = result_ && PrefixTypeOp_3_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (AddrSpace | KEYWORD_ALIGN LPAREN Expr (COLON Expr COLON Expr)? RPAREN | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO)*
+ private static boolean PrefixTypeOp_3_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!PrefixTypeOp_3_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "PrefixTypeOp_3_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // AddrSpace | KEYWORD_ALIGN LPAREN Expr (COLON Expr COLON Expr)? RPAREN | KEYWORD_CONST | KEYWORD_VOLATILE | KEYWORD_ALLOWZERO
+ private static boolean PrefixTypeOp_3_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AddrSpace(builder_, level_ + 1);
+ if (!result_) result_ = PrefixTypeOp_3_1_0_1(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_CONST);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_VOLATILE);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_ALLOWZERO);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ALIGN LPAREN Expr (COLON Expr COLON Expr)? RPAREN
+ private static boolean PrefixTypeOp_3_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3_1_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, KEYWORD_ALIGN, LPAREN);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && PrefixTypeOp_3_1_0_1_3(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COLON Expr COLON Expr)?
+ private static boolean PrefixTypeOp_3_1_0_1_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3_1_0_1_3")) return false;
+ PrefixTypeOp_3_1_0_1_3_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // COLON Expr COLON Expr
+ private static boolean PrefixTypeOp_3_1_0_1_3_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrefixTypeOp_3_1_0_1_3_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // AsmExpr
+ // | IfExpr
+ // | KEYWORD_BREAK BreakLabel? Expr?
+ // | KEYWORD_COMPTIME Expr
+ // | KEYWORD_NOSUSPEND Expr
+ // | KEYWORD_CONTINUE BreakLabel? Expr?
+ // | KEYWORD_RESUME Expr
+ // | KEYWORD_RETURN Expr?
+ // | BlockLabel? LoopExpr
+ // | Block
+ // | CurlySuffixExpr
+ public static boolean PrimaryExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, PRIMARY_EXPR, "");
+ result_ = AsmExpr(builder_, level_ + 1);
+ if (!result_) result_ = IfExpr(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_2(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_3(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_4(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_5(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_6(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_7(builder_, level_ + 1);
+ if (!result_) result_ = PrimaryExpr_8(builder_, level_ + 1);
+ if (!result_) result_ = Block(builder_, level_ + 1);
+ if (!result_) result_ = CurlySuffixExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_BREAK BreakLabel? Expr?
+ private static boolean PrimaryExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_BREAK);
+ result_ = result_ && PrimaryExpr_2_1(builder_, level_ + 1);
+ result_ = result_ && PrimaryExpr_2_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BreakLabel?
+ private static boolean PrimaryExpr_2_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_2_1")) return false;
+ BreakLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ // Expr?
+ private static boolean PrimaryExpr_2_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_2_2")) return false;
+ Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_COMPTIME Expr
+ private static boolean PrimaryExpr_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_3")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_COMPTIME);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_NOSUSPEND Expr
+ private static boolean PrimaryExpr_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_4")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_NOSUSPEND);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_CONTINUE BreakLabel? Expr?
+ private static boolean PrimaryExpr_5(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_5")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_CONTINUE);
+ result_ = result_ && PrimaryExpr_5_1(builder_, level_ + 1);
+ result_ = result_ && PrimaryExpr_5_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BreakLabel?
+ private static boolean PrimaryExpr_5_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_5_1")) return false;
+ BreakLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ // Expr?
+ private static boolean PrimaryExpr_5_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_5_2")) return false;
+ Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_RESUME Expr
+ private static boolean PrimaryExpr_6(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_6")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_RESUME);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_RETURN Expr?
+ private static boolean PrimaryExpr_7(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_7")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_RETURN);
+ result_ = result_ && PrimaryExpr_7_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Expr?
+ private static boolean PrimaryExpr_7_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_7_1")) return false;
+ Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ // BlockLabel? LoopExpr
+ private static boolean PrimaryExpr_8(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_8")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = PrimaryExpr_8_0(builder_, level_ + 1);
+ result_ = result_ && LoopExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockLabel?
+ private static boolean PrimaryExpr_8_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryExpr_8_0")) return false;
+ BlockLabel(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // BUILTINIDENTIFIER FnCallArguments
+ // | CHAR_LITERAL
+ // | ContainerDecl
+ // | DOT IDENTIFIER
+ // | DOT InitList
+ // | ErrorSetDecl
+ // | FLOAT
+ // | FnProto
+ // | GroupedExpr
+ // | LabeledTypeExpr
+ // | IDENTIFIER
+ // | IfTypeExpr
+ // | INTEGER
+ // | KEYWORD_COMPTIME TypeExpr
+ // | KEYWORD_ERROR DOT IDENTIFIER
+ // | KEYWORD_ANYFRAME
+ // | KEYWORD_UNREACHABLE
+ // | StringLiteral
+ public static boolean PrimaryTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryTypeExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, PRIMARY_TYPE_EXPR, "");
+ result_ = PrimaryTypeExpr_0(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, CHAR_LITERAL);
+ if (!result_) result_ = ContainerDecl(builder_, level_ + 1);
+ if (!result_) result_ = parseTokens(builder_, 0, DOT, IDENTIFIER);
+ if (!result_) result_ = PrimaryTypeExpr_4(builder_, level_ + 1);
+ if (!result_) result_ = ErrorSetDecl(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, FLOAT);
+ if (!result_) result_ = FnProto(builder_, level_ + 1);
+ if (!result_) result_ = GroupedExpr(builder_, level_ + 1);
+ if (!result_) result_ = LabeledTypeExpr(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, IDENTIFIER);
+ if (!result_) result_ = IfTypeExpr(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, INTEGER);
+ if (!result_) result_ = PrimaryTypeExpr_13(builder_, level_ + 1);
+ if (!result_) result_ = parseTokens(builder_, 0, KEYWORD_ERROR, DOT, IDENTIFIER);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_ANYFRAME);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_UNREACHABLE);
+ if (!result_) result_ = StringLiteral(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // BUILTINIDENTIFIER FnCallArguments
+ private static boolean PrimaryTypeExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryTypeExpr_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, BUILTINIDENTIFIER);
+ result_ = result_ && FnCallArguments(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // DOT InitList
+ private static boolean PrimaryTypeExpr_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryTypeExpr_4")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, DOT);
+ result_ = result_ && InitList(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_COMPTIME TypeExpr
+ private static boolean PrimaryTypeExpr_13(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PrimaryTypeExpr_13")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_COMPTIME);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PIPE (ASTERISK? IDENTIFIER COMMA)* (ASTERISK? IDENTIFIER) PIPE
+ public static boolean PtrIndexPayload(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload")) return false;
+ if (!nextTokenIs(builder_, PIPE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, PIPE);
+ result_ = result_ && PtrIndexPayload_1(builder_, level_ + 1);
+ result_ = result_ && PtrIndexPayload_2(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, PIPE);
+ exit_section_(builder_, marker_, PTR_INDEX_PAYLOAD, result_);
+ return result_;
+ }
+
+ // (ASTERISK? IDENTIFIER COMMA)*
+ private static boolean PtrIndexPayload_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!PtrIndexPayload_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "PtrIndexPayload_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // ASTERISK? IDENTIFIER COMMA
+ private static boolean PtrIndexPayload_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = PtrIndexPayload_1_0_0(builder_, level_ + 1);
+ result_ = result_ && consumeTokens(builder_, 0, IDENTIFIER, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ASTERISK?
+ private static boolean PtrIndexPayload_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload_1_0_0")) return false;
+ consumeToken(builder_, ASTERISK);
+ return true;
+ }
+
+ // ASTERISK? IDENTIFIER
+ private static boolean PtrIndexPayload_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = PtrIndexPayload_2_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, IDENTIFIER);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ASTERISK?
+ private static boolean PtrIndexPayload_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrIndexPayload_2_0")) return false;
+ consumeToken(builder_, ASTERISK);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // PIPE ASTERISK? IDENTIFIER PIPE
+ public static boolean PtrPayload(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrPayload")) return false;
+ if (!nextTokenIs(builder_, PIPE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, PIPE);
+ result_ = result_ && PtrPayload_1(builder_, level_ + 1);
+ result_ = result_ && consumeTokens(builder_, 0, IDENTIFIER, PIPE);
+ exit_section_(builder_, marker_, PTR_PAYLOAD, result_);
+ return result_;
+ }
+
+ // ASTERISK?
+ private static boolean PtrPayload_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrPayload_1")) return false;
+ consumeToken(builder_, ASTERISK);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // ASTERISK
+ // | ASTERISK2
+ // | LBRACKET ASTERISK ("c" | COLON Expr)? RBRACKET
+ public static boolean PtrTypeStart(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrTypeStart")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, PTR_TYPE_START, "");
+ result_ = consumeToken(builder_, ASTERISK);
+ if (!result_) result_ = consumeToken(builder_, ASTERISK2);
+ if (!result_) result_ = PtrTypeStart_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // LBRACKET ASTERISK ("c" | COLON Expr)? RBRACKET
+ private static boolean PtrTypeStart_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrTypeStart_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, LBRACKET, ASTERISK);
+ result_ = result_ && PtrTypeStart_2_2(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RBRACKET);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ("c" | COLON Expr)?
+ private static boolean PtrTypeStart_2_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrTypeStart_2_2")) return false;
+ PtrTypeStart_2_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // "c" | COLON Expr
+ private static boolean PtrTypeStart_2_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrTypeStart_2_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, "c");
+ if (!result_) result_ = PtrTypeStart_2_2_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COLON Expr
+ private static boolean PtrTypeStart_2_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PtrTypeStart_2_2_0_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // CONTAINER_DOC_COMMENT? ContainerMembers?
+ static boolean Root(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Root")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = Root_0(builder_, level_ + 1);
+ result_ = result_ && Root_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // CONTAINER_DOC_COMMENT?
+ private static boolean Root_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Root_0")) return false;
+ consumeToken(builder_, CONTAINER_DOC_COMMENT);
+ return true;
+ }
+
+ // ContainerMembers?
+ private static boolean Root_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Root_1")) return false;
+ ContainerMembers(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // Expr (AssignOp Expr)?
+ public static boolean SingleAssignExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SingleAssignExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, SINGLE_ASSIGN_EXPR, "");
+ result_ = Expr(builder_, level_ + 1);
+ result_ = result_ && SingleAssignExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (AssignOp Expr)?
+ private static boolean SingleAssignExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SingleAssignExpr_1")) return false;
+ SingleAssignExpr_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // AssignOp Expr
+ private static boolean SingleAssignExpr_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SingleAssignExpr_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignOp(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LBRACKET (COLON Expr)? RBRACKET
+ public static boolean SliceTypeStart(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SliceTypeStart")) return false;
+ if (!nextTokenIs(builder_, LBRACKET)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, LBRACKET);
+ result_ = result_ && SliceTypeStart_1(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RBRACKET);
+ exit_section_(builder_, marker_, SLICE_TYPE_START, result_);
+ return result_;
+ }
+
+ // (COLON Expr)?
+ private static boolean SliceTypeStart_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SliceTypeStart_1")) return false;
+ SliceTypeStart_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // COLON Expr
+ private static boolean SliceTypeStart_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SliceTypeStart_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_COMPTIME ComptimeStatement
+ // | KEYWORD_NOSUSPEND BlockExprStatement
+ // | KEYWORD_SUSPEND BlockExprStatement
+ // | KEYWORD_DEFER BlockExprStatement
+ // | KEYWORD_ERRDEFER Payload? BlockExprStatement
+ // | IfStatement
+ // | LabeledStatement
+ // | VarDeclExprStatement
+ public static boolean Statement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, STATEMENT, "");
+ result_ = Statement_0(builder_, level_ + 1);
+ if (!result_) result_ = Statement_1(builder_, level_ + 1);
+ if (!result_) result_ = Statement_2(builder_, level_ + 1);
+ if (!result_) result_ = Statement_3(builder_, level_ + 1);
+ if (!result_) result_ = Statement_4(builder_, level_ + 1);
+ if (!result_) result_ = IfStatement(builder_, level_ + 1);
+ if (!result_) result_ = LabeledStatement(builder_, level_ + 1);
+ if (!result_) result_ = VarDeclExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_COMPTIME ComptimeStatement
+ private static boolean Statement_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_COMPTIME);
+ result_ = result_ && ComptimeStatement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_NOSUSPEND BlockExprStatement
+ private static boolean Statement_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_NOSUSPEND);
+ result_ = result_ && BlockExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_SUSPEND BlockExprStatement
+ private static boolean Statement_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_SUSPEND);
+ result_ = result_ && BlockExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_DEFER BlockExprStatement
+ private static boolean Statement_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_3")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_DEFER);
+ result_ = result_ && BlockExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ERRDEFER Payload? BlockExprStatement
+ private static boolean Statement_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_4")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ERRDEFER);
+ result_ = result_ && Statement_4_1(builder_, level_ + 1);
+ result_ = result_ && BlockExprStatement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean Statement_4_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Statement_4_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // (StringLiteral COMMA)* StringLiteral?
+ public static boolean StringList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "StringList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, STRING_LIST, "");
+ result_ = StringList_0(builder_, level_ + 1);
+ result_ = result_ && StringList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (StringLiteral COMMA)*
+ private static boolean StringList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "StringList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!StringList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "StringList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // StringLiteral COMMA
+ private static boolean StringList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "StringList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = StringLiteral(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // StringLiteral?
+ private static boolean StringList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "StringList_1")) return false;
+ StringLiteral(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // STRING_LITERAL_SINGLE | STRING_LITERAL_MULTI
+ public static boolean StringLiteral(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "StringLiteral")) return false;
+ if (!nextTokenIs(builder_, "", STRING_LITERAL_MULTI, STRING_LITERAL_SINGLE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, STRING_LITERAL, "");
+ result_ = consumeToken(builder_, STRING_LITERAL_SINGLE);
+ if (!result_) result_ = consumeToken(builder_, STRING_LITERAL_MULTI);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_ASYNC PrimaryTypeExpr SuffixOp* FnCallArguments
+ // | PrimaryTypeExpr (SuffixOp | FnCallArguments)*
+ public static boolean SuffixExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, SUFFIX_EXPR, "");
+ result_ = SuffixExpr_0(builder_, level_ + 1);
+ if (!result_) result_ = SuffixExpr_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // KEYWORD_ASYNC PrimaryTypeExpr SuffixOp* FnCallArguments
+ private static boolean SuffixExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ASYNC);
+ result_ = result_ && PrimaryTypeExpr(builder_, level_ + 1);
+ result_ = result_ && SuffixExpr_0_2(builder_, level_ + 1);
+ result_ = result_ && FnCallArguments(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // SuffixOp*
+ private static boolean SuffixExpr_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr_0_2")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!SuffixOp(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SuffixExpr_0_2", pos_)) break;
+ }
+ return true;
+ }
+
+ // PrimaryTypeExpr (SuffixOp | FnCallArguments)*
+ private static boolean SuffixExpr_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = PrimaryTypeExpr(builder_, level_ + 1);
+ result_ = result_ && SuffixExpr_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (SuffixOp | FnCallArguments)*
+ private static boolean SuffixExpr_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr_1_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!SuffixExpr_1_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SuffixExpr_1_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // SuffixOp | FnCallArguments
+ private static boolean SuffixExpr_1_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixExpr_1_1_0")) return false;
+ boolean result_;
+ result_ = SuffixOp(builder_, level_ + 1);
+ if (!result_) result_ = FnCallArguments(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
+ // | DOT IDENTIFIER
+ // | DOTASTERISK
+ // | DOTQUESTIONMARK
+ public static boolean SuffixOp(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SUFFIX_OP, "");
+ result_ = SuffixOp_0(builder_, level_ + 1);
+ if (!result_) result_ = parseTokens(builder_, 0, DOT, IDENTIFIER);
+ if (!result_) result_ = consumeToken(builder_, DOTASTERISK);
+ if (!result_) result_ = consumeToken(builder_, DOTQUESTIONMARK);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
+ private static boolean SuffixOp_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, LBRACKET);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && SuffixOp_0_2(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RBRACKET);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (DOT2 (Expr? (COLON Expr)?)?)?
+ private static boolean SuffixOp_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2")) return false;
+ SuffixOp_0_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // DOT2 (Expr? (COLON Expr)?)?
+ private static boolean SuffixOp_0_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, DOT2);
+ result_ = result_ && SuffixOp_0_2_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (Expr? (COLON Expr)?)?
+ private static boolean SuffixOp_0_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0_1")) return false;
+ SuffixOp_0_2_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // Expr? (COLON Expr)?
+ private static boolean SuffixOp_0_2_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = SuffixOp_0_2_0_1_0_0(builder_, level_ + 1);
+ result_ = result_ && SuffixOp_0_2_0_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Expr?
+ private static boolean SuffixOp_0_2_0_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0_1_0_0")) return false;
+ Expr(builder_, level_ + 1);
+ return true;
+ }
+
+ // (COLON Expr)?
+ private static boolean SuffixOp_0_2_0_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0_1_0_1")) return false;
+ SuffixOp_0_2_0_1_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // COLON Expr
+ private static boolean SuffixOp_0_2_0_1_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SuffixOp_0_2_0_1_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // SwitchItem (COMMA SwitchItem)* COMMA?
+ // | KEYWORD_ELSE
+ public static boolean SwitchCase(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchCase")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SWITCH_CASE, "");
+ result_ = SwitchCase_0(builder_, level_ + 1);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_ELSE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // SwitchItem (COMMA SwitchItem)* COMMA?
+ private static boolean SwitchCase_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchCase_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = SwitchItem(builder_, level_ + 1);
+ result_ = result_ && SwitchCase_0_1(builder_, level_ + 1);
+ result_ = result_ && SwitchCase_0_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COMMA SwitchItem)*
+ private static boolean SwitchCase_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchCase_0_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!SwitchCase_0_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SwitchCase_0_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA SwitchItem
+ private static boolean SwitchCase_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchCase_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && SwitchItem(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA?
+ private static boolean SwitchCase_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchCase_0_2")) return false;
+ consumeToken(builder_, COMMA);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_SWITCH LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
+ public static boolean SwitchExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_SWITCH)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SWITCH_EXPR, null);
+ result_ = consumeTokens(builder_, 1, KEYWORD_SWITCH, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, Expr(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, consumeTokens(builder_, -1, RPAREN, LBRACE)) && result_;
+ result_ = pinned_ && report_error_(builder_, SwitchProngList(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && consumeToken(builder_, RBRACE) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // Expr (DOT3 Expr)?
+ public static boolean SwitchItem(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchItem")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SWITCH_ITEM, "");
+ result_ = Expr(builder_, level_ + 1);
+ result_ = result_ && SwitchItem_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (DOT3 Expr)?
+ private static boolean SwitchItem_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchItem_1")) return false;
+ SwitchItem_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // DOT3 Expr
+ private static boolean SwitchItem_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchItem_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, DOT3);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_INLINE? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr
+ public static boolean SwitchProng(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProng")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SWITCH_PRONG, "");
+ result_ = SwitchProng_0(builder_, level_ + 1);
+ result_ = result_ && SwitchCase(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, EQUALRARROW);
+ pinned_ = result_; // pin = 3
+ result_ = result_ && report_error_(builder_, SwitchProng_3(builder_, level_ + 1));
+ result_ = pinned_ && SingleAssignExpr(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // KEYWORD_INLINE?
+ private static boolean SwitchProng_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProng_0")) return false;
+ consumeToken(builder_, KEYWORD_INLINE);
+ return true;
+ }
+
+ // PtrIndexPayload?
+ private static boolean SwitchProng_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProng_3")) return false;
+ PtrIndexPayload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // (ZB_SwitchProngList_SwitchProng COMMA)* ZB_SwitchProngList_SwitchProng?
+ public static boolean SwitchProngList(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProngList")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, SWITCH_PRONG_LIST, "");
+ result_ = SwitchProngList_0(builder_, level_ + 1);
+ result_ = result_ && SwitchProngList_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // (ZB_SwitchProngList_SwitchProng COMMA)*
+ private static boolean SwitchProngList_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProngList_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!SwitchProngList_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SwitchProngList_0", pos_)) break;
+ }
+ return true;
+ }
+
+ // ZB_SwitchProngList_SwitchProng COMMA
+ private static boolean SwitchProngList_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProngList_0_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_SwitchProngList_SwitchProng(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, COMMA);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ZB_SwitchProngList_SwitchProng?
+ private static boolean SwitchProngList_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SwitchProngList_1")) return false;
+ ZB_SwitchProngList_SwitchProng(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_TEST (STRING_LITERAL_SINGLE | IDENTIFIER)? Block
+ public static boolean TestDecl(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "TestDecl")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_TEST)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, TEST_DECL, null);
+ result_ = consumeToken(builder_, KEYWORD_TEST);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, TestDecl_1(builder_, level_ + 1));
+ result_ = pinned_ && Block(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (STRING_LITERAL_SINGLE | IDENTIFIER)?
+ private static boolean TestDecl_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "TestDecl_1")) return false;
+ TestDecl_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // STRING_LITERAL_SINGLE | IDENTIFIER
+ private static boolean TestDecl_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "TestDecl_1_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, STRING_LITERAL_SINGLE);
+ if (!result_) result_ = consumeToken(builder_, IDENTIFIER);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // PrefixTypeOp* ErrorUnionExpr
+ public static boolean TypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "TypeExpr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, TYPE_EXPR, "");
+ result_ = TypeExpr_0(builder_, level_ + 1);
+ result_ = result_ && ErrorUnionExpr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // PrefixTypeOp*
+ private static boolean TypeExpr_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "TypeExpr_0")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!PrefixTypeOp(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "TypeExpr_0", pos_)) break;
+ }
+ return true;
+ }
+
+ /* ********************************************************** */
+ // VarDeclProto (COMMA (VarDeclProto | Expr))* EQUAL Expr SEMICOLON
+ // | Expr (AssignOp Expr | (COMMA (VarDeclProto | Expr))+ EQUAL Expr)? SEMICOLON
+ public static boolean VarDeclExprStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, VAR_DECL_EXPR_STATEMENT, "");
+ result_ = VarDeclExprStatement_0(builder_, level_ + 1);
+ if (!result_) result_ = VarDeclExprStatement_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // VarDeclProto (COMMA (VarDeclProto | Expr))* EQUAL Expr SEMICOLON
+ private static boolean VarDeclExprStatement_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = VarDeclProto(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, VarDeclExprStatement_0_1(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, consumeToken(builder_, EQUAL)) && result_;
+ result_ = pinned_ && report_error_(builder_, Expr(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && consumeToken(builder_, SEMICOLON) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (COMMA (VarDeclProto | Expr))*
+ private static boolean VarDeclExprStatement_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_0_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!VarDeclExprStatement_0_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "VarDeclExprStatement_0_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA (VarDeclProto | Expr)
+ private static boolean VarDeclExprStatement_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_0_1_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, COMMA);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && VarDeclExprStatement_0_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // VarDeclProto | Expr
+ private static boolean VarDeclExprStatement_0_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_0_1_0_1")) return false;
+ boolean result_;
+ result_ = VarDeclProto(builder_, level_ + 1);
+ if (!result_) result_ = Expr(builder_, level_ + 1);
+ return result_;
+ }
+
+ // Expr (AssignOp Expr | (COMMA (VarDeclProto | Expr))+ EQUAL Expr)? SEMICOLON
+ private static boolean VarDeclExprStatement_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = Expr(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, VarDeclExprStatement_1_1(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, SEMICOLON) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (AssignOp Expr | (COMMA (VarDeclProto | Expr))+ EQUAL Expr)?
+ private static boolean VarDeclExprStatement_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1")) return false;
+ VarDeclExprStatement_1_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // AssignOp Expr | (COMMA (VarDeclProto | Expr))+ EQUAL Expr
+ private static boolean VarDeclExprStatement_1_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = VarDeclExprStatement_1_1_0_0(builder_, level_ + 1);
+ if (!result_) result_ = VarDeclExprStatement_1_1_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // AssignOp Expr
+ private static boolean VarDeclExprStatement_1_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = AssignOp(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (COMMA (VarDeclProto | Expr))+ EQUAL Expr
+ private static boolean VarDeclExprStatement_1_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0_1")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = VarDeclExprStatement_1_1_0_1_0(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, consumeToken(builder_, EQUAL));
+ result_ = pinned_ && Expr(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // (COMMA (VarDeclProto | Expr))+
+ private static boolean VarDeclExprStatement_1_1_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = VarDeclExprStatement_1_1_0_1_0_0(builder_, level_ + 1);
+ while (result_) {
+ int pos_ = current_position_(builder_);
+ if (!VarDeclExprStatement_1_1_0_1_0_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "VarDeclExprStatement_1_1_0_1_0", pos_)) break;
+ }
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA (VarDeclProto | Expr)
+ private static boolean VarDeclExprStatement_1_1_0_1_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0_1_0_0")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, COMMA);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && VarDeclExprStatement_1_1_0_1_0_0_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // VarDeclProto | Expr
+ private static boolean VarDeclExprStatement_1_1_0_1_0_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclExprStatement_1_1_0_1_0_0_1")) return false;
+ boolean result_;
+ result_ = VarDeclProto(builder_, level_ + 1);
+ if (!result_) result_ = Expr(builder_, level_ + 1);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // (KEYWORD_CONST | KEYWORD_VAR) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection?
+ public static boolean VarDeclProto(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto")) return false;
+ if (!nextTokenIs(builder_, "", KEYWORD_CONST, KEYWORD_VAR)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, VAR_DECL_PROTO, "");
+ result_ = VarDeclProto_0(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, consumeToken(builder_, IDENTIFIER));
+ result_ = pinned_ && report_error_(builder_, VarDeclProto_2(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, VarDeclProto_3(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && report_error_(builder_, VarDeclProto_4(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && VarDeclProto_5(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // KEYWORD_CONST | KEYWORD_VAR
+ private static boolean VarDeclProto_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, KEYWORD_CONST);
+ if (!result_) result_ = consumeToken(builder_, KEYWORD_VAR);
+ return result_;
+ }
+
+ // (COLON TypeExpr)?
+ private static boolean VarDeclProto_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_2")) return false;
+ VarDeclProto_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // COLON TypeExpr
+ private static boolean VarDeclProto_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COLON);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ByteAlign?
+ private static boolean VarDeclProto_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_3")) return false;
+ ByteAlign(builder_, level_ + 1);
+ return true;
+ }
+
+ // AddrSpace?
+ private static boolean VarDeclProto_4(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_4")) return false;
+ AddrSpace(builder_, level_ + 1);
+ return true;
+ }
+
+ // LinkSection?
+ private static boolean VarDeclProto_5(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "VarDeclProto_5")) return false;
+ LinkSection(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // COLON LPAREN AssignExpr RPAREN
+ public static boolean WhileContinueExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileContinueExpr")) return false;
+ if (!nextTokenIs(builder_, COLON)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeTokens(builder_, 0, COLON, LPAREN);
+ result_ = result_ && AssignExpr(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, RPAREN);
+ exit_section_(builder_, marker_, WHILE_CONTINUE_EXPR, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // WhilePrefix Expr (KEYWORD_ELSE Payload? Expr)?
+ public static boolean WhileExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_WHILE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = WhilePrefix(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ result_ = result_ && WhileExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, WHILE_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE Payload? Expr)?
+ private static boolean WhileExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileExpr_2")) return false;
+ WhileExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? Expr
+ private static boolean WhileExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && WhileExpr_2_0_1(builder_, level_ + 1);
+ result_ = result_ && Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean WhileExpr_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileExpr_2_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // KEYWORD_WHILE ZB_WhilePrefix_Operand PtrPayload? WhileContinueExpr?
+ public static boolean WhilePrefix(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhilePrefix")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_WHILE)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, WHILE_PREFIX, null);
+ result_ = consumeToken(builder_, KEYWORD_WHILE);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, ZB_WhilePrefix_Operand(builder_, level_ + 1));
+ result_ = pinned_ && report_error_(builder_, WhilePrefix_2(builder_, level_ + 1)) && result_;
+ result_ = pinned_ && WhilePrefix_3(builder_, level_ + 1) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ // PtrPayload?
+ private static boolean WhilePrefix_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhilePrefix_2")) return false;
+ PtrPayload(builder_, level_ + 1);
+ return true;
+ }
+
+ // WhileContinueExpr?
+ private static boolean WhilePrefix_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhilePrefix_3")) return false;
+ WhileContinueExpr(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // WhilePrefix ZB_WhileStatement_Body
+ public static boolean WhileStatement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileStatement")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_WHILE)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, WHILE_STATEMENT, null);
+ result_ = WhilePrefix(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && ZB_WhileStatement_Body(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // WhilePrefix TypeExpr (KEYWORD_ELSE Payload? TypeExpr)?
+ public static boolean WhileTypeExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileTypeExpr")) return false;
+ if (!nextTokenIs(builder_, KEYWORD_WHILE)) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = WhilePrefix(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ result_ = result_ && WhileTypeExpr_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, WHILE_TYPE_EXPR, result_);
+ return result_;
+ }
+
+ // (KEYWORD_ELSE Payload? TypeExpr)?
+ private static boolean WhileTypeExpr_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileTypeExpr_2")) return false;
+ WhileTypeExpr_2_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? TypeExpr
+ private static boolean WhileTypeExpr_2_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileTypeExpr_2_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && WhileTypeExpr_2_0_1(builder_, level_ + 1);
+ result_ = result_ && TypeExpr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean WhileTypeExpr_2_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "WhileTypeExpr_2_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // AssignExpr SEMICOLON
+ static boolean ZB_BlockExprStatement_AssignExpr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_BlockExprStatement_AssignExpr")) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = AssignExpr(builder_, level_ + 1);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && consumeToken(builder_, SEMICOLON);
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // Statement*
+ static boolean ZB_Block_Statement(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_Block_Statement")) return false;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!Statement(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ZB_Block_Statement", pos_)) break;
+ }
+ exit_section_(builder_, level_, marker_, true, false, ZigParser::ZB_Block_Statement_recover);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // !(RBRACE)
+ static boolean ZB_Block_Statement_recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_Block_Statement_recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !consumeToken(builder_, RBRACE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ContainerMembers
+ static boolean ZB_ContainerDeclAuto_ContainerMembers(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ContainerDeclAuto_ContainerMembers")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = ContainerMembers(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ContainerDeclAuto_ContainerMembers_recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(RBRACE)
+ static boolean ZB_ContainerDeclAuto_ContainerMembers_recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ContainerDeclAuto_ContainerMembers_recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !consumeToken(builder_, RBRACE);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // Expr
+ static boolean ZB_ContainerDeclType_Expr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ContainerDeclType_Expr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = Expr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ContainerDeclType_Expr_recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(RPAREN)
+ static boolean ZB_ContainerDeclType_Expr_recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ContainerDeclType_Expr_recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !consumeToken(builder_, RPAREN);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // Expr
+ static boolean ZB_ExprList_Expr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ExprList_Expr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = Expr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ExprList_recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(RPAREN | COMMA)
+ static boolean ZB_ExprList_recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ExprList_recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !ZB_ExprList_recover_0(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // RPAREN | COMMA
+ private static boolean ZB_ExprList_recover_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ExprList_recover_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, RPAREN);
+ if (!result_) result_ = consumeToken(builder_, COMMA);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(COMMA | RPAREN)
+ static boolean ZB_ForInput_Recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForInput_Recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !ZB_ForInput_Recover_0(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // COMMA | RPAREN
+ private static boolean ZB_ForInput_Recover_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForInput_Recover_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, COMMA);
+ if (!result_) result_ = consumeToken(builder_, RPAREN);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ForInput (COMMA ForInput)* COMMA?
+ static boolean ZB_ForParams(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForParams")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = ForInput(builder_, level_ + 1);
+ result_ = result_ && ZB_ForParams_1(builder_, level_ + 1);
+ result_ = result_ && ZB_ForParams_2(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ForParams_Recover);
+ return result_;
+ }
+
+ // (COMMA ForInput)*
+ private static boolean ZB_ForParams_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForParams_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ZB_ForParams_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ZB_ForParams_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA ForInput
+ private static boolean ZB_ForParams_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForParams_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && ForInput(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA?
+ private static boolean ZB_ForParams_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForParams_2")) return false;
+ consumeToken(builder_, COMMA);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // !(RPAREN)
+ static boolean ZB_ForParams_Recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForParams_Recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !consumeToken(builder_, RPAREN);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // ASTERISK? IDENTIFIER
+ static boolean ZB_ForPayload_Item(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForPayload_Item")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = ZB_ForPayload_Item_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, IDENTIFIER);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_ForPayload_Recover);
+ return result_;
+ }
+
+ // ASTERISK?
+ private static boolean ZB_ForPayload_Item_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForPayload_Item_0")) return false;
+ consumeToken(builder_, ASTERISK);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // !(COMMA | PIPE)
+ static boolean ZB_ForPayload_Recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForPayload_Recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !ZB_ForPayload_Recover_0(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // COMMA | PIPE
+ private static boolean ZB_ForPayload_Recover_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForPayload_Recover_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, COMMA);
+ if (!result_) result_ = consumeToken(builder_, PIPE);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // BlockExpr ( KEYWORD_ELSE Statement )?
+ // | AssignExpr ( SEMICOLON | KEYWORD_ELSE Statement )
+ static boolean ZB_ForStatement_Body(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_ForStatement_Body_0(builder_, level_ + 1);
+ if (!result_) result_ = ZB_ForStatement_Body_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockExpr ( KEYWORD_ELSE Statement )?
+ private static boolean ZB_ForStatement_Body_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BlockExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_ForStatement_Body_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ( KEYWORD_ELSE Statement )?
+ private static boolean ZB_ForStatement_Body_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_0_1")) return false;
+ ZB_ForStatement_Body_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Statement
+ private static boolean ZB_ForStatement_Body_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // AssignExpr ( SEMICOLON | KEYWORD_ELSE Statement )
+ private static boolean ZB_ForStatement_Body_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_ForStatement_Body_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // SEMICOLON | KEYWORD_ELSE Statement
+ private static boolean ZB_ForStatement_Body_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, SEMICOLON);
+ if (!result_) result_ = ZB_ForStatement_Body_1_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ELSE Statement
+ private static boolean ZB_ForStatement_Body_1_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_ForStatement_Body_1_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LPAREN Expr RPAREN
+ static boolean ZB_IfPrefix_Operand(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfPrefix_Operand")) return false;
+ if (!nextTokenIs(builder_, LPAREN)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, Expr(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // BlockExpr ( KEYWORD_ELSE Payload? Statement )?
+ // | AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement )
+ static boolean ZB_IfStatement_Body(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_IfStatement_Body_0(builder_, level_ + 1);
+ if (!result_) result_ = ZB_IfStatement_Body_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockExpr ( KEYWORD_ELSE Payload? Statement )?
+ private static boolean ZB_IfStatement_Body_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BlockExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_IfStatement_Body_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ( KEYWORD_ELSE Payload? Statement )?
+ private static boolean ZB_IfStatement_Body_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_0_1")) return false;
+ ZB_IfStatement_Body_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_IfStatement_Body_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && ZB_IfStatement_Body_0_1_0_1(builder_, level_ + 1);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean ZB_IfStatement_Body_0_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_0_1_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ // AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement )
+ private static boolean ZB_IfStatement_Body_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_IfStatement_Body_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // SEMICOLON | KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_IfStatement_Body_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, SEMICOLON);
+ if (!result_) result_ = ZB_IfStatement_Body_1_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_IfStatement_Body_1_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_1_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && ZB_IfStatement_Body_1_1_1_1(builder_, level_ + 1);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean ZB_IfStatement_Body_1_1_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_IfStatement_Body_1_1_1_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // FieldInit (COMMA ZB_InitList_FieldInit)* COMMA?
+ // | Expr (COMMA ZB_InitList_Expr)* COMMA?
+ // | ()
+ static boolean ZB_InitList_Body(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_InitList_Body_0(builder_, level_ + 1);
+ if (!result_) result_ = ZB_InitList_Body_1(builder_, level_ + 1);
+ if (!result_) result_ = ZB_InitList_Body_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // FieldInit (COMMA ZB_InitList_FieldInit)* COMMA?
+ private static boolean ZB_InitList_Body_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = FieldInit(builder_, level_ + 1);
+ result_ = result_ && ZB_InitList_Body_0_1(builder_, level_ + 1);
+ result_ = result_ && ZB_InitList_Body_0_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COMMA ZB_InitList_FieldInit)*
+ private static boolean ZB_InitList_Body_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_0_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ZB_InitList_Body_0_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ZB_InitList_Body_0_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA ZB_InitList_FieldInit
+ private static boolean ZB_InitList_Body_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && ZB_InitList_FieldInit(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA?
+ private static boolean ZB_InitList_Body_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_0_2")) return false;
+ consumeToken(builder_, COMMA);
+ return true;
+ }
+
+ // Expr (COMMA ZB_InitList_Expr)* COMMA?
+ private static boolean ZB_InitList_Body_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = Expr(builder_, level_ + 1);
+ result_ = result_ && ZB_InitList_Body_1_1(builder_, level_ + 1);
+ result_ = result_ && ZB_InitList_Body_1_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (COMMA ZB_InitList_Expr)*
+ private static boolean ZB_InitList_Body_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_1_1")) return false;
+ while (true) {
+ int pos_ = current_position_(builder_);
+ if (!ZB_InitList_Body_1_1_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "ZB_InitList_Body_1_1", pos_)) break;
+ }
+ return true;
+ }
+
+ // COMMA ZB_InitList_Expr
+ private static boolean ZB_InitList_Body_1_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_1_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, COMMA);
+ result_ = result_ && ZB_InitList_Expr(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // COMMA?
+ private static boolean ZB_InitList_Body_1_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Body_1_2")) return false;
+ consumeToken(builder_, COMMA);
+ return true;
+ }
+
+ // ()
+ private static boolean ZB_InitList_Body_2(PsiBuilder builder_, int level_) {
+ return true;
+ }
+
+ /* ********************************************************** */
+ // Expr
+ static boolean ZB_InitList_Expr(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Expr")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = Expr(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_InitList_Recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // FieldInit
+ static boolean ZB_InitList_FieldInit(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_FieldInit")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = FieldInit(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_InitList_Recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(COMMA | RBRACE)
+ static boolean ZB_InitList_Recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !ZB_InitList_Recover_0(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // COMMA | RBRACE
+ private static boolean ZB_InitList_Recover_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_InitList_Recover_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, COMMA);
+ if (!result_) result_ = consumeToken(builder_, RBRACE);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // !(COMMA | RBRACE)
+ static boolean ZB_SwitchProngList_Recover(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_SwitchProngList_Recover")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NOT_);
+ result_ = !ZB_SwitchProngList_Recover_0(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, null);
+ return result_;
+ }
+
+ // COMMA | RBRACE
+ private static boolean ZB_SwitchProngList_Recover_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_SwitchProngList_Recover_0")) return false;
+ boolean result_;
+ result_ = consumeToken(builder_, COMMA);
+ if (!result_) result_ = consumeToken(builder_, RBRACE);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // SwitchProng
+ static boolean ZB_SwitchProngList_SwitchProng(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_SwitchProngList_SwitchProng")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = SwitchProng(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, result_, false, ZigParser::ZB_SwitchProngList_Recover);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // LPAREN Expr RPAREN
+ static boolean ZB_WhilePrefix_Operand(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhilePrefix_Operand")) return false;
+ if (!nextTokenIs(builder_, LPAREN)) return false;
+ boolean result_, pinned_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_);
+ result_ = consumeToken(builder_, LPAREN);
+ pinned_ = result_; // pin = 1
+ result_ = result_ && report_error_(builder_, Expr(builder_, level_ + 1));
+ result_ = pinned_ && consumeToken(builder_, RPAREN) && result_;
+ exit_section_(builder_, level_, marker_, result_, pinned_, null);
+ return result_ || pinned_;
+ }
+
+ /* ********************************************************** */
+ // BlockExpr ( KEYWORD_ELSE Payload? Statement )?
+ // | AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement)
+ static boolean ZB_WhileStatement_Body(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = ZB_WhileStatement_Body_0(builder_, level_ + 1);
+ if (!result_) result_ = ZB_WhileStatement_Body_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // BlockExpr ( KEYWORD_ELSE Payload? Statement )?
+ private static boolean ZB_WhileStatement_Body_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = BlockExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_WhileStatement_Body_0_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // ( KEYWORD_ELSE Payload? Statement )?
+ private static boolean ZB_WhileStatement_Body_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_0_1")) return false;
+ ZB_WhileStatement_Body_0_1_0(builder_, level_ + 1);
+ return true;
+ }
+
+ // KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_WhileStatement_Body_0_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_0_1_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && ZB_WhileStatement_Body_0_1_0_1(builder_, level_ + 1);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean ZB_WhileStatement_Body_0_1_0_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_0_1_0_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+ // AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement)
+ private static boolean ZB_WhileStatement_Body_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = AssignExpr(builder_, level_ + 1);
+ result_ = result_ && ZB_WhileStatement_Body_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // SEMICOLON | KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_WhileStatement_Body_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, SEMICOLON);
+ if (!result_) result_ = ZB_WhileStatement_Body_1_1_1(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // KEYWORD_ELSE Payload? Statement
+ private static boolean ZB_WhileStatement_Body_1_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_1_1_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, KEYWORD_ELSE);
+ result_ = result_ && ZB_WhileStatement_Body_1_1_1_1(builder_, level_ + 1);
+ result_ = result_ && Statement(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Payload?
+ private static boolean ZB_WhileStatement_Body_1_1_1_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "ZB_WhileStatement_Body_1_1_1_1")) return false;
+ Payload(builder_, level_ + 1);
+ return true;
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionExpr.java
new file mode 100644
index 000000000..b863ca81f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigAdditionExpr extends ZigExpr {
+
+ @NotNull
+ List getAdditionOpList();
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionOp.java
new file mode 100644
index 000000000..e9cbb83c0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAdditionOp.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAdditionOp extends PsiElement {
+
+ @Nullable
+ PsiElement getMinus();
+
+ @Nullable
+ PsiElement getMinuspercent();
+
+ @Nullable
+ PsiElement getMinuspipe();
+
+ @Nullable
+ PsiElement getPlus();
+
+ @Nullable
+ PsiElement getPlus2();
+
+ @Nullable
+ PsiElement getPluspercent();
+
+ @Nullable
+ PsiElement getPluspipe();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAddrSpace.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAddrSpace.java
new file mode 100644
index 000000000..3728a1bb4
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAddrSpace.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigAddrSpace extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getKeywordAddrspace();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigArrayTypeStart.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigArrayTypeStart.java
new file mode 100644
index 000000000..aedbd9309
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigArrayTypeStart.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigArrayTypeStart extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getColon();
+
+ @NotNull
+ PsiElement getLbracket();
+
+ @NotNull
+ PsiElement getRbracket();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmClobbers.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmClobbers.java
new file mode 100644
index 000000000..e2eef948d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmClobbers.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigAsmClobbers extends PsiElement {
+
+ @NotNull
+ ZigStringList getStringList();
+
+ @NotNull
+ PsiElement getColon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmExpr.java
new file mode 100644
index 000000000..006b782f5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmExpr.java
@@ -0,0 +1,28 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAsmExpr extends ZigExpr {
+
+ @Nullable
+ ZigAsmOutput getAsmOutput();
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getKeywordAsm();
+
+ @Nullable
+ PsiElement getKeywordVolatile();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInput.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInput.java
new file mode 100644
index 000000000..7e919f0ea
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInput.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAsmInput extends PsiElement {
+
+ @Nullable
+ ZigAsmClobbers getAsmClobbers();
+
+ @NotNull
+ ZigAsmInputList getAsmInputList();
+
+ @NotNull
+ PsiElement getColon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputItem.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputItem.java
new file mode 100644
index 000000000..b8240cf25
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputItem.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigAsmInputItem extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ ZigStringLiteral getStringLiteral();
+
+ @NotNull
+ PsiElement getIdentifier();
+
+ @NotNull
+ PsiElement getLbracket();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRbracket();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputList.java
new file mode 100644
index 000000000..bfdaf850e
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmInputList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigAsmInputList extends PsiElement {
+
+ @NotNull
+ List getAsmInputItemList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutput.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutput.java
new file mode 100644
index 000000000..de73ae1d3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutput.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAsmOutput extends PsiElement {
+
+ @Nullable
+ ZigAsmInput getAsmInput();
+
+ @NotNull
+ ZigAsmOutputList getAsmOutputList();
+
+ @NotNull
+ PsiElement getColon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputItem.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputItem.java
new file mode 100644
index 000000000..be0ad2134
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputItem.java
@@ -0,0 +1,31 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAsmOutputItem extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @NotNull
+ ZigStringLiteral getStringLiteral();
+
+ @NotNull
+ PsiElement getLbracket();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getMinusrarrow();
+
+ @NotNull
+ PsiElement getRbracket();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputList.java
new file mode 100644
index 000000000..89b94bd88
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAsmOutputList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigAsmOutputList extends PsiElement {
+
+ @NotNull
+ List getAsmOutputItemList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignExpr.java
new file mode 100644
index 000000000..26c8a8367
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignExpr.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigAssignExpr extends ZigExpr {
+
+ @Nullable
+ ZigAssignOp getAssignOp();
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getEqual();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignOp.java
new file mode 100644
index 000000000..965974924
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigAssignOp.java
@@ -0,0 +1,63 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigAssignOp extends PsiElement {
+
+ @Nullable
+ PsiElement getAmpersandequal();
+
+ @Nullable
+ PsiElement getAsteriskequal();
+
+ @Nullable
+ PsiElement getAsteriskpercentequal();
+
+ @Nullable
+ PsiElement getAsteriskpipeequal();
+
+ @Nullable
+ PsiElement getCaretequal();
+
+ @Nullable
+ PsiElement getEqual();
+
+ @Nullable
+ PsiElement getLarrow2Equal();
+
+ @Nullable
+ PsiElement getLarrow2Pipeequal();
+
+ @Nullable
+ PsiElement getMinusequal();
+
+ @Nullable
+ PsiElement getMinuspercentequal();
+
+ @Nullable
+ PsiElement getMinuspipeequal();
+
+ @Nullable
+ PsiElement getPercentequal();
+
+ @Nullable
+ PsiElement getPipeequal();
+
+ @Nullable
+ PsiElement getPlusequal();
+
+ @Nullable
+ PsiElement getPluspercentequal();
+
+ @Nullable
+ PsiElement getPluspipeequal();
+
+ @Nullable
+ PsiElement getRarrow2Equal();
+
+ @Nullable
+ PsiElement getSlashequal();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftExpr.java
new file mode 100644
index 000000000..6e555ea4f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigBitShiftExpr extends ZigExpr {
+
+ @NotNull
+ List getBitShiftOpList();
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftOp.java
new file mode 100644
index 000000000..f8675801c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitShiftOp.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigBitShiftOp extends PsiElement {
+
+ @Nullable
+ PsiElement getLarrow2();
+
+ @Nullable
+ PsiElement getLarrow2Pipe();
+
+ @Nullable
+ PsiElement getRarrow2();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseExpr.java
new file mode 100644
index 000000000..b4abbc8d5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigBitwiseExpr extends ZigExpr {
+
+ @NotNull
+ List getBitwiseOpList();
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseOp.java
new file mode 100644
index 000000000..0d7fff2c8
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBitwiseOp.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigBitwiseOp extends PsiElement {
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ PsiElement getAmpersand();
+
+ @Nullable
+ PsiElement getCaret();
+
+ @Nullable
+ PsiElement getKeywordCatch();
+
+ @Nullable
+ PsiElement getKeywordOrelse();
+
+ @Nullable
+ PsiElement getPipe();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlock.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlock.java
new file mode 100644
index 000000000..d0f2bb561
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlock.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigBlock extends PsiElement {
+
+ @NotNull
+ List getStatementList();
+
+ @NotNull
+ PsiElement getLbrace();
+
+ @Nullable
+ PsiElement getRbrace();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExpr.java
new file mode 100644
index 000000000..037e85d4a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExpr.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigBlockExpr extends ZigExpr {
+
+ @NotNull
+ ZigBlock getBlock();
+
+ @Nullable
+ ZigBlockLabel getBlockLabel();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExprStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExprStatement.java
new file mode 100644
index 000000000..12f5b84b9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockExprStatement.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigBlockExprStatement extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockLabel.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockLabel.java
new file mode 100644
index 000000000..774144cda
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBlockLabel.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigBlockLabel extends PsiElement {
+
+ @NotNull
+ PsiElement getColon();
+
+ @NotNull
+ PsiElement getIdentifier();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolAndExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolAndExpr.java
new file mode 100644
index 000000000..c2e8df7e3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolAndExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigBoolAndExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolOrExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolOrExpr.java
new file mode 100644
index 000000000..25a21b7ba
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBoolOrExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigBoolOrExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBreakLabel.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBreakLabel.java
new file mode 100644
index 000000000..abf4b1d8d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigBreakLabel.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigBreakLabel extends PsiElement {
+
+ @NotNull
+ PsiElement getColon();
+
+ @NotNull
+ PsiElement getIdentifier();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigByteAlign.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigByteAlign.java
new file mode 100644
index 000000000..5fbd3dc65
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigByteAlign.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigByteAlign extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getKeywordAlign();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCallConv.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCallConv.java
new file mode 100644
index 000000000..9338342ca
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCallConv.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigCallConv extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getKeywordCallconv();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareExpr.java
new file mode 100644
index 000000000..80715288e
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareExpr.java
@@ -0,0 +1,17 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigCompareExpr extends ZigExpr {
+
+ @Nullable
+ ZigCompareOp getCompareOp();
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareOp.java
new file mode 100644
index 000000000..369bab04c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCompareOp.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigCompareOp extends PsiElement {
+
+ @Nullable
+ PsiElement getEqualequal();
+
+ @Nullable
+ PsiElement getExclamationmarkequal();
+
+ @Nullable
+ PsiElement getLarrow();
+
+ @Nullable
+ PsiElement getLarrowequal();
+
+ @Nullable
+ PsiElement getRarrow();
+
+ @Nullable
+ PsiElement getRarrowequal();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeDecl.java
new file mode 100644
index 000000000..aec4917df
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeDecl.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigComptimeDecl extends PsiElement {
+
+ @NotNull
+ ZigBlock getBlock();
+
+ @NotNull
+ PsiElement getKeywordComptime();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeStatement.java
new file mode 100644
index 000000000..fb3f687e5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigComptimeStatement.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigComptimeStatement extends PsiElement {
+
+ @Nullable
+ ZigBlockExpr getBlockExpr();
+
+ @Nullable
+ ZigVarDeclExprStatement getVarDeclExprStatement();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDecl.java
new file mode 100644
index 000000000..fffcff313
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDecl.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigContainerDecl extends PsiElement {
+
+ @NotNull
+ ZigContainerDeclAuto getContainerDeclAuto();
+
+ @Nullable
+ PsiElement getKeywordExtern();
+
+ @Nullable
+ PsiElement getKeywordPacked();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclAuto.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclAuto.java
new file mode 100644
index 000000000..0d19730d4
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclAuto.java
@@ -0,0 +1,25 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigContainerDeclAuto extends PsiElement {
+
+ @NotNull
+ ZigContainerDeclType getContainerDeclType();
+
+ @Nullable
+ ZigContainerMembers getContainerMembers();
+
+ @Nullable
+ PsiElement getContainerDocComment();
+
+ @NotNull
+ PsiElement getLbrace();
+
+ @Nullable
+ PsiElement getRbrace();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclType.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclType.java
new file mode 100644
index 000000000..a800cc57f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclType.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigContainerDeclType extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getKeywordEnum();
+
+ @Nullable
+ PsiElement getKeywordOpaque();
+
+ @Nullable
+ PsiElement getKeywordStruct();
+
+ @Nullable
+ PsiElement getKeywordUnion();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclaration.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclaration.java
new file mode 100644
index 000000000..a17ab6326
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerDeclaration.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigContainerDeclaration extends PsiElement {
+
+ @Nullable
+ ZigComptimeDecl getComptimeDecl();
+
+ @Nullable
+ ZigDecl getDecl();
+
+ @Nullable
+ ZigTestDecl getTestDecl();
+
+ @Nullable
+ PsiElement getDocComment();
+
+ @Nullable
+ PsiElement getKeywordPub();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerField.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerField.java
new file mode 100644
index 000000000..d5b7ff0cb
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerField.java
@@ -0,0 +1,33 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigContainerField extends PsiElement {
+
+ @Nullable
+ ZigByteAlign getByteAlign();
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getColon();
+
+ @Nullable
+ PsiElement getDocComment();
+
+ @Nullable
+ PsiElement getEqual();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @Nullable
+ PsiElement getKeywordComptime();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerMembers.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerMembers.java
new file mode 100644
index 000000000..3593c9256
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigContainerMembers.java
@@ -0,0 +1,17 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigContainerMembers extends PsiElement {
+
+ @NotNull
+ List getContainerDeclarationList();
+
+ @NotNull
+ List getContainerFieldList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCurlySuffixExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCurlySuffixExpr.java
new file mode 100644
index 000000000..f9725e572
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigCurlySuffixExpr.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigCurlySuffixExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigInitList getInitList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigDecl.java
new file mode 100644
index 000000000..af46d3157
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigDecl.java
@@ -0,0 +1,45 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigDecl extends PsiElement {
+
+ @Nullable
+ ZigBlock getBlock();
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigFnProto getFnProto();
+
+ @Nullable
+ ZigGlobalVarDecl getGlobalVarDecl();
+
+ @Nullable
+ PsiElement getKeywordExport();
+
+ @Nullable
+ PsiElement getKeywordExtern();
+
+ @Nullable
+ PsiElement getKeywordInline();
+
+ @Nullable
+ PsiElement getKeywordNoinline();
+
+ @Nullable
+ PsiElement getKeywordThreadlocal();
+
+ @Nullable
+ PsiElement getKeywordUsingnamespace();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+ @Nullable
+ PsiElement getStringLiteralSingle();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorSetDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorSetDecl.java
new file mode 100644
index 000000000..0dd5f5d34
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorSetDecl.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigErrorSetDecl extends PsiElement {
+
+ @NotNull
+ ZigIdentifierList getIdentifierList();
+
+ @NotNull
+ PsiElement getKeywordError();
+
+ @NotNull
+ PsiElement getLbrace();
+
+ @NotNull
+ PsiElement getRbrace();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorUnionExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorUnionExpr.java
new file mode 100644
index 000000000..470aa23ba
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigErrorUnionExpr.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigErrorUnionExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getExclamationmark();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExpr.java
new file mode 100644
index 000000000..6ae450c1f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExpr.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface ZigExpr extends PsiElement {
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExprList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExprList.java
new file mode 100644
index 000000000..b36befcfa
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigExprList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigExprList extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFieldInit.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFieldInit.java
new file mode 100644
index 000000000..38a7fd4a6
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFieldInit.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigFieldInit extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getDot();
+
+ @NotNull
+ PsiElement getEqual();
+
+ @NotNull
+ PsiElement getIdentifier();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnCallArguments.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnCallArguments.java
new file mode 100644
index 000000000..1b9e64624
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnCallArguments.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigFnCallArguments extends PsiElement {
+
+ @Nullable
+ ZigExprList getExprList();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnProto.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnProto.java
new file mode 100644
index 000000000..fc3a8737b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigFnProto.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigFnProto extends PsiElement {
+
+ @Nullable
+ ZigAddrSpace getAddrSpace();
+
+ @Nullable
+ ZigByteAlign getByteAlign();
+
+ @Nullable
+ ZigCallConv getCallConv();
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigLinkSection getLinkSection();
+
+ @Nullable
+ ZigParamDeclList getParamDeclList();
+
+ @Nullable
+ PsiElement getExclamationmark();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @NotNull
+ PsiElement getKeywordFn();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForExpr.java
new file mode 100644
index 000000000..c92a5b799
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForExpr.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigForExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ ZigForPrefix getForPrefix();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForInput.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForInput.java
new file mode 100644
index 000000000..a19deff9c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForInput.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigForInput extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getDot2();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPayload.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPayload.java
new file mode 100644
index 000000000..e2bfa19fa
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPayload.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface ZigForPayload extends PsiElement {
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPrefix.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPrefix.java
new file mode 100644
index 000000000..21855dd70
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForPrefix.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigForPrefix extends PsiElement {
+
+ @NotNull
+ List getForInputList();
+
+ @Nullable
+ ZigForPayload getForPayload();
+
+ @NotNull
+ PsiElement getKeywordFor();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForStatement.java
new file mode 100644
index 000000000..b5b8df1e5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForStatement.java
@@ -0,0 +1,25 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigForStatement extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @NotNull
+ ZigForPrefix getForPrefix();
+
+ @Nullable
+ ZigStatement getStatement();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForTypeExpr.java
new file mode 100644
index 000000000..9ec0e389d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigForTypeExpr.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigForTypeExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ ZigForPrefix getForPrefix();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGlobalVarDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGlobalVarDecl.java
new file mode 100644
index 000000000..c2afae18d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGlobalVarDecl.java
@@ -0,0 +1,22 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigGlobalVarDecl extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @NotNull
+ ZigVarDeclProto getVarDeclProto();
+
+ @Nullable
+ PsiElement getEqual();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGroupedExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGroupedExpr.java
new file mode 100644
index 000000000..d3d7ca424
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigGroupedExpr.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigGroupedExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIdentifierList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIdentifierList.java
new file mode 100644
index 000000000..d4c034486
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIdentifierList.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface ZigIdentifierList extends PsiElement {
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfExpr.java
new file mode 100644
index 000000000..c98fb844a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigIfExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ ZigIfPrefix getIfPrefix();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfPrefix.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfPrefix.java
new file mode 100644
index 000000000..b866b8db8
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfPrefix.java
@@ -0,0 +1,25 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigIfPrefix extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigPtrPayload getPtrPayload();
+
+ @NotNull
+ PsiElement getKeywordIf();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfStatement.java
new file mode 100644
index 000000000..9f610e51b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfStatement.java
@@ -0,0 +1,28 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigIfStatement extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @NotNull
+ ZigIfPrefix getIfPrefix();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ ZigStatement getStatement();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfTypeExpr.java
new file mode 100644
index 000000000..eaabdbc07
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigIfTypeExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigIfTypeExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ ZigIfPrefix getIfPrefix();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigInitList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigInitList.java
new file mode 100644
index 000000000..6dc84e8e2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigInitList.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigInitList extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ List getFieldInitList();
+
+ @NotNull
+ PsiElement getLbrace();
+
+ @Nullable
+ PsiElement getRbrace();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledStatement.java
new file mode 100644
index 000000000..a1796831f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledStatement.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigLabeledStatement extends PsiElement {
+
+ @Nullable
+ ZigBlock getBlock();
+
+ @Nullable
+ ZigBlockLabel getBlockLabel();
+
+ @Nullable
+ ZigLoopStatement getLoopStatement();
+
+ @Nullable
+ ZigSwitchExpr getSwitchExpr();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledTypeExpr.java
new file mode 100644
index 000000000..21b8469ad
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLabeledTypeExpr.java
@@ -0,0 +1,17 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigLabeledTypeExpr extends ZigExpr {
+
+ @Nullable
+ ZigBlock getBlock();
+
+ @Nullable
+ ZigBlockLabel getBlockLabel();
+
+ @Nullable
+ ZigExpr getExpr();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLinkSection.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLinkSection.java
new file mode 100644
index 000000000..a52a6b12c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLinkSection.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigLinkSection extends PsiElement {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getKeywordLinksection();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopExpr.java
new file mode 100644
index 000000000..860887de9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigLoopExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getKeywordInline();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopStatement.java
new file mode 100644
index 000000000..42dd63580
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopStatement.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigLoopStatement extends PsiElement {
+
+ @Nullable
+ ZigForStatement getForStatement();
+
+ @Nullable
+ ZigWhileStatement getWhileStatement();
+
+ @Nullable
+ PsiElement getKeywordInline();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopTypeExpr.java
new file mode 100644
index 000000000..7fea4711d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigLoopTypeExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigLoopTypeExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getKeywordInline();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyExpr.java
new file mode 100644
index 000000000..95db195a9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigMultiplyExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ List getMultiplyOpList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyOp.java
new file mode 100644
index 000000000..47b4a3248
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigMultiplyOp.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigMultiplyOp extends PsiElement {
+
+ @Nullable
+ PsiElement getAsterisk();
+
+ @Nullable
+ PsiElement getAsterisk2();
+
+ @Nullable
+ PsiElement getAsteriskpercent();
+
+ @Nullable
+ PsiElement getAsteriskpipe();
+
+ @Nullable
+ PsiElement getPercent();
+
+ @Nullable
+ PsiElement getPipe2();
+
+ @Nullable
+ PsiElement getSlash();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDecl.java
new file mode 100644
index 000000000..9e2f7def2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDecl.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigParamDecl extends PsiElement {
+
+ @Nullable
+ ZigParamType getParamType();
+
+ @Nullable
+ PsiElement getColon();
+
+ @Nullable
+ PsiElement getDocComment();
+
+ @Nullable
+ PsiElement getDot3();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @Nullable
+ PsiElement getKeywordComptime();
+
+ @Nullable
+ PsiElement getKeywordNoalias();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDeclList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDeclList.java
new file mode 100644
index 000000000..85d0fbc55
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamDeclList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigParamDeclList extends PsiElement {
+
+ @NotNull
+ List getParamDeclList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamType.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamType.java
new file mode 100644
index 000000000..6bb58293b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigParamType.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigParamType extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getKeywordAnytype();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPayload.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPayload.java
new file mode 100644
index 000000000..efbc4e3f2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPayload.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigPayload extends PsiElement {
+
+ @NotNull
+ PsiElement getIdentifier();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixExpr.java
new file mode 100644
index 000000000..a60253ba1
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigPrefixExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ List getPrefixOpList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixOp.java
new file mode 100644
index 000000000..38686f719
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixOp.java
@@ -0,0 +1,30 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigPrefixOp extends PsiElement {
+
+ @Nullable
+ PsiElement getAmpersand();
+
+ @Nullable
+ PsiElement getExclamationmark();
+
+ @Nullable
+ PsiElement getKeywordAwait();
+
+ @Nullable
+ PsiElement getKeywordTry();
+
+ @Nullable
+ PsiElement getMinus();
+
+ @Nullable
+ PsiElement getMinuspercent();
+
+ @Nullable
+ PsiElement getTilde();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixTypeOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixTypeOp.java
new file mode 100644
index 000000000..a480b02f0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrefixTypeOp.java
@@ -0,0 +1,39 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigPrefixTypeOp extends PsiElement {
+
+ @NotNull
+ List getAddrSpaceList();
+
+ @Nullable
+ ZigArrayTypeStart getArrayTypeStart();
+
+ @NotNull
+ List getByteAlignList();
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ ZigPtrTypeStart getPtrTypeStart();
+
+ @Nullable
+ ZigSliceTypeStart getSliceTypeStart();
+
+ @Nullable
+ PsiElement getKeywordAnyframe();
+
+ @Nullable
+ PsiElement getMinusrarrow();
+
+ @Nullable
+ PsiElement getQuestionmark();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryExpr.java
new file mode 100644
index 000000000..503368729
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryExpr.java
@@ -0,0 +1,39 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigPrimaryExpr extends ZigExpr {
+
+ @Nullable
+ ZigBlock getBlock();
+
+ @Nullable
+ ZigBlockLabel getBlockLabel();
+
+ @Nullable
+ ZigBreakLabel getBreakLabel();
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getKeywordBreak();
+
+ @Nullable
+ PsiElement getKeywordComptime();
+
+ @Nullable
+ PsiElement getKeywordContinue();
+
+ @Nullable
+ PsiElement getKeywordNosuspend();
+
+ @Nullable
+ PsiElement getKeywordResume();
+
+ @Nullable
+ PsiElement getKeywordReturn();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryTypeExpr.java
new file mode 100644
index 000000000..f8d462c24
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPrimaryTypeExpr.java
@@ -0,0 +1,60 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigPrimaryTypeExpr extends ZigExpr {
+
+ @Nullable
+ ZigContainerDecl getContainerDecl();
+
+ @Nullable
+ ZigErrorSetDecl getErrorSetDecl();
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigFnCallArguments getFnCallArguments();
+
+ @Nullable
+ ZigFnProto getFnProto();
+
+ @Nullable
+ ZigInitList getInitList();
+
+ @Nullable
+ ZigStringLiteral getStringLiteral();
+
+ @Nullable
+ PsiElement getBuiltinidentifier();
+
+ @Nullable
+ PsiElement getCharLiteral();
+
+ @Nullable
+ PsiElement getDot();
+
+ @Nullable
+ PsiElement getFloat();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @Nullable
+ PsiElement getInteger();
+
+ @Nullable
+ PsiElement getKeywordAnyframe();
+
+ @Nullable
+ PsiElement getKeywordComptime();
+
+ @Nullable
+ PsiElement getKeywordError();
+
+ @Nullable
+ PsiElement getKeywordUnreachable();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrIndexPayload.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrIndexPayload.java
new file mode 100644
index 000000000..dea22eb03
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrIndexPayload.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface ZigPtrIndexPayload extends PsiElement {
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrPayload.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrPayload.java
new file mode 100644
index 000000000..c6c2635ec
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrPayload.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigPtrPayload extends PsiElement {
+
+ @Nullable
+ PsiElement getAsterisk();
+
+ @NotNull
+ PsiElement getIdentifier();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrTypeStart.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrTypeStart.java
new file mode 100644
index 000000000..cae2fe8c2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigPtrTypeStart.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigPtrTypeStart extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getAsterisk();
+
+ @Nullable
+ PsiElement getAsterisk2();
+
+ @Nullable
+ PsiElement getColon();
+
+ @Nullable
+ PsiElement getLbracket();
+
+ @Nullable
+ PsiElement getRbracket();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSingleAssignExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSingleAssignExpr.java
new file mode 100644
index 000000000..d33e2a167
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSingleAssignExpr.java
@@ -0,0 +1,17 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigSingleAssignExpr extends ZigExpr {
+
+ @Nullable
+ ZigAssignOp getAssignOp();
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSliceTypeStart.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSliceTypeStart.java
new file mode 100644
index 000000000..3255a1169
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSliceTypeStart.java
@@ -0,0 +1,22 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigSliceTypeStart extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ PsiElement getColon();
+
+ @NotNull
+ PsiElement getLbracket();
+
+ @NotNull
+ PsiElement getRbracket();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStatement.java
new file mode 100644
index 000000000..63e18da95
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStatement.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigStatement extends PsiElement {
+
+ @Nullable
+ ZigBlockExprStatement getBlockExprStatement();
+
+ @Nullable
+ ZigComptimeStatement getComptimeStatement();
+
+ @Nullable
+ ZigIfStatement getIfStatement();
+
+ @Nullable
+ ZigLabeledStatement getLabeledStatement();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ ZigVarDeclExprStatement getVarDeclExprStatement();
+
+ @Nullable
+ PsiElement getKeywordComptime();
+
+ @Nullable
+ PsiElement getKeywordDefer();
+
+ @Nullable
+ PsiElement getKeywordErrdefer();
+
+ @Nullable
+ PsiElement getKeywordNosuspend();
+
+ @Nullable
+ PsiElement getKeywordSuspend();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringList.java
new file mode 100644
index 000000000..75f061a25
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigStringList extends PsiElement {
+
+ @NotNull
+ List getStringLiteralList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringLiteral.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringLiteral.java
new file mode 100644
index 000000000..7ad338810
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigStringLiteral.java
@@ -0,0 +1,7 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface ZigStringLiteral extends PsiElement {
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixExpr.java
new file mode 100644
index 000000000..029f07421
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigSuffixExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ List getFnCallArgumentsList();
+
+ @NotNull
+ List getSuffixOpList();
+
+ @Nullable
+ PsiElement getKeywordAsync();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixOp.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixOp.java
new file mode 100644
index 000000000..2ba2683ef
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSuffixOp.java
@@ -0,0 +1,39 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigSuffixOp extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getColon();
+
+ @Nullable
+ PsiElement getDot();
+
+ @Nullable
+ PsiElement getDot2();
+
+ @Nullable
+ PsiElement getDotasterisk();
+
+ @Nullable
+ PsiElement getDotquestionmark();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @Nullable
+ PsiElement getLbracket();
+
+ @Nullable
+ PsiElement getRbracket();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchCase.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchCase.java
new file mode 100644
index 000000000..c07a3894f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchCase.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigSwitchCase extends PsiElement {
+
+ @NotNull
+ List getSwitchItemList();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchExpr.java
new file mode 100644
index 000000000..eb2fb7a12
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchExpr.java
@@ -0,0 +1,31 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigSwitchExpr extends ZigExpr {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigSwitchProngList getSwitchProngList();
+
+ @NotNull
+ PsiElement getKeywordSwitch();
+
+ @Nullable
+ PsiElement getLbrace();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRbrace();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchItem.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchItem.java
new file mode 100644
index 000000000..70f42ab1f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchItem.java
@@ -0,0 +1,18 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigSwitchItem extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getDot3();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProng.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProng.java
new file mode 100644
index 000000000..a1156c00f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProng.java
@@ -0,0 +1,25 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigSwitchProng extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigPtrIndexPayload getPtrIndexPayload();
+
+ @NotNull
+ ZigSwitchCase getSwitchCase();
+
+ @NotNull
+ PsiElement getEqualrarrow();
+
+ @Nullable
+ PsiElement getKeywordInline();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProngList.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProngList.java
new file mode 100644
index 000000000..8a5b40455
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigSwitchProngList.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigSwitchProngList extends PsiElement {
+
+ @NotNull
+ List getSwitchProngList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTestDecl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTestDecl.java
new file mode 100644
index 000000000..f4272ac04
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTestDecl.java
@@ -0,0 +1,22 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigTestDecl extends PsiElement {
+
+ @Nullable
+ ZigBlock getBlock();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @NotNull
+ PsiElement getKeywordTest();
+
+ @Nullable
+ PsiElement getStringLiteralSingle();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypeExpr.java
new file mode 100644
index 000000000..a155e473f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypeExpr.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface ZigTypeExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ List getPrefixTypeOpList();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypes.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypes.java
new file mode 100644
index 000000000..21a51c5dd
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigTypes.java
@@ -0,0 +1,546 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.falsepattern.zigbrains.zig.parser.ZigElementType;
+import com.falsepattern.zigbrains.zig.parser.ZigTokenType;
+import com.falsepattern.zigbrains.zig.psi.impl.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.tree.IElementType;
+
+public interface ZigTypes {
+
+ IElementType ADDITION_EXPR = new ZigElementType("ADDITION_EXPR");
+ IElementType ADDITION_OP = new ZigElementType("ADDITION_OP");
+ IElementType ADDR_SPACE = new ZigElementType("ADDR_SPACE");
+ IElementType ARRAY_TYPE_START = new ZigElementType("ARRAY_TYPE_START");
+ IElementType ASM_CLOBBERS = new ZigElementType("ASM_CLOBBERS");
+ IElementType ASM_EXPR = new ZigElementType("ASM_EXPR");
+ IElementType ASM_INPUT = new ZigElementType("ASM_INPUT");
+ IElementType ASM_INPUT_ITEM = new ZigElementType("ASM_INPUT_ITEM");
+ IElementType ASM_INPUT_LIST = new ZigElementType("ASM_INPUT_LIST");
+ IElementType ASM_OUTPUT = new ZigElementType("ASM_OUTPUT");
+ IElementType ASM_OUTPUT_ITEM = new ZigElementType("ASM_OUTPUT_ITEM");
+ IElementType ASM_OUTPUT_LIST = new ZigElementType("ASM_OUTPUT_LIST");
+ IElementType ASSIGN_EXPR = new ZigElementType("ASSIGN_EXPR");
+ IElementType ASSIGN_OP = new ZigElementType("ASSIGN_OP");
+ IElementType BITWISE_EXPR = new ZigElementType("BITWISE_EXPR");
+ IElementType BITWISE_OP = new ZigElementType("BITWISE_OP");
+ IElementType BIT_SHIFT_EXPR = new ZigElementType("BIT_SHIFT_EXPR");
+ IElementType BIT_SHIFT_OP = new ZigElementType("BIT_SHIFT_OP");
+ IElementType BLOCK = new ZigElementType("BLOCK");
+ IElementType BLOCK_EXPR = new ZigElementType("BLOCK_EXPR");
+ IElementType BLOCK_EXPR_STATEMENT = new ZigElementType("BLOCK_EXPR_STATEMENT");
+ IElementType BLOCK_LABEL = new ZigElementType("BLOCK_LABEL");
+ IElementType BOOL_AND_EXPR = new ZigElementType("BOOL_AND_EXPR");
+ IElementType BOOL_OR_EXPR = new ZigElementType("BOOL_OR_EXPR");
+ IElementType BREAK_LABEL = new ZigElementType("BREAK_LABEL");
+ IElementType BYTE_ALIGN = new ZigElementType("BYTE_ALIGN");
+ IElementType CALL_CONV = new ZigElementType("CALL_CONV");
+ IElementType COMPARE_EXPR = new ZigElementType("COMPARE_EXPR");
+ IElementType COMPARE_OP = new ZigElementType("COMPARE_OP");
+ IElementType COMPTIME_DECL = new ZigElementType("COMPTIME_DECL");
+ IElementType COMPTIME_STATEMENT = new ZigElementType("COMPTIME_STATEMENT");
+ IElementType CONTAINER_DECL = new ZigElementType("CONTAINER_DECL");
+ IElementType CONTAINER_DECLARATION = new ZigElementType("CONTAINER_DECLARATION");
+ IElementType CONTAINER_DECL_AUTO = new ZigElementType("CONTAINER_DECL_AUTO");
+ IElementType CONTAINER_DECL_TYPE = new ZigElementType("CONTAINER_DECL_TYPE");
+ IElementType CONTAINER_FIELD = new ZigElementType("CONTAINER_FIELD");
+ IElementType CONTAINER_MEMBERS = new ZigElementType("CONTAINER_MEMBERS");
+ IElementType CURLY_SUFFIX_EXPR = new ZigElementType("CURLY_SUFFIX_EXPR");
+ IElementType DECL = new ZigElementType("DECL");
+ IElementType ERROR_SET_DECL = new ZigElementType("ERROR_SET_DECL");
+ IElementType ERROR_UNION_EXPR = new ZigElementType("ERROR_UNION_EXPR");
+ IElementType EXPR = new ZigElementType("EXPR");
+ IElementType EXPR_LIST = new ZigElementType("EXPR_LIST");
+ IElementType FIELD_INIT = new ZigElementType("FIELD_INIT");
+ IElementType FN_CALL_ARGUMENTS = new ZigElementType("FN_CALL_ARGUMENTS");
+ IElementType FN_PROTO = new ZigElementType("FN_PROTO");
+ IElementType FOR_EXPR = new ZigElementType("FOR_EXPR");
+ IElementType FOR_INPUT = new ZigElementType("FOR_INPUT");
+ IElementType FOR_PAYLOAD = new ZigElementType("FOR_PAYLOAD");
+ IElementType FOR_PREFIX = new ZigElementType("FOR_PREFIX");
+ IElementType FOR_STATEMENT = new ZigElementType("FOR_STATEMENT");
+ IElementType FOR_TYPE_EXPR = new ZigElementType("FOR_TYPE_EXPR");
+ IElementType GLOBAL_VAR_DECL = new ZigElementType("GLOBAL_VAR_DECL");
+ IElementType GROUPED_EXPR = new ZigElementType("GROUPED_EXPR");
+ IElementType IDENTIFIER_LIST = new ZigElementType("IDENTIFIER_LIST");
+ IElementType IF_EXPR = new ZigElementType("IF_EXPR");
+ IElementType IF_PREFIX = new ZigElementType("IF_PREFIX");
+ IElementType IF_STATEMENT = new ZigElementType("IF_STATEMENT");
+ IElementType IF_TYPE_EXPR = new ZigElementType("IF_TYPE_EXPR");
+ IElementType INIT_LIST = new ZigElementType("INIT_LIST");
+ IElementType LABELED_STATEMENT = new ZigElementType("LABELED_STATEMENT");
+ IElementType LABELED_TYPE_EXPR = new ZigElementType("LABELED_TYPE_EXPR");
+ IElementType LINK_SECTION = new ZigElementType("LINK_SECTION");
+ IElementType LOOP_EXPR = new ZigElementType("LOOP_EXPR");
+ IElementType LOOP_STATEMENT = new ZigElementType("LOOP_STATEMENT");
+ IElementType LOOP_TYPE_EXPR = new ZigElementType("LOOP_TYPE_EXPR");
+ IElementType MULTIPLY_EXPR = new ZigElementType("MULTIPLY_EXPR");
+ IElementType MULTIPLY_OP = new ZigElementType("MULTIPLY_OP");
+ IElementType PARAM_DECL = new ZigElementType("PARAM_DECL");
+ IElementType PARAM_DECL_LIST = new ZigElementType("PARAM_DECL_LIST");
+ IElementType PARAM_TYPE = new ZigElementType("PARAM_TYPE");
+ IElementType PAYLOAD = new ZigElementType("PAYLOAD");
+ IElementType PREFIX_EXPR = new ZigElementType("PREFIX_EXPR");
+ IElementType PREFIX_OP = new ZigElementType("PREFIX_OP");
+ IElementType PREFIX_TYPE_OP = new ZigElementType("PREFIX_TYPE_OP");
+ IElementType PRIMARY_EXPR = new ZigElementType("PRIMARY_EXPR");
+ IElementType PRIMARY_TYPE_EXPR = new ZigElementType("PRIMARY_TYPE_EXPR");
+ IElementType PTR_INDEX_PAYLOAD = new ZigElementType("PTR_INDEX_PAYLOAD");
+ IElementType PTR_PAYLOAD = new ZigElementType("PTR_PAYLOAD");
+ IElementType PTR_TYPE_START = new ZigElementType("PTR_TYPE_START");
+ IElementType SINGLE_ASSIGN_EXPR = new ZigElementType("SINGLE_ASSIGN_EXPR");
+ IElementType SLICE_TYPE_START = new ZigElementType("SLICE_TYPE_START");
+ IElementType STATEMENT = new ZigElementType("STATEMENT");
+ IElementType STRING_LIST = new ZigElementType("STRING_LIST");
+ IElementType STRING_LITERAL = new ZigElementType("STRING_LITERAL");
+ IElementType SUFFIX_EXPR = new ZigElementType("SUFFIX_EXPR");
+ IElementType SUFFIX_OP = new ZigElementType("SUFFIX_OP");
+ IElementType SWITCH_CASE = new ZigElementType("SWITCH_CASE");
+ IElementType SWITCH_EXPR = new ZigElementType("SWITCH_EXPR");
+ IElementType SWITCH_ITEM = new ZigElementType("SWITCH_ITEM");
+ IElementType SWITCH_PRONG = new ZigElementType("SWITCH_PRONG");
+ IElementType SWITCH_PRONG_LIST = new ZigElementType("SWITCH_PRONG_LIST");
+ IElementType TEST_DECL = new ZigElementType("TEST_DECL");
+ IElementType TYPE_EXPR = new ZigElementType("TYPE_EXPR");
+ IElementType VAR_DECL_EXPR_STATEMENT = new ZigElementType("VAR_DECL_EXPR_STATEMENT");
+ IElementType VAR_DECL_PROTO = new ZigElementType("VAR_DECL_PROTO");
+ IElementType WHILE_CONTINUE_EXPR = new ZigElementType("WHILE_CONTINUE_EXPR");
+ IElementType WHILE_EXPR = new ZigElementType("WHILE_EXPR");
+ IElementType WHILE_PREFIX = new ZigElementType("WHILE_PREFIX");
+ IElementType WHILE_STATEMENT = new ZigElementType("WHILE_STATEMENT");
+ IElementType WHILE_TYPE_EXPR = new ZigElementType("WHILE_TYPE_EXPR");
+
+ IElementType AMPERSAND = new ZigTokenType("&");
+ IElementType AMPERSANDEQUAL = new ZigTokenType("&=");
+ IElementType ASTERISK = new ZigTokenType("*");
+ IElementType ASTERISK2 = new ZigTokenType("**");
+ IElementType ASTERISKEQUAL = new ZigTokenType("*=");
+ IElementType ASTERISKPERCENT = new ZigTokenType("*%");
+ IElementType ASTERISKPERCENTEQUAL = new ZigTokenType("*%=");
+ IElementType ASTERISKPIPE = new ZigTokenType("*|");
+ IElementType ASTERISKPIPEEQUAL = new ZigTokenType("*|=");
+ IElementType BAD_DQUOT = new ZigTokenType("unterminated string");
+ IElementType BAD_SQUOT = new ZigTokenType("unterminated character literal");
+ IElementType BUILTINIDENTIFIER = new ZigTokenType("builtin identifier");
+ IElementType CARET = new ZigTokenType("^");
+ IElementType CARETEQUAL = new ZigTokenType("^=");
+ IElementType CHAR_LITERAL = new ZigTokenType("character literal");
+ IElementType COLON = new ZigTokenType(":");
+ IElementType COMMA = new ZigTokenType(",");
+ IElementType CONTAINER_DOC_COMMENT = new ZigTokenType("container doc comment");
+ IElementType DOC_COMMENT = new ZigTokenType("doc comment");
+ IElementType DOT = new ZigTokenType(".");
+ IElementType DOT2 = new ZigTokenType("..");
+ IElementType DOT3 = new ZigTokenType("...");
+ IElementType DOTASTERISK = new ZigTokenType(".*");
+ IElementType DOTQUESTIONMARK = new ZigTokenType(".?");
+ IElementType EQUAL = new ZigTokenType("=");
+ IElementType EQUALEQUAL = new ZigTokenType("==");
+ IElementType EQUALRARROW = new ZigTokenType("=>");
+ IElementType EXCLAMATIONMARK = new ZigTokenType("!");
+ IElementType EXCLAMATIONMARKEQUAL = new ZigTokenType("!=");
+ IElementType FLOAT = new ZigTokenType("float");
+ IElementType IDENTIFIER = new ZigTokenType("identifier");
+ IElementType INTEGER = new ZigTokenType("integer");
+ IElementType KEYWORD_ADDRSPACE = new ZigTokenType("addrspace");
+ IElementType KEYWORD_ALIGN = new ZigTokenType("align");
+ IElementType KEYWORD_ALLOWZERO = new ZigTokenType("allowzero");
+ IElementType KEYWORD_AND = new ZigTokenType("and");
+ IElementType KEYWORD_ANYFRAME = new ZigTokenType("anyframe");
+ IElementType KEYWORD_ANYTYPE = new ZigTokenType("anytype");
+ IElementType KEYWORD_ASM = new ZigTokenType("asm");
+ IElementType KEYWORD_ASYNC = new ZigTokenType("async");
+ IElementType KEYWORD_AWAIT = new ZigTokenType("await");
+ IElementType KEYWORD_BREAK = new ZigTokenType("break");
+ IElementType KEYWORD_CALLCONV = new ZigTokenType("callconv");
+ IElementType KEYWORD_CATCH = new ZigTokenType("catch");
+ IElementType KEYWORD_COMPTIME = new ZigTokenType("comptime");
+ IElementType KEYWORD_CONST = new ZigTokenType("const");
+ IElementType KEYWORD_CONTINUE = new ZigTokenType("continue");
+ IElementType KEYWORD_DEFER = new ZigTokenType("defer");
+ IElementType KEYWORD_ELSE = new ZigTokenType("else");
+ IElementType KEYWORD_ENUM = new ZigTokenType("enum");
+ IElementType KEYWORD_ERRDEFER = new ZigTokenType("errdefer");
+ IElementType KEYWORD_ERROR = new ZigTokenType("error");
+ IElementType KEYWORD_EXPORT = new ZigTokenType("export");
+ IElementType KEYWORD_EXTERN = new ZigTokenType("extern");
+ IElementType KEYWORD_FN = new ZigTokenType("fn");
+ IElementType KEYWORD_FOR = new ZigTokenType("for");
+ IElementType KEYWORD_IF = new ZigTokenType("if");
+ IElementType KEYWORD_INLINE = new ZigTokenType("inline");
+ IElementType KEYWORD_LINKSECTION = new ZigTokenType("linksection");
+ IElementType KEYWORD_NOALIAS = new ZigTokenType("noalias");
+ IElementType KEYWORD_NOINLINE = new ZigTokenType("noinline");
+ IElementType KEYWORD_NOSUSPEND = new ZigTokenType("nosuspend");
+ IElementType KEYWORD_OPAQUE = new ZigTokenType("opaque");
+ IElementType KEYWORD_OR = new ZigTokenType("or");
+ IElementType KEYWORD_ORELSE = new ZigTokenType("orelse");
+ IElementType KEYWORD_PACKED = new ZigTokenType("packed");
+ IElementType KEYWORD_PUB = new ZigTokenType("pub");
+ IElementType KEYWORD_RESUME = new ZigTokenType("resume");
+ IElementType KEYWORD_RETURN = new ZigTokenType("return");
+ IElementType KEYWORD_STRUCT = new ZigTokenType("struct");
+ IElementType KEYWORD_SUSPEND = new ZigTokenType("suspend");
+ IElementType KEYWORD_SWITCH = new ZigTokenType("switch");
+ IElementType KEYWORD_TEST = new ZigTokenType("test");
+ IElementType KEYWORD_THREADLOCAL = new ZigTokenType("threadlocal");
+ IElementType KEYWORD_TRY = new ZigTokenType("try");
+ IElementType KEYWORD_UNION = new ZigTokenType("union");
+ IElementType KEYWORD_UNREACHABLE = new ZigTokenType("unreachable");
+ IElementType KEYWORD_USINGNAMESPACE = new ZigTokenType("usingnamespace");
+ IElementType KEYWORD_VAR = new ZigTokenType("var");
+ IElementType KEYWORD_VOLATILE = new ZigTokenType("volatile");
+ IElementType KEYWORD_WHILE = new ZigTokenType("while");
+ IElementType LARROW = new ZigTokenType("<");
+ IElementType LARROW2 = new ZigTokenType("<<");
+ IElementType LARROW2EQUAL = new ZigTokenType("<<=");
+ IElementType LARROW2PIPE = new ZigTokenType("<<|");
+ IElementType LARROW2PIPEEQUAL = new ZigTokenType("<<|=");
+ IElementType LARROWEQUAL = new ZigTokenType("<=");
+ IElementType LBRACE = new ZigTokenType("{");
+ IElementType LBRACKET = new ZigTokenType("[");
+ IElementType LINE_COMMENT = new ZigTokenType("comment");
+ IElementType LPAREN = new ZigTokenType("(");
+ IElementType MINUS = new ZigTokenType("-");
+ IElementType MINUSEQUAL = new ZigTokenType("-=");
+ IElementType MINUSPERCENT = new ZigTokenType("-%");
+ IElementType MINUSPERCENTEQUAL = new ZigTokenType("-%=");
+ IElementType MINUSPIPE = new ZigTokenType("-|");
+ IElementType MINUSPIPEEQUAL = new ZigTokenType("-|=");
+ IElementType MINUSRARROW = new ZigTokenType("->");
+ IElementType PERCENT = new ZigTokenType("%");
+ IElementType PERCENTEQUAL = new ZigTokenType("%=");
+ IElementType PIPE = new ZigTokenType("|");
+ IElementType PIPE2 = new ZigTokenType("||");
+ IElementType PIPEEQUAL = new ZigTokenType("|=");
+ IElementType PLUS = new ZigTokenType("+");
+ IElementType PLUS2 = new ZigTokenType("++");
+ IElementType PLUSEQUAL = new ZigTokenType("+=");
+ IElementType PLUSPERCENT = new ZigTokenType("+%");
+ IElementType PLUSPERCENTEQUAL = new ZigTokenType("+%=");
+ IElementType PLUSPIPE = new ZigTokenType("+|");
+ IElementType PLUSPIPEEQUAL = new ZigTokenType("+|=");
+ IElementType QUESTIONMARK = new ZigTokenType("?");
+ IElementType RARROW = new ZigTokenType(">");
+ IElementType RARROW2 = new ZigTokenType(">>");
+ IElementType RARROW2EQUAL = new ZigTokenType(">>=");
+ IElementType RARROWEQUAL = new ZigTokenType(">=");
+ IElementType RBRACE = new ZigTokenType("}");
+ IElementType RBRACKET = new ZigTokenType("]");
+ IElementType RPAREN = new ZigTokenType(")");
+ IElementType SEMICOLON = new ZigTokenType(";");
+ IElementType SLASH = new ZigTokenType("/");
+ IElementType SLASHEQUAL = new ZigTokenType("/=");
+ IElementType STRING_LITERAL_MULTI = new ZigTokenType("multiline string literal");
+ IElementType STRING_LITERAL_SINGLE = new ZigTokenType("quoted string literal");
+ IElementType TILDE = new ZigTokenType("~");
+
+ class Factory {
+ public static PsiElement createElement(ASTNode node) {
+ IElementType type = node.getElementType();
+ if (type == ADDITION_EXPR) {
+ return new ZigAdditionExprImpl(node);
+ }
+ else if (type == ADDITION_OP) {
+ return new ZigAdditionOpImpl(node);
+ }
+ else if (type == ADDR_SPACE) {
+ return new ZigAddrSpaceImpl(node);
+ }
+ else if (type == ARRAY_TYPE_START) {
+ return new ZigArrayTypeStartImpl(node);
+ }
+ else if (type == ASM_CLOBBERS) {
+ return new ZigAsmClobbersImpl(node);
+ }
+ else if (type == ASM_EXPR) {
+ return new ZigAsmExprImpl(node);
+ }
+ else if (type == ASM_INPUT) {
+ return new ZigAsmInputImpl(node);
+ }
+ else if (type == ASM_INPUT_ITEM) {
+ return new ZigAsmInputItemImpl(node);
+ }
+ else if (type == ASM_INPUT_LIST) {
+ return new ZigAsmInputListImpl(node);
+ }
+ else if (type == ASM_OUTPUT) {
+ return new ZigAsmOutputImpl(node);
+ }
+ else if (type == ASM_OUTPUT_ITEM) {
+ return new ZigAsmOutputItemImpl(node);
+ }
+ else if (type == ASM_OUTPUT_LIST) {
+ return new ZigAsmOutputListImpl(node);
+ }
+ else if (type == ASSIGN_EXPR) {
+ return new ZigAssignExprImpl(node);
+ }
+ else if (type == ASSIGN_OP) {
+ return new ZigAssignOpImpl(node);
+ }
+ else if (type == BITWISE_EXPR) {
+ return new ZigBitwiseExprImpl(node);
+ }
+ else if (type == BITWISE_OP) {
+ return new ZigBitwiseOpImpl(node);
+ }
+ else if (type == BIT_SHIFT_EXPR) {
+ return new ZigBitShiftExprImpl(node);
+ }
+ else if (type == BIT_SHIFT_OP) {
+ return new ZigBitShiftOpImpl(node);
+ }
+ else if (type == BLOCK) {
+ return new ZigBlockImpl(node);
+ }
+ else if (type == BLOCK_EXPR) {
+ return new ZigBlockExprImpl(node);
+ }
+ else if (type == BLOCK_EXPR_STATEMENT) {
+ return new ZigBlockExprStatementImpl(node);
+ }
+ else if (type == BLOCK_LABEL) {
+ return new ZigBlockLabelImpl(node);
+ }
+ else if (type == BOOL_AND_EXPR) {
+ return new ZigBoolAndExprImpl(node);
+ }
+ else if (type == BOOL_OR_EXPR) {
+ return new ZigBoolOrExprImpl(node);
+ }
+ else if (type == BREAK_LABEL) {
+ return new ZigBreakLabelImpl(node);
+ }
+ else if (type == BYTE_ALIGN) {
+ return new ZigByteAlignImpl(node);
+ }
+ else if (type == CALL_CONV) {
+ return new ZigCallConvImpl(node);
+ }
+ else if (type == COMPARE_EXPR) {
+ return new ZigCompareExprImpl(node);
+ }
+ else if (type == COMPARE_OP) {
+ return new ZigCompareOpImpl(node);
+ }
+ else if (type == COMPTIME_DECL) {
+ return new ZigComptimeDeclImpl(node);
+ }
+ else if (type == COMPTIME_STATEMENT) {
+ return new ZigComptimeStatementImpl(node);
+ }
+ else if (type == CONTAINER_DECL) {
+ return new ZigContainerDeclImpl(node);
+ }
+ else if (type == CONTAINER_DECLARATION) {
+ return new ZigContainerDeclarationImpl(node);
+ }
+ else if (type == CONTAINER_DECL_AUTO) {
+ return new ZigContainerDeclAutoImpl(node);
+ }
+ else if (type == CONTAINER_DECL_TYPE) {
+ return new ZigContainerDeclTypeImpl(node);
+ }
+ else if (type == CONTAINER_FIELD) {
+ return new ZigContainerFieldImpl(node);
+ }
+ else if (type == CONTAINER_MEMBERS) {
+ return new ZigContainerMembersImpl(node);
+ }
+ else if (type == CURLY_SUFFIX_EXPR) {
+ return new ZigCurlySuffixExprImpl(node);
+ }
+ else if (type == DECL) {
+ return new ZigDeclImpl(node);
+ }
+ else if (type == ERROR_SET_DECL) {
+ return new ZigErrorSetDeclImpl(node);
+ }
+ else if (type == ERROR_UNION_EXPR) {
+ return new ZigErrorUnionExprImpl(node);
+ }
+ else if (type == EXPR_LIST) {
+ return new ZigExprListImpl(node);
+ }
+ else if (type == FIELD_INIT) {
+ return new ZigFieldInitImpl(node);
+ }
+ else if (type == FN_CALL_ARGUMENTS) {
+ return new ZigFnCallArgumentsImpl(node);
+ }
+ else if (type == FN_PROTO) {
+ return new ZigFnProtoImpl(node);
+ }
+ else if (type == FOR_EXPR) {
+ return new ZigForExprImpl(node);
+ }
+ else if (type == FOR_INPUT) {
+ return new ZigForInputImpl(node);
+ }
+ else if (type == FOR_PAYLOAD) {
+ return new ZigForPayloadImpl(node);
+ }
+ else if (type == FOR_PREFIX) {
+ return new ZigForPrefixImpl(node);
+ }
+ else if (type == FOR_STATEMENT) {
+ return new ZigForStatementImpl(node);
+ }
+ else if (type == FOR_TYPE_EXPR) {
+ return new ZigForTypeExprImpl(node);
+ }
+ else if (type == GLOBAL_VAR_DECL) {
+ return new ZigGlobalVarDeclImpl(node);
+ }
+ else if (type == GROUPED_EXPR) {
+ return new ZigGroupedExprImpl(node);
+ }
+ else if (type == IDENTIFIER_LIST) {
+ return new ZigIdentifierListImpl(node);
+ }
+ else if (type == IF_EXPR) {
+ return new ZigIfExprImpl(node);
+ }
+ else if (type == IF_PREFIX) {
+ return new ZigIfPrefixImpl(node);
+ }
+ else if (type == IF_STATEMENT) {
+ return new ZigIfStatementImpl(node);
+ }
+ else if (type == IF_TYPE_EXPR) {
+ return new ZigIfTypeExprImpl(node);
+ }
+ else if (type == INIT_LIST) {
+ return new ZigInitListImpl(node);
+ }
+ else if (type == LABELED_STATEMENT) {
+ return new ZigLabeledStatementImpl(node);
+ }
+ else if (type == LABELED_TYPE_EXPR) {
+ return new ZigLabeledTypeExprImpl(node);
+ }
+ else if (type == LINK_SECTION) {
+ return new ZigLinkSectionImpl(node);
+ }
+ else if (type == LOOP_EXPR) {
+ return new ZigLoopExprImpl(node);
+ }
+ else if (type == LOOP_STATEMENT) {
+ return new ZigLoopStatementImpl(node);
+ }
+ else if (type == LOOP_TYPE_EXPR) {
+ return new ZigLoopTypeExprImpl(node);
+ }
+ else if (type == MULTIPLY_EXPR) {
+ return new ZigMultiplyExprImpl(node);
+ }
+ else if (type == MULTIPLY_OP) {
+ return new ZigMultiplyOpImpl(node);
+ }
+ else if (type == PARAM_DECL) {
+ return new ZigParamDeclImpl(node);
+ }
+ else if (type == PARAM_DECL_LIST) {
+ return new ZigParamDeclListImpl(node);
+ }
+ else if (type == PARAM_TYPE) {
+ return new ZigParamTypeImpl(node);
+ }
+ else if (type == PAYLOAD) {
+ return new ZigPayloadImpl(node);
+ }
+ else if (type == PREFIX_EXPR) {
+ return new ZigPrefixExprImpl(node);
+ }
+ else if (type == PREFIX_OP) {
+ return new ZigPrefixOpImpl(node);
+ }
+ else if (type == PREFIX_TYPE_OP) {
+ return new ZigPrefixTypeOpImpl(node);
+ }
+ else if (type == PRIMARY_EXPR) {
+ return new ZigPrimaryExprImpl(node);
+ }
+ else if (type == PRIMARY_TYPE_EXPR) {
+ return new ZigPrimaryTypeExprImpl(node);
+ }
+ else if (type == PTR_INDEX_PAYLOAD) {
+ return new ZigPtrIndexPayloadImpl(node);
+ }
+ else if (type == PTR_PAYLOAD) {
+ return new ZigPtrPayloadImpl(node);
+ }
+ else if (type == PTR_TYPE_START) {
+ return new ZigPtrTypeStartImpl(node);
+ }
+ else if (type == SINGLE_ASSIGN_EXPR) {
+ return new ZigSingleAssignExprImpl(node);
+ }
+ else if (type == SLICE_TYPE_START) {
+ return new ZigSliceTypeStartImpl(node);
+ }
+ else if (type == STATEMENT) {
+ return new ZigStatementImpl(node);
+ }
+ else if (type == STRING_LIST) {
+ return new ZigStringListImpl(node);
+ }
+ else if (type == STRING_LITERAL) {
+ return new ZigStringLiteralImpl(node);
+ }
+ else if (type == SUFFIX_EXPR) {
+ return new ZigSuffixExprImpl(node);
+ }
+ else if (type == SUFFIX_OP) {
+ return new ZigSuffixOpImpl(node);
+ }
+ else if (type == SWITCH_CASE) {
+ return new ZigSwitchCaseImpl(node);
+ }
+ else if (type == SWITCH_EXPR) {
+ return new ZigSwitchExprImpl(node);
+ }
+ else if (type == SWITCH_ITEM) {
+ return new ZigSwitchItemImpl(node);
+ }
+ else if (type == SWITCH_PRONG) {
+ return new ZigSwitchProngImpl(node);
+ }
+ else if (type == SWITCH_PRONG_LIST) {
+ return new ZigSwitchProngListImpl(node);
+ }
+ else if (type == TEST_DECL) {
+ return new ZigTestDeclImpl(node);
+ }
+ else if (type == TYPE_EXPR) {
+ return new ZigTypeExprImpl(node);
+ }
+ else if (type == VAR_DECL_EXPR_STATEMENT) {
+ return new ZigVarDeclExprStatementImpl(node);
+ }
+ else if (type == VAR_DECL_PROTO) {
+ return new ZigVarDeclProtoImpl(node);
+ }
+ else if (type == WHILE_CONTINUE_EXPR) {
+ return new ZigWhileContinueExprImpl(node);
+ }
+ else if (type == WHILE_EXPR) {
+ return new ZigWhileExprImpl(node);
+ }
+ else if (type == WHILE_PREFIX) {
+ return new ZigWhilePrefixImpl(node);
+ }
+ else if (type == WHILE_STATEMENT) {
+ return new ZigWhileStatementImpl(node);
+ }
+ else if (type == WHILE_TYPE_EXPR) {
+ return new ZigWhileTypeExprImpl(node);
+ }
+ throw new AssertionError("Unknown element type: " + type);
+ }
+ }
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclExprStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclExprStatement.java
new file mode 100644
index 000000000..a2099ecf0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclExprStatement.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigVarDeclExprStatement extends PsiElement {
+
+ @Nullable
+ ZigAssignOp getAssignOp();
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ List getVarDeclProtoList();
+
+ @Nullable
+ PsiElement getEqual();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclProto.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclProto.java
new file mode 100644
index 000000000..943988ca0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVarDeclProto.java
@@ -0,0 +1,33 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigVarDeclProto extends PsiElement {
+
+ @Nullable
+ ZigAddrSpace getAddrSpace();
+
+ @Nullable
+ ZigByteAlign getByteAlign();
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigLinkSection getLinkSection();
+
+ @Nullable
+ PsiElement getColon();
+
+ @Nullable
+ PsiElement getIdentifier();
+
+ @Nullable
+ PsiElement getKeywordConst();
+
+ @Nullable
+ PsiElement getKeywordVar();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVisitor.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVisitor.java
new file mode 100644
index 000000000..49cfe3a61
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigVisitor.java
@@ -0,0 +1,418 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class ZigVisitor extends PsiElementVisitor {
+
+ public void visitAdditionExpr(@NotNull ZigAdditionExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitAdditionOp(@NotNull ZigAdditionOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAddrSpace(@NotNull ZigAddrSpace o) {
+ visitPsiElement(o);
+ }
+
+ public void visitArrayTypeStart(@NotNull ZigArrayTypeStart o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmClobbers(@NotNull ZigAsmClobbers o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmExpr(@NotNull ZigAsmExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitAsmInput(@NotNull ZigAsmInput o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmInputItem(@NotNull ZigAsmInputItem o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmInputList(@NotNull ZigAsmInputList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmOutput(@NotNull ZigAsmOutput o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmOutputItem(@NotNull ZigAsmOutputItem o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmOutputList(@NotNull ZigAsmOutputList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAssignExpr(@NotNull ZigAssignExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitAssignOp(@NotNull ZigAssignOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBitShiftExpr(@NotNull ZigBitShiftExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBitShiftOp(@NotNull ZigBitShiftOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBitwiseExpr(@NotNull ZigBitwiseExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBitwiseOp(@NotNull ZigBitwiseOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBlock(@NotNull ZigBlock o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBlockExpr(@NotNull ZigBlockExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBlockExprStatement(@NotNull ZigBlockExprStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBlockLabel(@NotNull ZigBlockLabel o) {
+ visitPsiElement(o);
+ }
+
+ public void visitBoolAndExpr(@NotNull ZigBoolAndExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBoolOrExpr(@NotNull ZigBoolOrExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBreakLabel(@NotNull ZigBreakLabel o) {
+ visitPsiElement(o);
+ }
+
+ public void visitByteAlign(@NotNull ZigByteAlign o) {
+ visitPsiElement(o);
+ }
+
+ public void visitCallConv(@NotNull ZigCallConv o) {
+ visitPsiElement(o);
+ }
+
+ public void visitCompareExpr(@NotNull ZigCompareExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitCompareOp(@NotNull ZigCompareOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitComptimeDecl(@NotNull ZigComptimeDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitComptimeStatement(@NotNull ZigComptimeStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerDecl(@NotNull ZigContainerDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerDeclAuto(@NotNull ZigContainerDeclAuto o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerDeclType(@NotNull ZigContainerDeclType o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerDeclaration(@NotNull ZigContainerDeclaration o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerField(@NotNull ZigContainerField o) {
+ visitPsiElement(o);
+ }
+
+ public void visitContainerMembers(@NotNull ZigContainerMembers o) {
+ visitPsiElement(o);
+ }
+
+ public void visitCurlySuffixExpr(@NotNull ZigCurlySuffixExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitDecl(@NotNull ZigDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitErrorSetDecl(@NotNull ZigErrorSetDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitErrorUnionExpr(@NotNull ZigErrorUnionExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitExpr(@NotNull ZigExpr o) {
+ visitPsiElement(o);
+ }
+
+ public void visitExprList(@NotNull ZigExprList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitFieldInit(@NotNull ZigFieldInit o) {
+ visitPsiElement(o);
+ }
+
+ public void visitFnCallArguments(@NotNull ZigFnCallArguments o) {
+ visitPsiElement(o);
+ }
+
+ public void visitFnProto(@NotNull ZigFnProto o) {
+ visitPsiElement(o);
+ }
+
+ public void visitForExpr(@NotNull ZigForExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitForInput(@NotNull ZigForInput o) {
+ visitPsiElement(o);
+ }
+
+ public void visitForPayload(@NotNull ZigForPayload o) {
+ visitPsiElement(o);
+ }
+
+ public void visitForPrefix(@NotNull ZigForPrefix o) {
+ visitPsiElement(o);
+ }
+
+ public void visitForStatement(@NotNull ZigForStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitForTypeExpr(@NotNull ZigForTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitGlobalVarDecl(@NotNull ZigGlobalVarDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitGroupedExpr(@NotNull ZigGroupedExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitIdentifierList(@NotNull ZigIdentifierList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitIfExpr(@NotNull ZigIfExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitIfPrefix(@NotNull ZigIfPrefix o) {
+ visitPsiElement(o);
+ }
+
+ public void visitIfStatement(@NotNull ZigIfStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitIfTypeExpr(@NotNull ZigIfTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitInitList(@NotNull ZigInitList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLabeledStatement(@NotNull ZigLabeledStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLabeledTypeExpr(@NotNull ZigLabeledTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitLinkSection(@NotNull ZigLinkSection o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLoopExpr(@NotNull ZigLoopExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitLoopStatement(@NotNull ZigLoopStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLoopTypeExpr(@NotNull ZigLoopTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitMultiplyExpr(@NotNull ZigMultiplyExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitMultiplyOp(@NotNull ZigMultiplyOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitParamDecl(@NotNull ZigParamDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitParamDeclList(@NotNull ZigParamDeclList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitParamType(@NotNull ZigParamType o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPayload(@NotNull ZigPayload o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPrefixExpr(@NotNull ZigPrefixExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitPrefixOp(@NotNull ZigPrefixOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPrefixTypeOp(@NotNull ZigPrefixTypeOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPrimaryExpr(@NotNull ZigPrimaryExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitPrimaryTypeExpr(@NotNull ZigPrimaryTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitPtrIndexPayload(@NotNull ZigPtrIndexPayload o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPtrPayload(@NotNull ZigPtrPayload o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPtrTypeStart(@NotNull ZigPtrTypeStart o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSingleAssignExpr(@NotNull ZigSingleAssignExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitSliceTypeStart(@NotNull ZigSliceTypeStart o) {
+ visitPsiElement(o);
+ }
+
+ public void visitStatement(@NotNull ZigStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitStringList(@NotNull ZigStringList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitStringLiteral(@NotNull ZigStringLiteral o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSuffixExpr(@NotNull ZigSuffixExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitSuffixOp(@NotNull ZigSuffixOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSwitchCase(@NotNull ZigSwitchCase o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSwitchExpr(@NotNull ZigSwitchExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitSwitchItem(@NotNull ZigSwitchItem o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSwitchProng(@NotNull ZigSwitchProng o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSwitchProngList(@NotNull ZigSwitchProngList o) {
+ visitPsiElement(o);
+ }
+
+ public void visitTestDecl(@NotNull ZigTestDecl o) {
+ visitPsiElement(o);
+ }
+
+ public void visitTypeExpr(@NotNull ZigTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitVarDeclExprStatement(@NotNull ZigVarDeclExprStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitVarDeclProto(@NotNull ZigVarDeclProto o) {
+ visitPsiElement(o);
+ }
+
+ public void visitWhileContinueExpr(@NotNull ZigWhileContinueExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitWhileExpr(@NotNull ZigWhileExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitWhilePrefix(@NotNull ZigWhilePrefix o) {
+ visitPsiElement(o);
+ }
+
+ public void visitWhileStatement(@NotNull ZigWhileStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitWhileTypeExpr(@NotNull ZigWhileTypeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitPsiElement(@NotNull PsiElement o) {
+ visitElement(o);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileContinueExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileContinueExpr.java
new file mode 100644
index 000000000..130d24dc6
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileContinueExpr.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface ZigWhileContinueExpr extends ZigExpr {
+
+ @NotNull
+ ZigExpr getExpr();
+
+ @NotNull
+ PsiElement getColon();
+
+ @NotNull
+ PsiElement getLparen();
+
+ @NotNull
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileExpr.java
new file mode 100644
index 000000000..78254a9f1
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigWhileExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @NotNull
+ ZigWhilePrefix getWhilePrefix();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhilePrefix.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhilePrefix.java
new file mode 100644
index 000000000..d4b6c68f2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhilePrefix.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigWhilePrefix extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ ZigPtrPayload getPtrPayload();
+
+ @NotNull
+ PsiElement getKeywordWhile();
+
+ @Nullable
+ PsiElement getLparen();
+
+ @Nullable
+ PsiElement getRparen();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileStatement.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileStatement.java
new file mode 100644
index 000000000..2df96ced2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileStatement.java
@@ -0,0 +1,28 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface ZigWhileStatement extends PsiElement {
+
+ @Nullable
+ ZigExpr getExpr();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @Nullable
+ ZigStatement getStatement();
+
+ @NotNull
+ ZigWhilePrefix getWhilePrefix();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+ @Nullable
+ PsiElement getSemicolon();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileTypeExpr.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileTypeExpr.java
new file mode 100644
index 000000000..1055844b0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/ZigWhileTypeExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface ZigWhileTypeExpr extends ZigExpr {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ ZigPayload getPayload();
+
+ @NotNull
+ ZigWhilePrefix getWhilePrefix();
+
+ @Nullable
+ PsiElement getKeywordElse();
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionExprImpl.java
new file mode 100644
index 000000000..060f5ae22
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAdditionExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigAdditionOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigAdditionExprImpl extends ZigExprImpl implements ZigAdditionExpr {
+
+ public ZigAdditionExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAdditionExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getAdditionOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigAdditionOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionOpImpl.java
new file mode 100644
index 000000000..17e44c019
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAdditionOpImpl.java
@@ -0,0 +1,73 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAdditionOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAdditionOpImpl extends ASTWrapperPsiElement implements ZigAdditionOp {
+
+ public ZigAdditionOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAdditionOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinus() {
+ return findChildByType(MINUS);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinuspercent() {
+ return findChildByType(MINUSPERCENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinuspipe() {
+ return findChildByType(MINUSPIPE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPlus() {
+ return findChildByType(PLUS);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPlus2() {
+ return findChildByType(PLUS2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPluspercent() {
+ return findChildByType(PLUSPERCENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPluspipe() {
+ return findChildByType(PLUSPIPE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAddrSpaceImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAddrSpaceImpl.java
new file mode 100644
index 000000000..9b783855b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAddrSpaceImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAddrSpace;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAddrSpaceImpl extends ASTWrapperPsiElement implements ZigAddrSpace {
+
+ public ZigAddrSpaceImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAddrSpace(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordAddrspace() {
+ return findNotNullChildByType(KEYWORD_ADDRSPACE);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigArrayTypeStartImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigArrayTypeStartImpl.java
new file mode 100644
index 000000000..282f8521c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigArrayTypeStartImpl.java
@@ -0,0 +1,59 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigArrayTypeStart;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigArrayTypeStartImpl extends ASTWrapperPsiElement implements ZigArrayTypeStart {
+
+ public ZigArrayTypeStartImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitArrayTypeStart(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbracket() {
+ return findNotNullChildByType(LBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRbracket() {
+ return findNotNullChildByType(RBRACKET);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmClobbersImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmClobbersImpl.java
new file mode 100644
index 000000000..580b43eb6
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmClobbersImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmClobbers;
+import com.falsepattern.zigbrains.zig.psi.ZigStringList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.COLON;
+
+public class ZigAsmClobbersImpl extends ASTWrapperPsiElement implements ZigAsmClobbers {
+
+ public ZigAsmClobbersImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmClobbers(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigStringList getStringList() {
+ return findNotNullChildByClass(ZigStringList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmExprImpl.java
new file mode 100644
index 000000000..c55ed0029
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmExprImpl.java
@@ -0,0 +1,69 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutput;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAsmExprImpl extends ZigExprImpl implements ZigAsmExpr {
+
+ public ZigAsmExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAsmOutput getAsmOutput() {
+ return findChildByClass(ZigAsmOutput.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordAsm() {
+ return findNotNullChildByType(KEYWORD_ASM);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordVolatile() {
+ return findChildByType(KEYWORD_VOLATILE);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputImpl.java
new file mode 100644
index 000000000..532aadbab
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmClobbers;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInput;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInputList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.COLON;
+
+public class ZigAsmInputImpl extends ASTWrapperPsiElement implements ZigAsmInput {
+
+ public ZigAsmInputImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmInput(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAsmClobbers getAsmClobbers() {
+ return findChildByClass(ZigAsmClobbers.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigAsmInputList getAsmInputList() {
+ return findNotNullChildByClass(ZigAsmInputList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputItemImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputItemImpl.java
new file mode 100644
index 000000000..3f3e30f4a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputItemImpl.java
@@ -0,0 +1,74 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInputItem;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigStringLiteral;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAsmInputItemImpl extends ASTWrapperPsiElement implements ZigAsmInputItem {
+
+ public ZigAsmInputItemImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmInputItem(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigStringLiteral getStringLiteral() {
+ return findNotNullChildByClass(ZigStringLiteral.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbracket() {
+ return findNotNullChildByType(LBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRbracket() {
+ return findNotNullChildByType(RBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputListImpl.java
new file mode 100644
index 000000000..ddc3f7299
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmInputListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInputItem;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInputList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigAsmInputListImpl extends ASTWrapperPsiElement implements ZigAsmInputList {
+
+ public ZigAsmInputListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmInputList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getAsmInputItemList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigAsmInputItem.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputImpl.java
new file mode 100644
index 000000000..c6bd2d8d3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmInput;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutput;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutputList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.COLON;
+
+public class ZigAsmOutputImpl extends ASTWrapperPsiElement implements ZigAsmOutput {
+
+ public ZigAsmOutputImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmOutput(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAsmInput getAsmInput() {
+ return findChildByClass(ZigAsmInput.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigAsmOutputList getAsmOutputList() {
+ return findNotNullChildByClass(ZigAsmOutputList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputItemImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputItemImpl.java
new file mode 100644
index 000000000..fa8f3a7b9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputItemImpl.java
@@ -0,0 +1,75 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutputItem;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigStringLiteral;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAsmOutputItemImpl extends ASTWrapperPsiElement implements ZigAsmOutputItem {
+
+ public ZigAsmOutputItemImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmOutputItem(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigStringLiteral getStringLiteral() {
+ return findNotNullChildByClass(ZigStringLiteral.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbracket() {
+ return findNotNullChildByType(LBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinusrarrow() {
+ return findChildByType(MINUSRARROW);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRbracket() {
+ return findNotNullChildByType(RBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputListImpl.java
new file mode 100644
index 000000000..c1528a450
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAsmOutputListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutputItem;
+import com.falsepattern.zigbrains.zig.psi.ZigAsmOutputList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigAsmOutputListImpl extends ASTWrapperPsiElement implements ZigAsmOutputList {
+
+ public ZigAsmOutputListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAsmOutputList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getAsmOutputItemList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigAsmOutputItem.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignExprImpl.java
new file mode 100644
index 000000000..408e77008
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignExprImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAssignExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigAssignOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EQUAL;
+
+public class ZigAssignExprImpl extends ZigExprImpl implements ZigAssignExpr {
+
+ public ZigAssignExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAssignExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAssignOp getAssignOp() {
+ return findChildByClass(ZigAssignOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqual() {
+ return findChildByType(EQUAL);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignOpImpl.java
new file mode 100644
index 000000000..a2a0701b0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigAssignOpImpl.java
@@ -0,0 +1,139 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAssignOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigAssignOpImpl extends ASTWrapperPsiElement implements ZigAssignOp {
+
+ public ZigAssignOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitAssignOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAmpersandequal() {
+ return findChildByType(AMPERSANDEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsteriskequal() {
+ return findChildByType(ASTERISKEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsteriskpercentequal() {
+ return findChildByType(ASTERISKPERCENTEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsteriskpipeequal() {
+ return findChildByType(ASTERISKPIPEEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getCaretequal() {
+ return findChildByType(CARETEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqual() {
+ return findChildByType(EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrow2Equal() {
+ return findChildByType(LARROW2EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrow2Pipeequal() {
+ return findChildByType(LARROW2PIPEEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinusequal() {
+ return findChildByType(MINUSEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinuspercentequal() {
+ return findChildByType(MINUSPERCENTEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinuspipeequal() {
+ return findChildByType(MINUSPIPEEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPercentequal() {
+ return findChildByType(PERCENTEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPipeequal() {
+ return findChildByType(PIPEEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPlusequal() {
+ return findChildByType(PLUSEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPluspercentequal() {
+ return findChildByType(PLUSPERCENTEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPluspipeequal() {
+ return findChildByType(PLUSPIPEEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRarrow2Equal() {
+ return findChildByType(RARROW2EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSlashequal() {
+ return findChildByType(SLASHEQUAL);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftExprImpl.java
new file mode 100644
index 000000000..a901422d4
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBitShiftExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigBitShiftOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigBitShiftExprImpl extends ZigExprImpl implements ZigBitShiftExpr {
+
+ public ZigBitShiftExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBitShiftExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getBitShiftOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigBitShiftOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftOpImpl.java
new file mode 100644
index 000000000..6569ace24
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitShiftOpImpl.java
@@ -0,0 +1,49 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBitShiftOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigBitShiftOpImpl extends ASTWrapperPsiElement implements ZigBitShiftOp {
+
+ public ZigBitShiftOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBitShiftOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrow2() {
+ return findChildByType(LARROW2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrow2Pipe() {
+ return findChildByType(LARROW2PIPE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRarrow2() {
+ return findChildByType(RARROW2);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseExprImpl.java
new file mode 100644
index 000000000..8e65a0699
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBitwiseExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigBitwiseOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigBitwiseExprImpl extends ZigExprImpl implements ZigBitwiseExpr {
+
+ public ZigBitwiseExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBitwiseExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getBitwiseOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigBitwiseOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseOpImpl.java
new file mode 100644
index 000000000..d0b9f75ca
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBitwiseOpImpl.java
@@ -0,0 +1,68 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBitwiseOp;
+import com.falsepattern.zigbrains.zig.psi.ZigPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigBitwiseOpImpl extends ASTWrapperPsiElement implements ZigBitwiseOp {
+
+ public ZigBitwiseOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBitwiseOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAmpersand() {
+ return findChildByType(AMPERSAND);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getCaret() {
+ return findChildByType(CARET);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordCatch() {
+ return findChildByType(KEYWORD_CATCH);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordOrelse() {
+ return findChildByType(KEYWORD_ORELSE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPipe() {
+ return findChildByType(PIPE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprImpl.java
new file mode 100644
index 000000000..13084153a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprImpl.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlock;
+import com.falsepattern.zigbrains.zig.psi.ZigBlockExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigBlockLabel;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class ZigBlockExprImpl extends ZigExprImpl implements ZigBlockExpr {
+
+ public ZigBlockExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBlockExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigBlock getBlock() {
+ return findNotNullChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockLabel getBlockLabel() {
+ return findChildByClass(ZigBlockLabel.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprStatementImpl.java
new file mode 100644
index 000000000..b8bde5e65
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockExprStatementImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlockExprStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigBlockExprStatementImpl extends ASTWrapperPsiElement implements ZigBlockExprStatement {
+
+ public ZigBlockExprStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBlockExprStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockImpl.java
new file mode 100644
index 000000000..cbabfbf1f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlock;
+import com.falsepattern.zigbrains.zig.psi.ZigStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.LBRACE;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.RBRACE;
+
+public class ZigBlockImpl extends ASTWrapperPsiElement implements ZigBlock {
+
+ public ZigBlockImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBlock(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getStatementList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigStatement.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbrace() {
+ return findNotNullChildByType(LBRACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbrace() {
+ return findChildByType(RBRACE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockLabelImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockLabelImpl.java
new file mode 100644
index 000000000..844dabb77
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBlockLabelImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlockLabel;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.COLON;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.IDENTIFIER;
+
+public class ZigBlockLabelImpl extends ASTWrapperPsiElement implements ZigBlockLabel {
+
+ public ZigBlockLabelImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBlockLabel(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolAndExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolAndExprImpl.java
new file mode 100644
index 000000000..299eceda5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolAndExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBoolAndExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigBoolAndExprImpl extends ZigExprImpl implements ZigBoolAndExpr {
+
+ public ZigBoolAndExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBoolAndExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolOrExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolOrExprImpl.java
new file mode 100644
index 000000000..279114661
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBoolOrExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBoolOrExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigBoolOrExprImpl extends ZigExprImpl implements ZigBoolOrExpr {
+
+ public ZigBoolOrExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBoolOrExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBreakLabelImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBreakLabelImpl.java
new file mode 100644
index 000000000..4917debbd
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigBreakLabelImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBreakLabel;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.COLON;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.IDENTIFIER;
+
+public class ZigBreakLabelImpl extends ASTWrapperPsiElement implements ZigBreakLabel {
+
+ public ZigBreakLabelImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitBreakLabel(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigByteAlignImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigByteAlignImpl.java
new file mode 100644
index 000000000..68c3da4e4
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigByteAlignImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigByteAlign;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigByteAlignImpl extends ASTWrapperPsiElement implements ZigByteAlign {
+
+ public ZigByteAlignImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitByteAlign(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordAlign() {
+ return findNotNullChildByType(KEYWORD_ALIGN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCallConvImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCallConvImpl.java
new file mode 100644
index 000000000..2b44c4985
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCallConvImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigCallConv;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigCallConvImpl extends ASTWrapperPsiElement implements ZigCallConv {
+
+ public ZigCallConvImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitCallConv(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordCallconv() {
+ return findNotNullChildByType(KEYWORD_CALLCONV);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareExprImpl.java
new file mode 100644
index 000000000..84560fcd3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareExprImpl.java
@@ -0,0 +1,45 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigCompareExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigCompareOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class ZigCompareExprImpl extends ZigExprImpl implements ZigCompareExpr {
+
+ public ZigCompareExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitCompareExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigCompareOp getCompareOp() {
+ return findChildByClass(ZigCompareOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareOpImpl.java
new file mode 100644
index 000000000..5d69250c7
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCompareOpImpl.java
@@ -0,0 +1,67 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigCompareOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigCompareOpImpl extends ASTWrapperPsiElement implements ZigCompareOp {
+
+ public ZigCompareOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitCompareOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqualequal() {
+ return findChildByType(EQUALEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getExclamationmarkequal() {
+ return findChildByType(EXCLAMATIONMARKEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrow() {
+ return findChildByType(LARROW);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLarrowequal() {
+ return findChildByType(LARROWEQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRarrow() {
+ return findChildByType(RARROW);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRarrowequal() {
+ return findChildByType(RARROWEQUAL);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeDeclImpl.java
new file mode 100644
index 000000000..c3e1ad8ac
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeDeclImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlock;
+import com.falsepattern.zigbrains.zig.psi.ZigComptimeDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_COMPTIME;
+
+public class ZigComptimeDeclImpl extends ASTWrapperPsiElement implements ZigComptimeDecl {
+
+ public ZigComptimeDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitComptimeDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigBlock getBlock() {
+ return findNotNullChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordComptime() {
+ return findNotNullChildByType(KEYWORD_COMPTIME);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeStatementImpl.java
new file mode 100644
index 000000000..0c0a4a4f1
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigComptimeStatementImpl.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlockExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigComptimeStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigVarDeclExprStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class ZigComptimeStatementImpl extends ASTWrapperPsiElement implements ZigComptimeStatement {
+
+ public ZigComptimeStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitComptimeStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockExpr getBlockExpr() {
+ return findChildByClass(ZigBlockExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigVarDeclExprStatement getVarDeclExprStatement() {
+ return findChildByClass(ZigVarDeclExprStatement.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclAutoImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclAutoImpl.java
new file mode 100644
index 000000000..c96ced9c3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclAutoImpl.java
@@ -0,0 +1,63 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDeclAuto;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDeclType;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerMembers;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigContainerDeclAutoImpl extends ASTWrapperPsiElement implements ZigContainerDeclAuto {
+
+ public ZigContainerDeclAutoImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerDeclAuto(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigContainerDeclType getContainerDeclType() {
+ return findNotNullChildByClass(ZigContainerDeclType.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigContainerMembers getContainerMembers() {
+ return findChildByClass(ZigContainerMembers.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getContainerDocComment() {
+ return findChildByType(CONTAINER_DOC_COMMENT);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbrace() {
+ return findNotNullChildByType(LBRACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbrace() {
+ return findChildByType(RBRACE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclImpl.java
new file mode 100644
index 000000000..4b04d9df0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDeclAuto;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_EXTERN;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_PACKED;
+
+public class ZigContainerDeclImpl extends ASTWrapperPsiElement implements ZigContainerDecl {
+
+ public ZigContainerDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigContainerDeclAuto getContainerDeclAuto() {
+ return findNotNullChildByClass(ZigContainerDeclAuto.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordExtern() {
+ return findChildByType(KEYWORD_EXTERN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordPacked() {
+ return findChildByType(KEYWORD_PACKED);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclTypeImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclTypeImpl.java
new file mode 100644
index 000000000..96c34fe6a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclTypeImpl.java
@@ -0,0 +1,74 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDeclType;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigContainerDeclTypeImpl extends ASTWrapperPsiElement implements ZigContainerDeclType {
+
+ public ZigContainerDeclTypeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerDeclType(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordEnum() {
+ return findChildByType(KEYWORD_ENUM);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordOpaque() {
+ return findChildByType(KEYWORD_OPAQUE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordStruct() {
+ return findChildByType(KEYWORD_STRUCT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordUnion() {
+ return findChildByType(KEYWORD_UNION);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclarationImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclarationImpl.java
new file mode 100644
index 000000000..e869f320d
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerDeclarationImpl.java
@@ -0,0 +1,61 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.DOC_COMMENT;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_PUB;
+
+public class ZigContainerDeclarationImpl extends ASTWrapperPsiElement implements ZigContainerDeclaration {
+
+ public ZigContainerDeclarationImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerDeclaration(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigComptimeDecl getComptimeDecl() {
+ return findChildByClass(ZigComptimeDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigDecl getDecl() {
+ return findChildByClass(ZigDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigTestDecl getTestDecl() {
+ return findChildByClass(ZigTestDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDocComment() {
+ return findChildByType(DOC_COMMENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordPub() {
+ return findChildByType(KEYWORD_PUB);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerFieldImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerFieldImpl.java
new file mode 100644
index 000000000..9b8999bb4
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerFieldImpl.java
@@ -0,0 +1,78 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigByteAlign;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerField;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigContainerFieldImpl extends ASTWrapperPsiElement implements ZigContainerField {
+
+ public ZigContainerFieldImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerField(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigByteAlign getByteAlign() {
+ return findChildByClass(ZigByteAlign.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDocComment() {
+ return findChildByType(DOC_COMMENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqual() {
+ return findChildByType(EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordComptime() {
+ return findChildByType(KEYWORD_COMPTIME);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerMembersImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerMembersImpl.java
new file mode 100644
index 000000000..18a1da4c9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigContainerMembersImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigContainerDeclaration;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerField;
+import com.falsepattern.zigbrains.zig.psi.ZigContainerMembers;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigContainerMembersImpl extends ASTWrapperPsiElement implements ZigContainerMembers {
+
+ public ZigContainerMembersImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitContainerMembers(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getContainerDeclarationList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigContainerDeclaration.class);
+ }
+
+ @Override
+ @NotNull
+ public List getContainerFieldList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigContainerField.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCurlySuffixExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCurlySuffixExprImpl.java
new file mode 100644
index 000000000..301ccb1c9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigCurlySuffixExprImpl.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigCurlySuffixExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigInitList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class ZigCurlySuffixExprImpl extends ZigExprImpl implements ZigCurlySuffixExpr {
+
+ public ZigCurlySuffixExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitCurlySuffixExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigInitList getInitList() {
+ return findChildByClass(ZigInitList.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigDeclImpl.java
new file mode 100644
index 000000000..1893a9bf0
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigDeclImpl.java
@@ -0,0 +1,102 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigDeclImpl extends ASTWrapperPsiElement implements ZigDecl {
+
+ public ZigDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlock getBlock() {
+ return findChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigFnProto getFnProto() {
+ return findChildByClass(ZigFnProto.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigGlobalVarDecl getGlobalVarDecl() {
+ return findChildByClass(ZigGlobalVarDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordExport() {
+ return findChildByType(KEYWORD_EXPORT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordExtern() {
+ return findChildByType(KEYWORD_EXTERN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordInline() {
+ return findChildByType(KEYWORD_INLINE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordNoinline() {
+ return findChildByType(KEYWORD_NOINLINE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordThreadlocal() {
+ return findChildByType(KEYWORD_THREADLOCAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordUsingnamespace() {
+ return findChildByType(KEYWORD_USINGNAMESPACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getStringLiteralSingle() {
+ return findChildByType(STRING_LITERAL_SINGLE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorSetDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorSetDeclImpl.java
new file mode 100644
index 000000000..3ac790238
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorSetDeclImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigErrorSetDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigIdentifierList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigErrorSetDeclImpl extends ASTWrapperPsiElement implements ZigErrorSetDecl {
+
+ public ZigErrorSetDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitErrorSetDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigIdentifierList getIdentifierList() {
+ return findNotNullChildByClass(ZigIdentifierList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordError() {
+ return findNotNullChildByType(KEYWORD_ERROR);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbrace() {
+ return findNotNullChildByType(LBRACE);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRbrace() {
+ return findNotNullChildByType(RBRACE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorUnionExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorUnionExprImpl.java
new file mode 100644
index 000000000..6cdb73030
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigErrorUnionExprImpl.java
@@ -0,0 +1,47 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigErrorUnionExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EXCLAMATIONMARK;
+
+public class ZigErrorUnionExprImpl extends ZigExprImpl implements ZigErrorUnionExpr {
+
+ public ZigErrorUnionExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitErrorUnionExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getExclamationmark() {
+ return findChildByType(EXCLAMATIONMARK);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprImpl.java
new file mode 100644
index 000000000..c73da28d2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class ZigExprImpl extends ASTWrapperPsiElement implements ZigExpr {
+
+ public ZigExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprListImpl.java
new file mode 100644
index 000000000..e7730abc6
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigExprListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigExprList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigExprListImpl extends ASTWrapperPsiElement implements ZigExprList {
+
+ public ZigExprListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitExprList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFieldInitImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFieldInitImpl.java
new file mode 100644
index 000000000..d133bc8fa
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFieldInitImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigFieldInit;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigFieldInitImpl extends ASTWrapperPsiElement implements ZigFieldInit {
+
+ public ZigFieldInitImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitFieldInit(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getDot() {
+ return findNotNullChildByType(DOT);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getEqual() {
+ return findNotNullChildByType(EQUAL);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnCallArgumentsImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnCallArgumentsImpl.java
new file mode 100644
index 000000000..96df7928a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnCallArgumentsImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExprList;
+import com.falsepattern.zigbrains.zig.psi.ZigFnCallArguments;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.LPAREN;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.RPAREN;
+
+public class ZigFnCallArgumentsImpl extends ASTWrapperPsiElement implements ZigFnCallArguments {
+
+ public ZigFnCallArgumentsImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitFnCallArguments(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExprList getExprList() {
+ return findChildByClass(ZigExprList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnProtoImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnProtoImpl.java
new file mode 100644
index 000000000..6e25f286c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigFnProtoImpl.java
@@ -0,0 +1,96 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigFnProtoImpl extends ASTWrapperPsiElement implements ZigFnProto {
+
+ public ZigFnProtoImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitFnProto(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAddrSpace getAddrSpace() {
+ return findChildByClass(ZigAddrSpace.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigByteAlign getByteAlign() {
+ return findChildByClass(ZigByteAlign.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigCallConv getCallConv() {
+ return findChildByClass(ZigCallConv.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigLinkSection getLinkSection() {
+ return findChildByClass(ZigLinkSection.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigParamDeclList getParamDeclList() {
+ return findChildByClass(ZigParamDeclList.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getExclamationmark() {
+ return findChildByType(EXCLAMATIONMARK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordFn() {
+ return findNotNullChildByType(KEYWORD_FN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForExprImpl.java
new file mode 100644
index 000000000..dfa3d4243
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForExprImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigForExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigForPrefix;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigForExprImpl extends ZigExprImpl implements ZigForExpr {
+
+ public ZigForExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigForPrefix getForPrefix() {
+ return findNotNullChildByClass(ZigForPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForInputImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForInputImpl.java
new file mode 100644
index 000000000..99d5ac043
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForInputImpl.java
@@ -0,0 +1,47 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigForInput;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.DOT2;
+
+public class ZigForInputImpl extends ASTWrapperPsiElement implements ZigForInput {
+
+ public ZigForInputImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForInput(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot2() {
+ return findChildByType(DOT2);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPayloadImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPayloadImpl.java
new file mode 100644
index 000000000..ae18b49e9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPayloadImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigForPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class ZigForPayloadImpl extends ASTWrapperPsiElement implements ZigForPayload {
+
+ public ZigForPayloadImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForPayload(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPrefixImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPrefixImpl.java
new file mode 100644
index 000000000..2160e1705
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForPrefixImpl.java
@@ -0,0 +1,66 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigForInput;
+import com.falsepattern.zigbrains.zig.psi.ZigForPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigForPrefix;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigForPrefixImpl extends ASTWrapperPsiElement implements ZigForPrefix {
+
+ public ZigForPrefixImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForPrefix(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getForInputList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigForInput.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigForPayload getForPayload() {
+ return findChildByClass(ZigForPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordFor() {
+ return findNotNullChildByType(KEYWORD_FOR);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForStatementImpl.java
new file mode 100644
index 000000000..5a8120ff2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForStatementImpl.java
@@ -0,0 +1,61 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigForStatementImpl extends ASTWrapperPsiElement implements ZigForStatement {
+
+ public ZigForStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigForPrefix getForPrefix() {
+ return findNotNullChildByClass(ZigForPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigStatement getStatement() {
+ return findChildByClass(ZigStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForTypeExprImpl.java
new file mode 100644
index 000000000..4fc923692
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigForTypeExprImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigForPrefix;
+import com.falsepattern.zigbrains.zig.psi.ZigForTypeExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigForTypeExprImpl extends ZigExprImpl implements ZigForTypeExpr {
+
+ public ZigForTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitForTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigForPrefix getForPrefix() {
+ return findNotNullChildByClass(ZigForPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGlobalVarDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGlobalVarDeclImpl.java
new file mode 100644
index 000000000..d70653d81
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGlobalVarDeclImpl.java
@@ -0,0 +1,58 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigGlobalVarDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigVarDeclProto;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EQUAL;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigGlobalVarDeclImpl extends ASTWrapperPsiElement implements ZigGlobalVarDecl {
+
+ public ZigGlobalVarDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitGlobalVarDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigVarDeclProto getVarDeclProto() {
+ return findNotNullChildByClass(ZigVarDeclProto.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqual() {
+ return findChildByType(EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGroupedExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGroupedExprImpl.java
new file mode 100644
index 000000000..cb63d16c9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigGroupedExprImpl.java
@@ -0,0 +1,50 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigGroupedExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.LPAREN;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.RPAREN;
+
+public class ZigGroupedExprImpl extends ZigExprImpl implements ZigGroupedExpr {
+
+ public ZigGroupedExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitGroupedExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIdentifierListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIdentifierListImpl.java
new file mode 100644
index 000000000..05b1cea99
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIdentifierListImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigIdentifierList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class ZigIdentifierListImpl extends ASTWrapperPsiElement implements ZigIdentifierList {
+
+ public ZigIdentifierListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitIdentifierList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfExprImpl.java
new file mode 100644
index 000000000..fdea1e53b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfExprImpl.java
@@ -0,0 +1,57 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigIfExprImpl extends ZigExprImpl implements ZigIfExpr {
+
+ public ZigIfExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitIfExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigIfPrefix getIfPrefix() {
+ return findNotNullChildByClass(ZigIfPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfPrefixImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfPrefixImpl.java
new file mode 100644
index 000000000..be5378aea
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfPrefixImpl.java
@@ -0,0 +1,63 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigIfPrefix;
+import com.falsepattern.zigbrains.zig.psi.ZigPtrPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigIfPrefixImpl extends ASTWrapperPsiElement implements ZigIfPrefix {
+
+ public ZigIfPrefixImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitIfPrefix(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPtrPayload getPtrPayload() {
+ return findChildByClass(ZigPtrPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordIf() {
+ return findNotNullChildByType(KEYWORD_IF);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfStatementImpl.java
new file mode 100644
index 000000000..85210ef3e
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfStatementImpl.java
@@ -0,0 +1,67 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigIfStatementImpl extends ASTWrapperPsiElement implements ZigIfStatement {
+
+ public ZigIfStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitIfStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigIfPrefix getIfPrefix() {
+ return findNotNullChildByClass(ZigIfPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigStatement getStatement() {
+ return findChildByClass(ZigStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfTypeExprImpl.java
new file mode 100644
index 000000000..9a5328f67
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigIfTypeExprImpl.java
@@ -0,0 +1,57 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigIfTypeExprImpl extends ZigExprImpl implements ZigIfTypeExpr {
+
+ public ZigIfTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitIfTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigIfPrefix getIfPrefix() {
+ return findNotNullChildByClass(ZigIfPrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigInitListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigInitListImpl.java
new file mode 100644
index 000000000..ba6d84500
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigInitListImpl.java
@@ -0,0 +1,61 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigFieldInit;
+import com.falsepattern.zigbrains.zig.psi.ZigInitList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.LBRACE;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.RBRACE;
+
+public class ZigInitListImpl extends ASTWrapperPsiElement implements ZigInitList {
+
+ public ZigInitListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitInitList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getFieldInitList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigFieldInit.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbrace() {
+ return findNotNullChildByType(LBRACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbrace() {
+ return findChildByType(RBRACE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledStatementImpl.java
new file mode 100644
index 000000000..6dd66a09b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledStatementImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class ZigLabeledStatementImpl extends ASTWrapperPsiElement implements ZigLabeledStatement {
+
+ public ZigLabeledStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLabeledStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlock getBlock() {
+ return findChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockLabel getBlockLabel() {
+ return findChildByClass(ZigBlockLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigLoopStatement getLoopStatement() {
+ return findChildByClass(ZigLoopStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigSwitchExpr getSwitchExpr() {
+ return findChildByClass(ZigSwitchExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledTypeExprImpl.java
new file mode 100644
index 000000000..0476d5be1
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLabeledTypeExprImpl.java
@@ -0,0 +1,45 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class ZigLabeledTypeExprImpl extends ZigExprImpl implements ZigLabeledTypeExpr {
+
+ public ZigLabeledTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLabeledTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlock getBlock() {
+ return findChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockLabel getBlockLabel() {
+ return findChildByClass(ZigBlockLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLinkSectionImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLinkSectionImpl.java
new file mode 100644
index 000000000..bb17d3504
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLinkSectionImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigLinkSection;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigLinkSectionImpl extends ASTWrapperPsiElement implements ZigLinkSection {
+
+ public ZigLinkSectionImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLinkSection(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordLinksection() {
+ return findNotNullChildByType(KEYWORD_LINKSECTION);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopExprImpl.java
new file mode 100644
index 000000000..1911dcf2b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigLoopExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_INLINE;
+
+public class ZigLoopExprImpl extends ZigExprImpl implements ZigLoopExpr {
+
+ public ZigLoopExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLoopExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordInline() {
+ return findChildByType(KEYWORD_INLINE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopStatementImpl.java
new file mode 100644
index 000000000..d756f1a2a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopStatementImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigForStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigLoopStatement;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.falsepattern.zigbrains.zig.psi.ZigWhileStatement;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_INLINE;
+
+public class ZigLoopStatementImpl extends ASTWrapperPsiElement implements ZigLoopStatement {
+
+ public ZigLoopStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLoopStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigForStatement getForStatement() {
+ return findChildByClass(ZigForStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigWhileStatement getWhileStatement() {
+ return findChildByClass(ZigWhileStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordInline() {
+ return findChildByType(KEYWORD_INLINE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopTypeExprImpl.java
new file mode 100644
index 000000000..ea3f73ca9
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigLoopTypeExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigLoopTypeExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_INLINE;
+
+public class ZigLoopTypeExprImpl extends ZigExprImpl implements ZigLoopTypeExpr {
+
+ public ZigLoopTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitLoopTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordInline() {
+ return findChildByType(KEYWORD_INLINE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyExprImpl.java
new file mode 100644
index 000000000..393d756ea
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigMultiplyExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigMultiplyOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigMultiplyExprImpl extends ZigExprImpl implements ZigMultiplyExpr {
+
+ public ZigMultiplyExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitMultiplyExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getMultiplyOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigMultiplyOp.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyOpImpl.java
new file mode 100644
index 000000000..900e91efe
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigMultiplyOpImpl.java
@@ -0,0 +1,73 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigMultiplyOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigMultiplyOpImpl extends ASTWrapperPsiElement implements ZigMultiplyOp {
+
+ public ZigMultiplyOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitMultiplyOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsterisk() {
+ return findChildByType(ASTERISK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsterisk2() {
+ return findChildByType(ASTERISK2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsteriskpercent() {
+ return findChildByType(ASTERISKPERCENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsteriskpipe() {
+ return findChildByType(ASTERISKPIPE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPercent() {
+ return findChildByType(PERCENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getPipe2() {
+ return findChildByType(PIPE2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSlash() {
+ return findChildByType(SLASH);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclImpl.java
new file mode 100644
index 000000000..1f2317cea
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclImpl.java
@@ -0,0 +1,74 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigParamDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigParamType;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigParamDeclImpl extends ASTWrapperPsiElement implements ZigParamDecl {
+
+ public ZigParamDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitParamDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigParamType getParamType() {
+ return findChildByClass(ZigParamType.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDocComment() {
+ return findChildByType(DOC_COMMENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot3() {
+ return findChildByType(DOT3);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordComptime() {
+ return findChildByType(KEYWORD_COMPTIME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordNoalias() {
+ return findChildByType(KEYWORD_NOALIAS);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclListImpl.java
new file mode 100644
index 000000000..e1c4e122a
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamDeclListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigParamDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigParamDeclList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigParamDeclListImpl extends ASTWrapperPsiElement implements ZigParamDeclList {
+
+ public ZigParamDeclListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitParamDeclList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getParamDeclList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigParamDecl.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamTypeImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamTypeImpl.java
new file mode 100644
index 000000000..81cfa4f37
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigParamTypeImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigParamType;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ANYTYPE;
+
+public class ZigParamTypeImpl extends ASTWrapperPsiElement implements ZigParamType {
+
+ public ZigParamTypeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitParamType(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordAnytype() {
+ return findChildByType(KEYWORD_ANYTYPE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPayloadImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPayloadImpl.java
new file mode 100644
index 000000000..01a522af7
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPayloadImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.IDENTIFIER;
+
+public class ZigPayloadImpl extends ASTWrapperPsiElement implements ZigPayload {
+
+ public ZigPayloadImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPayload(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixExprImpl.java
new file mode 100644
index 000000000..c87bee426
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigPrefixExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigPrefixOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigPrefixExprImpl extends ZigExprImpl implements ZigPrefixExpr {
+
+ public ZigPrefixExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPrefixExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getPrefixOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigPrefixOp.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixOpImpl.java
new file mode 100644
index 000000000..c21671998
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixOpImpl.java
@@ -0,0 +1,73 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigPrefixOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigPrefixOpImpl extends ASTWrapperPsiElement implements ZigPrefixOp {
+
+ public ZigPrefixOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPrefixOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAmpersand() {
+ return findChildByType(AMPERSAND);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getExclamationmark() {
+ return findChildByType(EXCLAMATIONMARK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordAwait() {
+ return findChildByType(KEYWORD_AWAIT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordTry() {
+ return findChildByType(KEYWORD_TRY);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinus() {
+ return findChildByType(MINUS);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinuspercent() {
+ return findChildByType(MINUSPERCENT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getTilde() {
+ return findChildByType(TILDE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixTypeOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixTypeOpImpl.java
new file mode 100644
index 000000000..00cd8f51b
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrefixTypeOpImpl.java
@@ -0,0 +1,87 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigPrefixTypeOpImpl extends ASTWrapperPsiElement implements ZigPrefixTypeOp {
+
+ public ZigPrefixTypeOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPrefixTypeOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getAddrSpaceList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigAddrSpace.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigArrayTypeStart getArrayTypeStart() {
+ return findChildByClass(ZigArrayTypeStart.class);
+ }
+
+ @Override
+ @NotNull
+ public List getByteAlignList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigByteAlign.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPtrTypeStart getPtrTypeStart() {
+ return findChildByClass(ZigPtrTypeStart.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigSliceTypeStart getSliceTypeStart() {
+ return findChildByClass(ZigSliceTypeStart.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordAnyframe() {
+ return findChildByType(KEYWORD_ANYFRAME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMinusrarrow() {
+ return findChildByType(MINUSRARROW);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getQuestionmark() {
+ return findChildByType(QUESTIONMARK);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryExprImpl.java
new file mode 100644
index 000000000..0e898516f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryExprImpl.java
@@ -0,0 +1,90 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigPrimaryExprImpl extends ZigExprImpl implements ZigPrimaryExpr {
+
+ public ZigPrimaryExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPrimaryExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlock getBlock() {
+ return findChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockLabel getBlockLabel() {
+ return findChildByClass(ZigBlockLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigBreakLabel getBreakLabel() {
+ return findChildByClass(ZigBreakLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordBreak() {
+ return findChildByType(KEYWORD_BREAK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordComptime() {
+ return findChildByType(KEYWORD_COMPTIME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordContinue() {
+ return findChildByType(KEYWORD_CONTINUE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordNosuspend() {
+ return findChildByType(KEYWORD_NOSUSPEND);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordResume() {
+ return findChildByType(KEYWORD_RESUME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordReturn() {
+ return findChildByType(KEYWORD_RETURN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryTypeExprImpl.java
new file mode 100644
index 000000000..bbfe1fac2
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPrimaryTypeExprImpl.java
@@ -0,0 +1,132 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigPrimaryTypeExprImpl extends ZigExprImpl implements ZigPrimaryTypeExpr {
+
+ public ZigPrimaryTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPrimaryTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigContainerDecl getContainerDecl() {
+ return findChildByClass(ZigContainerDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigErrorSetDecl getErrorSetDecl() {
+ return findChildByClass(ZigErrorSetDecl.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigFnCallArguments getFnCallArguments() {
+ return findChildByClass(ZigFnCallArguments.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigFnProto getFnProto() {
+ return findChildByClass(ZigFnProto.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigInitList getInitList() {
+ return findChildByClass(ZigInitList.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigStringLiteral getStringLiteral() {
+ return findChildByClass(ZigStringLiteral.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getBuiltinidentifier() {
+ return findChildByType(BUILTINIDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getCharLiteral() {
+ return findChildByType(CHAR_LITERAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot() {
+ return findChildByType(DOT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getFloat() {
+ return findChildByType(FLOAT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getInteger() {
+ return findChildByType(INTEGER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordAnyframe() {
+ return findChildByType(KEYWORD_ANYFRAME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordComptime() {
+ return findChildByType(KEYWORD_COMPTIME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordError() {
+ return findChildByType(KEYWORD_ERROR);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordUnreachable() {
+ return findChildByType(KEYWORD_UNREACHABLE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrIndexPayloadImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrIndexPayloadImpl.java
new file mode 100644
index 000000000..41b5903ea
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrIndexPayloadImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigPtrIndexPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class ZigPtrIndexPayloadImpl extends ASTWrapperPsiElement implements ZigPtrIndexPayload {
+
+ public ZigPtrIndexPayloadImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPtrIndexPayload(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrPayloadImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrPayloadImpl.java
new file mode 100644
index 000000000..22ca6d55f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrPayloadImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigPtrPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.ASTERISK;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.IDENTIFIER;
+
+public class ZigPtrPayloadImpl extends ASTWrapperPsiElement implements ZigPtrPayload {
+
+ public ZigPtrPayloadImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPtrPayload(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsterisk() {
+ return findChildByType(ASTERISK);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getIdentifier() {
+ return findNotNullChildByType(IDENTIFIER);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrTypeStartImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrTypeStartImpl.java
new file mode 100644
index 000000000..58958cf83
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigPtrTypeStartImpl.java
@@ -0,0 +1,68 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigPtrTypeStart;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigPtrTypeStartImpl extends ASTWrapperPsiElement implements ZigPtrTypeStart {
+
+ public ZigPtrTypeStartImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitPtrTypeStart(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsterisk() {
+ return findChildByType(ASTERISK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getAsterisk2() {
+ return findChildByType(ASTERISK2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLbracket() {
+ return findChildByType(LBRACKET);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbracket() {
+ return findChildByType(RBRACKET);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSingleAssignExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSingleAssignExprImpl.java
new file mode 100644
index 000000000..7bd5c3933
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSingleAssignExprImpl.java
@@ -0,0 +1,45 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigAssignOp;
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSingleAssignExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class ZigSingleAssignExprImpl extends ZigExprImpl implements ZigSingleAssignExpr {
+
+ public ZigSingleAssignExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSingleAssignExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAssignOp getAssignOp() {
+ return findChildByClass(ZigAssignOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSliceTypeStartImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSliceTypeStartImpl.java
new file mode 100644
index 000000000..8acce2ea7
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSliceTypeStartImpl.java
@@ -0,0 +1,56 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSliceTypeStart;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigSliceTypeStartImpl extends ASTWrapperPsiElement implements ZigSliceTypeStart {
+
+ public ZigSliceTypeStartImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSliceTypeStart(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLbracket() {
+ return findNotNullChildByType(LBRACKET);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRbracket() {
+ return findNotNullChildByType(RBRACKET);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStatementImpl.java
new file mode 100644
index 000000000..edbe4619f
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStatementImpl.java
@@ -0,0 +1,96 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigStatementImpl extends ASTWrapperPsiElement implements ZigStatement {
+
+ public ZigStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlockExprStatement getBlockExprStatement() {
+ return findChildByClass(ZigBlockExprStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigComptimeStatement getComptimeStatement() {
+ return findChildByClass(ZigComptimeStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigIfStatement getIfStatement() {
+ return findChildByClass(ZigIfStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigLabeledStatement getLabeledStatement() {
+ return findChildByClass(ZigLabeledStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigVarDeclExprStatement getVarDeclExprStatement() {
+ return findChildByClass(ZigVarDeclExprStatement.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordComptime() {
+ return findChildByType(KEYWORD_COMPTIME);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordDefer() {
+ return findChildByType(KEYWORD_DEFER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordErrdefer() {
+ return findChildByType(KEYWORD_ERRDEFER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordNosuspend() {
+ return findChildByType(KEYWORD_NOSUSPEND);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordSuspend() {
+ return findChildByType(KEYWORD_SUSPEND);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringListImpl.java
new file mode 100644
index 000000000..541ac5f58
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigStringList;
+import com.falsepattern.zigbrains.zig.psi.ZigStringLiteral;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigStringListImpl extends ASTWrapperPsiElement implements ZigStringList {
+
+ public ZigStringListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitStringList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getStringLiteralList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigStringLiteral.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringLiteralImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringLiteralImpl.java
new file mode 100644
index 000000000..3bc872910
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigStringLiteralImpl.java
@@ -0,0 +1,26 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigStringLiteral;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class ZigStringLiteralImpl extends ASTWrapperPsiElement implements ZigStringLiteral {
+
+ public ZigStringLiteralImpl(ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitStringLiteral(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixExprImpl.java
new file mode 100644
index 000000000..41b2ea391
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixExprImpl.java
@@ -0,0 +1,57 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ASYNC;
+
+public class ZigSuffixExprImpl extends ZigExprImpl implements ZigSuffixExpr {
+
+ public ZigSuffixExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSuffixExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getFnCallArgumentsList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigFnCallArguments.class);
+ }
+
+ @Override
+ @NotNull
+ public List getSuffixOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigSuffixOp.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordAsync() {
+ return findChildByType(KEYWORD_ASYNC);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixOpImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixOpImpl.java
new file mode 100644
index 000000000..6cc43ac6c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSuffixOpImpl.java
@@ -0,0 +1,89 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSuffixOp;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigSuffixOpImpl extends ASTWrapperPsiElement implements ZigSuffixOp {
+
+ public ZigSuffixOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSuffixOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot() {
+ return findChildByType(DOT);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot2() {
+ return findChildByType(DOT2);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDotasterisk() {
+ return findChildByType(DOTASTERISK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDotquestionmark() {
+ return findChildByType(DOTQUESTIONMARK);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLbracket() {
+ return findChildByType(LBRACKET);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbracket() {
+ return findChildByType(RBRACKET);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchCaseImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchCaseImpl.java
new file mode 100644
index 000000000..93e03b624
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchCaseImpl.java
@@ -0,0 +1,47 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchCase;
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchItem;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigSwitchCaseImpl extends ASTWrapperPsiElement implements ZigSwitchCase {
+
+ public ZigSwitchCaseImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSwitchCase(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getSwitchItemList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigSwitchItem.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchExprImpl.java
new file mode 100644
index 000000000..2f256c78e
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchExprImpl.java
@@ -0,0 +1,75 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchProngList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigSwitchExprImpl extends ZigExprImpl implements ZigSwitchExpr {
+
+ public ZigSwitchExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSwitchExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigSwitchProngList getSwitchProngList() {
+ return findChildByClass(ZigSwitchProngList.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordSwitch() {
+ return findNotNullChildByType(KEYWORD_SWITCH);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLbrace() {
+ return findChildByType(LBRACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRbrace() {
+ return findChildByType(RBRACE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchItemImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchItemImpl.java
new file mode 100644
index 000000000..b0d561bb3
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchItemImpl.java
@@ -0,0 +1,47 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchItem;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.DOT3;
+
+public class ZigSwitchItemImpl extends ASTWrapperPsiElement implements ZigSwitchItem {
+
+ public ZigSwitchItemImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSwitchItem(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDot3() {
+ return findChildByType(DOT3);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngImpl.java
new file mode 100644
index 000000000..8b6785678
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngImpl.java
@@ -0,0 +1,61 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EQUALRARROW;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_INLINE;
+
+public class ZigSwitchProngImpl extends ASTWrapperPsiElement implements ZigSwitchProng {
+
+ public ZigSwitchProngImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSwitchProng(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPtrIndexPayload getPtrIndexPayload() {
+ return findChildByClass(ZigPtrIndexPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigSwitchCase getSwitchCase() {
+ return findNotNullChildByClass(ZigSwitchCase.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getEqualrarrow() {
+ return findNotNullChildByType(EQUALRARROW);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordInline() {
+ return findChildByType(KEYWORD_INLINE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngListImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngListImpl.java
new file mode 100644
index 000000000..a6af29b05
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigSwitchProngListImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchProng;
+import com.falsepattern.zigbrains.zig.psi.ZigSwitchProngList;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigSwitchProngListImpl extends ASTWrapperPsiElement implements ZigSwitchProngList {
+
+ public ZigSwitchProngListImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitSwitchProngList(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getSwitchProngList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigSwitchProng.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTestDeclImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTestDeclImpl.java
new file mode 100644
index 000000000..4813fe852
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTestDeclImpl.java
@@ -0,0 +1,56 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigBlock;
+import com.falsepattern.zigbrains.zig.psi.ZigTestDecl;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigTestDeclImpl extends ASTWrapperPsiElement implements ZigTestDecl {
+
+ public ZigTestDeclImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitTestDecl(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigBlock getBlock() {
+ return findChildByClass(ZigBlock.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordTest() {
+ return findNotNullChildByType(KEYWORD_TEST);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getStringLiteralSingle() {
+ return findChildByType(STRING_LITERAL_SINGLE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTypeExprImpl.java
new file mode 100644
index 000000000..d946ba989
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigTypeExprImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigPrefixTypeOp;
+import com.falsepattern.zigbrains.zig.psi.ZigTypeExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class ZigTypeExprImpl extends ZigExprImpl implements ZigTypeExpr {
+
+ public ZigTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getPrefixTypeOpList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigPrefixTypeOp.class);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclExprStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclExprStatementImpl.java
new file mode 100644
index 000000000..81d355bcb
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclExprStatementImpl.java
@@ -0,0 +1,64 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EQUAL;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigVarDeclExprStatementImpl extends ASTWrapperPsiElement implements ZigVarDeclExprStatement {
+
+ public ZigVarDeclExprStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitVarDeclExprStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAssignOp getAssignOp() {
+ return findChildByClass(ZigAssignOp.class);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public List getVarDeclProtoList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigVarDeclProto.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqual() {
+ return findChildByType(EQUAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclProtoImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclProtoImpl.java
new file mode 100644
index 000000000..f213c8aa5
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigVarDeclProtoImpl.java
@@ -0,0 +1,78 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigVarDeclProtoImpl extends ASTWrapperPsiElement implements ZigVarDeclProto {
+
+ public ZigVarDeclProtoImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitVarDeclProto(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigAddrSpace getAddrSpace() {
+ return findChildByClass(ZigAddrSpace.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigByteAlign getByteAlign() {
+ return findChildByClass(ZigByteAlign.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigLinkSection getLinkSection() {
+ return findChildByClass(ZigLinkSection.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getColon() {
+ return findChildByType(COLON);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIdentifier() {
+ return findChildByType(IDENTIFIER);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordConst() {
+ return findChildByType(KEYWORD_CONST);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordVar() {
+ return findChildByType(KEYWORD_VAR);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileContinueExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileContinueExprImpl.java
new file mode 100644
index 000000000..ef6c0ccae
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileContinueExprImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.falsepattern.zigbrains.zig.psi.ZigWhileContinueExpr;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigWhileContinueExprImpl extends ZigExprImpl implements ZigWhileContinueExpr {
+
+ public ZigWhileContinueExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitWhileContinueExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public ZigExpr getExpr() {
+ return findNotNullChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getColon() {
+ return findNotNullChildByType(COLON);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getLparen() {
+ return findNotNullChildByType(LPAREN);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getRparen() {
+ return findNotNullChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileExprImpl.java
new file mode 100644
index 000000000..8e21f3e31
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileExprImpl.java
@@ -0,0 +1,57 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigWhileExprImpl extends ZigExprImpl implements ZigWhileExpr {
+
+ public ZigWhileExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitWhileExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigWhilePrefix getWhilePrefix() {
+ return findNotNullChildByClass(ZigWhilePrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhilePrefixImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhilePrefixImpl.java
new file mode 100644
index 000000000..407f7940c
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhilePrefixImpl.java
@@ -0,0 +1,66 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.ZigExpr;
+import com.falsepattern.zigbrains.zig.psi.ZigPtrPayload;
+import com.falsepattern.zigbrains.zig.psi.ZigVisitor;
+import com.falsepattern.zigbrains.zig.psi.ZigWhilePrefix;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*;
+
+public class ZigWhilePrefixImpl extends ASTWrapperPsiElement implements ZigWhilePrefix {
+
+ public ZigWhilePrefixImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitWhilePrefix(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPtrPayload getPtrPayload() {
+ return findChildByClass(ZigPtrPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getKeywordWhile() {
+ return findNotNullChildByType(KEYWORD_WHILE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getLparen() {
+ return findChildByType(LPAREN);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRparen() {
+ return findChildByType(RPAREN);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileStatementImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileStatementImpl.java
new file mode 100644
index 000000000..5f109b009
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileStatementImpl.java
@@ -0,0 +1,67 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.SEMICOLON;
+
+public class ZigWhileStatementImpl extends ASTWrapperPsiElement implements ZigWhileStatement {
+
+ public ZigWhileStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitWhileStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public ZigExpr getExpr() {
+ return findChildByClass(ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigStatement getStatement() {
+ return findChildByClass(ZigStatement.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigWhilePrefix getWhilePrefix() {
+ return findNotNullChildByClass(ZigWhilePrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSemicolon() {
+ return findChildByType(SEMICOLON);
+ }
+
+}
diff --git a/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileTypeExprImpl.java b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileTypeExprImpl.java
new file mode 100644
index 000000000..272b356d6
--- /dev/null
+++ b/src/test/java/com/falsepattern/zigbrains/zig/psi/impl/ZigWhileTypeExprImpl.java
@@ -0,0 +1,57 @@
+// This is a generated file. Not intended for manual editing.
+package com.falsepattern.zigbrains.zig.psi.impl;
+
+import com.falsepattern.zigbrains.zig.psi.*;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static com.falsepattern.zigbrains.zig.psi.ZigTypes.KEYWORD_ELSE;
+
+public class ZigWhileTypeExprImpl extends ZigExprImpl implements ZigWhileTypeExpr {
+
+ public ZigWhileTypeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull ZigVisitor visitor) {
+ visitor.visitWhileTypeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof ZigVisitor) accept((ZigVisitor)visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, ZigExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public ZigPayload getPayload() {
+ return findChildByClass(ZigPayload.class);
+ }
+
+ @Override
+ @NotNull
+ public ZigWhilePrefix getWhilePrefix() {
+ return findNotNullChildByClass(ZigWhilePrefix.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getKeywordElse() {
+ return findChildByType(KEYWORD_ELSE);
+ }
+
+}
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/LICENSE b/src/test/kotlin/com/falsepattern/zigbrains/LICENSE
new file mode 100644
index 000000000..4cb800976
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/LICENSE
@@ -0,0 +1,32 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+Zigbrains is Copyright (C) 2023-2025 FalsePattern, All Rights Reserved
+ZigBrains is licensed under the LGPLv3 license.
+
+The generated zig parser, lexer, and the following classes:
+com.falsepattern.zigbrains.zig.ZigFileType
+com.falsepattern.zigbrains.zig.ZigLanguage
+com.falsepattern.zigbrains.zig.psi.ZigFile
+com.falsepattern.zigbrains.zig.parser.ZigElementType
+com.falsepattern.zigbrains.zig.parser.ZigParserDefinition
+com.falsepattern.zigbrains.zig.parser.ZigTokenSets
+com.falsepattern.zigbrains.zig.parser.ZigTokenType
+com.falsepattern.zigbrains.zig.lexer.ZigLexerAdapter
+
+have been dual-licensed under the EPL2.0 license for use in testing
+of the LSP4IJ plugin.
+This message, along with the attached signature, signed by
+FalsePattern's PGP key, shall serve as proof of this.
+
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAEBCgAdFiEE4S1HwWvKg24eRaEg6TDN7FDFDiMFAmerq5QACgkQ6TDN7FDF
+DiN7WAgAvWjmAwupQUup/B9m2vkGBdGXpu600XnWm3vGc8krwhcZXvTY33M9nNis
+t2sNbrugBiCqQtkvM3cPXcRaf765ahSBuzmVUfshyDC5HTpaAKSYavq2iT4CE4Xb
+4hPGJ6GT25n+BkTGwYr73leYEQYsWfL9uEGZL+bf1sMNRQAGUROmBCYCXYRvwQye
+/vSrvGymhHkDvwZMs+p5hzID1Z6Sc9LLQJyyViJf3lZresS1KbxPHz63ACjJaNu/
++SNNXS+zI05HrJoR01q9ma7BQPMn/elqPinapC3nHAbqYYBjqv8N+9oDQk+RjNdC
+PQAkfdgRJkfrGlTHX047mOSoC15VXw==
+=S7Yw
+-----END PGP SIGNATURE-----
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigFileType.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigFileType.kt
new file mode 100644
index 000000000..6d3c533d0
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigFileType.kt
@@ -0,0 +1,35 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig
+
+import com.intellij.openapi.fileTypes.LanguageFileType
+
+object ZigFileType : LanguageFileType(ZigLanguage) {
+ override fun getName() = "Zig File"
+
+ override fun getDescription() = "Zig File"
+
+ override fun getDefaultExtension() = "zig"
+
+ override fun getIcon() = null
+}
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigLanguage.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigLanguage.kt
new file mode 100644
index 000000000..6bd9b4a5d
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/ZigLanguage.kt
@@ -0,0 +1,29 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig
+
+import com.intellij.lang.Language
+
+object ZigLanguage: Language("Zig") {
+ private fun readResolve(): Any = ZigLanguage
+}
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/lexer/ZigLexerAdapter.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/lexer/ZigLexerAdapter.kt
new file mode 100644
index 000000000..35510a383
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/lexer/ZigLexerAdapter.kt
@@ -0,0 +1,27 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.lexer
+
+import com.intellij.lexer.FlexAdapter
+
+class ZigLexerAdapter: FlexAdapter(ZigFlexLexer(null))
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigElementType.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigElementType.kt
new file mode 100644
index 000000000..d8ab9e720
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigElementType.kt
@@ -0,0 +1,28 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.parser
+
+import com.falsepattern.zigbrains.zig.ZigLanguage
+import com.intellij.psi.tree.IElementType
+
+class ZigElementType(debugName: String): IElementType(debugName, ZigLanguage)
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigParserDefinition.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigParserDefinition.kt
new file mode 100644
index 000000000..a8161e719
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigParserDefinition.kt
@@ -0,0 +1,52 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.parser
+
+import com.falsepattern.zigbrains.zig.ZigLanguage
+import com.falsepattern.zigbrains.zig.lexer.ZigLexerAdapter
+import com.falsepattern.zigbrains.zig.psi.ZigFile
+import com.falsepattern.zigbrains.zig.psi.ZigTypes
+import com.intellij.lang.ASTNode
+import com.intellij.lang.ParserDefinition
+import com.intellij.openapi.project.Project
+import com.intellij.psi.FileViewProvider
+import com.intellij.psi.tree.IFileElementType
+
+class ZigParserDefinition : ParserDefinition {
+ override fun createLexer(project: Project?) = ZigLexerAdapter()
+
+ override fun createParser(project: Project?) = ZigParser()
+
+ override fun getFileNodeType() = FILE
+
+ override fun getCommentTokens() = ZigTokenSets.COMMENTS
+
+ override fun getStringLiteralElements() = ZigTokenSets.STRINGS
+
+ override fun createElement(node: ASTNode?) = ZigTypes.Factory.createElement(node)!!
+
+ override fun createFile(viewProvider: FileViewProvider) = ZigFile(viewProvider)
+
+}
+
+val FILE = IFileElementType(ZigLanguage)
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenSets.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenSets.kt
new file mode 100644
index 000000000..88b69d7fb
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenSets.kt
@@ -0,0 +1,31 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.parser
+
+import com.falsepattern.zigbrains.zig.psi.ZigTypes
+import com.intellij.psi.tree.TokenSet
+
+object ZigTokenSets {
+ val COMMENTS = TokenSet.create(ZigTypes.LINE_COMMENT, ZigTypes.DOC_COMMENT, ZigTypes.CONTAINER_DOC_COMMENT)
+ val STRINGS = TokenSet.create(ZigTypes.STRING_LITERAL_SINGLE, ZigTypes.STRING_LITERAL_MULTI)
+}
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenType.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenType.kt
new file mode 100644
index 000000000..9558a4278
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/parser/ZigTokenType.kt
@@ -0,0 +1,28 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.parser
+
+import com.falsepattern.zigbrains.zig.ZigLanguage
+import com.intellij.psi.tree.IElementType
+
+class ZigTokenType(debugName: String): IElementType(debugName, ZigLanguage)
\ No newline at end of file
diff --git a/src/test/kotlin/com/falsepattern/zigbrains/zig/psi/ZigFile.kt b/src/test/kotlin/com/falsepattern/zigbrains/zig/psi/ZigFile.kt
new file mode 100644
index 000000000..94bf96db8
--- /dev/null
+++ b/src/test/kotlin/com/falsepattern/zigbrains/zig/psi/ZigFile.kt
@@ -0,0 +1,34 @@
+/*
+ * This file is part of ZigBrains.
+ *
+ * Copyright (C) 2023-2025 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * ZigBrains is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, only version 3 of the License.
+ *
+ * ZigBrains is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with ZigBrains. If not, see .
+ */
+
+package com.falsepattern.zigbrains.zig.psi
+
+import com.falsepattern.zigbrains.zig.ZigFileType
+import com.falsepattern.zigbrains.zig.ZigLanguage
+import com.intellij.extapi.psi.PsiFileBase
+import com.intellij.psi.FileViewProvider
+
+class ZigFile(viewProvider: FileViewProvider): PsiFileBase(viewProvider, ZigLanguage) {
+ override fun getFileType() = ZigFileType
+
+ override fun toString() = ZigFileType.name
+}
\ No newline at end of file