1 # Generated from C.g4 by ANTLR 4.7.1
4 from io
import StringIO
5 from typing
.io
import TextIO
10 # The file defines the parser for C source files.
12 # THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.
13 # This file is generated by running:
14 # java org.antlr.Tool C.g
16 # Copyright (c) 2009 - 2010, Intel Corporation All rights reserved.
18 # This program and the accompanying materials are licensed and made available
19 # under the terms and conditions of the BSD License which accompanies this
20 # distribution. The full text of the license may be found at:
21 # http://opensource.org/licenses/bsd-license.php
23 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
24 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
28 import Ecc
.CodeFragment
as CodeFragment
29 import Ecc
.FileProfile
as FileProfile
32 with
StringIO() as buf
:
33 buf
.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3k")
34 buf
.write("\u0380\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
35 buf
.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
36 buf
.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23")
37 buf
.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31")
38 buf
.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36")
39 buf
.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t")
40 buf
.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4")
41 buf
.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64")
42 buf
.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t")
43 buf
.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t")
44 buf
.write("D\4E\tE\4F\tF\4G\tG\4H\tH\3\2\7\2\u0092\n\2\f\2\16\2\u0095")
45 buf
.write("\13\2\3\3\5\3\u0098\n\3\3\3\3\3\7\3\u009c\n\3\f\3\16\3")
46 buf
.write("\u009f\13\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u00a7\n\3\5\3")
47 buf
.write("\u00a9\n\3\3\4\5\4\u00ac\n\4\3\4\3\4\6\4\u00b0\n\4\r\4")
48 buf
.write("\16\4\u00b1\3\4\3\4\3\4\5\4\u00b7\n\4\3\4\3\4\3\5\3\5")
49 buf
.write("\3\5\6\5\u00be\n\5\r\5\16\5\u00bf\3\6\3\6\5\6\u00c4\n")
50 buf
.write("\6\3\6\3\6\3\6\3\6\3\6\3\6\5\6\u00cc\n\6\3\6\3\6\3\6\5")
51 buf
.write("\6\u00d1\n\6\3\7\3\7\3\7\7\7\u00d6\n\7\f\7\16\7\u00d9")
52 buf
.write("\13\7\3\b\3\b\3\b\5\b\u00de\n\b\3\t\3\t\3\n\3\n\3\n\3")
53 buf
.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n")
54 buf
.write("\7\n\u00f3\n\n\f\n\16\n\u00f6\13\n\3\n\3\n\5\n\u00fa\n")
55 buf
.write("\n\3\13\3\13\3\f\3\f\5\f\u0100\n\f\3\f\3\f\3\f\3\f\3\f")
56 buf
.write("\3\f\3\f\5\f\u0109\n\f\3\r\3\r\3\16\6\16\u010e\n\16\r")
57 buf
.write("\16\16\16\u010f\3\17\3\17\3\17\3\17\3\20\3\20\6\20\u0118")
58 buf
.write("\n\20\r\20\16\20\u0119\3\21\3\21\3\21\7\21\u011f\n\21")
59 buf
.write("\f\21\16\21\u0122\13\21\3\22\3\22\3\22\5\22\u0127\n\22")
60 buf
.write("\3\22\3\22\5\22\u012b\n\22\3\23\3\23\3\23\3\23\5\23\u0131")
61 buf
.write("\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u013a\n")
62 buf
.write("\23\3\23\3\23\3\23\3\23\5\23\u0140\n\23\3\24\3\24\3\24")
63 buf
.write("\7\24\u0145\n\24\f\24\16\24\u0148\13\24\3\25\3\25\3\25")
64 buf
.write("\5\25\u014d\n\25\3\26\3\26\3\27\5\27\u0152\n\27\3\27\5")
65 buf
.write("\27\u0155\n\27\3\27\5\27\u0158\n\27\3\27\5\27\u015b\n")
66 buf
.write("\27\3\27\3\27\5\27\u015f\n\27\3\30\3\30\7\30\u0163\n\30")
67 buf
.write("\f\30\16\30\u0166\13\30\3\30\3\30\5\30\u016a\n\30\3\30")
68 buf
.write("\3\30\3\30\6\30\u016f\n\30\r\30\16\30\u0170\5\30\u0173")
69 buf
.write("\n\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31")
70 buf
.write("\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u0185\n\31\3\32\3")
71 buf
.write("\32\6\32\u0189\n\32\r\32\16\32\u018a\3\32\5\32\u018e\n")
72 buf
.write("\32\3\32\3\32\3\32\5\32\u0193\n\32\3\33\3\33\3\33\5\33")
73 buf
.write("\u0198\n\33\3\33\5\33\u019b\n\33\3\34\3\34\3\34\5\34\u01a0")
74 buf
.write("\n\34\3\34\7\34\u01a3\n\34\f\34\16\34\u01a6\13\34\3\35")
75 buf
.write("\3\35\3\35\7\35\u01ab\n\35\f\35\16\35\u01ae\13\35\3\35")
76 buf
.write("\5\35\u01b1\n\35\3\35\7\35\u01b4\n\35\f\35\16\35\u01b7")
77 buf
.write("\13\35\3\35\5\35\u01ba\n\35\3\36\3\36\3\36\7\36\u01bf")
78 buf
.write("\n\36\f\36\16\36\u01c2\13\36\3\37\3\37\5\37\u01c6\n\37")
79 buf
.write("\3\37\5\37\u01c9\n\37\3 \3 \5 \u01cd\n \3 \5 \u01d0\n")
80 buf
.write(" \3!\3!\3!\3!\3!\5!\u01d7\n!\3!\7!\u01da\n!\f!\16!\u01dd")
81 buf
.write("\13!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\5")
82 buf
.write("\"\u01eb\n\"\3#\3#\3#\3#\5#\u01f1\n#\3#\3#\5#\u01f5\n")
83 buf
.write("#\3$\3$\3$\7$\u01fa\n$\f$\16$\u01fd\13$\3%\3%\5%\u0201")
84 buf
.write("\n%\3%\3%\3%\5%\u0206\n%\7%\u0208\n%\f%\16%\u020b\13%")
85 buf
.write("\3&\3&\3&\3&\3&\7&\u0212\n&\f&\16&\u0215\13&\3\'\3\'\3")
86 buf
.write("\'\3\'\3\'\3\'\3\'\7\'\u021e\n\'\f\'\16\'\u0221\13\'\3")
87 buf
.write("(\3(\3(\3(\3(\3(\5(\u0229\n(\3)\3)\3)\3)\3)\3)\3)\3)\3")
88 buf
.write(")\3)\3)\3)\3)\3)\3)\5)\u023a\n)\3*\3*\3*\3*\3*\3*\3*\3")
89 buf
.write("*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3")
90 buf
.write("*\3*\3*\3*\7*\u0259\n*\f*\16*\u025c\13*\3+\3+\3+\7+\u0261")
91 buf
.write("\n+\f+\16+\u0264\13+\3,\3,\3-\3-\3-\3-\3-\3-\5-\u026e")
92 buf
.write("\n-\3.\3.\3.\3.\3.\7.\u0275\n.\f.\16.\u0278\13.\3.\6.")
93 buf
.write("\u027b\n.\r.\16.\u027c\6.\u027f\n.\r.\16.\u0280\3.\7.")
94 buf
.write("\u0284\n.\f.\16.\u0287\13.\3.\5.\u028a\n.\3/\3/\3/\7/")
95 buf
.write("\u028f\n/\f/\16/\u0292\13/\3\60\3\60\3\61\3\61\3\61\3")
96 buf
.write("\61\3\61\5\61\u029b\n\61\3\62\3\62\3\63\3\63\3\64\3\64")
97 buf
.write("\3\64\3\64\3\64\3\64\3\64\5\64\u02a8\n\64\3\65\3\65\3")
98 buf
.write("\65\7\65\u02ad\n\65\f\65\16\65\u02b0\13\65\3\66\3\66\3")
99 buf
.write("\66\7\66\u02b5\n\66\f\66\16\66\u02b8\13\66\3\67\3\67\3")
100 buf
.write("\67\7\67\u02bd\n\67\f\67\16\67\u02c0\13\67\38\38\38\7")
101 buf
.write("8\u02c5\n8\f8\168\u02c8\138\39\39\39\79\u02cd\n9\f9\16")
102 buf
.write("9\u02d0\139\3:\3:\3:\7:\u02d5\n:\f:\16:\u02d8\13:\3;\3")
103 buf
.write(";\3;\7;\u02dd\n;\f;\16;\u02e0\13;\3<\3<\3<\7<\u02e5\n")
104 buf
.write("<\f<\16<\u02e8\13<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\5")
105 buf
.write("=\u02f5\n=\3>\5>\u02f8\n>\3>\3>\3>\7>\u02fd\n>\f>\16>")
106 buf
.write("\u0300\13>\3>\3>\3>\3?\3?\3?\7?\u0308\n?\f?\16?\u030b")
107 buf
.write("\13?\3?\3?\3@\3@\3@\7@\u0312\n@\f@\16@\u0315\13@\3@\3")
108 buf
.write("@\3A\3A\3A\7A\u031c\nA\fA\16A\u031f\13A\3A\5A\u0322\n")
109 buf
.write("A\3A\5A\u0325\nA\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3")
110 buf
.write("B\5B\u0334\nB\3C\3C\7C\u0338\nC\fC\16C\u033b\13C\3C\5")
111 buf
.write("C\u033e\nC\3C\3C\3D\6D\u0343\nD\rD\16D\u0344\3E\3E\3E")
112 buf
.write("\3E\5E\u034b\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0355\nF\3")
113 buf
.write("F\3F\3F\3F\3F\3F\5F\u035d\nF\3G\3G\3G\3G\3G\3G\3G\3G\3")
114 buf
.write("G\3G\3G\3G\3G\3G\3G\3G\5G\u036f\nG\3H\3H\3H\3H\3H\3H\3")
115 buf
.write("H\3H\3H\3H\3H\3H\3H\5H\u037e\nH\3H\2\2I\2\4\6\b\n\f\16")
116 buf
.write("\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDF")
117 buf
.write("HJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086")
118 buf
.write("\u0088\u008a\u008c\u008e\2\f\3\2\b\f\3\2\27\30\3\2\33")
119 buf
.write("\'\5\2,,./\679\4\2\7\7:C\3\2IJ\3\2KN\3\2OP\3\2\4\4\3\2")
120 buf
.write("\26\26\2\u03d8\2\u0093\3\2\2\2\4\u00a8\3\2\2\2\6\u00ab")
121 buf
.write("\3\2\2\2\b\u00bd\3\2\2\2\n\u00d0\3\2\2\2\f\u00d2\3\2\2")
122 buf
.write("\2\16\u00da\3\2\2\2\20\u00df\3\2\2\2\22\u00f9\3\2\2\2")
123 buf
.write("\24\u00fb\3\2\2\2\26\u0108\3\2\2\2\30\u010a\3\2\2\2\32")
124 buf
.write("\u010d\3\2\2\2\34\u0111\3\2\2\2\36\u0117\3\2\2\2 \u011b")
125 buf
.write("\3\2\2\2\"\u012a\3\2\2\2$\u013f\3\2\2\2&\u0141\3\2\2\2")
126 buf
.write("(\u0149\3\2\2\2*\u014e\3\2\2\2,\u015e\3\2\2\2.\u0172\3")
127 buf
.write("\2\2\2\60\u0184\3\2\2\2\62\u0192\3\2\2\2\64\u0194\3\2")
128 buf
.write("\2\2\66\u019c\3\2\2\28\u01b9\3\2\2\2:\u01bb\3\2\2\2<\u01c8")
129 buf
.write("\3\2\2\2>\u01cf\3\2\2\2@\u01d6\3\2\2\2B\u01ea\3\2\2\2")
130 buf
.write("D\u01f4\3\2\2\2F\u01f6\3\2\2\2H\u01fe\3\2\2\2J\u020c\3")
131 buf
.write("\2\2\2L\u0216\3\2\2\2N\u0228\3\2\2\2P\u0239\3\2\2\2R\u023b")
132 buf
.write("\3\2\2\2T\u025d\3\2\2\2V\u0265\3\2\2\2X\u026d\3\2\2\2")
133 buf
.write("Z\u0289\3\2\2\2\\\u028b\3\2\2\2^\u0293\3\2\2\2`\u029a")
134 buf
.write("\3\2\2\2b\u029c\3\2\2\2d\u029e\3\2\2\2f\u02a0\3\2\2\2")
135 buf
.write("h\u02a9\3\2\2\2j\u02b1\3\2\2\2l\u02b9\3\2\2\2n\u02c1\3")
136 buf
.write("\2\2\2p\u02c9\3\2\2\2r\u02d1\3\2\2\2t\u02d9\3\2\2\2v\u02e1")
137 buf
.write("\3\2\2\2x\u02f4\3\2\2\2z\u02f7\3\2\2\2|\u0304\3\2\2\2")
138 buf
.write("~\u030e\3\2\2\2\u0080\u0318\3\2\2\2\u0082\u0333\3\2\2")
139 buf
.write("\2\u0084\u0335\3\2\2\2\u0086\u0342\3\2\2\2\u0088\u034a")
140 buf
.write("\3\2\2\2\u008a\u035c\3\2\2\2\u008c\u036e\3\2\2\2\u008e")
141 buf
.write("\u037d\3\2\2\2\u0090\u0092\5\4\3\2\u0091\u0090\3\2\2\2")
142 buf
.write("\u0092\u0095\3\2\2\2\u0093\u0091\3\2\2\2\u0093\u0094\3")
143 buf
.write("\2\2\2\u0094\3\3\2\2\2\u0095\u0093\3\2\2\2\u0096\u0098")
144 buf
.write("\5\b\5\2\u0097\u0096\3\2\2\2\u0097\u0098\3\2\2\2\u0098")
145 buf
.write("\u0099\3\2\2\2\u0099\u009d\5,\27\2\u009a\u009c\5\n\6\2")
146 buf
.write("\u009b\u009a\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3")
147 buf
.write("\2\2\2\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u009d")
148 buf
.write("\3\2\2\2\u00a0\u00a1\7\3\2\2\u00a1\u00a9\3\2\2\2\u00a2")
149 buf
.write("\u00a9\5\6\4\2\u00a3\u00a9\5\n\6\2\u00a4\u00a6\5\u0080")
150 buf
.write("A\2\u00a5\u00a7\7\4\2\2\u00a6\u00a5\3\2\2\2\u00a6\u00a7")
151 buf
.write("\3\2\2\2\u00a7\u00a9\3\2\2\2\u00a8\u0097\3\2\2\2\u00a8")
152 buf
.write("\u00a2\3\2\2\2\u00a8\u00a3\3\2\2\2\u00a8\u00a4\3\2\2\2")
153 buf
.write("\u00a9\5\3\2\2\2\u00aa\u00ac\5\b\5\2\u00ab\u00aa\3\2\2")
154 buf
.write("\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad\3\2\2\2\u00ad\u00b6")
155 buf
.write("\5,\27\2\u00ae\u00b0\5\n\6\2\u00af\u00ae\3\2\2\2\u00b0")
156 buf
.write("\u00b1\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2")
157 buf
.write("\u00b2\u00b3\3\2\2\2\u00b3\u00b4\5\u0084C\2\u00b4\u00b7")
158 buf
.write("\3\2\2\2\u00b5\u00b7\5\u0084C\2\u00b6\u00af\3\2\2\2\u00b6")
159 buf
.write("\u00b5\3\2\2\2\u00b7\u00b8\3\2\2\2\u00b8\u00b9\b\4\1\2")
160 buf
.write("\u00b9\7\3\2\2\2\u00ba\u00be\5\20\t\2\u00bb\u00be\5\22")
161 buf
.write("\n\2\u00bc\u00be\5*\26\2\u00bd\u00ba\3\2\2\2\u00bd\u00bb")
162 buf
.write("\3\2\2\2\u00bd\u00bc\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf")
163 buf
.write("\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\t\3\2\2\2\u00c1")
164 buf
.write("\u00c3\7\5\2\2\u00c2\u00c4\5\b\5\2\u00c3\u00c2\3\2\2\2")
165 buf
.write("\u00c3\u00c4\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\u00c6\5")
166 buf
.write("\f\7\2\u00c6\u00c7\7\4\2\2\u00c7\u00c8\b\6\1\2\u00c8\u00d1")
167 buf
.write("\3\2\2\2\u00c9\u00cb\5\b\5\2\u00ca\u00cc\5\f\7\2\u00cb")
168 buf
.write("\u00ca\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\3\2\2\2")
169 buf
.write("\u00cd\u00ce\7\4\2\2\u00ce\u00cf\b\6\1\2\u00cf\u00d1\3")
170 buf
.write("\2\2\2\u00d0\u00c1\3\2\2\2\u00d0\u00c9\3\2\2\2\u00d1\13")
171 buf
.write("\3\2\2\2\u00d2\u00d7\5\16\b\2\u00d3\u00d4\7\6\2\2\u00d4")
172 buf
.write("\u00d6\5\16\b\2\u00d5\u00d3\3\2\2\2\u00d6\u00d9\3\2\2")
173 buf
.write("\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\r\3\2")
174 buf
.write("\2\2\u00d9\u00d7\3\2\2\2\u00da\u00dd\5,\27\2\u00db\u00dc")
175 buf
.write("\7\7\2\2\u00dc\u00de\5D#\2\u00dd\u00db\3\2\2\2\u00dd\u00de")
176 buf
.write("\3\2\2\2\u00de\17\3\2\2\2\u00df\u00e0\t\2\2\2\u00e0\21")
177 buf
.write("\3\2\2\2\u00e1\u00fa\7\r\2\2\u00e2\u00fa\7\16\2\2\u00e3")
178 buf
.write("\u00fa\7\17\2\2\u00e4\u00fa\7\20\2\2\u00e5\u00fa\7\21")
179 buf
.write("\2\2\u00e6\u00fa\7\22\2\2\u00e7\u00fa\7\23\2\2\u00e8\u00fa")
180 buf
.write("\7\24\2\2\u00e9\u00fa\7\25\2\2\u00ea\u00eb\5\26\f\2\u00eb")
181 buf
.write("\u00ec\b\n\1\2\u00ec\u00fa\3\2\2\2\u00ed\u00ee\5$\23\2")
182 buf
.write("\u00ee\u00ef\b\n\1\2\u00ef\u00fa\3\2\2\2\u00f0\u00f4\7")
183 buf
.write("_\2\2\u00f1\u00f3\5*\26\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6")
184 buf
.write("\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5")
185 buf
.write("\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00fa\5,\27\2")
186 buf
.write("\u00f8\u00fa\5\24\13\2\u00f9\u00e1\3\2\2\2\u00f9\u00e2")
187 buf
.write("\3\2\2\2\u00f9\u00e3\3\2\2\2\u00f9\u00e4\3\2\2\2\u00f9")
188 buf
.write("\u00e5\3\2\2\2\u00f9\u00e6\3\2\2\2\u00f9\u00e7\3\2\2\2")
189 buf
.write("\u00f9\u00e8\3\2\2\2\u00f9\u00e9\3\2\2\2\u00f9\u00ea\3")
190 buf
.write("\2\2\2\u00f9\u00ed\3\2\2\2\u00f9\u00f0\3\2\2\2\u00f9\u00f8")
191 buf
.write("\3\2\2\2\u00fa\23\3\2\2\2\u00fb\u00fc\7_\2\2\u00fc\25")
192 buf
.write("\3\2\2\2\u00fd\u00ff\5\30\r\2\u00fe\u0100\7_\2\2\u00ff")
193 buf
.write("\u00fe\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0101\3\2\2\2")
194 buf
.write("\u0101\u0102\7\3\2\2\u0102\u0103\5\32\16\2\u0103\u0104")
195 buf
.write("\7\26\2\2\u0104\u0109\3\2\2\2\u0105\u0106\5\30\r\2\u0106")
196 buf
.write("\u0107\7_\2\2\u0107\u0109\3\2\2\2\u0108\u00fd\3\2\2\2")
197 buf
.write("\u0108\u0105\3\2\2\2\u0109\27\3\2\2\2\u010a\u010b\t\3")
198 buf
.write("\2\2\u010b\31\3\2\2\2\u010c\u010e\5\34\17\2\u010d\u010c")
199 buf
.write("\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u010d\3\2\2\2\u010f")
200 buf
.write("\u0110\3\2\2\2\u0110\33\3\2\2\2\u0111\u0112\5\36\20\2")
201 buf
.write("\u0112\u0113\5 \21\2\u0113\u0114\7\4\2\2\u0114\35\3\2")
202 buf
.write("\2\2\u0115\u0118\5*\26\2\u0116\u0118\5\22\n\2\u0117\u0115")
203 buf
.write("\3\2\2\2\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119")
204 buf
.write("\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\37\3\2\2\2\u011b")
205 buf
.write("\u0120\5\"\22\2\u011c\u011d\7\6\2\2\u011d\u011f\5\"\22")
206 buf
.write("\2\u011e\u011c\3\2\2\2\u011f\u0122\3\2\2\2\u0120\u011e")
207 buf
.write("\3\2\2\2\u0120\u0121\3\2\2\2\u0121!\3\2\2\2\u0122\u0120")
208 buf
.write("\3\2\2\2\u0123\u0126\5,\27\2\u0124\u0125\7\31\2\2\u0125")
209 buf
.write("\u0127\5^\60\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2")
210 buf
.write("\u0127\u012b\3\2\2\2\u0128\u0129\7\31\2\2\u0129\u012b")
211 buf
.write("\5^\60\2\u012a\u0123\3\2\2\2\u012a\u0128\3\2\2\2\u012b")
212 buf
.write("#\3\2\2\2\u012c\u012d\7\32\2\2\u012d\u012e\7\3\2\2\u012e")
213 buf
.write("\u0130\5&\24\2\u012f\u0131\7\6\2\2\u0130\u012f\3\2\2\2")
214 buf
.write("\u0130\u0131\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0133\7")
215 buf
.write("\26\2\2\u0133\u0140\3\2\2\2\u0134\u0135\7\32\2\2\u0135")
216 buf
.write("\u0136\7_\2\2\u0136\u0137\7\3\2\2\u0137\u0139\5&\24\2")
217 buf
.write("\u0138\u013a\7\6\2\2\u0139\u0138\3\2\2\2\u0139\u013a\3")
218 buf
.write("\2\2\2\u013a\u013b\3\2\2\2\u013b\u013c\7\26\2\2\u013c")
219 buf
.write("\u0140\3\2\2\2\u013d\u013e\7\32\2\2\u013e\u0140\7_\2\2")
220 buf
.write("\u013f\u012c\3\2\2\2\u013f\u0134\3\2\2\2\u013f\u013d\3")
221 buf
.write("\2\2\2\u0140%\3\2\2\2\u0141\u0146\5(\25\2\u0142\u0143")
222 buf
.write("\7\6\2\2\u0143\u0145\5(\25\2\u0144\u0142\3\2\2\2\u0145")
223 buf
.write("\u0148\3\2\2\2\u0146\u0144\3\2\2\2\u0146\u0147\3\2\2\2")
224 buf
.write("\u0147\'\3\2\2\2\u0148\u0146\3\2\2\2\u0149\u014c\7_\2")
225 buf
.write("\2\u014a\u014b\7\7\2\2\u014b\u014d\5^\60\2\u014c\u014a")
226 buf
.write("\3\2\2\2\u014c\u014d\3\2\2\2\u014d)\3\2\2\2\u014e\u014f")
227 buf
.write("\t\4\2\2\u014f+\3\2\2\2\u0150\u0152\5\62\32\2\u0151\u0150")
228 buf
.write("\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0154\3\2\2\2\u0153")
229 buf
.write("\u0155\7$\2\2\u0154\u0153\3\2\2\2\u0154\u0155\3\2\2\2")
230 buf
.write("\u0155\u0157\3\2\2\2\u0156\u0158\7%\2\2\u0157\u0156\3")
231 buf
.write("\2\2\2\u0157\u0158\3\2\2\2\u0158\u015a\3\2\2\2\u0159\u015b")
232 buf
.write("\7&\2\2\u015a\u0159\3\2\2\2\u015a\u015b\3\2\2\2\u015b")
233 buf
.write("\u015c\3\2\2\2\u015c\u015f\5.\30\2\u015d\u015f\5\62\32")
234 buf
.write("\2\u015e\u0151\3\2\2\2\u015e\u015d\3\2\2\2\u015f-\3\2")
235 buf
.write("\2\2\u0160\u0164\7_\2\2\u0161\u0163\5\60\31\2\u0162\u0161")
236 buf
.write("\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164")
237 buf
.write("\u0165\3\2\2\2\u0165\u0173\3\2\2\2\u0166\u0164\3\2\2\2")
238 buf
.write("\u0167\u0169\7(\2\2\u0168\u016a\7$\2\2\u0169\u0168\3\2")
239 buf
.write("\2\2\u0169\u016a\3\2\2\2\u016a\u016b\3\2\2\2\u016b\u016c")
240 buf
.write("\5,\27\2\u016c\u016e\7)\2\2\u016d\u016f\5\60\31\2\u016e")
241 buf
.write("\u016d\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u016e\3\2\2\2")
242 buf
.write("\u0170\u0171\3\2\2\2\u0171\u0173\3\2\2\2\u0172\u0160\3")
243 buf
.write("\2\2\2\u0172\u0167\3\2\2\2\u0173/\3\2\2\2\u0174\u0175")
244 buf
.write("\7*\2\2\u0175\u0176\5^\60\2\u0176\u0177\7+\2\2\u0177\u0185")
245 buf
.write("\3\2\2\2\u0178\u0179\7*\2\2\u0179\u0185\7+\2\2\u017a\u017b")
246 buf
.write("\7(\2\2\u017b\u017c\5\64\33\2\u017c\u017d\7)\2\2\u017d")
247 buf
.write("\u0185\3\2\2\2\u017e\u017f\7(\2\2\u017f\u0180\5:\36\2")
248 buf
.write("\u0180\u0181\7)\2\2\u0181\u0185\3\2\2\2\u0182\u0183\7")
249 buf
.write("(\2\2\u0183\u0185\7)\2\2\u0184\u0174\3\2\2\2\u0184\u0178")
250 buf
.write("\3\2\2\2\u0184\u017a\3\2\2\2\u0184\u017e\3\2\2\2\u0184")
251 buf
.write("\u0182\3\2\2\2\u0185\61\3\2\2\2\u0186\u0188\7,\2\2\u0187")
252 buf
.write("\u0189\5*\26\2\u0188\u0187\3\2\2\2\u0189\u018a\3\2\2\2")
253 buf
.write("\u018a\u0188\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018d\3")
254 buf
.write("\2\2\2\u018c\u018e\5\62\32\2\u018d\u018c\3\2\2\2\u018d")
255 buf
.write("\u018e\3\2\2\2\u018e\u0193\3\2\2\2\u018f\u0190\7,\2\2")
256 buf
.write("\u0190\u0193\5\62\32\2\u0191\u0193\7,\2\2\u0192\u0186")
257 buf
.write("\3\2\2\2\u0192\u018f\3\2\2\2\u0192\u0191\3\2\2\2\u0193")
258 buf
.write("\63\3\2\2\2\u0194\u019a\5\66\34\2\u0195\u0197\7\6\2\2")
259 buf
.write("\u0196\u0198\7\37\2\2\u0197\u0196\3\2\2\2\u0197\u0198")
260 buf
.write("\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u019b\7-\2\2\u019a")
261 buf
.write("\u0195\3\2\2\2\u019a\u019b\3\2\2\2\u019b\65\3\2\2\2\u019c")
262 buf
.write("\u01a4\58\35\2\u019d\u019f\7\6\2\2\u019e\u01a0\7\37\2")
263 buf
.write("\2\u019f\u019e\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a1")
264 buf
.write("\3\2\2\2\u01a1\u01a3\58\35\2\u01a2\u019d\3\2\2\2\u01a3")
265 buf
.write("\u01a6\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a4\u01a5\3\2\2\2")
266 buf
.write("\u01a5\67\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a7\u01ac\5\b")
267 buf
.write("\5\2\u01a8\u01ab\5,\27\2\u01a9\u01ab\5> \2\u01aa\u01a8")
268 buf
.write("\3\2\2\2\u01aa\u01a9\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac")
269 buf
.write("\u01aa\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b0\3\2\2\2")
270 buf
.write("\u01ae\u01ac\3\2\2\2\u01af\u01b1\7\37\2\2\u01b0\u01af")
271 buf
.write("\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01ba\3\2\2\2\u01b2")
272 buf
.write("\u01b4\5\62\32\2\u01b3\u01b2\3\2\2\2\u01b4\u01b7\3\2\2")
273 buf
.write("\2\u01b5\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b8")
274 buf
.write("\3\2\2\2\u01b7\u01b5\3\2\2\2\u01b8\u01ba\7_\2\2\u01b9")
275 buf
.write("\u01a7\3\2\2\2\u01b9\u01b5\3\2\2\2\u01ba9\3\2\2\2\u01bb")
276 buf
.write("\u01c0\7_\2\2\u01bc\u01bd\7\6\2\2\u01bd\u01bf\7_\2\2\u01be")
277 buf
.write("\u01bc\3\2\2\2\u01bf\u01c2\3\2\2\2\u01c0\u01be\3\2\2\2")
278 buf
.write("\u01c0\u01c1\3\2\2\2\u01c1;\3\2\2\2\u01c2\u01c0\3\2\2")
279 buf
.write("\2\u01c3\u01c5\5\36\20\2\u01c4\u01c6\5> \2\u01c5\u01c4")
280 buf
.write("\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c9\3\2\2\2\u01c7")
281 buf
.write("\u01c9\5\24\13\2\u01c8\u01c3\3\2\2\2\u01c8\u01c7\3\2\2")
282 buf
.write("\2\u01c9=\3\2\2\2\u01ca\u01cc\5\62\32\2\u01cb\u01cd\5")
283 buf
.write("@!\2\u01cc\u01cb\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01d0")
284 buf
.write("\3\2\2\2\u01ce\u01d0\5@!\2\u01cf\u01ca\3\2\2\2\u01cf\u01ce")
285 buf
.write("\3\2\2\2\u01d0?\3\2\2\2\u01d1\u01d2\7(\2\2\u01d2\u01d3")
286 buf
.write("\5> \2\u01d3\u01d4\7)\2\2\u01d4\u01d7\3\2\2\2\u01d5\u01d7")
287 buf
.write("\5B\"\2\u01d6\u01d1\3\2\2\2\u01d6\u01d5\3\2\2\2\u01d7")
288 buf
.write("\u01db\3\2\2\2\u01d8\u01da\5B\"\2\u01d9\u01d8\3\2\2\2")
289 buf
.write("\u01da\u01dd\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3")
290 buf
.write("\2\2\2\u01dcA\3\2\2\2\u01dd\u01db\3\2\2\2\u01de\u01df")
291 buf
.write("\7*\2\2\u01df\u01eb\7+\2\2\u01e0\u01e1\7*\2\2\u01e1\u01e2")
292 buf
.write("\5^\60\2\u01e2\u01e3\7+\2\2\u01e3\u01eb\3\2\2\2\u01e4")
293 buf
.write("\u01e5\7(\2\2\u01e5\u01eb\7)\2\2\u01e6\u01e7\7(\2\2\u01e7")
294 buf
.write("\u01e8\5\64\33\2\u01e8\u01e9\7)\2\2\u01e9\u01eb\3\2\2")
295 buf
.write("\2\u01ea\u01de\3\2\2\2\u01ea\u01e0\3\2\2\2\u01ea\u01e4")
296 buf
.write("\3\2\2\2\u01ea\u01e6\3\2\2\2\u01ebC\3\2\2\2\u01ec\u01f5")
297 buf
.write("\5`\61\2\u01ed\u01ee\7\3\2\2\u01ee\u01f0\5F$\2\u01ef\u01f1")
298 buf
.write("\7\6\2\2\u01f0\u01ef\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1")
299 buf
.write("\u01f2\3\2\2\2\u01f2\u01f3\7\26\2\2\u01f3\u01f5\3\2\2")
300 buf
.write("\2\u01f4\u01ec\3\2\2\2\u01f4\u01ed\3\2\2\2\u01f5E\3\2")
301 buf
.write("\2\2\u01f6\u01fb\5D#\2\u01f7\u01f8\7\6\2\2\u01f8\u01fa")
302 buf
.write("\5D#\2\u01f9\u01f7\3\2\2\2\u01fa\u01fd\3\2\2\2\u01fb\u01f9")
303 buf
.write("\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fcG\3\2\2\2\u01fd\u01fb")
304 buf
.write("\3\2\2\2\u01fe\u0200\5`\61\2\u01ff\u0201\7\37\2\2\u0200")
305 buf
.write("\u01ff\3\2\2\2\u0200\u0201\3\2\2\2\u0201\u0209\3\2\2\2")
306 buf
.write("\u0202\u0203\7\6\2\2\u0203\u0205\5`\61\2\u0204\u0206\7")
307 buf
.write("\37\2\2\u0205\u0204\3\2\2\2\u0205\u0206\3\2\2\2\u0206")
308 buf
.write("\u0208\3\2\2\2\u0207\u0202\3\2\2\2\u0208\u020b\3\2\2\2")
309 buf
.write("\u0209\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020aI\3\2\2")
310 buf
.write("\2\u020b\u0209\3\2\2\2\u020c\u0213\5L\'\2\u020d\u020e")
311 buf
.write("\7.\2\2\u020e\u0212\5L\'\2\u020f\u0210\7/\2\2\u0210\u0212")
312 buf
.write("\5L\'\2\u0211\u020d\3\2\2\2\u0211\u020f\3\2\2\2\u0212")
313 buf
.write("\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213\u0214\3\2\2\2")
314 buf
.write("\u0214K\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u021f\5N(\2")
315 buf
.write("\u0217\u0218\7,\2\2\u0218\u021e\5N(\2\u0219\u021a\7\60")
316 buf
.write("\2\2\u021a\u021e\5N(\2\u021b\u021c\7\61\2\2\u021c\u021e")
317 buf
.write("\5N(\2\u021d\u0217\3\2\2\2\u021d\u0219\3\2\2\2\u021d\u021b")
318 buf
.write("\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u021f")
319 buf
.write("\u0220\3\2\2\2\u0220M\3\2\2\2\u0221\u021f\3\2\2\2\u0222")
320 buf
.write("\u0223\7(\2\2\u0223\u0224\5<\37\2\u0224\u0225\7)\2\2\u0225")
321 buf
.write("\u0226\5N(\2\u0226\u0229\3\2\2\2\u0227\u0229\5P)\2\u0228")
322 buf
.write("\u0222\3\2\2\2\u0228\u0227\3\2\2\2\u0229O\3\2\2\2\u022a")
323 buf
.write("\u023a\5R*\2\u022b\u022c\7\62\2\2\u022c\u023a\5P)\2\u022d")
324 buf
.write("\u022e\7\63\2\2\u022e\u023a\5P)\2\u022f\u0230\5V,\2\u0230")
325 buf
.write("\u0231\5N(\2\u0231\u023a\3\2\2\2\u0232\u0233\7\64\2\2")
326 buf
.write("\u0233\u023a\5P)\2\u0234\u0235\7\64\2\2\u0235\u0236\7")
327 buf
.write("(\2\2\u0236\u0237\5<\37\2\u0237\u0238\7)\2\2\u0238\u023a")
328 buf
.write("\3\2\2\2\u0239\u022a\3\2\2\2\u0239\u022b\3\2\2\2\u0239")
329 buf
.write("\u022d\3\2\2\2\u0239\u022f\3\2\2\2\u0239\u0232\3\2\2\2")
330 buf
.write("\u0239\u0234\3\2\2\2\u023aQ\3\2\2\2\u023b\u023c\5X-\2")
331 buf
.write("\u023c\u025a\b*\1\2\u023d\u023e\7*\2\2\u023e\u023f\5\\")
332 buf
.write("/\2\u023f\u0240\7+\2\2\u0240\u0259\3\2\2\2\u0241\u0242")
333 buf
.write("\7(\2\2\u0242\u0243\7)\2\2\u0243\u0259\b*\1\2\u0244\u0245")
334 buf
.write("\7(\2\2\u0245\u0246\5H%\2\u0246\u0247\7)\2\2\u0247\u0248")
335 buf
.write("\b*\1\2\u0248\u0259\3\2\2\2\u0249\u024a\7(\2\2\u024a\u024b")
336 buf
.write("\5T+\2\u024b\u024c\7)\2\2\u024c\u0259\3\2\2\2\u024d\u024e")
337 buf
.write("\7\65\2\2\u024e\u024f\7_\2\2\u024f\u0259\b*\1\2\u0250")
338 buf
.write("\u0251\7,\2\2\u0251\u0252\7_\2\2\u0252\u0259\b*\1\2\u0253")
339 buf
.write("\u0254\7\66\2\2\u0254\u0255\7_\2\2\u0255\u0259\b*\1\2")
340 buf
.write("\u0256\u0259\7\62\2\2\u0257\u0259\7\63\2\2\u0258\u023d")
341 buf
.write("\3\2\2\2\u0258\u0241\3\2\2\2\u0258\u0244\3\2\2\2\u0258")
342 buf
.write("\u0249\3\2\2\2\u0258\u024d\3\2\2\2\u0258\u0250\3\2\2\2")
343 buf
.write("\u0258\u0253\3\2\2\2\u0258\u0256\3\2\2\2\u0258\u0257\3")
344 buf
.write("\2\2\2\u0259\u025c\3\2\2\2\u025a\u0258\3\2\2\2\u025a\u025b")
345 buf
.write("\3\2\2\2\u025bS\3\2\2\2\u025c\u025a\3\2\2\2\u025d\u0262")
346 buf
.write("\58\35\2\u025e\u025f\7\6\2\2\u025f\u0261\58\35\2\u0260")
347 buf
.write("\u025e\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2\2\2")
348 buf
.write("\u0262\u0263\3\2\2\2\u0263U\3\2\2\2\u0264\u0262\3\2\2")
349 buf
.write("\2\u0265\u0266\t\5\2\2\u0266W\3\2\2\2\u0267\u026e\7_\2")
350 buf
.write("\2\u0268\u026e\5Z.\2\u0269\u026a\7(\2\2\u026a\u026b\5")
351 buf
.write("\\/\2\u026b\u026c\7)\2\2\u026c\u026e\3\2\2\2\u026d\u0267")
352 buf
.write("\3\2\2\2\u026d\u0268\3\2\2\2\u026d\u0269\3\2\2\2\u026e")
353 buf
.write("Y\3\2\2\2\u026f\u028a\7b\2\2\u0270\u028a\7d\2\2\u0271")
354 buf
.write("\u028a\7c\2\2\u0272\u028a\7`\2\2\u0273\u0275\7_\2\2\u0274")
355 buf
.write("\u0273\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2\2")
356 buf
.write("\u0276\u0277\3\2\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3")
357 buf
.write("\2\2\2\u0279\u027b\7a\2\2\u027a\u0279\3\2\2\2\u027b\u027c")
358 buf
.write("\3\2\2\2\u027c\u027a\3\2\2\2\u027c\u027d\3\2\2\2\u027d")
359 buf
.write("\u027f\3\2\2\2\u027e\u0276\3\2\2\2\u027f\u0280\3\2\2\2")
360 buf
.write("\u0280\u027e\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0285\3")
361 buf
.write("\2\2\2\u0282\u0284\7_\2\2\u0283\u0282\3\2\2\2\u0284\u0287")
362 buf
.write("\3\2\2\2\u0285\u0283\3\2\2\2\u0285\u0286\3\2\2\2\u0286")
363 buf
.write("\u028a\3\2\2\2\u0287\u0285\3\2\2\2\u0288\u028a\7e\2\2")
364 buf
.write("\u0289\u026f\3\2\2\2\u0289\u0270\3\2\2\2\u0289\u0271\3")
365 buf
.write("\2\2\2\u0289\u0272\3\2\2\2\u0289\u027e\3\2\2\2\u0289\u0288")
366 buf
.write("\3\2\2\2\u028a[\3\2\2\2\u028b\u0290\5`\61\2\u028c\u028d")
367 buf
.write("\7\6\2\2\u028d\u028f\5`\61\2\u028e\u028c\3\2\2\2\u028f")
368 buf
.write("\u0292\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2")
369 buf
.write("\u0291]\3\2\2\2\u0292\u0290\3\2\2\2\u0293\u0294\5f\64")
370 buf
.write("\2\u0294_\3\2\2\2\u0295\u0296\5b\62\2\u0296\u0297\5d\63")
371 buf
.write("\2\u0297\u0298\5`\61\2\u0298\u029b\3\2\2\2\u0299\u029b")
372 buf
.write("\5f\64\2\u029a\u0295\3\2\2\2\u029a\u0299\3\2\2\2\u029b")
373 buf
.write("a\3\2\2\2\u029c\u029d\5P)\2\u029dc\3\2\2\2\u029e\u029f")
374 buf
.write("\t\6\2\2\u029fe\3\2\2\2\u02a0\u02a7\5h\65\2\u02a1\u02a2")
375 buf
.write("\7D\2\2\u02a2\u02a3\5\\/\2\u02a3\u02a4\7\31\2\2\u02a4")
376 buf
.write("\u02a5\5f\64\2\u02a5\u02a6\b\64\1\2\u02a6\u02a8\3\2\2")
377 buf
.write("\2\u02a7\u02a1\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8g\3\2")
378 buf
.write("\2\2\u02a9\u02ae\5j\66\2\u02aa\u02ab\7E\2\2\u02ab\u02ad")
379 buf
.write("\5j\66\2\u02ac\u02aa\3\2\2\2\u02ad\u02b0\3\2\2\2\u02ae")
380 buf
.write("\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02afi\3\2\2\2\u02b0")
381 buf
.write("\u02ae\3\2\2\2\u02b1\u02b6\5l\67\2\u02b2\u02b3\7F\2\2")
382 buf
.write("\u02b3\u02b5\5l\67\2\u02b4\u02b2\3\2\2\2\u02b5\u02b8\3")
383 buf
.write("\2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7k")
384 buf
.write("\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9\u02be\5n8\2\u02ba\u02bb")
385 buf
.write("\7G\2\2\u02bb\u02bd\5n8\2\u02bc\u02ba\3\2\2\2\u02bd\u02c0")
386 buf
.write("\3\2\2\2\u02be\u02bc\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf")
387 buf
.write("m\3\2\2\2\u02c0\u02be\3\2\2\2\u02c1\u02c6\5p9\2\u02c2")
388 buf
.write("\u02c3\7H\2\2\u02c3\u02c5\5p9\2\u02c4\u02c2\3\2\2\2\u02c5")
389 buf
.write("\u02c8\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c6\u02c7\3\2\2\2")
390 buf
.write("\u02c7o\3\2\2\2\u02c8\u02c6\3\2\2\2\u02c9\u02ce\5r:\2")
391 buf
.write("\u02ca\u02cb\7\67\2\2\u02cb\u02cd\5r:\2\u02cc\u02ca\3")
392 buf
.write("\2\2\2\u02cd\u02d0\3\2\2\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf")
393 buf
.write("\3\2\2\2\u02cfq\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d1\u02d6")
394 buf
.write("\5t;\2\u02d2\u02d3\t\7\2\2\u02d3\u02d5\5t;\2\u02d4\u02d2")
395 buf
.write("\3\2\2\2\u02d5\u02d8\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d6")
396 buf
.write("\u02d7\3\2\2\2\u02d7s\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d9")
397 buf
.write("\u02de\5v<\2\u02da\u02db\t\b\2\2\u02db\u02dd\5v<\2\u02dc")
398 buf
.write("\u02da\3\2\2\2\u02dd\u02e0\3\2\2\2\u02de\u02dc\3\2\2\2")
399 buf
.write("\u02de\u02df\3\2\2\2\u02dfu\3\2\2\2\u02e0\u02de\3\2\2")
400 buf
.write("\2\u02e1\u02e6\5J&\2\u02e2\u02e3\t\t\2\2\u02e3\u02e5\5")
401 buf
.write("J&\2\u02e4\u02e2\3\2\2\2\u02e5\u02e8\3\2\2\2\u02e6\u02e4")
402 buf
.write("\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7w\3\2\2\2\u02e8\u02e6")
403 buf
.write("\3\2\2\2\u02e9\u02f5\5\u0082B\2\u02ea\u02f5\5\u0084C\2")
404 buf
.write("\u02eb\u02f5\5\u0088E\2\u02ec\u02f5\5\u008aF\2\u02ed\u02f5")
405 buf
.write("\5\u008cG\2\u02ee\u02f5\5\u008eH\2\u02ef\u02f5\5\u0080")
406 buf
.write("A\2\u02f0\u02f5\5z>\2\u02f1\u02f5\5|?\2\u02f2\u02f5\5")
407 buf
.write("~@\2\u02f3\u02f5\5\n\6\2\u02f4\u02e9\3\2\2\2\u02f4\u02ea")
408 buf
.write("\3\2\2\2\u02f4\u02eb\3\2\2\2\u02f4\u02ec\3\2\2\2\u02f4")
409 buf
.write("\u02ed\3\2\2\2\u02f4\u02ee\3\2\2\2\u02f4\u02ef\3\2\2\2")
410 buf
.write("\u02f4\u02f0\3\2\2\2\u02f4\u02f1\3\2\2\2\u02f4\u02f2\3")
411 buf
.write("\2\2\2\u02f4\u02f3\3\2\2\2\u02f5y\3\2\2\2\u02f6\u02f8")
412 buf
.write("\7Q\2\2\u02f7\u02f6\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8")
413 buf
.write("\u02f9\3\2\2\2\u02f9\u02fa\7_\2\2\u02fa\u02fe\7(\2\2\u02fb")
414 buf
.write("\u02fd\n\n\2\2\u02fc\u02fb\3\2\2\2\u02fd\u0300\3\2\2\2")
415 buf
.write("\u02fe\u02fc\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0301\3")
416 buf
.write("\2\2\2\u0300\u02fe\3\2\2\2\u0301\u0302\7)\2\2\u0302\u0303")
417 buf
.write("\7\4\2\2\u0303{\3\2\2\2\u0304\u0305\7R\2\2\u0305\u0309")
418 buf
.write("\7\3\2\2\u0306\u0308\n\13\2\2\u0307\u0306\3\2\2\2\u0308")
419 buf
.write("\u030b\3\2\2\2\u0309\u0307\3\2\2\2\u0309\u030a\3\2\2\2")
420 buf
.write("\u030a\u030c\3\2\2\2\u030b\u0309\3\2\2\2\u030c\u030d\7")
421 buf
.write("\26\2\2\u030d}\3\2\2\2\u030e\u030f\7S\2\2\u030f\u0313")
422 buf
.write("\7\3\2\2\u0310\u0312\n\13\2\2\u0311\u0310\3\2\2\2\u0312")
423 buf
.write("\u0315\3\2\2\2\u0313\u0311\3\2\2\2\u0313\u0314\3\2\2\2")
424 buf
.write("\u0314\u0316\3\2\2\2\u0315\u0313\3\2\2\2\u0316\u0317\7")
425 buf
.write("\26\2\2\u0317\177\3\2\2\2\u0318\u0319\7_\2\2\u0319\u031d")
426 buf
.write("\7(\2\2\u031a\u031c\5\n\6\2\u031b\u031a\3\2\2\2\u031c")
427 buf
.write("\u031f\3\2\2\2\u031d\u031b\3\2\2\2\u031d\u031e\3\2\2\2")
428 buf
.write("\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u0320\u0322\5")
429 buf
.write("\u0086D\2\u0321\u0320\3\2\2\2\u0321\u0322\3\2\2\2\u0322")
430 buf
.write("\u0324\3\2\2\2\u0323\u0325\5\\/\2\u0324\u0323\3\2\2\2")
431 buf
.write("\u0324\u0325\3\2\2\2\u0325\u0326\3\2\2\2\u0326\u0327\7")
432 buf
.write(")\2\2\u0327\u0081\3\2\2\2\u0328\u0329\7_\2\2\u0329\u032a")
433 buf
.write("\7\31\2\2\u032a\u0334\5x=\2\u032b\u032c\7T\2\2\u032c\u032d")
434 buf
.write("\5^\60\2\u032d\u032e\7\31\2\2\u032e\u032f\5x=\2\u032f")
435 buf
.write("\u0334\3\2\2\2\u0330\u0331\7U\2\2\u0331\u0332\7\31\2\2")
436 buf
.write("\u0332\u0334\5x=\2\u0333\u0328\3\2\2\2\u0333\u032b\3\2")
437 buf
.write("\2\2\u0333\u0330\3\2\2\2\u0334\u0083\3\2\2\2\u0335\u0339")
438 buf
.write("\7\3\2\2\u0336\u0338\5\n\6\2\u0337\u0336\3\2\2\2\u0338")
439 buf
.write("\u033b\3\2\2\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2")
440 buf
.write("\u033a\u033d\3\2\2\2\u033b\u0339\3\2\2\2\u033c\u033e\5")
441 buf
.write("\u0086D\2\u033d\u033c\3\2\2\2\u033d\u033e\3\2\2\2\u033e")
442 buf
.write("\u033f\3\2\2\2\u033f\u0340\7\26\2\2\u0340\u0085\3\2\2")
443 buf
.write("\2\u0341\u0343\5x=\2\u0342\u0341\3\2\2\2\u0343\u0344\3")
444 buf
.write("\2\2\2\u0344\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345\u0087")
445 buf
.write("\3\2\2\2\u0346\u034b\7\4\2\2\u0347\u0348\5\\/\2\u0348")
446 buf
.write("\u0349\7\4\2\2\u0349\u034b\3\2\2\2\u034a\u0346\3\2\2\2")
447 buf
.write("\u034a\u0347\3\2\2\2\u034b\u0089\3\2\2\2\u034c\u034d\7")
448 buf
.write("V\2\2\u034d\u034e\7(\2\2\u034e\u034f\5\\/\2\u034f\u0350")
449 buf
.write("\7)\2\2\u0350\u0351\bF\1\2\u0351\u0354\5x=\2\u0352\u0353")
450 buf
.write("\7W\2\2\u0353\u0355\5x=\2\u0354\u0352\3\2\2\2\u0354\u0355")
451 buf
.write("\3\2\2\2\u0355\u035d\3\2\2\2\u0356\u0357\7X\2\2\u0357")
452 buf
.write("\u0358\7(\2\2\u0358\u0359\5\\/\2\u0359\u035a\7)\2\2\u035a")
453 buf
.write("\u035b\5x=\2\u035b\u035d\3\2\2\2\u035c\u034c\3\2\2\2\u035c")
454 buf
.write("\u0356\3\2\2\2\u035d\u008b\3\2\2\2\u035e\u035f\7Y\2\2")
455 buf
.write("\u035f\u0360\7(\2\2\u0360\u0361\5\\/\2\u0361\u0362\7)")
456 buf
.write("\2\2\u0362\u0363\5x=\2\u0363\u0364\bG\1\2\u0364\u036f")
457 buf
.write("\3\2\2\2\u0365\u0366\7Z\2\2\u0366\u0367\5x=\2\u0367\u0368")
458 buf
.write("\7Y\2\2\u0368\u0369\7(\2\2\u0369\u036a\5\\/\2\u036a\u036b")
459 buf
.write("\7)\2\2\u036b\u036c\7\4\2\2\u036c\u036d\bG\1\2\u036d\u036f")
460 buf
.write("\3\2\2\2\u036e\u035e\3\2\2\2\u036e\u0365\3\2\2\2\u036f")
461 buf
.write("\u008d\3\2\2\2\u0370\u0371\7[\2\2\u0371\u0372\7_\2\2\u0372")
462 buf
.write("\u037e\7\4\2\2\u0373\u0374\7\\\2\2\u0374\u037e\7\4\2\2")
463 buf
.write("\u0375\u0376\7]\2\2\u0376\u037e\7\4\2\2\u0377\u0378\7")
464 buf
.write("^\2\2\u0378\u037e\7\4\2\2\u0379\u037a\7^\2\2\u037a\u037b")
465 buf
.write("\5\\/\2\u037b\u037c\7\4\2\2\u037c\u037e\3\2\2\2\u037d")
466 buf
.write("\u0370\3\2\2\2\u037d\u0373\3\2\2\2\u037d\u0375\3\2\2\2")
467 buf
.write("\u037d\u0377\3\2\2\2\u037d\u0379\3\2\2\2\u037e\u008f\3")
468 buf
.write("\2\2\2o\u0093\u0097\u009d\u00a6\u00a8\u00ab\u00b1\u00b6")
469 buf
.write("\u00bd\u00bf\u00c3\u00cb\u00d0\u00d7\u00dd\u00f4\u00f9")
470 buf
.write("\u00ff\u0108\u010f\u0117\u0119\u0120\u0126\u012a\u0130")
471 buf
.write("\u0139\u013f\u0146\u014c\u0151\u0154\u0157\u015a\u015e")
472 buf
.write("\u0164\u0169\u0170\u0172\u0184\u018a\u018d\u0192\u0197")
473 buf
.write("\u019a\u019f\u01a4\u01aa\u01ac\u01b0\u01b5\u01b9\u01c0")
474 buf
.write("\u01c5\u01c8\u01cc\u01cf\u01d6\u01db\u01ea\u01f0\u01f4")
475 buf
.write("\u01fb\u0200\u0205\u0209\u0211\u0213\u021d\u021f\u0228")
476 buf
.write("\u0239\u0258\u025a\u0262\u026d\u0276\u027c\u0280\u0285")
477 buf
.write("\u0289\u0290\u029a\u02a7\u02ae\u02b6\u02be\u02c6\u02ce")
478 buf
.write("\u02d6\u02de\u02e6\u02f4\u02f7\u02fe\u0309\u0313\u031d")
479 buf
.write("\u0321\u0324\u0333\u0339\u033d\u0344\u034a\u0354\u035c")
480 buf
.write("\u036e\u037d")
481 return buf
.getvalue()
484 class CParser ( Parser
):
486 grammarFileName
= "C.g4"
488 atn
= ATNDeserializer().deserialize(serializedATN())
490 decisionsToDFA
= [ DFA(ds
, i
) for i
, ds
in enumerate(atn
.decisionToState
) ]
492 sharedContextCache
= PredictionContextCache()
494 literalNames
= [ "<INVALID>", "'{'", "';'", "'typedef'", "','", "'='",
495 "'extern'", "'static'", "'auto'", "'register'", "'STATIC'",
496 "'void'", "'char'", "'short'", "'int'", "'long'", "'float'",
497 "'double'", "'signed'", "'unsigned'", "'}'", "'struct'",
498 "'union'", "':'", "'enum'", "'const'", "'volatile'",
499 "'IN'", "'OUT'", "'OPTIONAL'", "'CONST'", "'UNALIGNED'",
500 "'VOLATILE'", "'GLOBAL_REMOVE_IF_UNREFERENCED'", "'EFIAPI'",
501 "'EFI_BOOTSERVICE'", "'EFI_RUNTIMESERVICE'", "'PACKED'",
502 "'('", "')'", "'['", "']'", "'*'", "'...'", "'+'",
503 "'-'", "'/'", "'%'", "'++'", "'--'", "'sizeof'", "'.'",
504 "'->'", "'&'", "'~'", "'!'", "'*='", "'/='", "'%='",
505 "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='",
506 "'?'", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='",
507 "'<'", "'>'", "'<='", "'>='", "'<<'", "'>>'", "'__asm__'",
508 "'_asm'", "'__asm'", "'case'", "'default'", "'if'",
509 "'else'", "'switch'", "'while'", "'do'", "'goto'",
510 "'continue'", "'break'", "'return'" ]
512 symbolicNames
= [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
513 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
514 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
515 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
516 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
517 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
518 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
519 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
520 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
521 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
522 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
523 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
524 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
525 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
526 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
527 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
528 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
529 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
530 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
531 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
532 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
533 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
534 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
535 "<INVALID>", "IDENTIFIER", "CHARACTER_LITERAL", "STRING_LITERAL",
536 "HEX_LITERAL", "DECIMAL_LITERAL", "OCTAL_LITERAL",
537 "FLOATING_POINT_LITERAL", "WS", "BS", "UnicodeVocabulary",
538 "COMMENT", "LINE_COMMENT", "LINE_COMMAND" ]
540 RULE_translation_unit
= 0
541 RULE_external_declaration
= 1
542 RULE_function_definition
= 2
543 RULE_declaration_specifiers
= 3
545 RULE_init_declarator_list
= 5
546 RULE_init_declarator
= 6
547 RULE_storage_class_specifier
= 7
548 RULE_type_specifier
= 8
550 RULE_struct_or_union_specifier
= 10
551 RULE_struct_or_union
= 11
552 RULE_struct_declaration_list
= 12
553 RULE_struct_declaration
= 13
554 RULE_specifier_qualifier_list
= 14
555 RULE_struct_declarator_list
= 15
556 RULE_struct_declarator
= 16
557 RULE_enum_specifier
= 17
558 RULE_enumerator_list
= 18
560 RULE_type_qualifier
= 20
562 RULE_direct_declarator
= 22
563 RULE_declarator_suffix
= 23
565 RULE_parameter_type_list
= 25
566 RULE_parameter_list
= 26
567 RULE_parameter_declaration
= 27
568 RULE_identifier_list
= 28
570 RULE_abstract_declarator
= 30
571 RULE_direct_abstract_declarator
= 31
572 RULE_abstract_declarator_suffix
= 32
573 RULE_initializer
= 33
574 RULE_initializer_list
= 34
575 RULE_argument_expression_list
= 35
576 RULE_additive_expression
= 36
577 RULE_multiplicative_expression
= 37
578 RULE_cast_expression
= 38
579 RULE_unary_expression
= 39
580 RULE_postfix_expression
= 40
581 RULE_macro_parameter_list
= 41
582 RULE_unary_operator
= 42
583 RULE_primary_expression
= 43
586 RULE_constant_expression
= 46
587 RULE_assignment_expression
= 47
589 RULE_assignment_operator
= 49
590 RULE_conditional_expression
= 50
591 RULE_logical_or_expression
= 51
592 RULE_logical_and_expression
= 52
593 RULE_inclusive_or_expression
= 53
594 RULE_exclusive_or_expression
= 54
595 RULE_and_expression
= 55
596 RULE_equality_expression
= 56
597 RULE_relational_expression
= 57
598 RULE_shift_expression
= 58
600 RULE_asm2_statement
= 60
601 RULE_asm1_statement
= 61
602 RULE_asm_statement
= 62
603 RULE_macro_statement
= 63
604 RULE_labeled_statement
= 64
605 RULE_compound_statement
= 65
606 RULE_statement_list
= 66
607 RULE_expression_statement
= 67
608 RULE_selection_statement
= 68
609 RULE_iteration_statement
= 69
610 RULE_jump_statement
= 70
612 ruleNames
= [ "translation_unit", "external_declaration", "function_definition",
613 "declaration_specifiers", "declaration", "init_declarator_list",
614 "init_declarator", "storage_class_specifier", "type_specifier",
615 "type_id", "struct_or_union_specifier", "struct_or_union",
616 "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
617 "struct_declarator_list", "struct_declarator", "enum_specifier",
618 "enumerator_list", "enumerator", "type_qualifier", "declarator",
619 "direct_declarator", "declarator_suffix", "pointer",
620 "parameter_type_list", "parameter_list", "parameter_declaration",
621 "identifier_list", "type_name", "abstract_declarator",
622 "direct_abstract_declarator", "abstract_declarator_suffix",
623 "initializer", "initializer_list", "argument_expression_list",
624 "additive_expression", "multiplicative_expression", "cast_expression",
625 "unary_expression", "postfix_expression", "macro_parameter_list",
626 "unary_operator", "primary_expression", "constant", "expression",
627 "constant_expression", "assignment_expression", "lvalue",
628 "assignment_operator", "conditional_expression", "logical_or_expression",
629 "logical_and_expression", "inclusive_or_expression",
630 "exclusive_or_expression", "and_expression", "equality_expression",
631 "relational_expression", "shift_expression", "statement",
632 "asm2_statement", "asm1_statement", "asm_statement",
633 "macro_statement", "labeled_statement", "compound_statement",
634 "statement_list", "expression_statement", "selection_statement",
635 "iteration_statement", "jump_statement" ]
736 FLOATING_POINT_LITERAL
=99
739 UnicodeVocabulary
=102
744 def __init__(self
, input:TokenStream
, output
:TextIO
= sys
.stdout
):
745 super().__init
__(input, output
)
746 self
.checkVersion("4.7.1")
747 self
._interp
= ParserATNSimulator(self
, self
.atn
, self
.decisionsToDFA
, self
.sharedContextCache
)
748 self
._predicates
= None
753 def printTokenInfo(self
, line
, offset
, tokenText
):
754 print(str(line
)+ ',' + str(offset
) + ':' + str(tokenText
))
756 def StorePredicateExpression(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, Text
):
757 PredExp
= CodeFragment
.PredicateExpression(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
758 FileProfile
.PredicateExpressionList
.append(PredExp
)
760 def StoreEnumerationDefinition(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, Text
):
761 EnumDef
= CodeFragment
.EnumerationDefinition(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
762 FileProfile
.EnumerationDefinitionList
.append(EnumDef
)
764 def StoreStructUnionDefinition(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, Text
):
765 SUDef
= CodeFragment
.StructUnionDefinition(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
766 FileProfile
.StructUnionDefinitionList
.append(SUDef
)
768 def StoreTypedefDefinition(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, FromText
, ToText
):
769 Tdef
= CodeFragment
.TypedefDefinition(FromText
, ToText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
770 FileProfile
.TypedefDefinitionList
.append(Tdef
)
772 def StoreFunctionDefinition(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, ModifierText
, DeclText
, LeftBraceLine
, LeftBraceOffset
, DeclLine
, DeclOffset
):
773 FuncDef
= CodeFragment
.FunctionDefinition(ModifierText
, DeclText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
), (LeftBraceLine
, LeftBraceOffset
), (DeclLine
, DeclOffset
))
774 FileProfile
.FunctionDefinitionList
.append(FuncDef
)
776 def StoreVariableDeclaration(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, ModifierText
, DeclText
):
777 VarDecl
= CodeFragment
.VariableDeclaration(ModifierText
, DeclText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
778 FileProfile
.VariableDeclarationList
.append(VarDecl
)
780 def StoreFunctionCalling(self
, StartLine
, StartOffset
, EndLine
, EndOffset
, FuncName
, ParamList
):
781 FuncCall
= CodeFragment
.FunctionCalling(FuncName
, ParamList
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
782 FileProfile
.FunctionCallingList
.append(FuncCall
)
786 class Translation_unitContext(ParserRuleContext
):
788 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
789 super().__init
__(parent
, invokingState
)
792 def external_declaration(self
, i
:int=None):
794 return self
.getTypedRuleContexts(CParser
.External_declarationContext
)
796 return self
.getTypedRuleContext(CParser
.External_declarationContext
,i
)
799 def getRuleIndex(self
):
800 return CParser
.RULE_translation_unit
802 def enterRule(self
, listener
:ParseTreeListener
):
803 if hasattr( listener
, "enterTranslation_unit" ):
804 listener
.enterTranslation_unit(self
)
806 def exitRule(self
, listener
:ParseTreeListener
):
807 if hasattr( listener
, "exitTranslation_unit" ):
808 listener
.exitTranslation_unit(self
)
813 def translation_unit(self
):
815 localctx
= CParser
.Translation_unitContext(self
, self
._ctx
, self
.state
)
816 self
.enterRule(localctx
, 0, self
.RULE_translation_unit
)
817 self
._la
= 0 # Token type
819 self
.enterOuterAlt(localctx
, 1)
821 self
._errHandler
.sync(self
)
822 _la
= self
._input
.LA(1)
823 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__2
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
) |
(1 << CParser
.T__37
) |
(1 << CParser
.T__41
))) != 0) or _la
==CParser
.IDENTIFIER
:
825 self
.external_declaration()
827 self
._errHandler
.sync(self
)
828 _la
= self
._input
.LA(1)
830 except RecognitionException
as re
:
831 localctx
.exception
= re
832 self
._errHandler
.reportError(self
, re
)
833 self
._errHandler
.recover(self
, re
)
838 class External_declarationContext(ParserRuleContext
):
840 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
841 super().__init
__(parent
, invokingState
)
844 def declarator(self
):
845 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
848 def declaration_specifiers(self
):
849 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
852 def declaration(self
, i
:int=None):
854 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
856 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
859 def function_definition(self
):
860 return self
.getTypedRuleContext(CParser
.Function_definitionContext
,0)
863 def macro_statement(self
):
864 return self
.getTypedRuleContext(CParser
.Macro_statementContext
,0)
867 def getRuleIndex(self
):
868 return CParser
.RULE_external_declaration
870 def enterRule(self
, listener
:ParseTreeListener
):
871 if hasattr( listener
, "enterExternal_declaration" ):
872 listener
.enterExternal_declaration(self
)
874 def exitRule(self
, listener
:ParseTreeListener
):
875 if hasattr( listener
, "exitExternal_declaration" ):
876 listener
.exitExternal_declaration(self
)
881 def external_declaration(self
):
883 localctx
= CParser
.External_declarationContext(self
, self
._ctx
, self
.state
)
884 self
.enterRule(localctx
, 2, self
.RULE_external_declaration
)
885 self
._la
= 0 # Token type
888 self
._errHandler
.sync(self
)
889 la_
= self
._interp
.adaptivePredict(self
._input
,4,self
._ctx
)
891 self
.enterOuterAlt(localctx
, 1)
893 self
._errHandler
.sync(self
)
894 la_
= self
._interp
.adaptivePredict(self
._input
,1,self
._ctx
)
897 self
.declaration_specifiers()
903 self
._errHandler
.sync(self
)
904 _la
= self
._input
.LA(1)
905 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__2
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
))) != 0) or _la
==CParser
.IDENTIFIER
:
909 self
._errHandler
.sync(self
)
910 _la
= self
._input
.LA(1)
913 self
.match(CParser
.T__0
)
917 self
.enterOuterAlt(localctx
, 2)
919 self
.function_definition()
923 self
.enterOuterAlt(localctx
, 3)
929 self
.enterOuterAlt(localctx
, 4)
931 self
.macro_statement()
933 self
._errHandler
.sync(self
)
934 _la
= self
._input
.LA(1)
935 if _la
==CParser
.T__1
:
937 self
.match(CParser
.T__1
)
943 except RecognitionException
as re
:
944 localctx
.exception
= re
945 self
._errHandler
.reportError(self
, re
)
946 self
._errHandler
.recover(self
, re
)
951 class Function_definitionContext(ParserRuleContext
):
953 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
954 super().__init
__(parent
, invokingState
)
956 self
.ModifierText
= ''
962 self
.d
= None # Declaration_specifiersContext
963 self
._declaration
_specifiers
= None # Declaration_specifiersContext
964 self
._declarator
= None # DeclaratorContext
965 self
.a
= None # Compound_statementContext
966 self
.b
= None # Compound_statementContext
968 def declarator(self
):
969 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
972 def compound_statement(self
):
973 return self
.getTypedRuleContext(CParser
.Compound_statementContext
,0)
976 def declaration_specifiers(self
):
977 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
980 def declaration(self
, i
:int=None):
982 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
984 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
987 def getRuleIndex(self
):
988 return CParser
.RULE_function_definition
990 def enterRule(self
, listener
:ParseTreeListener
):
991 if hasattr( listener
, "enterFunction_definition" ):
992 listener
.enterFunction_definition(self
)
994 def exitRule(self
, listener
:ParseTreeListener
):
995 if hasattr( listener
, "exitFunction_definition" ):
996 listener
.exitFunction_definition(self
)
1001 def function_definition(self
):
1003 localctx
= CParser
.Function_definitionContext(self
, self
._ctx
, self
.state
)
1004 self
.enterRule(localctx
, 4, self
.RULE_function_definition
)
1013 self
._la
= 0 # Token type
1015 self
.enterOuterAlt(localctx
, 1)
1017 self
._errHandler
.sync(self
)
1018 la_
= self
._interp
.adaptivePredict(self
._input
,5,self
._ctx
)
1021 localctx
.d
= localctx
._declaration
_specifiers
= self
.declaration_specifiers()
1025 localctx
._declarator
= self
.declarator()
1027 self
._errHandler
.sync(self
)
1028 token
= self
._input
.LA(1)
1029 if token
in [CParser
.T__2
, CParser
.T__5
, CParser
.T__6
, CParser
.T__7
, CParser
.T__8
, CParser
.T__9
, CParser
.T__10
, CParser
.T__11
, CParser
.T__12
, CParser
.T__13
, CParser
.T__14
, CParser
.T__15
, CParser
.T__16
, CParser
.T__17
, CParser
.T__18
, CParser
.T__20
, CParser
.T__21
, CParser
.T__23
, CParser
.T__24
, CParser
.T__25
, CParser
.T__26
, CParser
.T__27
, CParser
.T__28
, CParser
.T__29
, CParser
.T__30
, CParser
.T__31
, CParser
.T__32
, CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__36
, CParser
.IDENTIFIER
]:
1031 self
._errHandler
.sync(self
)
1032 _la
= self
._input
.LA(1)
1037 self
._errHandler
.sync(self
)
1038 _la
= self
._input
.LA(1)
1039 if not ((((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__2
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
))) != 0) or _la
==CParser
.IDENTIFIER
):
1043 localctx
.a
= self
.compound_statement()
1045 elif token
in [CParser
.T__0
]:
1047 localctx
.b
= self
.compound_statement()
1050 raise NoViableAltException(self
)
1053 if localctx
.d
!= None:
1054 ModifierText
= (None if localctx
._declaration
_specifiers
is None else self
._input
.getText((localctx
._declaration
_specifiers
.start
,localctx
._declaration
_specifiers
.stop
)))
1057 DeclText
= (None if localctx
._declarator
is None else self
._input
.getText((localctx
._declarator
.start
,localctx
._declarator
.stop
)))
1058 DeclLine
= (None if localctx
._declarator
is None else localctx
._declarator
.start
).line
1059 DeclOffset
= (None if localctx
._declarator
is None else localctx
._declarator
.start
).column
1060 if localctx
.a
!= None:
1061 LBLine
= (None if localctx
.a
is None else localctx
.a
.start
).line
1062 LBOffset
= (None if localctx
.a
is None else localctx
.a
.start
).column
1064 LBLine
= (None if localctx
.b
is None else localctx
.b
.start
).line
1065 LBOffset
= (None if localctx
.b
is None else localctx
.b
.start
).column
1067 self
._ctx
.stop
= self
._input
.LT(-1)
1069 self
.StoreFunctionDefinition(localctx
.start
.line
, localctx
.start
.column
, localctx
.stop
.line
, localctx
.stop
.column
, ModifierText
, DeclText
, LBLine
, LBOffset
, DeclLine
, DeclOffset
)
1071 except RecognitionException
as re
:
1072 localctx
.exception
= re
1073 self
._errHandler
.reportError(self
, re
)
1074 self
._errHandler
.recover(self
, re
)
1079 class Declaration_specifiersContext(ParserRuleContext
):
1081 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1082 super().__init
__(parent
, invokingState
)
1083 self
.parser
= parser
1085 def storage_class_specifier(self
, i
:int=None):
1087 return self
.getTypedRuleContexts(CParser
.Storage_class_specifierContext
)
1089 return self
.getTypedRuleContext(CParser
.Storage_class_specifierContext
,i
)
1092 def type_specifier(self
, i
:int=None):
1094 return self
.getTypedRuleContexts(CParser
.Type_specifierContext
)
1096 return self
.getTypedRuleContext(CParser
.Type_specifierContext
,i
)
1099 def type_qualifier(self
, i
:int=None):
1101 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1103 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1106 def getRuleIndex(self
):
1107 return CParser
.RULE_declaration_specifiers
1109 def enterRule(self
, listener
:ParseTreeListener
):
1110 if hasattr( listener
, "enterDeclaration_specifiers" ):
1111 listener
.enterDeclaration_specifiers(self
)
1113 def exitRule(self
, listener
:ParseTreeListener
):
1114 if hasattr( listener
, "exitDeclaration_specifiers" ):
1115 listener
.exitDeclaration_specifiers(self
)
1120 def declaration_specifiers(self
):
1122 localctx
= CParser
.Declaration_specifiersContext(self
, self
._ctx
, self
.state
)
1123 self
.enterRule(localctx
, 6, self
.RULE_declaration_specifiers
)
1125 self
.enterOuterAlt(localctx
, 1)
1127 self
._errHandler
.sync(self
)
1129 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1132 self
._errHandler
.sync(self
)
1133 token
= self
._input
.LA(1)
1134 if token
in [CParser
.T__5
, CParser
.T__6
, CParser
.T__7
, CParser
.T__8
, CParser
.T__9
]:
1136 self
.storage_class_specifier()
1138 elif token
in [CParser
.T__10
, CParser
.T__11
, CParser
.T__12
, CParser
.T__13
, CParser
.T__14
, CParser
.T__15
, CParser
.T__16
, CParser
.T__17
, CParser
.T__18
, CParser
.T__20
, CParser
.T__21
, CParser
.T__23
, CParser
.IDENTIFIER
]:
1140 self
.type_specifier()
1142 elif token
in [CParser
.T__24
, CParser
.T__25
, CParser
.T__26
, CParser
.T__27
, CParser
.T__28
, CParser
.T__29
, CParser
.T__30
, CParser
.T__31
, CParser
.T__32
, CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__36
]:
1144 self
.type_qualifier()
1147 raise NoViableAltException(self
)
1151 raise NoViableAltException(self
)
1153 self
._errHandler
.sync(self
)
1154 _alt
= self
._interp
.adaptivePredict(self
._input
,9,self
._ctx
)
1156 except RecognitionException
as re
:
1157 localctx
.exception
= re
1158 self
._errHandler
.reportError(self
, re
)
1159 self
._errHandler
.recover(self
, re
)
1164 class DeclarationContext(ParserRuleContext
):
1166 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1167 super().__init
__(parent
, invokingState
)
1168 self
.parser
= parser
1169 self
.a
= None # Token
1170 self
.b
= None # Declaration_specifiersContext
1171 self
.c
= None # Init_declarator_listContext
1172 self
.d
= None # Token
1173 self
.s
= None # Declaration_specifiersContext
1174 self
.t
= None # Init_declarator_listContext
1175 self
.e
= None # Token
1177 def init_declarator_list(self
):
1178 return self
.getTypedRuleContext(CParser
.Init_declarator_listContext
,0)
1181 def declaration_specifiers(self
):
1182 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
1185 def getRuleIndex(self
):
1186 return CParser
.RULE_declaration
1188 def enterRule(self
, listener
:ParseTreeListener
):
1189 if hasattr( listener
, "enterDeclaration" ):
1190 listener
.enterDeclaration(self
)
1192 def exitRule(self
, listener
:ParseTreeListener
):
1193 if hasattr( listener
, "exitDeclaration" ):
1194 listener
.exitDeclaration(self
)
1199 def declaration(self
):
1201 localctx
= CParser
.DeclarationContext(self
, self
._ctx
, self
.state
)
1202 self
.enterRule(localctx
, 8, self
.RULE_declaration
)
1203 self
._la
= 0 # Token type
1206 self
._errHandler
.sync(self
)
1207 token
= self
._input
.LA(1)
1208 if token
in [CParser
.T__2
]:
1209 self
.enterOuterAlt(localctx
, 1)
1211 localctx
.a
= self
.match(CParser
.T__2
)
1213 self
._errHandler
.sync(self
)
1214 la_
= self
._interp
.adaptivePredict(self
._input
,10,self
._ctx
)
1217 localctx
.b
= self
.declaration_specifiers()
1221 localctx
.c
= self
.init_declarator_list()
1223 localctx
.d
= self
.match(CParser
.T__1
)
1225 if localctx
.b
is not None:
1226 self
.StoreTypedefDefinition(localctx
.a
.line
, localctx
.a
.column
, (0 if localctx
.d
is None else localctx
.d
.line
), localctx
.d
.column
, (None if localctx
.b
is None else self
._input
.getText((localctx
.b
.start
,localctx
.b
.stop
))), (None if localctx
.c
is None else self
._input
.getText((localctx
.c
.start
,localctx
.c
.stop
))))
1228 self
.StoreTypedefDefinition(localctx
.a
.line
, localctx
.a
.column
, (0 if localctx
.d
is None else localctx
.d
.line
), localctx
.d
.column
, '', (None if localctx
.c
is None else self
._input
.getText((localctx
.c
.start
,localctx
.c
.stop
))))
1231 elif token
in [CParser
.T__5
, CParser
.T__6
, CParser
.T__7
, CParser
.T__8
, CParser
.T__9
, CParser
.T__10
, CParser
.T__11
, CParser
.T__12
, CParser
.T__13
, CParser
.T__14
, CParser
.T__15
, CParser
.T__16
, CParser
.T__17
, CParser
.T__18
, CParser
.T__20
, CParser
.T__21
, CParser
.T__23
, CParser
.T__24
, CParser
.T__25
, CParser
.T__26
, CParser
.T__27
, CParser
.T__28
, CParser
.T__29
, CParser
.T__30
, CParser
.T__31
, CParser
.T__32
, CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__36
, CParser
.IDENTIFIER
]:
1232 self
.enterOuterAlt(localctx
, 2)
1234 localctx
.s
= self
.declaration_specifiers()
1236 self
._errHandler
.sync(self
)
1237 _la
= self
._input
.LA(1)
1238 if ((((_la
- 34)) & ~
0x3f) == 0 and ((1 << (_la
- 34)) & ((1 << (CParser
.T__33
- 34)) |
(1 << (CParser
.T__34
- 34)) |
(1 << (CParser
.T__35
- 34)) |
(1 << (CParser
.T__37
- 34)) |
(1 << (CParser
.T__41
- 34)) |
(1 << (CParser
.IDENTIFIER
- 34)))) != 0):
1240 localctx
.t
= self
.init_declarator_list()
1244 localctx
.e
= self
.match(CParser
.T__1
)
1246 if localctx
.t
is not None:
1247 self
.StoreVariableDeclaration((None if localctx
.s
is None else localctx
.s
.start
).line
, (None if localctx
.s
is None else localctx
.s
.start
).column
, (None if localctx
.t
is None else localctx
.t
.start
).line
, (None if localctx
.t
is None else localctx
.t
.start
).column
, (None if localctx
.s
is None else self
._input
.getText((localctx
.s
.start
,localctx
.s
.stop
))), (None if localctx
.t
is None else self
._input
.getText((localctx
.t
.start
,localctx
.t
.stop
))))
1251 raise NoViableAltException(self
)
1253 except RecognitionException
as re
:
1254 localctx
.exception
= re
1255 self
._errHandler
.reportError(self
, re
)
1256 self
._errHandler
.recover(self
, re
)
1261 class Init_declarator_listContext(ParserRuleContext
):
1263 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1264 super().__init
__(parent
, invokingState
)
1265 self
.parser
= parser
1267 def init_declarator(self
, i
:int=None):
1269 return self
.getTypedRuleContexts(CParser
.Init_declaratorContext
)
1271 return self
.getTypedRuleContext(CParser
.Init_declaratorContext
,i
)
1274 def getRuleIndex(self
):
1275 return CParser
.RULE_init_declarator_list
1277 def enterRule(self
, listener
:ParseTreeListener
):
1278 if hasattr( listener
, "enterInit_declarator_list" ):
1279 listener
.enterInit_declarator_list(self
)
1281 def exitRule(self
, listener
:ParseTreeListener
):
1282 if hasattr( listener
, "exitInit_declarator_list" ):
1283 listener
.exitInit_declarator_list(self
)
1288 def init_declarator_list(self
):
1290 localctx
= CParser
.Init_declarator_listContext(self
, self
._ctx
, self
.state
)
1291 self
.enterRule(localctx
, 10, self
.RULE_init_declarator_list
)
1292 self
._la
= 0 # Token type
1294 self
.enterOuterAlt(localctx
, 1)
1296 self
.init_declarator()
1298 self
._errHandler
.sync(self
)
1299 _la
= self
._input
.LA(1)
1300 while _la
==CParser
.T__3
:
1302 self
.match(CParser
.T__3
)
1304 self
.init_declarator()
1306 self
._errHandler
.sync(self
)
1307 _la
= self
._input
.LA(1)
1309 except RecognitionException
as re
:
1310 localctx
.exception
= re
1311 self
._errHandler
.reportError(self
, re
)
1312 self
._errHandler
.recover(self
, re
)
1317 class Init_declaratorContext(ParserRuleContext
):
1319 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1320 super().__init
__(parent
, invokingState
)
1321 self
.parser
= parser
1323 def declarator(self
):
1324 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
1327 def initializer(self
):
1328 return self
.getTypedRuleContext(CParser
.InitializerContext
,0)
1331 def getRuleIndex(self
):
1332 return CParser
.RULE_init_declarator
1334 def enterRule(self
, listener
:ParseTreeListener
):
1335 if hasattr( listener
, "enterInit_declarator" ):
1336 listener
.enterInit_declarator(self
)
1338 def exitRule(self
, listener
:ParseTreeListener
):
1339 if hasattr( listener
, "exitInit_declarator" ):
1340 listener
.exitInit_declarator(self
)
1345 def init_declarator(self
):
1347 localctx
= CParser
.Init_declaratorContext(self
, self
._ctx
, self
.state
)
1348 self
.enterRule(localctx
, 12, self
.RULE_init_declarator
)
1349 self
._la
= 0 # Token type
1351 self
.enterOuterAlt(localctx
, 1)
1355 self
._errHandler
.sync(self
)
1356 _la
= self
._input
.LA(1)
1357 if _la
==CParser
.T__4
:
1359 self
.match(CParser
.T__4
)
1364 except RecognitionException
as re
:
1365 localctx
.exception
= re
1366 self
._errHandler
.reportError(self
, re
)
1367 self
._errHandler
.recover(self
, re
)
1372 class Storage_class_specifierContext(ParserRuleContext
):
1374 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1375 super().__init
__(parent
, invokingState
)
1376 self
.parser
= parser
1379 def getRuleIndex(self
):
1380 return CParser
.RULE_storage_class_specifier
1382 def enterRule(self
, listener
:ParseTreeListener
):
1383 if hasattr( listener
, "enterStorage_class_specifier" ):
1384 listener
.enterStorage_class_specifier(self
)
1386 def exitRule(self
, listener
:ParseTreeListener
):
1387 if hasattr( listener
, "exitStorage_class_specifier" ):
1388 listener
.exitStorage_class_specifier(self
)
1393 def storage_class_specifier(self
):
1395 localctx
= CParser
.Storage_class_specifierContext(self
, self
._ctx
, self
.state
)
1396 self
.enterRule(localctx
, 14, self
.RULE_storage_class_specifier
)
1397 self
._la
= 0 # Token type
1399 self
.enterOuterAlt(localctx
, 1)
1401 _la
= self
._input
.LA(1)
1402 if not((((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
))) != 0)):
1403 self
._errHandler
.recoverInline(self
)
1405 self
._errHandler
.reportMatch(self
)
1407 except RecognitionException
as re
:
1408 localctx
.exception
= re
1409 self
._errHandler
.reportError(self
, re
)
1410 self
._errHandler
.recover(self
, re
)
1415 class Type_specifierContext(ParserRuleContext
):
1417 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1418 super().__init
__(parent
, invokingState
)
1419 self
.parser
= parser
1420 self
.s
= None # Struct_or_union_specifierContext
1421 self
.e
= None # Enum_specifierContext
1423 def struct_or_union_specifier(self
):
1424 return self
.getTypedRuleContext(CParser
.Struct_or_union_specifierContext
,0)
1427 def enum_specifier(self
):
1428 return self
.getTypedRuleContext(CParser
.Enum_specifierContext
,0)
1431 def IDENTIFIER(self
):
1432 return self
.getToken(CParser
.IDENTIFIER
, 0)
1434 def declarator(self
):
1435 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
1438 def type_qualifier(self
, i
:int=None):
1440 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1442 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1446 return self
.getTypedRuleContext(CParser
.Type_idContext
,0)
1449 def getRuleIndex(self
):
1450 return CParser
.RULE_type_specifier
1452 def enterRule(self
, listener
:ParseTreeListener
):
1453 if hasattr( listener
, "enterType_specifier" ):
1454 listener
.enterType_specifier(self
)
1456 def exitRule(self
, listener
:ParseTreeListener
):
1457 if hasattr( listener
, "exitType_specifier" ):
1458 listener
.exitType_specifier(self
)
1463 def type_specifier(self
):
1465 localctx
= CParser
.Type_specifierContext(self
, self
._ctx
, self
.state
)
1466 self
.enterRule(localctx
, 16, self
.RULE_type_specifier
)
1469 self
._errHandler
.sync(self
)
1470 la_
= self
._interp
.adaptivePredict(self
._input
,16,self
._ctx
)
1472 self
.enterOuterAlt(localctx
, 1)
1474 self
.match(CParser
.T__10
)
1478 self
.enterOuterAlt(localctx
, 2)
1480 self
.match(CParser
.T__11
)
1484 self
.enterOuterAlt(localctx
, 3)
1486 self
.match(CParser
.T__12
)
1490 self
.enterOuterAlt(localctx
, 4)
1492 self
.match(CParser
.T__13
)
1496 self
.enterOuterAlt(localctx
, 5)
1498 self
.match(CParser
.T__14
)
1502 self
.enterOuterAlt(localctx
, 6)
1504 self
.match(CParser
.T__15
)
1508 self
.enterOuterAlt(localctx
, 7)
1510 self
.match(CParser
.T__16
)
1514 self
.enterOuterAlt(localctx
, 8)
1516 self
.match(CParser
.T__17
)
1520 self
.enterOuterAlt(localctx
, 9)
1522 self
.match(CParser
.T__18
)
1526 self
.enterOuterAlt(localctx
, 10)
1528 localctx
.s
= self
.struct_or_union_specifier()
1530 if localctx
.s
.stop
is not None:
1531 self
.StoreStructUnionDefinition((None if localctx
.s
is None else localctx
.s
.start
).line
, (None if localctx
.s
is None else localctx
.s
.start
).column
, (None if localctx
.s
is None else localctx
.s
.stop
).line
, (None if localctx
.s
is None else localctx
.s
.stop
).column
, (None if localctx
.s
is None else self
._input
.getText((localctx
.s
.start
,localctx
.s
.stop
))))
1536 self
.enterOuterAlt(localctx
, 11)
1538 localctx
.e
= self
.enum_specifier()
1540 if localctx
.e
.stop
is not None:
1541 self
.StoreEnumerationDefinition((None if localctx
.e
is None else localctx
.e
.start
).line
, (None if localctx
.e
is None else localctx
.e
.start
).column
, (None if localctx
.e
is None else localctx
.e
.stop
).line
, (None if localctx
.e
is None else localctx
.e
.stop
).column
, (None if localctx
.e
is None else self
._input
.getText((localctx
.e
.start
,localctx
.e
.stop
))))
1546 self
.enterOuterAlt(localctx
, 12)
1548 self
.match(CParser
.IDENTIFIER
)
1550 self
._errHandler
.sync(self
)
1551 _alt
= self
._interp
.adaptivePredict(self
._input
,15,self
._ctx
)
1552 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1555 self
.type_qualifier()
1557 self
._errHandler
.sync(self
)
1558 _alt
= self
._interp
.adaptivePredict(self
._input
,15,self
._ctx
)
1565 self
.enterOuterAlt(localctx
, 13)
1571 except RecognitionException
as re
:
1572 localctx
.exception
= re
1573 self
._errHandler
.reportError(self
, re
)
1574 self
._errHandler
.recover(self
, re
)
1579 class Type_idContext(ParserRuleContext
):
1581 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1582 super().__init
__(parent
, invokingState
)
1583 self
.parser
= parser
1585 def IDENTIFIER(self
):
1586 return self
.getToken(CParser
.IDENTIFIER
, 0)
1588 def getRuleIndex(self
):
1589 return CParser
.RULE_type_id
1591 def enterRule(self
, listener
:ParseTreeListener
):
1592 if hasattr( listener
, "enterType_id" ):
1593 listener
.enterType_id(self
)
1595 def exitRule(self
, listener
:ParseTreeListener
):
1596 if hasattr( listener
, "exitType_id" ):
1597 listener
.exitType_id(self
)
1604 localctx
= CParser
.Type_idContext(self
, self
._ctx
, self
.state
)
1605 self
.enterRule(localctx
, 18, self
.RULE_type_id
)
1607 self
.enterOuterAlt(localctx
, 1)
1609 self
.match(CParser
.IDENTIFIER
)
1610 except RecognitionException
as re
:
1611 localctx
.exception
= re
1612 self
._errHandler
.reportError(self
, re
)
1613 self
._errHandler
.recover(self
, re
)
1618 class Struct_or_union_specifierContext(ParserRuleContext
):
1620 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1621 super().__init
__(parent
, invokingState
)
1622 self
.parser
= parser
1624 def struct_or_union(self
):
1625 return self
.getTypedRuleContext(CParser
.Struct_or_unionContext
,0)
1628 def struct_declaration_list(self
):
1629 return self
.getTypedRuleContext(CParser
.Struct_declaration_listContext
,0)
1632 def IDENTIFIER(self
):
1633 return self
.getToken(CParser
.IDENTIFIER
, 0)
1635 def getRuleIndex(self
):
1636 return CParser
.RULE_struct_or_union_specifier
1638 def enterRule(self
, listener
:ParseTreeListener
):
1639 if hasattr( listener
, "enterStruct_or_union_specifier" ):
1640 listener
.enterStruct_or_union_specifier(self
)
1642 def exitRule(self
, listener
:ParseTreeListener
):
1643 if hasattr( listener
, "exitStruct_or_union_specifier" ):
1644 listener
.exitStruct_or_union_specifier(self
)
1649 def struct_or_union_specifier(self
):
1651 localctx
= CParser
.Struct_or_union_specifierContext(self
, self
._ctx
, self
.state
)
1652 self
.enterRule(localctx
, 20, self
.RULE_struct_or_union_specifier
)
1653 self
._la
= 0 # Token type
1656 self
._errHandler
.sync(self
)
1657 la_
= self
._interp
.adaptivePredict(self
._input
,18,self
._ctx
)
1659 self
.enterOuterAlt(localctx
, 1)
1661 self
.struct_or_union()
1663 self
._errHandler
.sync(self
)
1664 _la
= self
._input
.LA(1)
1665 if _la
==CParser
.IDENTIFIER
:
1667 self
.match(CParser
.IDENTIFIER
)
1671 self
.match(CParser
.T__0
)
1673 self
.struct_declaration_list()
1675 self
.match(CParser
.T__19
)
1679 self
.enterOuterAlt(localctx
, 2)
1681 self
.struct_or_union()
1683 self
.match(CParser
.IDENTIFIER
)
1687 except RecognitionException
as re
:
1688 localctx
.exception
= re
1689 self
._errHandler
.reportError(self
, re
)
1690 self
._errHandler
.recover(self
, re
)
1695 class Struct_or_unionContext(ParserRuleContext
):
1697 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1698 super().__init
__(parent
, invokingState
)
1699 self
.parser
= parser
1702 def getRuleIndex(self
):
1703 return CParser
.RULE_struct_or_union
1705 def enterRule(self
, listener
:ParseTreeListener
):
1706 if hasattr( listener
, "enterStruct_or_union" ):
1707 listener
.enterStruct_or_union(self
)
1709 def exitRule(self
, listener
:ParseTreeListener
):
1710 if hasattr( listener
, "exitStruct_or_union" ):
1711 listener
.exitStruct_or_union(self
)
1716 def struct_or_union(self
):
1718 localctx
= CParser
.Struct_or_unionContext(self
, self
._ctx
, self
.state
)
1719 self
.enterRule(localctx
, 22, self
.RULE_struct_or_union
)
1720 self
._la
= 0 # Token type
1722 self
.enterOuterAlt(localctx
, 1)
1724 _la
= self
._input
.LA(1)
1725 if not(_la
==CParser
.T__20
or _la
==CParser
.T__21
):
1726 self
._errHandler
.recoverInline(self
)
1728 self
._errHandler
.reportMatch(self
)
1730 except RecognitionException
as re
:
1731 localctx
.exception
= re
1732 self
._errHandler
.reportError(self
, re
)
1733 self
._errHandler
.recover(self
, re
)
1738 class Struct_declaration_listContext(ParserRuleContext
):
1740 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1741 super().__init
__(parent
, invokingState
)
1742 self
.parser
= parser
1744 def struct_declaration(self
, i
:int=None):
1746 return self
.getTypedRuleContexts(CParser
.Struct_declarationContext
)
1748 return self
.getTypedRuleContext(CParser
.Struct_declarationContext
,i
)
1751 def getRuleIndex(self
):
1752 return CParser
.RULE_struct_declaration_list
1754 def enterRule(self
, listener
:ParseTreeListener
):
1755 if hasattr( listener
, "enterStruct_declaration_list" ):
1756 listener
.enterStruct_declaration_list(self
)
1758 def exitRule(self
, listener
:ParseTreeListener
):
1759 if hasattr( listener
, "exitStruct_declaration_list" ):
1760 listener
.exitStruct_declaration_list(self
)
1765 def struct_declaration_list(self
):
1767 localctx
= CParser
.Struct_declaration_listContext(self
, self
._ctx
, self
.state
)
1768 self
.enterRule(localctx
, 24, self
.RULE_struct_declaration_list
)
1769 self
._la
= 0 # Token type
1771 self
.enterOuterAlt(localctx
, 1)
1773 self
._errHandler
.sync(self
)
1774 _la
= self
._input
.LA(1)
1777 self
.struct_declaration()
1779 self
._errHandler
.sync(self
)
1780 _la
= self
._input
.LA(1)
1781 if not ((((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
))) != 0) or _la
==CParser
.IDENTIFIER
):
1784 except RecognitionException
as re
:
1785 localctx
.exception
= re
1786 self
._errHandler
.reportError(self
, re
)
1787 self
._errHandler
.recover(self
, re
)
1792 class Struct_declarationContext(ParserRuleContext
):
1794 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1795 super().__init
__(parent
, invokingState
)
1796 self
.parser
= parser
1798 def specifier_qualifier_list(self
):
1799 return self
.getTypedRuleContext(CParser
.Specifier_qualifier_listContext
,0)
1802 def struct_declarator_list(self
):
1803 return self
.getTypedRuleContext(CParser
.Struct_declarator_listContext
,0)
1806 def getRuleIndex(self
):
1807 return CParser
.RULE_struct_declaration
1809 def enterRule(self
, listener
:ParseTreeListener
):
1810 if hasattr( listener
, "enterStruct_declaration" ):
1811 listener
.enterStruct_declaration(self
)
1813 def exitRule(self
, listener
:ParseTreeListener
):
1814 if hasattr( listener
, "exitStruct_declaration" ):
1815 listener
.exitStruct_declaration(self
)
1820 def struct_declaration(self
):
1822 localctx
= CParser
.Struct_declarationContext(self
, self
._ctx
, self
.state
)
1823 self
.enterRule(localctx
, 26, self
.RULE_struct_declaration
)
1825 self
.enterOuterAlt(localctx
, 1)
1827 self
.specifier_qualifier_list()
1829 self
.struct_declarator_list()
1831 self
.match(CParser
.T__1
)
1832 except RecognitionException
as re
:
1833 localctx
.exception
= re
1834 self
._errHandler
.reportError(self
, re
)
1835 self
._errHandler
.recover(self
, re
)
1840 class Specifier_qualifier_listContext(ParserRuleContext
):
1842 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1843 super().__init
__(parent
, invokingState
)
1844 self
.parser
= parser
1846 def type_qualifier(self
, i
:int=None):
1848 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1850 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1853 def type_specifier(self
, i
:int=None):
1855 return self
.getTypedRuleContexts(CParser
.Type_specifierContext
)
1857 return self
.getTypedRuleContext(CParser
.Type_specifierContext
,i
)
1860 def getRuleIndex(self
):
1861 return CParser
.RULE_specifier_qualifier_list
1863 def enterRule(self
, listener
:ParseTreeListener
):
1864 if hasattr( listener
, "enterSpecifier_qualifier_list" ):
1865 listener
.enterSpecifier_qualifier_list(self
)
1867 def exitRule(self
, listener
:ParseTreeListener
):
1868 if hasattr( listener
, "exitSpecifier_qualifier_list" ):
1869 listener
.exitSpecifier_qualifier_list(self
)
1874 def specifier_qualifier_list(self
):
1876 localctx
= CParser
.Specifier_qualifier_listContext(self
, self
._ctx
, self
.state
)
1877 self
.enterRule(localctx
, 28, self
.RULE_specifier_qualifier_list
)
1879 self
.enterOuterAlt(localctx
, 1)
1881 self
._errHandler
.sync(self
)
1883 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1886 self
._errHandler
.sync(self
)
1887 token
= self
._input
.LA(1)
1888 if token
in [CParser
.T__24
, CParser
.T__25
, CParser
.T__26
, CParser
.T__27
, CParser
.T__28
, CParser
.T__29
, CParser
.T__30
, CParser
.T__31
, CParser
.T__32
, CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__36
]:
1890 self
.type_qualifier()
1892 elif token
in [CParser
.T__10
, CParser
.T__11
, CParser
.T__12
, CParser
.T__13
, CParser
.T__14
, CParser
.T__15
, CParser
.T__16
, CParser
.T__17
, CParser
.T__18
, CParser
.T__20
, CParser
.T__21
, CParser
.T__23
, CParser
.IDENTIFIER
]:
1894 self
.type_specifier()
1897 raise NoViableAltException(self
)
1901 raise NoViableAltException(self
)
1903 self
._errHandler
.sync(self
)
1904 _alt
= self
._interp
.adaptivePredict(self
._input
,21,self
._ctx
)
1906 except RecognitionException
as re
:
1907 localctx
.exception
= re
1908 self
._errHandler
.reportError(self
, re
)
1909 self
._errHandler
.recover(self
, re
)
1914 class Struct_declarator_listContext(ParserRuleContext
):
1916 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1917 super().__init
__(parent
, invokingState
)
1918 self
.parser
= parser
1920 def struct_declarator(self
, i
:int=None):
1922 return self
.getTypedRuleContexts(CParser
.Struct_declaratorContext
)
1924 return self
.getTypedRuleContext(CParser
.Struct_declaratorContext
,i
)
1927 def getRuleIndex(self
):
1928 return CParser
.RULE_struct_declarator_list
1930 def enterRule(self
, listener
:ParseTreeListener
):
1931 if hasattr( listener
, "enterStruct_declarator_list" ):
1932 listener
.enterStruct_declarator_list(self
)
1934 def exitRule(self
, listener
:ParseTreeListener
):
1935 if hasattr( listener
, "exitStruct_declarator_list" ):
1936 listener
.exitStruct_declarator_list(self
)
1941 def struct_declarator_list(self
):
1943 localctx
= CParser
.Struct_declarator_listContext(self
, self
._ctx
, self
.state
)
1944 self
.enterRule(localctx
, 30, self
.RULE_struct_declarator_list
)
1945 self
._la
= 0 # Token type
1947 self
.enterOuterAlt(localctx
, 1)
1949 self
.struct_declarator()
1951 self
._errHandler
.sync(self
)
1952 _la
= self
._input
.LA(1)
1953 while _la
==CParser
.T__3
:
1955 self
.match(CParser
.T__3
)
1957 self
.struct_declarator()
1959 self
._errHandler
.sync(self
)
1960 _la
= self
._input
.LA(1)
1962 except RecognitionException
as re
:
1963 localctx
.exception
= re
1964 self
._errHandler
.reportError(self
, re
)
1965 self
._errHandler
.recover(self
, re
)
1970 class Struct_declaratorContext(ParserRuleContext
):
1972 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
1973 super().__init
__(parent
, invokingState
)
1974 self
.parser
= parser
1976 def declarator(self
):
1977 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
1980 def constant_expression(self
):
1981 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
1984 def getRuleIndex(self
):
1985 return CParser
.RULE_struct_declarator
1987 def enterRule(self
, listener
:ParseTreeListener
):
1988 if hasattr( listener
, "enterStruct_declarator" ):
1989 listener
.enterStruct_declarator(self
)
1991 def exitRule(self
, listener
:ParseTreeListener
):
1992 if hasattr( listener
, "exitStruct_declarator" ):
1993 listener
.exitStruct_declarator(self
)
1998 def struct_declarator(self
):
2000 localctx
= CParser
.Struct_declaratorContext(self
, self
._ctx
, self
.state
)
2001 self
.enterRule(localctx
, 32, self
.RULE_struct_declarator
)
2002 self
._la
= 0 # Token type
2005 self
._errHandler
.sync(self
)
2006 token
= self
._input
.LA(1)
2007 if token
in [CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__37
, CParser
.T__41
, CParser
.IDENTIFIER
]:
2008 self
.enterOuterAlt(localctx
, 1)
2012 self
._errHandler
.sync(self
)
2013 _la
= self
._input
.LA(1)
2014 if _la
==CParser
.T__22
:
2016 self
.match(CParser
.T__22
)
2018 self
.constant_expression()
2022 elif token
in [CParser
.T__22
]:
2023 self
.enterOuterAlt(localctx
, 2)
2025 self
.match(CParser
.T__22
)
2027 self
.constant_expression()
2030 raise NoViableAltException(self
)
2032 except RecognitionException
as re
:
2033 localctx
.exception
= re
2034 self
._errHandler
.reportError(self
, re
)
2035 self
._errHandler
.recover(self
, re
)
2040 class Enum_specifierContext(ParserRuleContext
):
2042 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2043 super().__init
__(parent
, invokingState
)
2044 self
.parser
= parser
2046 def enumerator_list(self
):
2047 return self
.getTypedRuleContext(CParser
.Enumerator_listContext
,0)
2050 def IDENTIFIER(self
):
2051 return self
.getToken(CParser
.IDENTIFIER
, 0)
2053 def getRuleIndex(self
):
2054 return CParser
.RULE_enum_specifier
2056 def enterRule(self
, listener
:ParseTreeListener
):
2057 if hasattr( listener
, "enterEnum_specifier" ):
2058 listener
.enterEnum_specifier(self
)
2060 def exitRule(self
, listener
:ParseTreeListener
):
2061 if hasattr( listener
, "exitEnum_specifier" ):
2062 listener
.exitEnum_specifier(self
)
2067 def enum_specifier(self
):
2069 localctx
= CParser
.Enum_specifierContext(self
, self
._ctx
, self
.state
)
2070 self
.enterRule(localctx
, 34, self
.RULE_enum_specifier
)
2071 self
._la
= 0 # Token type
2074 self
._errHandler
.sync(self
)
2075 la_
= self
._interp
.adaptivePredict(self
._input
,27,self
._ctx
)
2077 self
.enterOuterAlt(localctx
, 1)
2079 self
.match(CParser
.T__23
)
2081 self
.match(CParser
.T__0
)
2083 self
.enumerator_list()
2085 self
._errHandler
.sync(self
)
2086 _la
= self
._input
.LA(1)
2087 if _la
==CParser
.T__3
:
2089 self
.match(CParser
.T__3
)
2093 self
.match(CParser
.T__19
)
2097 self
.enterOuterAlt(localctx
, 2)
2099 self
.match(CParser
.T__23
)
2101 self
.match(CParser
.IDENTIFIER
)
2103 self
.match(CParser
.T__0
)
2105 self
.enumerator_list()
2107 self
._errHandler
.sync(self
)
2108 _la
= self
._input
.LA(1)
2109 if _la
==CParser
.T__3
:
2111 self
.match(CParser
.T__3
)
2115 self
.match(CParser
.T__19
)
2119 self
.enterOuterAlt(localctx
, 3)
2121 self
.match(CParser
.T__23
)
2123 self
.match(CParser
.IDENTIFIER
)
2127 except RecognitionException
as re
:
2128 localctx
.exception
= re
2129 self
._errHandler
.reportError(self
, re
)
2130 self
._errHandler
.recover(self
, re
)
2135 class Enumerator_listContext(ParserRuleContext
):
2137 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2138 super().__init
__(parent
, invokingState
)
2139 self
.parser
= parser
2141 def enumerator(self
, i
:int=None):
2143 return self
.getTypedRuleContexts(CParser
.EnumeratorContext
)
2145 return self
.getTypedRuleContext(CParser
.EnumeratorContext
,i
)
2148 def getRuleIndex(self
):
2149 return CParser
.RULE_enumerator_list
2151 def enterRule(self
, listener
:ParseTreeListener
):
2152 if hasattr( listener
, "enterEnumerator_list" ):
2153 listener
.enterEnumerator_list(self
)
2155 def exitRule(self
, listener
:ParseTreeListener
):
2156 if hasattr( listener
, "exitEnumerator_list" ):
2157 listener
.exitEnumerator_list(self
)
2162 def enumerator_list(self
):
2164 localctx
= CParser
.Enumerator_listContext(self
, self
._ctx
, self
.state
)
2165 self
.enterRule(localctx
, 36, self
.RULE_enumerator_list
)
2167 self
.enterOuterAlt(localctx
, 1)
2171 self
._errHandler
.sync(self
)
2172 _alt
= self
._interp
.adaptivePredict(self
._input
,28,self
._ctx
)
2173 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2176 self
.match(CParser
.T__3
)
2180 self
._errHandler
.sync(self
)
2181 _alt
= self
._interp
.adaptivePredict(self
._input
,28,self
._ctx
)
2183 except RecognitionException
as re
:
2184 localctx
.exception
= re
2185 self
._errHandler
.reportError(self
, re
)
2186 self
._errHandler
.recover(self
, re
)
2191 class EnumeratorContext(ParserRuleContext
):
2193 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2194 super().__init
__(parent
, invokingState
)
2195 self
.parser
= parser
2197 def IDENTIFIER(self
):
2198 return self
.getToken(CParser
.IDENTIFIER
, 0)
2200 def constant_expression(self
):
2201 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
2204 def getRuleIndex(self
):
2205 return CParser
.RULE_enumerator
2207 def enterRule(self
, listener
:ParseTreeListener
):
2208 if hasattr( listener
, "enterEnumerator" ):
2209 listener
.enterEnumerator(self
)
2211 def exitRule(self
, listener
:ParseTreeListener
):
2212 if hasattr( listener
, "exitEnumerator" ):
2213 listener
.exitEnumerator(self
)
2218 def enumerator(self
):
2220 localctx
= CParser
.EnumeratorContext(self
, self
._ctx
, self
.state
)
2221 self
.enterRule(localctx
, 38, self
.RULE_enumerator
)
2222 self
._la
= 0 # Token type
2224 self
.enterOuterAlt(localctx
, 1)
2226 self
.match(CParser
.IDENTIFIER
)
2228 self
._errHandler
.sync(self
)
2229 _la
= self
._input
.LA(1)
2230 if _la
==CParser
.T__4
:
2232 self
.match(CParser
.T__4
)
2234 self
.constant_expression()
2237 except RecognitionException
as re
:
2238 localctx
.exception
= re
2239 self
._errHandler
.reportError(self
, re
)
2240 self
._errHandler
.recover(self
, re
)
2245 class Type_qualifierContext(ParserRuleContext
):
2247 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2248 super().__init
__(parent
, invokingState
)
2249 self
.parser
= parser
2252 def getRuleIndex(self
):
2253 return CParser
.RULE_type_qualifier
2255 def enterRule(self
, listener
:ParseTreeListener
):
2256 if hasattr( listener
, "enterType_qualifier" ):
2257 listener
.enterType_qualifier(self
)
2259 def exitRule(self
, listener
:ParseTreeListener
):
2260 if hasattr( listener
, "exitType_qualifier" ):
2261 listener
.exitType_qualifier(self
)
2266 def type_qualifier(self
):
2268 localctx
= CParser
.Type_qualifierContext(self
, self
._ctx
, self
.state
)
2269 self
.enterRule(localctx
, 40, self
.RULE_type_qualifier
)
2270 self
._la
= 0 # Token type
2272 self
.enterOuterAlt(localctx
, 1)
2274 _la
= self
._input
.LA(1)
2275 if not((((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
))) != 0)):
2276 self
._errHandler
.recoverInline(self
)
2278 self
._errHandler
.reportMatch(self
)
2280 except RecognitionException
as re
:
2281 localctx
.exception
= re
2282 self
._errHandler
.reportError(self
, re
)
2283 self
._errHandler
.recover(self
, re
)
2288 class DeclaratorContext(ParserRuleContext
):
2290 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2291 super().__init
__(parent
, invokingState
)
2292 self
.parser
= parser
2294 def direct_declarator(self
):
2295 return self
.getTypedRuleContext(CParser
.Direct_declaratorContext
,0)
2299 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
2302 def getRuleIndex(self
):
2303 return CParser
.RULE_declarator
2305 def enterRule(self
, listener
:ParseTreeListener
):
2306 if hasattr( listener
, "enterDeclarator" ):
2307 listener
.enterDeclarator(self
)
2309 def exitRule(self
, listener
:ParseTreeListener
):
2310 if hasattr( listener
, "exitDeclarator" ):
2311 listener
.exitDeclarator(self
)
2316 def declarator(self
):
2318 localctx
= CParser
.DeclaratorContext(self
, self
._ctx
, self
.state
)
2319 self
.enterRule(localctx
, 42, self
.RULE_declarator
)
2320 self
._la
= 0 # Token type
2323 self
._errHandler
.sync(self
)
2324 la_
= self
._interp
.adaptivePredict(self
._input
,34,self
._ctx
)
2326 self
.enterOuterAlt(localctx
, 1)
2328 self
._errHandler
.sync(self
)
2329 _la
= self
._input
.LA(1)
2330 if _la
==CParser
.T__41
:
2336 self
._errHandler
.sync(self
)
2337 _la
= self
._input
.LA(1)
2338 if _la
==CParser
.T__33
:
2340 self
.match(CParser
.T__33
)
2344 self
._errHandler
.sync(self
)
2345 _la
= self
._input
.LA(1)
2346 if _la
==CParser
.T__34
:
2348 self
.match(CParser
.T__34
)
2352 self
._errHandler
.sync(self
)
2353 _la
= self
._input
.LA(1)
2354 if _la
==CParser
.T__35
:
2356 self
.match(CParser
.T__35
)
2360 self
.direct_declarator()
2364 self
.enterOuterAlt(localctx
, 2)
2370 except RecognitionException
as re
:
2371 localctx
.exception
= re
2372 self
._errHandler
.reportError(self
, re
)
2373 self
._errHandler
.recover(self
, re
)
2378 class Direct_declaratorContext(ParserRuleContext
):
2380 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2381 super().__init
__(parent
, invokingState
)
2382 self
.parser
= parser
2384 def IDENTIFIER(self
):
2385 return self
.getToken(CParser
.IDENTIFIER
, 0)
2387 def declarator_suffix(self
, i
:int=None):
2389 return self
.getTypedRuleContexts(CParser
.Declarator_suffixContext
)
2391 return self
.getTypedRuleContext(CParser
.Declarator_suffixContext
,i
)
2394 def declarator(self
):
2395 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
2398 def getRuleIndex(self
):
2399 return CParser
.RULE_direct_declarator
2401 def enterRule(self
, listener
:ParseTreeListener
):
2402 if hasattr( listener
, "enterDirect_declarator" ):
2403 listener
.enterDirect_declarator(self
)
2405 def exitRule(self
, listener
:ParseTreeListener
):
2406 if hasattr( listener
, "exitDirect_declarator" ):
2407 listener
.exitDirect_declarator(self
)
2412 def direct_declarator(self
):
2414 localctx
= CParser
.Direct_declaratorContext(self
, self
._ctx
, self
.state
)
2415 self
.enterRule(localctx
, 44, self
.RULE_direct_declarator
)
2418 self
._errHandler
.sync(self
)
2419 token
= self
._input
.LA(1)
2420 if token
in [CParser
.IDENTIFIER
]:
2421 self
.enterOuterAlt(localctx
, 1)
2423 self
.match(CParser
.IDENTIFIER
)
2425 self
._errHandler
.sync(self
)
2426 _alt
= self
._interp
.adaptivePredict(self
._input
,35,self
._ctx
)
2427 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2430 self
.declarator_suffix()
2432 self
._errHandler
.sync(self
)
2433 _alt
= self
._interp
.adaptivePredict(self
._input
,35,self
._ctx
)
2436 elif token
in [CParser
.T__37
]:
2437 self
.enterOuterAlt(localctx
, 2)
2439 self
.match(CParser
.T__37
)
2441 self
._errHandler
.sync(self
)
2442 la_
= self
._interp
.adaptivePredict(self
._input
,36,self
._ctx
)
2445 self
.match(CParser
.T__33
)
2451 self
.match(CParser
.T__38
)
2453 self
._errHandler
.sync(self
)
2455 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2458 self
.declarator_suffix()
2461 raise NoViableAltException(self
)
2463 self
._errHandler
.sync(self
)
2464 _alt
= self
._interp
.adaptivePredict(self
._input
,37,self
._ctx
)
2468 raise NoViableAltException(self
)
2470 except RecognitionException
as re
:
2471 localctx
.exception
= re
2472 self
._errHandler
.reportError(self
, re
)
2473 self
._errHandler
.recover(self
, re
)
2478 class Declarator_suffixContext(ParserRuleContext
):
2480 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2481 super().__init
__(parent
, invokingState
)
2482 self
.parser
= parser
2484 def constant_expression(self
):
2485 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
2488 def parameter_type_list(self
):
2489 return self
.getTypedRuleContext(CParser
.Parameter_type_listContext
,0)
2492 def identifier_list(self
):
2493 return self
.getTypedRuleContext(CParser
.Identifier_listContext
,0)
2496 def getRuleIndex(self
):
2497 return CParser
.RULE_declarator_suffix
2499 def enterRule(self
, listener
:ParseTreeListener
):
2500 if hasattr( listener
, "enterDeclarator_suffix" ):
2501 listener
.enterDeclarator_suffix(self
)
2503 def exitRule(self
, listener
:ParseTreeListener
):
2504 if hasattr( listener
, "exitDeclarator_suffix" ):
2505 listener
.exitDeclarator_suffix(self
)
2510 def declarator_suffix(self
):
2512 localctx
= CParser
.Declarator_suffixContext(self
, self
._ctx
, self
.state
)
2513 self
.enterRule(localctx
, 46, self
.RULE_declarator_suffix
)
2516 self
._errHandler
.sync(self
)
2517 la_
= self
._interp
.adaptivePredict(self
._input
,39,self
._ctx
)
2519 self
.enterOuterAlt(localctx
, 1)
2521 self
.match(CParser
.T__39
)
2523 self
.constant_expression()
2525 self
.match(CParser
.T__40
)
2529 self
.enterOuterAlt(localctx
, 2)
2531 self
.match(CParser
.T__39
)
2533 self
.match(CParser
.T__40
)
2537 self
.enterOuterAlt(localctx
, 3)
2539 self
.match(CParser
.T__37
)
2541 self
.parameter_type_list()
2543 self
.match(CParser
.T__38
)
2547 self
.enterOuterAlt(localctx
, 4)
2549 self
.match(CParser
.T__37
)
2551 self
.identifier_list()
2553 self
.match(CParser
.T__38
)
2557 self
.enterOuterAlt(localctx
, 5)
2559 self
.match(CParser
.T__37
)
2561 self
.match(CParser
.T__38
)
2565 except RecognitionException
as re
:
2566 localctx
.exception
= re
2567 self
._errHandler
.reportError(self
, re
)
2568 self
._errHandler
.recover(self
, re
)
2573 class PointerContext(ParserRuleContext
):
2575 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2576 super().__init
__(parent
, invokingState
)
2577 self
.parser
= parser
2579 def type_qualifier(self
, i
:int=None):
2581 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
2583 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
2587 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
2590 def getRuleIndex(self
):
2591 return CParser
.RULE_pointer
2593 def enterRule(self
, listener
:ParseTreeListener
):
2594 if hasattr( listener
, "enterPointer" ):
2595 listener
.enterPointer(self
)
2597 def exitRule(self
, listener
:ParseTreeListener
):
2598 if hasattr( listener
, "exitPointer" ):
2599 listener
.exitPointer(self
)
2606 localctx
= CParser
.PointerContext(self
, self
._ctx
, self
.state
)
2607 self
.enterRule(localctx
, 48, self
.RULE_pointer
)
2610 self
._errHandler
.sync(self
)
2611 la_
= self
._interp
.adaptivePredict(self
._input
,42,self
._ctx
)
2613 self
.enterOuterAlt(localctx
, 1)
2615 self
.match(CParser
.T__41
)
2617 self
._errHandler
.sync(self
)
2619 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2622 self
.type_qualifier()
2625 raise NoViableAltException(self
)
2627 self
._errHandler
.sync(self
)
2628 _alt
= self
._interp
.adaptivePredict(self
._input
,40,self
._ctx
)
2631 self
._errHandler
.sync(self
)
2632 la_
= self
._interp
.adaptivePredict(self
._input
,41,self
._ctx
)
2641 self
.enterOuterAlt(localctx
, 2)
2643 self
.match(CParser
.T__41
)
2649 self
.enterOuterAlt(localctx
, 3)
2651 self
.match(CParser
.T__41
)
2655 except RecognitionException
as re
:
2656 localctx
.exception
= re
2657 self
._errHandler
.reportError(self
, re
)
2658 self
._errHandler
.recover(self
, re
)
2663 class Parameter_type_listContext(ParserRuleContext
):
2665 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2666 super().__init
__(parent
, invokingState
)
2667 self
.parser
= parser
2669 def parameter_list(self
):
2670 return self
.getTypedRuleContext(CParser
.Parameter_listContext
,0)
2673 def getRuleIndex(self
):
2674 return CParser
.RULE_parameter_type_list
2676 def enterRule(self
, listener
:ParseTreeListener
):
2677 if hasattr( listener
, "enterParameter_type_list" ):
2678 listener
.enterParameter_type_list(self
)
2680 def exitRule(self
, listener
:ParseTreeListener
):
2681 if hasattr( listener
, "exitParameter_type_list" ):
2682 listener
.exitParameter_type_list(self
)
2687 def parameter_type_list(self
):
2689 localctx
= CParser
.Parameter_type_listContext(self
, self
._ctx
, self
.state
)
2690 self
.enterRule(localctx
, 50, self
.RULE_parameter_type_list
)
2691 self
._la
= 0 # Token type
2693 self
.enterOuterAlt(localctx
, 1)
2695 self
.parameter_list()
2697 self
._errHandler
.sync(self
)
2698 _la
= self
._input
.LA(1)
2699 if _la
==CParser
.T__3
:
2701 self
.match(CParser
.T__3
)
2703 self
._errHandler
.sync(self
)
2704 _la
= self
._input
.LA(1)
2705 if _la
==CParser
.T__28
:
2707 self
.match(CParser
.T__28
)
2711 self
.match(CParser
.T__42
)
2714 except RecognitionException
as re
:
2715 localctx
.exception
= re
2716 self
._errHandler
.reportError(self
, re
)
2717 self
._errHandler
.recover(self
, re
)
2722 class Parameter_listContext(ParserRuleContext
):
2724 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2725 super().__init
__(parent
, invokingState
)
2726 self
.parser
= parser
2728 def parameter_declaration(self
, i
:int=None):
2730 return self
.getTypedRuleContexts(CParser
.Parameter_declarationContext
)
2732 return self
.getTypedRuleContext(CParser
.Parameter_declarationContext
,i
)
2735 def getRuleIndex(self
):
2736 return CParser
.RULE_parameter_list
2738 def enterRule(self
, listener
:ParseTreeListener
):
2739 if hasattr( listener
, "enterParameter_list" ):
2740 listener
.enterParameter_list(self
)
2742 def exitRule(self
, listener
:ParseTreeListener
):
2743 if hasattr( listener
, "exitParameter_list" ):
2744 listener
.exitParameter_list(self
)
2749 def parameter_list(self
):
2751 localctx
= CParser
.Parameter_listContext(self
, self
._ctx
, self
.state
)
2752 self
.enterRule(localctx
, 52, self
.RULE_parameter_list
)
2754 self
.enterOuterAlt(localctx
, 1)
2756 self
.parameter_declaration()
2758 self
._errHandler
.sync(self
)
2759 _alt
= self
._interp
.adaptivePredict(self
._input
,46,self
._ctx
)
2760 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2763 self
.match(CParser
.T__3
)
2765 self
._errHandler
.sync(self
)
2766 la_
= self
._interp
.adaptivePredict(self
._input
,45,self
._ctx
)
2769 self
.match(CParser
.T__28
)
2773 self
.parameter_declaration()
2775 self
._errHandler
.sync(self
)
2776 _alt
= self
._interp
.adaptivePredict(self
._input
,46,self
._ctx
)
2778 except RecognitionException
as re
:
2779 localctx
.exception
= re
2780 self
._errHandler
.reportError(self
, re
)
2781 self
._errHandler
.recover(self
, re
)
2786 class Parameter_declarationContext(ParserRuleContext
):
2788 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2789 super().__init
__(parent
, invokingState
)
2790 self
.parser
= parser
2792 def declaration_specifiers(self
):
2793 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
2796 def declarator(self
, i
:int=None):
2798 return self
.getTypedRuleContexts(CParser
.DeclaratorContext
)
2800 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,i
)
2803 def abstract_declarator(self
, i
:int=None):
2805 return self
.getTypedRuleContexts(CParser
.Abstract_declaratorContext
)
2807 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,i
)
2810 def IDENTIFIER(self
):
2811 return self
.getToken(CParser
.IDENTIFIER
, 0)
2813 def pointer(self
, i
:int=None):
2815 return self
.getTypedRuleContexts(CParser
.PointerContext
)
2817 return self
.getTypedRuleContext(CParser
.PointerContext
,i
)
2820 def getRuleIndex(self
):
2821 return CParser
.RULE_parameter_declaration
2823 def enterRule(self
, listener
:ParseTreeListener
):
2824 if hasattr( listener
, "enterParameter_declaration" ):
2825 listener
.enterParameter_declaration(self
)
2827 def exitRule(self
, listener
:ParseTreeListener
):
2828 if hasattr( listener
, "exitParameter_declaration" ):
2829 listener
.exitParameter_declaration(self
)
2834 def parameter_declaration(self
):
2836 localctx
= CParser
.Parameter_declarationContext(self
, self
._ctx
, self
.state
)
2837 self
.enterRule(localctx
, 54, self
.RULE_parameter_declaration
)
2838 self
._la
= 0 # Token type
2841 self
._errHandler
.sync(self
)
2842 la_
= self
._interp
.adaptivePredict(self
._input
,51,self
._ctx
)
2844 self
.enterOuterAlt(localctx
, 1)
2846 self
.declaration_specifiers()
2848 self
._errHandler
.sync(self
)
2849 _la
= self
._input
.LA(1)
2850 while ((((_la
- 34)) & ~
0x3f) == 0 and ((1 << (_la
- 34)) & ((1 << (CParser
.T__33
- 34)) |
(1 << (CParser
.T__34
- 34)) |
(1 << (CParser
.T__35
- 34)) |
(1 << (CParser
.T__37
- 34)) |
(1 << (CParser
.T__39
- 34)) |
(1 << (CParser
.T__41
- 34)) |
(1 << (CParser
.IDENTIFIER
- 34)))) != 0):
2852 self
._errHandler
.sync(self
)
2853 la_
= self
._interp
.adaptivePredict(self
._input
,47,self
._ctx
)
2861 self
.abstract_declarator()
2866 self
._errHandler
.sync(self
)
2867 _la
= self
._input
.LA(1)
2870 self
._errHandler
.sync(self
)
2871 _la
= self
._input
.LA(1)
2872 if _la
==CParser
.T__28
:
2874 self
.match(CParser
.T__28
)
2880 self
.enterOuterAlt(localctx
, 2)
2882 self
._errHandler
.sync(self
)
2883 _la
= self
._input
.LA(1)
2884 while _la
==CParser
.T__41
:
2888 self
._errHandler
.sync(self
)
2889 _la
= self
._input
.LA(1)
2892 self
.match(CParser
.IDENTIFIER
)
2896 except RecognitionException
as re
:
2897 localctx
.exception
= re
2898 self
._errHandler
.reportError(self
, re
)
2899 self
._errHandler
.recover(self
, re
)
2904 class Identifier_listContext(ParserRuleContext
):
2906 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2907 super().__init
__(parent
, invokingState
)
2908 self
.parser
= parser
2910 def IDENTIFIER(self
, i
:int=None):
2912 return self
.getTokens(CParser
.IDENTIFIER
)
2914 return self
.getToken(CParser
.IDENTIFIER
, i
)
2916 def getRuleIndex(self
):
2917 return CParser
.RULE_identifier_list
2919 def enterRule(self
, listener
:ParseTreeListener
):
2920 if hasattr( listener
, "enterIdentifier_list" ):
2921 listener
.enterIdentifier_list(self
)
2923 def exitRule(self
, listener
:ParseTreeListener
):
2924 if hasattr( listener
, "exitIdentifier_list" ):
2925 listener
.exitIdentifier_list(self
)
2930 def identifier_list(self
):
2932 localctx
= CParser
.Identifier_listContext(self
, self
._ctx
, self
.state
)
2933 self
.enterRule(localctx
, 56, self
.RULE_identifier_list
)
2934 self
._la
= 0 # Token type
2936 self
.enterOuterAlt(localctx
, 1)
2938 self
.match(CParser
.IDENTIFIER
)
2940 self
._errHandler
.sync(self
)
2941 _la
= self
._input
.LA(1)
2942 while _la
==CParser
.T__3
:
2944 self
.match(CParser
.T__3
)
2946 self
.match(CParser
.IDENTIFIER
)
2948 self
._errHandler
.sync(self
)
2949 _la
= self
._input
.LA(1)
2951 except RecognitionException
as re
:
2952 localctx
.exception
= re
2953 self
._errHandler
.reportError(self
, re
)
2954 self
._errHandler
.recover(self
, re
)
2959 class Type_nameContext(ParserRuleContext
):
2961 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
2962 super().__init
__(parent
, invokingState
)
2963 self
.parser
= parser
2965 def specifier_qualifier_list(self
):
2966 return self
.getTypedRuleContext(CParser
.Specifier_qualifier_listContext
,0)
2969 def abstract_declarator(self
):
2970 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,0)
2974 return self
.getTypedRuleContext(CParser
.Type_idContext
,0)
2977 def getRuleIndex(self
):
2978 return CParser
.RULE_type_name
2980 def enterRule(self
, listener
:ParseTreeListener
):
2981 if hasattr( listener
, "enterType_name" ):
2982 listener
.enterType_name(self
)
2984 def exitRule(self
, listener
:ParseTreeListener
):
2985 if hasattr( listener
, "exitType_name" ):
2986 listener
.exitType_name(self
)
2991 def type_name(self
):
2993 localctx
= CParser
.Type_nameContext(self
, self
._ctx
, self
.state
)
2994 self
.enterRule(localctx
, 58, self
.RULE_type_name
)
2995 self
._la
= 0 # Token type
2998 self
._errHandler
.sync(self
)
2999 la_
= self
._interp
.adaptivePredict(self
._input
,54,self
._ctx
)
3001 self
.enterOuterAlt(localctx
, 1)
3003 self
.specifier_qualifier_list()
3005 self
._errHandler
.sync(self
)
3006 _la
= self
._input
.LA(1)
3007 if (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__37
) |
(1 << CParser
.T__39
) |
(1 << CParser
.T__41
))) != 0):
3009 self
.abstract_declarator()
3015 self
.enterOuterAlt(localctx
, 2)
3021 except RecognitionException
as re
:
3022 localctx
.exception
= re
3023 self
._errHandler
.reportError(self
, re
)
3024 self
._errHandler
.recover(self
, re
)
3029 class Abstract_declaratorContext(ParserRuleContext
):
3031 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3032 super().__init
__(parent
, invokingState
)
3033 self
.parser
= parser
3036 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
3039 def direct_abstract_declarator(self
):
3040 return self
.getTypedRuleContext(CParser
.Direct_abstract_declaratorContext
,0)
3043 def getRuleIndex(self
):
3044 return CParser
.RULE_abstract_declarator
3046 def enterRule(self
, listener
:ParseTreeListener
):
3047 if hasattr( listener
, "enterAbstract_declarator" ):
3048 listener
.enterAbstract_declarator(self
)
3050 def exitRule(self
, listener
:ParseTreeListener
):
3051 if hasattr( listener
, "exitAbstract_declarator" ):
3052 listener
.exitAbstract_declarator(self
)
3057 def abstract_declarator(self
):
3059 localctx
= CParser
.Abstract_declaratorContext(self
, self
._ctx
, self
.state
)
3060 self
.enterRule(localctx
, 60, self
.RULE_abstract_declarator
)
3063 self
._errHandler
.sync(self
)
3064 token
= self
._input
.LA(1)
3065 if token
in [CParser
.T__41
]:
3066 self
.enterOuterAlt(localctx
, 1)
3070 self
._errHandler
.sync(self
)
3071 la_
= self
._interp
.adaptivePredict(self
._input
,55,self
._ctx
)
3074 self
.direct_abstract_declarator()
3078 elif token
in [CParser
.T__37
, CParser
.T__39
]:
3079 self
.enterOuterAlt(localctx
, 2)
3081 self
.direct_abstract_declarator()
3084 raise NoViableAltException(self
)
3086 except RecognitionException
as re
:
3087 localctx
.exception
= re
3088 self
._errHandler
.reportError(self
, re
)
3089 self
._errHandler
.recover(self
, re
)
3094 class Direct_abstract_declaratorContext(ParserRuleContext
):
3096 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3097 super().__init
__(parent
, invokingState
)
3098 self
.parser
= parser
3100 def abstract_declarator(self
):
3101 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,0)
3104 def abstract_declarator_suffix(self
, i
:int=None):
3106 return self
.getTypedRuleContexts(CParser
.Abstract_declarator_suffixContext
)
3108 return self
.getTypedRuleContext(CParser
.Abstract_declarator_suffixContext
,i
)
3111 def getRuleIndex(self
):
3112 return CParser
.RULE_direct_abstract_declarator
3114 def enterRule(self
, listener
:ParseTreeListener
):
3115 if hasattr( listener
, "enterDirect_abstract_declarator" ):
3116 listener
.enterDirect_abstract_declarator(self
)
3118 def exitRule(self
, listener
:ParseTreeListener
):
3119 if hasattr( listener
, "exitDirect_abstract_declarator" ):
3120 listener
.exitDirect_abstract_declarator(self
)
3125 def direct_abstract_declarator(self
):
3127 localctx
= CParser
.Direct_abstract_declaratorContext(self
, self
._ctx
, self
.state
)
3128 self
.enterRule(localctx
, 62, self
.RULE_direct_abstract_declarator
)
3130 self
.enterOuterAlt(localctx
, 1)
3132 self
._errHandler
.sync(self
)
3133 la_
= self
._interp
.adaptivePredict(self
._input
,57,self
._ctx
)
3136 self
.match(CParser
.T__37
)
3138 self
.abstract_declarator()
3140 self
.match(CParser
.T__38
)
3145 self
.abstract_declarator_suffix()
3150 self
._errHandler
.sync(self
)
3151 _alt
= self
._interp
.adaptivePredict(self
._input
,58,self
._ctx
)
3152 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
3155 self
.abstract_declarator_suffix()
3157 self
._errHandler
.sync(self
)
3158 _alt
= self
._interp
.adaptivePredict(self
._input
,58,self
._ctx
)
3160 except RecognitionException
as re
:
3161 localctx
.exception
= re
3162 self
._errHandler
.reportError(self
, re
)
3163 self
._errHandler
.recover(self
, re
)
3168 class Abstract_declarator_suffixContext(ParserRuleContext
):
3170 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3171 super().__init
__(parent
, invokingState
)
3172 self
.parser
= parser
3174 def constant_expression(self
):
3175 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
3178 def parameter_type_list(self
):
3179 return self
.getTypedRuleContext(CParser
.Parameter_type_listContext
,0)
3182 def getRuleIndex(self
):
3183 return CParser
.RULE_abstract_declarator_suffix
3185 def enterRule(self
, listener
:ParseTreeListener
):
3186 if hasattr( listener
, "enterAbstract_declarator_suffix" ):
3187 listener
.enterAbstract_declarator_suffix(self
)
3189 def exitRule(self
, listener
:ParseTreeListener
):
3190 if hasattr( listener
, "exitAbstract_declarator_suffix" ):
3191 listener
.exitAbstract_declarator_suffix(self
)
3196 def abstract_declarator_suffix(self
):
3198 localctx
= CParser
.Abstract_declarator_suffixContext(self
, self
._ctx
, self
.state
)
3199 self
.enterRule(localctx
, 64, self
.RULE_abstract_declarator_suffix
)
3202 self
._errHandler
.sync(self
)
3203 la_
= self
._interp
.adaptivePredict(self
._input
,59,self
._ctx
)
3205 self
.enterOuterAlt(localctx
, 1)
3207 self
.match(CParser
.T__39
)
3209 self
.match(CParser
.T__40
)
3213 self
.enterOuterAlt(localctx
, 2)
3215 self
.match(CParser
.T__39
)
3217 self
.constant_expression()
3219 self
.match(CParser
.T__40
)
3223 self
.enterOuterAlt(localctx
, 3)
3225 self
.match(CParser
.T__37
)
3227 self
.match(CParser
.T__38
)
3231 self
.enterOuterAlt(localctx
, 4)
3233 self
.match(CParser
.T__37
)
3235 self
.parameter_type_list()
3237 self
.match(CParser
.T__38
)
3241 except RecognitionException
as re
:
3242 localctx
.exception
= re
3243 self
._errHandler
.reportError(self
, re
)
3244 self
._errHandler
.recover(self
, re
)
3249 class InitializerContext(ParserRuleContext
):
3251 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3252 super().__init
__(parent
, invokingState
)
3253 self
.parser
= parser
3255 def assignment_expression(self
):
3256 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,0)
3259 def initializer_list(self
):
3260 return self
.getTypedRuleContext(CParser
.Initializer_listContext
,0)
3263 def getRuleIndex(self
):
3264 return CParser
.RULE_initializer
3266 def enterRule(self
, listener
:ParseTreeListener
):
3267 if hasattr( listener
, "enterInitializer" ):
3268 listener
.enterInitializer(self
)
3270 def exitRule(self
, listener
:ParseTreeListener
):
3271 if hasattr( listener
, "exitInitializer" ):
3272 listener
.exitInitializer(self
)
3277 def initializer(self
):
3279 localctx
= CParser
.InitializerContext(self
, self
._ctx
, self
.state
)
3280 self
.enterRule(localctx
, 66, self
.RULE_initializer
)
3281 self
._la
= 0 # Token type
3284 self
._errHandler
.sync(self
)
3285 token
= self
._input
.LA(1)
3286 if token
in [CParser
.T__37
, CParser
.T__41
, CParser
.T__43
, CParser
.T__44
, CParser
.T__47
, CParser
.T__48
, CParser
.T__49
, CParser
.T__52
, CParser
.T__53
, CParser
.T__54
, CParser
.IDENTIFIER
, CParser
.CHARACTER_LITERAL
, CParser
.STRING_LITERAL
, CParser
.HEX_LITERAL
, CParser
.DECIMAL_LITERAL
, CParser
.OCTAL_LITERAL
, CParser
.FLOATING_POINT_LITERAL
]:
3287 self
.enterOuterAlt(localctx
, 1)
3289 self
.assignment_expression()
3291 elif token
in [CParser
.T__0
]:
3292 self
.enterOuterAlt(localctx
, 2)
3294 self
.match(CParser
.T__0
)
3296 self
.initializer_list()
3298 self
._errHandler
.sync(self
)
3299 _la
= self
._input
.LA(1)
3300 if _la
==CParser
.T__3
:
3302 self
.match(CParser
.T__3
)
3306 self
.match(CParser
.T__19
)
3309 raise NoViableAltException(self
)
3311 except RecognitionException
as re
:
3312 localctx
.exception
= re
3313 self
._errHandler
.reportError(self
, re
)
3314 self
._errHandler
.recover(self
, re
)
3319 class Initializer_listContext(ParserRuleContext
):
3321 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3322 super().__init
__(parent
, invokingState
)
3323 self
.parser
= parser
3325 def initializer(self
, i
:int=None):
3327 return self
.getTypedRuleContexts(CParser
.InitializerContext
)
3329 return self
.getTypedRuleContext(CParser
.InitializerContext
,i
)
3332 def getRuleIndex(self
):
3333 return CParser
.RULE_initializer_list
3335 def enterRule(self
, listener
:ParseTreeListener
):
3336 if hasattr( listener
, "enterInitializer_list" ):
3337 listener
.enterInitializer_list(self
)
3339 def exitRule(self
, listener
:ParseTreeListener
):
3340 if hasattr( listener
, "exitInitializer_list" ):
3341 listener
.exitInitializer_list(self
)
3346 def initializer_list(self
):
3348 localctx
= CParser
.Initializer_listContext(self
, self
._ctx
, self
.state
)
3349 self
.enterRule(localctx
, 68, self
.RULE_initializer_list
)
3351 self
.enterOuterAlt(localctx
, 1)
3355 self
._errHandler
.sync(self
)
3356 _alt
= self
._interp
.adaptivePredict(self
._input
,62,self
._ctx
)
3357 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
3360 self
.match(CParser
.T__3
)
3364 self
._errHandler
.sync(self
)
3365 _alt
= self
._interp
.adaptivePredict(self
._input
,62,self
._ctx
)
3367 except RecognitionException
as re
:
3368 localctx
.exception
= re
3369 self
._errHandler
.reportError(self
, re
)
3370 self
._errHandler
.recover(self
, re
)
3375 class Argument_expression_listContext(ParserRuleContext
):
3377 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3378 super().__init
__(parent
, invokingState
)
3379 self
.parser
= parser
3381 def assignment_expression(self
, i
:int=None):
3383 return self
.getTypedRuleContexts(CParser
.Assignment_expressionContext
)
3385 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,i
)
3388 def getRuleIndex(self
):
3389 return CParser
.RULE_argument_expression_list
3391 def enterRule(self
, listener
:ParseTreeListener
):
3392 if hasattr( listener
, "enterArgument_expression_list" ):
3393 listener
.enterArgument_expression_list(self
)
3395 def exitRule(self
, listener
:ParseTreeListener
):
3396 if hasattr( listener
, "exitArgument_expression_list" ):
3397 listener
.exitArgument_expression_list(self
)
3402 def argument_expression_list(self
):
3404 localctx
= CParser
.Argument_expression_listContext(self
, self
._ctx
, self
.state
)
3405 self
.enterRule(localctx
, 70, self
.RULE_argument_expression_list
)
3406 self
._la
= 0 # Token type
3408 self
.enterOuterAlt(localctx
, 1)
3410 self
.assignment_expression()
3412 self
._errHandler
.sync(self
)
3413 _la
= self
._input
.LA(1)
3414 if _la
==CParser
.T__28
:
3416 self
.match(CParser
.T__28
)
3420 self
._errHandler
.sync(self
)
3421 _la
= self
._input
.LA(1)
3422 while _la
==CParser
.T__3
:
3424 self
.match(CParser
.T__3
)
3426 self
.assignment_expression()
3428 self
._errHandler
.sync(self
)
3429 _la
= self
._input
.LA(1)
3430 if _la
==CParser
.T__28
:
3432 self
.match(CParser
.T__28
)
3436 self
._errHandler
.sync(self
)
3437 _la
= self
._input
.LA(1)
3439 except RecognitionException
as re
:
3440 localctx
.exception
= re
3441 self
._errHandler
.reportError(self
, re
)
3442 self
._errHandler
.recover(self
, re
)
3447 class Additive_expressionContext(ParserRuleContext
):
3449 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3450 super().__init
__(parent
, invokingState
)
3451 self
.parser
= parser
3453 def multiplicative_expression(self
, i
:int=None):
3455 return self
.getTypedRuleContexts(CParser
.Multiplicative_expressionContext
)
3457 return self
.getTypedRuleContext(CParser
.Multiplicative_expressionContext
,i
)
3460 def getRuleIndex(self
):
3461 return CParser
.RULE_additive_expression
3463 def enterRule(self
, listener
:ParseTreeListener
):
3464 if hasattr( listener
, "enterAdditive_expression" ):
3465 listener
.enterAdditive_expression(self
)
3467 def exitRule(self
, listener
:ParseTreeListener
):
3468 if hasattr( listener
, "exitAdditive_expression" ):
3469 listener
.exitAdditive_expression(self
)
3474 def additive_expression(self
):
3476 localctx
= CParser
.Additive_expressionContext(self
, self
._ctx
, self
.state
)
3477 self
.enterRule(localctx
, 72, self
.RULE_additive_expression
)
3478 self
._la
= 0 # Token type
3480 self
.enterOuterAlt(localctx
, 1)
3482 self
.multiplicative_expression()
3484 self
._errHandler
.sync(self
)
3485 _la
= self
._input
.LA(1)
3486 while _la
==CParser
.T__43
or _la
==CParser
.T__44
:
3488 self
._errHandler
.sync(self
)
3489 token
= self
._input
.LA(1)
3490 if token
in [CParser
.T__43
]:
3492 self
.match(CParser
.T__43
)
3494 self
.multiplicative_expression()
3496 elif token
in [CParser
.T__44
]:
3498 self
.match(CParser
.T__44
)
3500 self
.multiplicative_expression()
3503 raise NoViableAltException(self
)
3506 self
._errHandler
.sync(self
)
3507 _la
= self
._input
.LA(1)
3509 except RecognitionException
as re
:
3510 localctx
.exception
= re
3511 self
._errHandler
.reportError(self
, re
)
3512 self
._errHandler
.recover(self
, re
)
3517 class Multiplicative_expressionContext(ParserRuleContext
):
3519 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3520 super().__init
__(parent
, invokingState
)
3521 self
.parser
= parser
3523 def cast_expression(self
, i
:int=None):
3525 return self
.getTypedRuleContexts(CParser
.Cast_expressionContext
)
3527 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,i
)
3530 def getRuleIndex(self
):
3531 return CParser
.RULE_multiplicative_expression
3533 def enterRule(self
, listener
:ParseTreeListener
):
3534 if hasattr( listener
, "enterMultiplicative_expression" ):
3535 listener
.enterMultiplicative_expression(self
)
3537 def exitRule(self
, listener
:ParseTreeListener
):
3538 if hasattr( listener
, "exitMultiplicative_expression" ):
3539 listener
.exitMultiplicative_expression(self
)
3544 def multiplicative_expression(self
):
3546 localctx
= CParser
.Multiplicative_expressionContext(self
, self
._ctx
, self
.state
)
3547 self
.enterRule(localctx
, 74, self
.RULE_multiplicative_expression
)
3548 self
._la
= 0 # Token type
3550 self
.enterOuterAlt(localctx
, 1)
3552 self
.cast_expression()
3554 self
._errHandler
.sync(self
)
3555 _la
= self
._input
.LA(1)
3556 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__41
) |
(1 << CParser
.T__45
) |
(1 << CParser
.T__46
))) != 0):
3558 self
._errHandler
.sync(self
)
3559 token
= self
._input
.LA(1)
3560 if token
in [CParser
.T__41
]:
3562 self
.match(CParser
.T__41
)
3564 self
.cast_expression()
3566 elif token
in [CParser
.T__45
]:
3568 self
.match(CParser
.T__45
)
3570 self
.cast_expression()
3572 elif token
in [CParser
.T__46
]:
3574 self
.match(CParser
.T__46
)
3576 self
.cast_expression()
3579 raise NoViableAltException(self
)
3582 self
._errHandler
.sync(self
)
3583 _la
= self
._input
.LA(1)
3585 except RecognitionException
as re
:
3586 localctx
.exception
= re
3587 self
._errHandler
.reportError(self
, re
)
3588 self
._errHandler
.recover(self
, re
)
3593 class Cast_expressionContext(ParserRuleContext
):
3595 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3596 super().__init
__(parent
, invokingState
)
3597 self
.parser
= parser
3599 def type_name(self
):
3600 return self
.getTypedRuleContext(CParser
.Type_nameContext
,0)
3603 def cast_expression(self
):
3604 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,0)
3607 def unary_expression(self
):
3608 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
3611 def getRuleIndex(self
):
3612 return CParser
.RULE_cast_expression
3614 def enterRule(self
, listener
:ParseTreeListener
):
3615 if hasattr( listener
, "enterCast_expression" ):
3616 listener
.enterCast_expression(self
)
3618 def exitRule(self
, listener
:ParseTreeListener
):
3619 if hasattr( listener
, "exitCast_expression" ):
3620 listener
.exitCast_expression(self
)
3625 def cast_expression(self
):
3627 localctx
= CParser
.Cast_expressionContext(self
, self
._ctx
, self
.state
)
3628 self
.enterRule(localctx
, 76, self
.RULE_cast_expression
)
3631 self
._errHandler
.sync(self
)
3632 la_
= self
._interp
.adaptivePredict(self
._input
,70,self
._ctx
)
3634 self
.enterOuterAlt(localctx
, 1)
3636 self
.match(CParser
.T__37
)
3640 self
.match(CParser
.T__38
)
3642 self
.cast_expression()
3646 self
.enterOuterAlt(localctx
, 2)
3648 self
.unary_expression()
3652 except RecognitionException
as re
:
3653 localctx
.exception
= re
3654 self
._errHandler
.reportError(self
, re
)
3655 self
._errHandler
.recover(self
, re
)
3660 class Unary_expressionContext(ParserRuleContext
):
3662 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3663 super().__init
__(parent
, invokingState
)
3664 self
.parser
= parser
3666 def postfix_expression(self
):
3667 return self
.getTypedRuleContext(CParser
.Postfix_expressionContext
,0)
3670 def unary_expression(self
):
3671 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
3674 def unary_operator(self
):
3675 return self
.getTypedRuleContext(CParser
.Unary_operatorContext
,0)
3678 def cast_expression(self
):
3679 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,0)
3682 def type_name(self
):
3683 return self
.getTypedRuleContext(CParser
.Type_nameContext
,0)
3686 def getRuleIndex(self
):
3687 return CParser
.RULE_unary_expression
3689 def enterRule(self
, listener
:ParseTreeListener
):
3690 if hasattr( listener
, "enterUnary_expression" ):
3691 listener
.enterUnary_expression(self
)
3693 def exitRule(self
, listener
:ParseTreeListener
):
3694 if hasattr( listener
, "exitUnary_expression" ):
3695 listener
.exitUnary_expression(self
)
3700 def unary_expression(self
):
3702 localctx
= CParser
.Unary_expressionContext(self
, self
._ctx
, self
.state
)
3703 self
.enterRule(localctx
, 78, self
.RULE_unary_expression
)
3706 self
._errHandler
.sync(self
)
3707 la_
= self
._interp
.adaptivePredict(self
._input
,71,self
._ctx
)
3709 self
.enterOuterAlt(localctx
, 1)
3711 self
.postfix_expression()
3715 self
.enterOuterAlt(localctx
, 2)
3717 self
.match(CParser
.T__47
)
3719 self
.unary_expression()
3723 self
.enterOuterAlt(localctx
, 3)
3725 self
.match(CParser
.T__48
)
3727 self
.unary_expression()
3731 self
.enterOuterAlt(localctx
, 4)
3733 self
.unary_operator()
3735 self
.cast_expression()
3739 self
.enterOuterAlt(localctx
, 5)
3741 self
.match(CParser
.T__49
)
3743 self
.unary_expression()
3747 self
.enterOuterAlt(localctx
, 6)
3749 self
.match(CParser
.T__49
)
3751 self
.match(CParser
.T__37
)
3755 self
.match(CParser
.T__38
)
3759 except RecognitionException
as re
:
3760 localctx
.exception
= re
3761 self
._errHandler
.reportError(self
, re
)
3762 self
._errHandler
.recover(self
, re
)
3767 class Postfix_expressionContext(ParserRuleContext
):
3769 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3770 super().__init
__(parent
, invokingState
)
3771 self
.parser
= parser
3772 self
.FuncCallText
= ''
3773 self
.p
= None # Primary_expressionContext
3774 self
.a
= None # Token
3775 self
.c
= None # Argument_expression_listContext
3776 self
.b
= None # Token
3777 self
.x
= None # Token
3778 self
.y
= None # Token
3779 self
.z
= None # Token
3781 def primary_expression(self
):
3782 return self
.getTypedRuleContext(CParser
.Primary_expressionContext
,0)
3785 def expression(self
, i
:int=None):
3787 return self
.getTypedRuleContexts(CParser
.ExpressionContext
)
3789 return self
.getTypedRuleContext(CParser
.ExpressionContext
,i
)
3792 def macro_parameter_list(self
, i
:int=None):
3794 return self
.getTypedRuleContexts(CParser
.Macro_parameter_listContext
)
3796 return self
.getTypedRuleContext(CParser
.Macro_parameter_listContext
,i
)
3799 def argument_expression_list(self
, i
:int=None):
3801 return self
.getTypedRuleContexts(CParser
.Argument_expression_listContext
)
3803 return self
.getTypedRuleContext(CParser
.Argument_expression_listContext
,i
)
3806 def IDENTIFIER(self
, i
:int=None):
3808 return self
.getTokens(CParser
.IDENTIFIER
)
3810 return self
.getToken(CParser
.IDENTIFIER
, i
)
3812 def getRuleIndex(self
):
3813 return CParser
.RULE_postfix_expression
3815 def enterRule(self
, listener
:ParseTreeListener
):
3816 if hasattr( listener
, "enterPostfix_expression" ):
3817 listener
.enterPostfix_expression(self
)
3819 def exitRule(self
, listener
:ParseTreeListener
):
3820 if hasattr( listener
, "exitPostfix_expression" ):
3821 listener
.exitPostfix_expression(self
)
3826 def postfix_expression(self
):
3828 localctx
= CParser
.Postfix_expressionContext(self
, self
._ctx
, self
.state
)
3829 self
.enterRule(localctx
, 80, self
.RULE_postfix_expression
)
3831 self
.FuncCallText
=''
3834 self
.enterOuterAlt(localctx
, 1)
3836 localctx
.p
= self
.primary_expression()
3837 self
.FuncCallText
+= (None if localctx
.p
is None else self
._input
.getText((localctx
.p
.start
,localctx
.p
.stop
)))
3839 self
._errHandler
.sync(self
)
3840 _alt
= self
._interp
.adaptivePredict(self
._input
,73,self
._ctx
)
3841 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
3844 self
._errHandler
.sync(self
)
3845 la_
= self
._interp
.adaptivePredict(self
._input
,72,self
._ctx
)
3848 self
.match(CParser
.T__39
)
3852 self
.match(CParser
.T__40
)
3857 self
.match(CParser
.T__37
)
3859 localctx
.a
= self
.match(CParser
.T__38
)
3860 self
.StoreFunctionCalling((None if localctx
.p
is None else localctx
.p
.start
).line
, (None if localctx
.p
is None else localctx
.p
.start
).column
, (0 if localctx
.a
is None else localctx
.a
.line
), localctx
.a
.start
.column
, self
.FuncCallText
, '')
3865 self
.match(CParser
.T__37
)
3867 localctx
.c
= self
.argument_expression_list()
3869 localctx
.b
= self
.match(CParser
.T__38
)
3870 self
.StoreFunctionCalling((None if localctx
.p
is None else localctx
.p
.start
).line
, (None if localctx
.p
is None else localctx
.p
.start
).column
, (0 if localctx
.b
is None else localctx
.b
.line
), localctx
.b
.column
, self
.FuncCallText
, (None if localctx
.c
is None else self
._input
.getText((localctx
.c
.start
,localctx
.c
.stop
))))
3875 self
.match(CParser
.T__37
)
3877 self
.macro_parameter_list()
3879 self
.match(CParser
.T__38
)
3884 self
.match(CParser
.T__50
)
3886 localctx
.x
= self
.match(CParser
.IDENTIFIER
)
3887 self
.FuncCallText
+= '.' + (None if localctx
.x
is None else localctx
.x
.text
)
3892 self
.match(CParser
.T__41
)
3894 localctx
.y
= self
.match(CParser
.IDENTIFIER
)
3895 self
.FuncCallText
= (None if localctx
.y
is None else localctx
.y
.text
)
3900 self
.match(CParser
.T__51
)
3902 localctx
.z
= self
.match(CParser
.IDENTIFIER
)
3903 self
.FuncCallText
+= '->' + (None if localctx
.z
is None else localctx
.z
.text
)
3908 self
.match(CParser
.T__47
)
3913 self
.match(CParser
.T__48
)
3918 self
._errHandler
.sync(self
)
3919 _alt
= self
._interp
.adaptivePredict(self
._input
,73,self
._ctx
)
3921 except RecognitionException
as re
:
3922 localctx
.exception
= re
3923 self
._errHandler
.reportError(self
, re
)
3924 self
._errHandler
.recover(self
, re
)
3929 class Macro_parameter_listContext(ParserRuleContext
):
3931 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3932 super().__init
__(parent
, invokingState
)
3933 self
.parser
= parser
3935 def parameter_declaration(self
, i
:int=None):
3937 return self
.getTypedRuleContexts(CParser
.Parameter_declarationContext
)
3939 return self
.getTypedRuleContext(CParser
.Parameter_declarationContext
,i
)
3942 def getRuleIndex(self
):
3943 return CParser
.RULE_macro_parameter_list
3945 def enterRule(self
, listener
:ParseTreeListener
):
3946 if hasattr( listener
, "enterMacro_parameter_list" ):
3947 listener
.enterMacro_parameter_list(self
)
3949 def exitRule(self
, listener
:ParseTreeListener
):
3950 if hasattr( listener
, "exitMacro_parameter_list" ):
3951 listener
.exitMacro_parameter_list(self
)
3956 def macro_parameter_list(self
):
3958 localctx
= CParser
.Macro_parameter_listContext(self
, self
._ctx
, self
.state
)
3959 self
.enterRule(localctx
, 82, self
.RULE_macro_parameter_list
)
3960 self
._la
= 0 # Token type
3962 self
.enterOuterAlt(localctx
, 1)
3964 self
.parameter_declaration()
3966 self
._errHandler
.sync(self
)
3967 _la
= self
._input
.LA(1)
3968 while _la
==CParser
.T__3
:
3970 self
.match(CParser
.T__3
)
3972 self
.parameter_declaration()
3974 self
._errHandler
.sync(self
)
3975 _la
= self
._input
.LA(1)
3977 except RecognitionException
as re
:
3978 localctx
.exception
= re
3979 self
._errHandler
.reportError(self
, re
)
3980 self
._errHandler
.recover(self
, re
)
3985 class Unary_operatorContext(ParserRuleContext
):
3987 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
3988 super().__init
__(parent
, invokingState
)
3989 self
.parser
= parser
3992 def getRuleIndex(self
):
3993 return CParser
.RULE_unary_operator
3995 def enterRule(self
, listener
:ParseTreeListener
):
3996 if hasattr( listener
, "enterUnary_operator" ):
3997 listener
.enterUnary_operator(self
)
3999 def exitRule(self
, listener
:ParseTreeListener
):
4000 if hasattr( listener
, "exitUnary_operator" ):
4001 listener
.exitUnary_operator(self
)
4006 def unary_operator(self
):
4008 localctx
= CParser
.Unary_operatorContext(self
, self
._ctx
, self
.state
)
4009 self
.enterRule(localctx
, 84, self
.RULE_unary_operator
)
4010 self
._la
= 0 # Token type
4012 self
.enterOuterAlt(localctx
, 1)
4014 _la
= self
._input
.LA(1)
4015 if not((((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__41
) |
(1 << CParser
.T__43
) |
(1 << CParser
.T__44
) |
(1 << CParser
.T__52
) |
(1 << CParser
.T__53
) |
(1 << CParser
.T__54
))) != 0)):
4016 self
._errHandler
.recoverInline(self
)
4018 self
._errHandler
.reportMatch(self
)
4020 except RecognitionException
as re
:
4021 localctx
.exception
= re
4022 self
._errHandler
.reportError(self
, re
)
4023 self
._errHandler
.recover(self
, re
)
4028 class Primary_expressionContext(ParserRuleContext
):
4030 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4031 super().__init
__(parent
, invokingState
)
4032 self
.parser
= parser
4034 def IDENTIFIER(self
):
4035 return self
.getToken(CParser
.IDENTIFIER
, 0)
4038 return self
.getTypedRuleContext(CParser
.ConstantContext
,0)
4041 def expression(self
):
4042 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
4045 def getRuleIndex(self
):
4046 return CParser
.RULE_primary_expression
4048 def enterRule(self
, listener
:ParseTreeListener
):
4049 if hasattr( listener
, "enterPrimary_expression" ):
4050 listener
.enterPrimary_expression(self
)
4052 def exitRule(self
, listener
:ParseTreeListener
):
4053 if hasattr( listener
, "exitPrimary_expression" ):
4054 listener
.exitPrimary_expression(self
)
4059 def primary_expression(self
):
4061 localctx
= CParser
.Primary_expressionContext(self
, self
._ctx
, self
.state
)
4062 self
.enterRule(localctx
, 86, self
.RULE_primary_expression
)
4065 self
._errHandler
.sync(self
)
4066 la_
= self
._interp
.adaptivePredict(self
._input
,75,self
._ctx
)
4068 self
.enterOuterAlt(localctx
, 1)
4070 self
.match(CParser
.IDENTIFIER
)
4074 self
.enterOuterAlt(localctx
, 2)
4080 self
.enterOuterAlt(localctx
, 3)
4082 self
.match(CParser
.T__37
)
4086 self
.match(CParser
.T__38
)
4090 except RecognitionException
as re
:
4091 localctx
.exception
= re
4092 self
._errHandler
.reportError(self
, re
)
4093 self
._errHandler
.recover(self
, re
)
4098 class ConstantContext(ParserRuleContext
):
4100 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4101 super().__init
__(parent
, invokingState
)
4102 self
.parser
= parser
4104 def HEX_LITERAL(self
):
4105 return self
.getToken(CParser
.HEX_LITERAL
, 0)
4107 def OCTAL_LITERAL(self
):
4108 return self
.getToken(CParser
.OCTAL_LITERAL
, 0)
4110 def DECIMAL_LITERAL(self
):
4111 return self
.getToken(CParser
.DECIMAL_LITERAL
, 0)
4113 def CHARACTER_LITERAL(self
):
4114 return self
.getToken(CParser
.CHARACTER_LITERAL
, 0)
4116 def IDENTIFIER(self
, i
:int=None):
4118 return self
.getTokens(CParser
.IDENTIFIER
)
4120 return self
.getToken(CParser
.IDENTIFIER
, i
)
4122 def STRING_LITERAL(self
, i
:int=None):
4124 return self
.getTokens(CParser
.STRING_LITERAL
)
4126 return self
.getToken(CParser
.STRING_LITERAL
, i
)
4128 def FLOATING_POINT_LITERAL(self
):
4129 return self
.getToken(CParser
.FLOATING_POINT_LITERAL
, 0)
4131 def getRuleIndex(self
):
4132 return CParser
.RULE_constant
4134 def enterRule(self
, listener
:ParseTreeListener
):
4135 if hasattr( listener
, "enterConstant" ):
4136 listener
.enterConstant(self
)
4138 def exitRule(self
, listener
:ParseTreeListener
):
4139 if hasattr( listener
, "exitConstant" ):
4140 listener
.exitConstant(self
)
4147 localctx
= CParser
.ConstantContext(self
, self
._ctx
, self
.state
)
4148 self
.enterRule(localctx
, 88, self
.RULE_constant
)
4149 self
._la
= 0 # Token type
4152 self
._errHandler
.sync(self
)
4153 token
= self
._input
.LA(1)
4154 if token
in [CParser
.HEX_LITERAL
]:
4155 self
.enterOuterAlt(localctx
, 1)
4157 self
.match(CParser
.HEX_LITERAL
)
4159 elif token
in [CParser
.OCTAL_LITERAL
]:
4160 self
.enterOuterAlt(localctx
, 2)
4162 self
.match(CParser
.OCTAL_LITERAL
)
4164 elif token
in [CParser
.DECIMAL_LITERAL
]:
4165 self
.enterOuterAlt(localctx
, 3)
4167 self
.match(CParser
.DECIMAL_LITERAL
)
4169 elif token
in [CParser
.CHARACTER_LITERAL
]:
4170 self
.enterOuterAlt(localctx
, 4)
4172 self
.match(CParser
.CHARACTER_LITERAL
)
4174 elif token
in [CParser
.IDENTIFIER
, CParser
.STRING_LITERAL
]:
4175 self
.enterOuterAlt(localctx
, 5)
4177 self
._errHandler
.sync(self
)
4179 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
4182 self
._errHandler
.sync(self
)
4183 _la
= self
._input
.LA(1)
4184 while _la
==CParser
.IDENTIFIER
:
4186 self
.match(CParser
.IDENTIFIER
)
4188 self
._errHandler
.sync(self
)
4189 _la
= self
._input
.LA(1)
4192 self
._errHandler
.sync(self
)
4194 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
4197 self
.match(CParser
.STRING_LITERAL
)
4200 raise NoViableAltException(self
)
4202 self
._errHandler
.sync(self
)
4203 _alt
= self
._interp
.adaptivePredict(self
._input
,77,self
._ctx
)
4207 raise NoViableAltException(self
)
4209 self
._errHandler
.sync(self
)
4210 _alt
= self
._interp
.adaptivePredict(self
._input
,78,self
._ctx
)
4213 self
._errHandler
.sync(self
)
4214 _la
= self
._input
.LA(1)
4215 while _la
==CParser
.IDENTIFIER
:
4217 self
.match(CParser
.IDENTIFIER
)
4219 self
._errHandler
.sync(self
)
4220 _la
= self
._input
.LA(1)
4223 elif token
in [CParser
.FLOATING_POINT_LITERAL
]:
4224 self
.enterOuterAlt(localctx
, 6)
4226 self
.match(CParser
.FLOATING_POINT_LITERAL
)
4229 raise NoViableAltException(self
)
4231 except RecognitionException
as re
:
4232 localctx
.exception
= re
4233 self
._errHandler
.reportError(self
, re
)
4234 self
._errHandler
.recover(self
, re
)
4239 class ExpressionContext(ParserRuleContext
):
4241 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4242 super().__init
__(parent
, invokingState
)
4243 self
.parser
= parser
4245 def assignment_expression(self
, i
:int=None):
4247 return self
.getTypedRuleContexts(CParser
.Assignment_expressionContext
)
4249 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,i
)
4252 def getRuleIndex(self
):
4253 return CParser
.RULE_expression
4255 def enterRule(self
, listener
:ParseTreeListener
):
4256 if hasattr( listener
, "enterExpression" ):
4257 listener
.enterExpression(self
)
4259 def exitRule(self
, listener
:ParseTreeListener
):
4260 if hasattr( listener
, "exitExpression" ):
4261 listener
.exitExpression(self
)
4266 def expression(self
):
4268 localctx
= CParser
.ExpressionContext(self
, self
._ctx
, self
.state
)
4269 self
.enterRule(localctx
, 90, self
.RULE_expression
)
4270 self
._la
= 0 # Token type
4272 self
.enterOuterAlt(localctx
, 1)
4274 self
.assignment_expression()
4276 self
._errHandler
.sync(self
)
4277 _la
= self
._input
.LA(1)
4278 while _la
==CParser
.T__3
:
4280 self
.match(CParser
.T__3
)
4282 self
.assignment_expression()
4284 self
._errHandler
.sync(self
)
4285 _la
= self
._input
.LA(1)
4287 except RecognitionException
as re
:
4288 localctx
.exception
= re
4289 self
._errHandler
.reportError(self
, re
)
4290 self
._errHandler
.recover(self
, re
)
4295 class Constant_expressionContext(ParserRuleContext
):
4297 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4298 super().__init
__(parent
, invokingState
)
4299 self
.parser
= parser
4301 def conditional_expression(self
):
4302 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4305 def getRuleIndex(self
):
4306 return CParser
.RULE_constant_expression
4308 def enterRule(self
, listener
:ParseTreeListener
):
4309 if hasattr( listener
, "enterConstant_expression" ):
4310 listener
.enterConstant_expression(self
)
4312 def exitRule(self
, listener
:ParseTreeListener
):
4313 if hasattr( listener
, "exitConstant_expression" ):
4314 listener
.exitConstant_expression(self
)
4319 def constant_expression(self
):
4321 localctx
= CParser
.Constant_expressionContext(self
, self
._ctx
, self
.state
)
4322 self
.enterRule(localctx
, 92, self
.RULE_constant_expression
)
4324 self
.enterOuterAlt(localctx
, 1)
4326 self
.conditional_expression()
4327 except RecognitionException
as re
:
4328 localctx
.exception
= re
4329 self
._errHandler
.reportError(self
, re
)
4330 self
._errHandler
.recover(self
, re
)
4335 class Assignment_expressionContext(ParserRuleContext
):
4337 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4338 super().__init
__(parent
, invokingState
)
4339 self
.parser
= parser
4342 return self
.getTypedRuleContext(CParser
.LvalueContext
,0)
4345 def assignment_operator(self
):
4346 return self
.getTypedRuleContext(CParser
.Assignment_operatorContext
,0)
4349 def assignment_expression(self
):
4350 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,0)
4353 def conditional_expression(self
):
4354 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4357 def getRuleIndex(self
):
4358 return CParser
.RULE_assignment_expression
4360 def enterRule(self
, listener
:ParseTreeListener
):
4361 if hasattr( listener
, "enterAssignment_expression" ):
4362 listener
.enterAssignment_expression(self
)
4364 def exitRule(self
, listener
:ParseTreeListener
):
4365 if hasattr( listener
, "exitAssignment_expression" ):
4366 listener
.exitAssignment_expression(self
)
4371 def assignment_expression(self
):
4373 localctx
= CParser
.Assignment_expressionContext(self
, self
._ctx
, self
.state
)
4374 self
.enterRule(localctx
, 94, self
.RULE_assignment_expression
)
4377 self
._errHandler
.sync(self
)
4378 la_
= self
._interp
.adaptivePredict(self
._input
,82,self
._ctx
)
4380 self
.enterOuterAlt(localctx
, 1)
4384 self
.assignment_operator()
4386 self
.assignment_expression()
4390 self
.enterOuterAlt(localctx
, 2)
4392 self
.conditional_expression()
4396 except RecognitionException
as re
:
4397 localctx
.exception
= re
4398 self
._errHandler
.reportError(self
, re
)
4399 self
._errHandler
.recover(self
, re
)
4404 class LvalueContext(ParserRuleContext
):
4406 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4407 super().__init
__(parent
, invokingState
)
4408 self
.parser
= parser
4410 def unary_expression(self
):
4411 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
4414 def getRuleIndex(self
):
4415 return CParser
.RULE_lvalue
4417 def enterRule(self
, listener
:ParseTreeListener
):
4418 if hasattr( listener
, "enterLvalue" ):
4419 listener
.enterLvalue(self
)
4421 def exitRule(self
, listener
:ParseTreeListener
):
4422 if hasattr( listener
, "exitLvalue" ):
4423 listener
.exitLvalue(self
)
4430 localctx
= CParser
.LvalueContext(self
, self
._ctx
, self
.state
)
4431 self
.enterRule(localctx
, 96, self
.RULE_lvalue
)
4433 self
.enterOuterAlt(localctx
, 1)
4435 self
.unary_expression()
4436 except RecognitionException
as re
:
4437 localctx
.exception
= re
4438 self
._errHandler
.reportError(self
, re
)
4439 self
._errHandler
.recover(self
, re
)
4444 class Assignment_operatorContext(ParserRuleContext
):
4446 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4447 super().__init
__(parent
, invokingState
)
4448 self
.parser
= parser
4451 def getRuleIndex(self
):
4452 return CParser
.RULE_assignment_operator
4454 def enterRule(self
, listener
:ParseTreeListener
):
4455 if hasattr( listener
, "enterAssignment_operator" ):
4456 listener
.enterAssignment_operator(self
)
4458 def exitRule(self
, listener
:ParseTreeListener
):
4459 if hasattr( listener
, "exitAssignment_operator" ):
4460 listener
.exitAssignment_operator(self
)
4465 def assignment_operator(self
):
4467 localctx
= CParser
.Assignment_operatorContext(self
, self
._ctx
, self
.state
)
4468 self
.enterRule(localctx
, 98, self
.RULE_assignment_operator
)
4469 self
._la
= 0 # Token type
4471 self
.enterOuterAlt(localctx
, 1)
4473 _la
= self
._input
.LA(1)
4474 if not(((((_la
- 5)) & ~
0x3f) == 0 and ((1 << (_la
- 5)) & ((1 << (CParser
.T__4
- 5)) |
(1 << (CParser
.T__55
- 5)) |
(1 << (CParser
.T__56
- 5)) |
(1 << (CParser
.T__57
- 5)) |
(1 << (CParser
.T__58
- 5)) |
(1 << (CParser
.T__59
- 5)) |
(1 << (CParser
.T__60
- 5)) |
(1 << (CParser
.T__61
- 5)) |
(1 << (CParser
.T__62
- 5)) |
(1 << (CParser
.T__63
- 5)) |
(1 << (CParser
.T__64
- 5)))) != 0)):
4475 self
._errHandler
.recoverInline(self
)
4477 self
._errHandler
.reportMatch(self
)
4479 except RecognitionException
as re
:
4480 localctx
.exception
= re
4481 self
._errHandler
.reportError(self
, re
)
4482 self
._errHandler
.recover(self
, re
)
4487 class Conditional_expressionContext(ParserRuleContext
):
4489 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4490 super().__init
__(parent
, invokingState
)
4491 self
.parser
= parser
4492 self
.e
= None # Logical_or_expressionContext
4494 def logical_or_expression(self
):
4495 return self
.getTypedRuleContext(CParser
.Logical_or_expressionContext
,0)
4498 def expression(self
):
4499 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
4502 def conditional_expression(self
):
4503 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4506 def getRuleIndex(self
):
4507 return CParser
.RULE_conditional_expression
4509 def enterRule(self
, listener
:ParseTreeListener
):
4510 if hasattr( listener
, "enterConditional_expression" ):
4511 listener
.enterConditional_expression(self
)
4513 def exitRule(self
, listener
:ParseTreeListener
):
4514 if hasattr( listener
, "exitConditional_expression" ):
4515 listener
.exitConditional_expression(self
)
4520 def conditional_expression(self
):
4522 localctx
= CParser
.Conditional_expressionContext(self
, self
._ctx
, self
.state
)
4523 self
.enterRule(localctx
, 100, self
.RULE_conditional_expression
)
4524 self
._la
= 0 # Token type
4526 self
.enterOuterAlt(localctx
, 1)
4528 localctx
.e
= self
.logical_or_expression()
4530 self
._errHandler
.sync(self
)
4531 _la
= self
._input
.LA(1)
4532 if _la
==CParser
.T__65
:
4534 self
.match(CParser
.T__65
)
4538 self
.match(CParser
.T__22
)
4540 self
.conditional_expression()
4541 self
.StorePredicateExpression((None if localctx
.e
is None else localctx
.e
.start
).line
, (None if localctx
.e
is None else localctx
.e
.start
).column
, (None if localctx
.e
is None else localctx
.e
.stop
).line
, (None if localctx
.e
is None else localctx
.e
.stop
).column
, (None if localctx
.e
is None else self
._input
.getText((localctx
.e
.start
,localctx
.e
.stop
))))
4544 except RecognitionException
as re
:
4545 localctx
.exception
= re
4546 self
._errHandler
.reportError(self
, re
)
4547 self
._errHandler
.recover(self
, re
)
4552 class Logical_or_expressionContext(ParserRuleContext
):
4554 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4555 super().__init
__(parent
, invokingState
)
4556 self
.parser
= parser
4558 def logical_and_expression(self
, i
:int=None):
4560 return self
.getTypedRuleContexts(CParser
.Logical_and_expressionContext
)
4562 return self
.getTypedRuleContext(CParser
.Logical_and_expressionContext
,i
)
4565 def getRuleIndex(self
):
4566 return CParser
.RULE_logical_or_expression
4568 def enterRule(self
, listener
:ParseTreeListener
):
4569 if hasattr( listener
, "enterLogical_or_expression" ):
4570 listener
.enterLogical_or_expression(self
)
4572 def exitRule(self
, listener
:ParseTreeListener
):
4573 if hasattr( listener
, "exitLogical_or_expression" ):
4574 listener
.exitLogical_or_expression(self
)
4579 def logical_or_expression(self
):
4581 localctx
= CParser
.Logical_or_expressionContext(self
, self
._ctx
, self
.state
)
4582 self
.enterRule(localctx
, 102, self
.RULE_logical_or_expression
)
4583 self
._la
= 0 # Token type
4585 self
.enterOuterAlt(localctx
, 1)
4587 self
.logical_and_expression()
4589 self
._errHandler
.sync(self
)
4590 _la
= self
._input
.LA(1)
4591 while _la
==CParser
.T__66
:
4593 self
.match(CParser
.T__66
)
4595 self
.logical_and_expression()
4597 self
._errHandler
.sync(self
)
4598 _la
= self
._input
.LA(1)
4600 except RecognitionException
as re
:
4601 localctx
.exception
= re
4602 self
._errHandler
.reportError(self
, re
)
4603 self
._errHandler
.recover(self
, re
)
4608 class Logical_and_expressionContext(ParserRuleContext
):
4610 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4611 super().__init
__(parent
, invokingState
)
4612 self
.parser
= parser
4614 def inclusive_or_expression(self
, i
:int=None):
4616 return self
.getTypedRuleContexts(CParser
.Inclusive_or_expressionContext
)
4618 return self
.getTypedRuleContext(CParser
.Inclusive_or_expressionContext
,i
)
4621 def getRuleIndex(self
):
4622 return CParser
.RULE_logical_and_expression
4624 def enterRule(self
, listener
:ParseTreeListener
):
4625 if hasattr( listener
, "enterLogical_and_expression" ):
4626 listener
.enterLogical_and_expression(self
)
4628 def exitRule(self
, listener
:ParseTreeListener
):
4629 if hasattr( listener
, "exitLogical_and_expression" ):
4630 listener
.exitLogical_and_expression(self
)
4635 def logical_and_expression(self
):
4637 localctx
= CParser
.Logical_and_expressionContext(self
, self
._ctx
, self
.state
)
4638 self
.enterRule(localctx
, 104, self
.RULE_logical_and_expression
)
4639 self
._la
= 0 # Token type
4641 self
.enterOuterAlt(localctx
, 1)
4643 self
.inclusive_or_expression()
4645 self
._errHandler
.sync(self
)
4646 _la
= self
._input
.LA(1)
4647 while _la
==CParser
.T__67
:
4649 self
.match(CParser
.T__67
)
4651 self
.inclusive_or_expression()
4653 self
._errHandler
.sync(self
)
4654 _la
= self
._input
.LA(1)
4656 except RecognitionException
as re
:
4657 localctx
.exception
= re
4658 self
._errHandler
.reportError(self
, re
)
4659 self
._errHandler
.recover(self
, re
)
4664 class Inclusive_or_expressionContext(ParserRuleContext
):
4666 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4667 super().__init
__(parent
, invokingState
)
4668 self
.parser
= parser
4670 def exclusive_or_expression(self
, i
:int=None):
4672 return self
.getTypedRuleContexts(CParser
.Exclusive_or_expressionContext
)
4674 return self
.getTypedRuleContext(CParser
.Exclusive_or_expressionContext
,i
)
4677 def getRuleIndex(self
):
4678 return CParser
.RULE_inclusive_or_expression
4680 def enterRule(self
, listener
:ParseTreeListener
):
4681 if hasattr( listener
, "enterInclusive_or_expression" ):
4682 listener
.enterInclusive_or_expression(self
)
4684 def exitRule(self
, listener
:ParseTreeListener
):
4685 if hasattr( listener
, "exitInclusive_or_expression" ):
4686 listener
.exitInclusive_or_expression(self
)
4691 def inclusive_or_expression(self
):
4693 localctx
= CParser
.Inclusive_or_expressionContext(self
, self
._ctx
, self
.state
)
4694 self
.enterRule(localctx
, 106, self
.RULE_inclusive_or_expression
)
4695 self
._la
= 0 # Token type
4697 self
.enterOuterAlt(localctx
, 1)
4699 self
.exclusive_or_expression()
4701 self
._errHandler
.sync(self
)
4702 _la
= self
._input
.LA(1)
4703 while _la
==CParser
.T__68
:
4705 self
.match(CParser
.T__68
)
4707 self
.exclusive_or_expression()
4709 self
._errHandler
.sync(self
)
4710 _la
= self
._input
.LA(1)
4712 except RecognitionException
as re
:
4713 localctx
.exception
= re
4714 self
._errHandler
.reportError(self
, re
)
4715 self
._errHandler
.recover(self
, re
)
4720 class Exclusive_or_expressionContext(ParserRuleContext
):
4722 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4723 super().__init
__(parent
, invokingState
)
4724 self
.parser
= parser
4726 def and_expression(self
, i
:int=None):
4728 return self
.getTypedRuleContexts(CParser
.And_expressionContext
)
4730 return self
.getTypedRuleContext(CParser
.And_expressionContext
,i
)
4733 def getRuleIndex(self
):
4734 return CParser
.RULE_exclusive_or_expression
4736 def enterRule(self
, listener
:ParseTreeListener
):
4737 if hasattr( listener
, "enterExclusive_or_expression" ):
4738 listener
.enterExclusive_or_expression(self
)
4740 def exitRule(self
, listener
:ParseTreeListener
):
4741 if hasattr( listener
, "exitExclusive_or_expression" ):
4742 listener
.exitExclusive_or_expression(self
)
4747 def exclusive_or_expression(self
):
4749 localctx
= CParser
.Exclusive_or_expressionContext(self
, self
._ctx
, self
.state
)
4750 self
.enterRule(localctx
, 108, self
.RULE_exclusive_or_expression
)
4751 self
._la
= 0 # Token type
4753 self
.enterOuterAlt(localctx
, 1)
4755 self
.and_expression()
4757 self
._errHandler
.sync(self
)
4758 _la
= self
._input
.LA(1)
4759 while _la
==CParser
.T__69
:
4761 self
.match(CParser
.T__69
)
4763 self
.and_expression()
4765 self
._errHandler
.sync(self
)
4766 _la
= self
._input
.LA(1)
4768 except RecognitionException
as re
:
4769 localctx
.exception
= re
4770 self
._errHandler
.reportError(self
, re
)
4771 self
._errHandler
.recover(self
, re
)
4776 class And_expressionContext(ParserRuleContext
):
4778 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4779 super().__init
__(parent
, invokingState
)
4780 self
.parser
= parser
4782 def equality_expression(self
, i
:int=None):
4784 return self
.getTypedRuleContexts(CParser
.Equality_expressionContext
)
4786 return self
.getTypedRuleContext(CParser
.Equality_expressionContext
,i
)
4789 def getRuleIndex(self
):
4790 return CParser
.RULE_and_expression
4792 def enterRule(self
, listener
:ParseTreeListener
):
4793 if hasattr( listener
, "enterAnd_expression" ):
4794 listener
.enterAnd_expression(self
)
4796 def exitRule(self
, listener
:ParseTreeListener
):
4797 if hasattr( listener
, "exitAnd_expression" ):
4798 listener
.exitAnd_expression(self
)
4803 def and_expression(self
):
4805 localctx
= CParser
.And_expressionContext(self
, self
._ctx
, self
.state
)
4806 self
.enterRule(localctx
, 110, self
.RULE_and_expression
)
4807 self
._la
= 0 # Token type
4809 self
.enterOuterAlt(localctx
, 1)
4811 self
.equality_expression()
4813 self
._errHandler
.sync(self
)
4814 _la
= self
._input
.LA(1)
4815 while _la
==CParser
.T__52
:
4817 self
.match(CParser
.T__52
)
4819 self
.equality_expression()
4821 self
._errHandler
.sync(self
)
4822 _la
= self
._input
.LA(1)
4824 except RecognitionException
as re
:
4825 localctx
.exception
= re
4826 self
._errHandler
.reportError(self
, re
)
4827 self
._errHandler
.recover(self
, re
)
4832 class Equality_expressionContext(ParserRuleContext
):
4834 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4835 super().__init
__(parent
, invokingState
)
4836 self
.parser
= parser
4838 def relational_expression(self
, i
:int=None):
4840 return self
.getTypedRuleContexts(CParser
.Relational_expressionContext
)
4842 return self
.getTypedRuleContext(CParser
.Relational_expressionContext
,i
)
4845 def getRuleIndex(self
):
4846 return CParser
.RULE_equality_expression
4848 def enterRule(self
, listener
:ParseTreeListener
):
4849 if hasattr( listener
, "enterEquality_expression" ):
4850 listener
.enterEquality_expression(self
)
4852 def exitRule(self
, listener
:ParseTreeListener
):
4853 if hasattr( listener
, "exitEquality_expression" ):
4854 listener
.exitEquality_expression(self
)
4859 def equality_expression(self
):
4861 localctx
= CParser
.Equality_expressionContext(self
, self
._ctx
, self
.state
)
4862 self
.enterRule(localctx
, 112, self
.RULE_equality_expression
)
4863 self
._la
= 0 # Token type
4865 self
.enterOuterAlt(localctx
, 1)
4867 self
.relational_expression()
4869 self
._errHandler
.sync(self
)
4870 _la
= self
._input
.LA(1)
4871 while _la
==CParser
.T__70
or _la
==CParser
.T__71
:
4873 _la
= self
._input
.LA(1)
4874 if not(_la
==CParser
.T__70
or _la
==CParser
.T__71
):
4875 self
._errHandler
.recoverInline(self
)
4877 self
._errHandler
.reportMatch(self
)
4880 self
.relational_expression()
4882 self
._errHandler
.sync(self
)
4883 _la
= self
._input
.LA(1)
4885 except RecognitionException
as re
:
4886 localctx
.exception
= re
4887 self
._errHandler
.reportError(self
, re
)
4888 self
._errHandler
.recover(self
, re
)
4893 class Relational_expressionContext(ParserRuleContext
):
4895 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4896 super().__init
__(parent
, invokingState
)
4897 self
.parser
= parser
4899 def shift_expression(self
, i
:int=None):
4901 return self
.getTypedRuleContexts(CParser
.Shift_expressionContext
)
4903 return self
.getTypedRuleContext(CParser
.Shift_expressionContext
,i
)
4906 def getRuleIndex(self
):
4907 return CParser
.RULE_relational_expression
4909 def enterRule(self
, listener
:ParseTreeListener
):
4910 if hasattr( listener
, "enterRelational_expression" ):
4911 listener
.enterRelational_expression(self
)
4913 def exitRule(self
, listener
:ParseTreeListener
):
4914 if hasattr( listener
, "exitRelational_expression" ):
4915 listener
.exitRelational_expression(self
)
4920 def relational_expression(self
):
4922 localctx
= CParser
.Relational_expressionContext(self
, self
._ctx
, self
.state
)
4923 self
.enterRule(localctx
, 114, self
.RULE_relational_expression
)
4924 self
._la
= 0 # Token type
4926 self
.enterOuterAlt(localctx
, 1)
4928 self
.shift_expression()
4930 self
._errHandler
.sync(self
)
4931 _la
= self
._input
.LA(1)
4932 while ((((_la
- 73)) & ~
0x3f) == 0 and ((1 << (_la
- 73)) & ((1 << (CParser
.T__72
- 73)) |
(1 << (CParser
.T__73
- 73)) |
(1 << (CParser
.T__74
- 73)) |
(1 << (CParser
.T__75
- 73)))) != 0):
4934 _la
= self
._input
.LA(1)
4935 if not(((((_la
- 73)) & ~
0x3f) == 0 and ((1 << (_la
- 73)) & ((1 << (CParser
.T__72
- 73)) |
(1 << (CParser
.T__73
- 73)) |
(1 << (CParser
.T__74
- 73)) |
(1 << (CParser
.T__75
- 73)))) != 0)):
4936 self
._errHandler
.recoverInline(self
)
4938 self
._errHandler
.reportMatch(self
)
4941 self
.shift_expression()
4943 self
._errHandler
.sync(self
)
4944 _la
= self
._input
.LA(1)
4946 except RecognitionException
as re
:
4947 localctx
.exception
= re
4948 self
._errHandler
.reportError(self
, re
)
4949 self
._errHandler
.recover(self
, re
)
4954 class Shift_expressionContext(ParserRuleContext
):
4956 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
4957 super().__init
__(parent
, invokingState
)
4958 self
.parser
= parser
4960 def additive_expression(self
, i
:int=None):
4962 return self
.getTypedRuleContexts(CParser
.Additive_expressionContext
)
4964 return self
.getTypedRuleContext(CParser
.Additive_expressionContext
,i
)
4967 def getRuleIndex(self
):
4968 return CParser
.RULE_shift_expression
4970 def enterRule(self
, listener
:ParseTreeListener
):
4971 if hasattr( listener
, "enterShift_expression" ):
4972 listener
.enterShift_expression(self
)
4974 def exitRule(self
, listener
:ParseTreeListener
):
4975 if hasattr( listener
, "exitShift_expression" ):
4976 listener
.exitShift_expression(self
)
4981 def shift_expression(self
):
4983 localctx
= CParser
.Shift_expressionContext(self
, self
._ctx
, self
.state
)
4984 self
.enterRule(localctx
, 116, self
.RULE_shift_expression
)
4985 self
._la
= 0 # Token type
4987 self
.enterOuterAlt(localctx
, 1)
4989 self
.additive_expression()
4991 self
._errHandler
.sync(self
)
4992 _la
= self
._input
.LA(1)
4993 while _la
==CParser
.T__76
or _la
==CParser
.T__77
:
4995 _la
= self
._input
.LA(1)
4996 if not(_la
==CParser
.T__76
or _la
==CParser
.T__77
):
4997 self
._errHandler
.recoverInline(self
)
4999 self
._errHandler
.reportMatch(self
)
5002 self
.additive_expression()
5004 self
._errHandler
.sync(self
)
5005 _la
= self
._input
.LA(1)
5007 except RecognitionException
as re
:
5008 localctx
.exception
= re
5009 self
._errHandler
.reportError(self
, re
)
5010 self
._errHandler
.recover(self
, re
)
5015 class StatementContext(ParserRuleContext
):
5017 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5018 super().__init
__(parent
, invokingState
)
5019 self
.parser
= parser
5021 def labeled_statement(self
):
5022 return self
.getTypedRuleContext(CParser
.Labeled_statementContext
,0)
5025 def compound_statement(self
):
5026 return self
.getTypedRuleContext(CParser
.Compound_statementContext
,0)
5029 def expression_statement(self
):
5030 return self
.getTypedRuleContext(CParser
.Expression_statementContext
,0)
5033 def selection_statement(self
):
5034 return self
.getTypedRuleContext(CParser
.Selection_statementContext
,0)
5037 def iteration_statement(self
):
5038 return self
.getTypedRuleContext(CParser
.Iteration_statementContext
,0)
5041 def jump_statement(self
):
5042 return self
.getTypedRuleContext(CParser
.Jump_statementContext
,0)
5045 def macro_statement(self
):
5046 return self
.getTypedRuleContext(CParser
.Macro_statementContext
,0)
5049 def asm2_statement(self
):
5050 return self
.getTypedRuleContext(CParser
.Asm2_statementContext
,0)
5053 def asm1_statement(self
):
5054 return self
.getTypedRuleContext(CParser
.Asm1_statementContext
,0)
5057 def asm_statement(self
):
5058 return self
.getTypedRuleContext(CParser
.Asm_statementContext
,0)
5061 def declaration(self
):
5062 return self
.getTypedRuleContext(CParser
.DeclarationContext
,0)
5065 def getRuleIndex(self
):
5066 return CParser
.RULE_statement
5068 def enterRule(self
, listener
:ParseTreeListener
):
5069 if hasattr( listener
, "enterStatement" ):
5070 listener
.enterStatement(self
)
5072 def exitRule(self
, listener
:ParseTreeListener
):
5073 if hasattr( listener
, "exitStatement" ):
5074 listener
.exitStatement(self
)
5079 def statement(self
):
5081 localctx
= CParser
.StatementContext(self
, self
._ctx
, self
.state
)
5082 self
.enterRule(localctx
, 118, self
.RULE_statement
)
5085 self
._errHandler
.sync(self
)
5086 la_
= self
._interp
.adaptivePredict(self
._input
,92,self
._ctx
)
5088 self
.enterOuterAlt(localctx
, 1)
5090 self
.labeled_statement()
5094 self
.enterOuterAlt(localctx
, 2)
5096 self
.compound_statement()
5100 self
.enterOuterAlt(localctx
, 3)
5102 self
.expression_statement()
5106 self
.enterOuterAlt(localctx
, 4)
5108 self
.selection_statement()
5112 self
.enterOuterAlt(localctx
, 5)
5114 self
.iteration_statement()
5118 self
.enterOuterAlt(localctx
, 6)
5120 self
.jump_statement()
5124 self
.enterOuterAlt(localctx
, 7)
5126 self
.macro_statement()
5130 self
.enterOuterAlt(localctx
, 8)
5132 self
.asm2_statement()
5136 self
.enterOuterAlt(localctx
, 9)
5138 self
.asm1_statement()
5142 self
.enterOuterAlt(localctx
, 10)
5144 self
.asm_statement()
5148 self
.enterOuterAlt(localctx
, 11)
5154 except RecognitionException
as re
:
5155 localctx
.exception
= re
5156 self
._errHandler
.reportError(self
, re
)
5157 self
._errHandler
.recover(self
, re
)
5162 class Asm2_statementContext(ParserRuleContext
):
5164 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5165 super().__init
__(parent
, invokingState
)
5166 self
.parser
= parser
5168 def IDENTIFIER(self
):
5169 return self
.getToken(CParser
.IDENTIFIER
, 0)
5171 def getRuleIndex(self
):
5172 return CParser
.RULE_asm2_statement
5174 def enterRule(self
, listener
:ParseTreeListener
):
5175 if hasattr( listener
, "enterAsm2_statement" ):
5176 listener
.enterAsm2_statement(self
)
5178 def exitRule(self
, listener
:ParseTreeListener
):
5179 if hasattr( listener
, "exitAsm2_statement" ):
5180 listener
.exitAsm2_statement(self
)
5185 def asm2_statement(self
):
5187 localctx
= CParser
.Asm2_statementContext(self
, self
._ctx
, self
.state
)
5188 self
.enterRule(localctx
, 120, self
.RULE_asm2_statement
)
5189 self
._la
= 0 # Token type
5191 self
.enterOuterAlt(localctx
, 1)
5193 self
._errHandler
.sync(self
)
5194 _la
= self
._input
.LA(1)
5195 if _la
==CParser
.T__78
:
5197 self
.match(CParser
.T__78
)
5201 self
.match(CParser
.IDENTIFIER
)
5203 self
.match(CParser
.T__37
)
5205 self
._errHandler
.sync(self
)
5206 _alt
= self
._interp
.adaptivePredict(self
._input
,94,self
._ctx
)
5207 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5210 _la
= self
._input
.LA(1)
5211 if _la
<= 0 or _la
==CParser
.T__1
:
5212 self
._errHandler
.recoverInline(self
)
5214 self
._errHandler
.reportMatch(self
)
5217 self
._errHandler
.sync(self
)
5218 _alt
= self
._interp
.adaptivePredict(self
._input
,94,self
._ctx
)
5221 self
.match(CParser
.T__38
)
5223 self
.match(CParser
.T__1
)
5224 except RecognitionException
as re
:
5225 localctx
.exception
= re
5226 self
._errHandler
.reportError(self
, re
)
5227 self
._errHandler
.recover(self
, re
)
5232 class Asm1_statementContext(ParserRuleContext
):
5234 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5235 super().__init
__(parent
, invokingState
)
5236 self
.parser
= parser
5239 def getRuleIndex(self
):
5240 return CParser
.RULE_asm1_statement
5242 def enterRule(self
, listener
:ParseTreeListener
):
5243 if hasattr( listener
, "enterAsm1_statement" ):
5244 listener
.enterAsm1_statement(self
)
5246 def exitRule(self
, listener
:ParseTreeListener
):
5247 if hasattr( listener
, "exitAsm1_statement" ):
5248 listener
.exitAsm1_statement(self
)
5253 def asm1_statement(self
):
5255 localctx
= CParser
.Asm1_statementContext(self
, self
._ctx
, self
.state
)
5256 self
.enterRule(localctx
, 122, self
.RULE_asm1_statement
)
5257 self
._la
= 0 # Token type
5259 self
.enterOuterAlt(localctx
, 1)
5261 self
.match(CParser
.T__79
)
5263 self
.match(CParser
.T__0
)
5265 self
._errHandler
.sync(self
)
5266 _la
= self
._input
.LA(1)
5267 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__0
) |
(1 << CParser
.T__1
) |
(1 << CParser
.T__2
) |
(1 << CParser
.T__3
) |
(1 << CParser
.T__4
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__22
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
) |
(1 << CParser
.T__37
) |
(1 << CParser
.T__38
) |
(1 << CParser
.T__39
) |
(1 << CParser
.T__40
) |
(1 << CParser
.T__41
) |
(1 << CParser
.T__42
) |
(1 << CParser
.T__43
) |
(1 << CParser
.T__44
) |
(1 << CParser
.T__45
) |
(1 << CParser
.T__46
) |
(1 << CParser
.T__47
) |
(1 << CParser
.T__48
) |
(1 << CParser
.T__49
) |
(1 << CParser
.T__50
) |
(1 << CParser
.T__51
) |
(1 << CParser
.T__52
) |
(1 << CParser
.T__53
) |
(1 << CParser
.T__54
) |
(1 << CParser
.T__55
) |
(1 << CParser
.T__56
) |
(1 << CParser
.T__57
) |
(1 << CParser
.T__58
) |
(1 << CParser
.T__59
) |
(1 << CParser
.T__60
) |
(1 << CParser
.T__61
) |
(1 << CParser
.T__62
))) != 0) or ((((_la
- 64)) & ~
0x3f) == 0 and ((1 << (_la
- 64)) & ((1 << (CParser
.T__63
- 64)) |
(1 << (CParser
.T__64
- 64)) |
(1 << (CParser
.T__65
- 64)) |
(1 << (CParser
.T__66
- 64)) |
(1 << (CParser
.T__67
- 64)) |
(1 << (CParser
.T__68
- 64)) |
(1 << (CParser
.T__69
- 64)) |
(1 << (CParser
.T__70
- 64)) |
(1 << (CParser
.T__71
- 64)) |
(1 << (CParser
.T__72
- 64)) |
(1 << (CParser
.T__73
- 64)) |
(1 << (CParser
.T__74
- 64)) |
(1 << (CParser
.T__75
- 64)) |
(1 << (CParser
.T__76
- 64)) |
(1 << (CParser
.T__77
- 64)) |
(1 << (CParser
.T__78
- 64)) |
(1 << (CParser
.T__79
- 64)) |
(1 << (CParser
.T__80
- 64)) |
(1 << (CParser
.T__81
- 64)) |
(1 << (CParser
.T__82
- 64)) |
(1 << (CParser
.T__83
- 64)) |
(1 << (CParser
.T__84
- 64)) |
(1 << (CParser
.T__85
- 64)) |
(1 << (CParser
.T__86
- 64)) |
(1 << (CParser
.T__87
- 64)) |
(1 << (CParser
.T__88
- 64)) |
(1 << (CParser
.T__89
- 64)) |
(1 << (CParser
.T__90
- 64)) |
(1 << (CParser
.T__91
- 64)) |
(1 << (CParser
.IDENTIFIER
- 64)) |
(1 << (CParser
.CHARACTER_LITERAL
- 64)) |
(1 << (CParser
.STRING_LITERAL
- 64)) |
(1 << (CParser
.HEX_LITERAL
- 64)) |
(1 << (CParser
.DECIMAL_LITERAL
- 64)) |
(1 << (CParser
.OCTAL_LITERAL
- 64)) |
(1 << (CParser
.FLOATING_POINT_LITERAL
- 64)) |
(1 << (CParser
.WS
- 64)) |
(1 << (CParser
.BS
- 64)) |
(1 << (CParser
.UnicodeVocabulary
- 64)) |
(1 << (CParser
.COMMENT
- 64)) |
(1 << (CParser
.LINE_COMMENT
- 64)) |
(1 << (CParser
.LINE_COMMAND
- 64)))) != 0):
5269 _la
= self
._input
.LA(1)
5270 if _la
<= 0 or _la
==CParser
.T__19
:
5271 self
._errHandler
.recoverInline(self
)
5273 self
._errHandler
.reportMatch(self
)
5276 self
._errHandler
.sync(self
)
5277 _la
= self
._input
.LA(1)
5280 self
.match(CParser
.T__19
)
5281 except RecognitionException
as re
:
5282 localctx
.exception
= re
5283 self
._errHandler
.reportError(self
, re
)
5284 self
._errHandler
.recover(self
, re
)
5289 class Asm_statementContext(ParserRuleContext
):
5291 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5292 super().__init
__(parent
, invokingState
)
5293 self
.parser
= parser
5296 def getRuleIndex(self
):
5297 return CParser
.RULE_asm_statement
5299 def enterRule(self
, listener
:ParseTreeListener
):
5300 if hasattr( listener
, "enterAsm_statement" ):
5301 listener
.enterAsm_statement(self
)
5303 def exitRule(self
, listener
:ParseTreeListener
):
5304 if hasattr( listener
, "exitAsm_statement" ):
5305 listener
.exitAsm_statement(self
)
5310 def asm_statement(self
):
5312 localctx
= CParser
.Asm_statementContext(self
, self
._ctx
, self
.state
)
5313 self
.enterRule(localctx
, 124, self
.RULE_asm_statement
)
5314 self
._la
= 0 # Token type
5316 self
.enterOuterAlt(localctx
, 1)
5318 self
.match(CParser
.T__80
)
5320 self
.match(CParser
.T__0
)
5322 self
._errHandler
.sync(self
)
5323 _la
= self
._input
.LA(1)
5324 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__0
) |
(1 << CParser
.T__1
) |
(1 << CParser
.T__2
) |
(1 << CParser
.T__3
) |
(1 << CParser
.T__4
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__22
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
) |
(1 << CParser
.T__37
) |
(1 << CParser
.T__38
) |
(1 << CParser
.T__39
) |
(1 << CParser
.T__40
) |
(1 << CParser
.T__41
) |
(1 << CParser
.T__42
) |
(1 << CParser
.T__43
) |
(1 << CParser
.T__44
) |
(1 << CParser
.T__45
) |
(1 << CParser
.T__46
) |
(1 << CParser
.T__47
) |
(1 << CParser
.T__48
) |
(1 << CParser
.T__49
) |
(1 << CParser
.T__50
) |
(1 << CParser
.T__51
) |
(1 << CParser
.T__52
) |
(1 << CParser
.T__53
) |
(1 << CParser
.T__54
) |
(1 << CParser
.T__55
) |
(1 << CParser
.T__56
) |
(1 << CParser
.T__57
) |
(1 << CParser
.T__58
) |
(1 << CParser
.T__59
) |
(1 << CParser
.T__60
) |
(1 << CParser
.T__61
) |
(1 << CParser
.T__62
))) != 0) or ((((_la
- 64)) & ~
0x3f) == 0 and ((1 << (_la
- 64)) & ((1 << (CParser
.T__63
- 64)) |
(1 << (CParser
.T__64
- 64)) |
(1 << (CParser
.T__65
- 64)) |
(1 << (CParser
.T__66
- 64)) |
(1 << (CParser
.T__67
- 64)) |
(1 << (CParser
.T__68
- 64)) |
(1 << (CParser
.T__69
- 64)) |
(1 << (CParser
.T__70
- 64)) |
(1 << (CParser
.T__71
- 64)) |
(1 << (CParser
.T__72
- 64)) |
(1 << (CParser
.T__73
- 64)) |
(1 << (CParser
.T__74
- 64)) |
(1 << (CParser
.T__75
- 64)) |
(1 << (CParser
.T__76
- 64)) |
(1 << (CParser
.T__77
- 64)) |
(1 << (CParser
.T__78
- 64)) |
(1 << (CParser
.T__79
- 64)) |
(1 << (CParser
.T__80
- 64)) |
(1 << (CParser
.T__81
- 64)) |
(1 << (CParser
.T__82
- 64)) |
(1 << (CParser
.T__83
- 64)) |
(1 << (CParser
.T__84
- 64)) |
(1 << (CParser
.T__85
- 64)) |
(1 << (CParser
.T__86
- 64)) |
(1 << (CParser
.T__87
- 64)) |
(1 << (CParser
.T__88
- 64)) |
(1 << (CParser
.T__89
- 64)) |
(1 << (CParser
.T__90
- 64)) |
(1 << (CParser
.T__91
- 64)) |
(1 << (CParser
.IDENTIFIER
- 64)) |
(1 << (CParser
.CHARACTER_LITERAL
- 64)) |
(1 << (CParser
.STRING_LITERAL
- 64)) |
(1 << (CParser
.HEX_LITERAL
- 64)) |
(1 << (CParser
.DECIMAL_LITERAL
- 64)) |
(1 << (CParser
.OCTAL_LITERAL
- 64)) |
(1 << (CParser
.FLOATING_POINT_LITERAL
- 64)) |
(1 << (CParser
.WS
- 64)) |
(1 << (CParser
.BS
- 64)) |
(1 << (CParser
.UnicodeVocabulary
- 64)) |
(1 << (CParser
.COMMENT
- 64)) |
(1 << (CParser
.LINE_COMMENT
- 64)) |
(1 << (CParser
.LINE_COMMAND
- 64)))) != 0):
5326 _la
= self
._input
.LA(1)
5327 if _la
<= 0 or _la
==CParser
.T__19
:
5328 self
._errHandler
.recoverInline(self
)
5330 self
._errHandler
.reportMatch(self
)
5333 self
._errHandler
.sync(self
)
5334 _la
= self
._input
.LA(1)
5337 self
.match(CParser
.T__19
)
5338 except RecognitionException
as re
:
5339 localctx
.exception
= re
5340 self
._errHandler
.reportError(self
, re
)
5341 self
._errHandler
.recover(self
, re
)
5346 class Macro_statementContext(ParserRuleContext
):
5348 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5349 super().__init
__(parent
, invokingState
)
5350 self
.parser
= parser
5352 def IDENTIFIER(self
):
5353 return self
.getToken(CParser
.IDENTIFIER
, 0)
5355 def declaration(self
, i
:int=None):
5357 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
5359 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
5362 def statement_list(self
):
5363 return self
.getTypedRuleContext(CParser
.Statement_listContext
,0)
5366 def expression(self
):
5367 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5370 def getRuleIndex(self
):
5371 return CParser
.RULE_macro_statement
5373 def enterRule(self
, listener
:ParseTreeListener
):
5374 if hasattr( listener
, "enterMacro_statement" ):
5375 listener
.enterMacro_statement(self
)
5377 def exitRule(self
, listener
:ParseTreeListener
):
5378 if hasattr( listener
, "exitMacro_statement" ):
5379 listener
.exitMacro_statement(self
)
5384 def macro_statement(self
):
5386 localctx
= CParser
.Macro_statementContext(self
, self
._ctx
, self
.state
)
5387 self
.enterRule(localctx
, 126, self
.RULE_macro_statement
)
5388 self
._la
= 0 # Token type
5390 self
.enterOuterAlt(localctx
, 1)
5392 self
.match(CParser
.IDENTIFIER
)
5394 self
.match(CParser
.T__37
)
5396 self
._errHandler
.sync(self
)
5397 _alt
= self
._interp
.adaptivePredict(self
._input
,97,self
._ctx
)
5398 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5403 self
._errHandler
.sync(self
)
5404 _alt
= self
._interp
.adaptivePredict(self
._input
,97,self
._ctx
)
5407 self
._errHandler
.sync(self
)
5408 la_
= self
._interp
.adaptivePredict(self
._input
,98,self
._ctx
)
5411 self
.statement_list()
5415 self
._errHandler
.sync(self
)
5416 _la
= self
._input
.LA(1)
5417 if ((((_la
- 38)) & ~
0x3f) == 0 and ((1 << (_la
- 38)) & ((1 << (CParser
.T__37
- 38)) |
(1 << (CParser
.T__41
- 38)) |
(1 << (CParser
.T__43
- 38)) |
(1 << (CParser
.T__44
- 38)) |
(1 << (CParser
.T__47
- 38)) |
(1 << (CParser
.T__48
- 38)) |
(1 << (CParser
.T__49
- 38)) |
(1 << (CParser
.T__52
- 38)) |
(1 << (CParser
.T__53
- 38)) |
(1 << (CParser
.T__54
- 38)) |
(1 << (CParser
.IDENTIFIER
- 38)) |
(1 << (CParser
.CHARACTER_LITERAL
- 38)) |
(1 << (CParser
.STRING_LITERAL
- 38)) |
(1 << (CParser
.HEX_LITERAL
- 38)) |
(1 << (CParser
.DECIMAL_LITERAL
- 38)) |
(1 << (CParser
.OCTAL_LITERAL
- 38)) |
(1 << (CParser
.FLOATING_POINT_LITERAL
- 38)))) != 0):
5423 self
.match(CParser
.T__38
)
5424 except RecognitionException
as re
:
5425 localctx
.exception
= re
5426 self
._errHandler
.reportError(self
, re
)
5427 self
._errHandler
.recover(self
, re
)
5432 class Labeled_statementContext(ParserRuleContext
):
5434 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5435 super().__init
__(parent
, invokingState
)
5436 self
.parser
= parser
5438 def IDENTIFIER(self
):
5439 return self
.getToken(CParser
.IDENTIFIER
, 0)
5441 def statement(self
):
5442 return self
.getTypedRuleContext(CParser
.StatementContext
,0)
5445 def constant_expression(self
):
5446 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
5449 def getRuleIndex(self
):
5450 return CParser
.RULE_labeled_statement
5452 def enterRule(self
, listener
:ParseTreeListener
):
5453 if hasattr( listener
, "enterLabeled_statement" ):
5454 listener
.enterLabeled_statement(self
)
5456 def exitRule(self
, listener
:ParseTreeListener
):
5457 if hasattr( listener
, "exitLabeled_statement" ):
5458 listener
.exitLabeled_statement(self
)
5463 def labeled_statement(self
):
5465 localctx
= CParser
.Labeled_statementContext(self
, self
._ctx
, self
.state
)
5466 self
.enterRule(localctx
, 128, self
.RULE_labeled_statement
)
5469 self
._errHandler
.sync(self
)
5470 token
= self
._input
.LA(1)
5471 if token
in [CParser
.IDENTIFIER
]:
5472 self
.enterOuterAlt(localctx
, 1)
5474 self
.match(CParser
.IDENTIFIER
)
5476 self
.match(CParser
.T__22
)
5480 elif token
in [CParser
.T__81
]:
5481 self
.enterOuterAlt(localctx
, 2)
5483 self
.match(CParser
.T__81
)
5485 self
.constant_expression()
5487 self
.match(CParser
.T__22
)
5491 elif token
in [CParser
.T__82
]:
5492 self
.enterOuterAlt(localctx
, 3)
5494 self
.match(CParser
.T__82
)
5496 self
.match(CParser
.T__22
)
5501 raise NoViableAltException(self
)
5503 except RecognitionException
as re
:
5504 localctx
.exception
= re
5505 self
._errHandler
.reportError(self
, re
)
5506 self
._errHandler
.recover(self
, re
)
5511 class Compound_statementContext(ParserRuleContext
):
5513 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5514 super().__init
__(parent
, invokingState
)
5515 self
.parser
= parser
5517 def declaration(self
, i
:int=None):
5519 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
5521 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
5524 def statement_list(self
):
5525 return self
.getTypedRuleContext(CParser
.Statement_listContext
,0)
5528 def getRuleIndex(self
):
5529 return CParser
.RULE_compound_statement
5531 def enterRule(self
, listener
:ParseTreeListener
):
5532 if hasattr( listener
, "enterCompound_statement" ):
5533 listener
.enterCompound_statement(self
)
5535 def exitRule(self
, listener
:ParseTreeListener
):
5536 if hasattr( listener
, "exitCompound_statement" ):
5537 listener
.exitCompound_statement(self
)
5542 def compound_statement(self
):
5544 localctx
= CParser
.Compound_statementContext(self
, self
._ctx
, self
.state
)
5545 self
.enterRule(localctx
, 130, self
.RULE_compound_statement
)
5546 self
._la
= 0 # Token type
5548 self
.enterOuterAlt(localctx
, 1)
5550 self
.match(CParser
.T__0
)
5552 self
._errHandler
.sync(self
)
5553 _alt
= self
._interp
.adaptivePredict(self
._input
,101,self
._ctx
)
5554 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5559 self
._errHandler
.sync(self
)
5560 _alt
= self
._interp
.adaptivePredict(self
._input
,101,self
._ctx
)
5563 self
._errHandler
.sync(self
)
5564 _la
= self
._input
.LA(1)
5565 if (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__0
) |
(1 << CParser
.T__1
) |
(1 << CParser
.T__2
) |
(1 << CParser
.T__5
) |
(1 << CParser
.T__6
) |
(1 << CParser
.T__7
) |
(1 << CParser
.T__8
) |
(1 << CParser
.T__9
) |
(1 << CParser
.T__10
) |
(1 << CParser
.T__11
) |
(1 << CParser
.T__12
) |
(1 << CParser
.T__13
) |
(1 << CParser
.T__14
) |
(1 << CParser
.T__15
) |
(1 << CParser
.T__16
) |
(1 << CParser
.T__17
) |
(1 << CParser
.T__18
) |
(1 << CParser
.T__20
) |
(1 << CParser
.T__21
) |
(1 << CParser
.T__23
) |
(1 << CParser
.T__24
) |
(1 << CParser
.T__25
) |
(1 << CParser
.T__26
) |
(1 << CParser
.T__27
) |
(1 << CParser
.T__28
) |
(1 << CParser
.T__29
) |
(1 << CParser
.T__30
) |
(1 << CParser
.T__31
) |
(1 << CParser
.T__32
) |
(1 << CParser
.T__33
) |
(1 << CParser
.T__34
) |
(1 << CParser
.T__35
) |
(1 << CParser
.T__36
) |
(1 << CParser
.T__37
) |
(1 << CParser
.T__41
) |
(1 << CParser
.T__43
) |
(1 << CParser
.T__44
) |
(1 << CParser
.T__47
) |
(1 << CParser
.T__48
) |
(1 << CParser
.T__49
) |
(1 << CParser
.T__52
) |
(1 << CParser
.T__53
) |
(1 << CParser
.T__54
))) != 0) or ((((_la
- 79)) & ~
0x3f) == 0 and ((1 << (_la
- 79)) & ((1 << (CParser
.T__78
- 79)) |
(1 << (CParser
.T__79
- 79)) |
(1 << (CParser
.T__80
- 79)) |
(1 << (CParser
.T__81
- 79)) |
(1 << (CParser
.T__82
- 79)) |
(1 << (CParser
.T__83
- 79)) |
(1 << (CParser
.T__85
- 79)) |
(1 << (CParser
.T__86
- 79)) |
(1 << (CParser
.T__87
- 79)) |
(1 << (CParser
.T__88
- 79)) |
(1 << (CParser
.T__89
- 79)) |
(1 << (CParser
.T__90
- 79)) |
(1 << (CParser
.T__91
- 79)) |
(1 << (CParser
.IDENTIFIER
- 79)) |
(1 << (CParser
.CHARACTER_LITERAL
- 79)) |
(1 << (CParser
.STRING_LITERAL
- 79)) |
(1 << (CParser
.HEX_LITERAL
- 79)) |
(1 << (CParser
.DECIMAL_LITERAL
- 79)) |
(1 << (CParser
.OCTAL_LITERAL
- 79)) |
(1 << (CParser
.FLOATING_POINT_LITERAL
- 79)))) != 0):
5567 self
.statement_list()
5571 self
.match(CParser
.T__19
)
5572 except RecognitionException
as re
:
5573 localctx
.exception
= re
5574 self
._errHandler
.reportError(self
, re
)
5575 self
._errHandler
.recover(self
, re
)
5580 class Statement_listContext(ParserRuleContext
):
5582 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5583 super().__init
__(parent
, invokingState
)
5584 self
.parser
= parser
5586 def statement(self
, i
:int=None):
5588 return self
.getTypedRuleContexts(CParser
.StatementContext
)
5590 return self
.getTypedRuleContext(CParser
.StatementContext
,i
)
5593 def getRuleIndex(self
):
5594 return CParser
.RULE_statement_list
5596 def enterRule(self
, listener
:ParseTreeListener
):
5597 if hasattr( listener
, "enterStatement_list" ):
5598 listener
.enterStatement_list(self
)
5600 def exitRule(self
, listener
:ParseTreeListener
):
5601 if hasattr( listener
, "exitStatement_list" ):
5602 listener
.exitStatement_list(self
)
5607 def statement_list(self
):
5609 localctx
= CParser
.Statement_listContext(self
, self
._ctx
, self
.state
)
5610 self
.enterRule(localctx
, 132, self
.RULE_statement_list
)
5612 self
.enterOuterAlt(localctx
, 1)
5614 self
._errHandler
.sync(self
)
5616 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5622 raise NoViableAltException(self
)
5624 self
._errHandler
.sync(self
)
5625 _alt
= self
._interp
.adaptivePredict(self
._input
,103,self
._ctx
)
5627 except RecognitionException
as re
:
5628 localctx
.exception
= re
5629 self
._errHandler
.reportError(self
, re
)
5630 self
._errHandler
.recover(self
, re
)
5635 class Expression_statementContext(ParserRuleContext
):
5637 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5638 super().__init
__(parent
, invokingState
)
5639 self
.parser
= parser
5641 def expression(self
):
5642 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5645 def getRuleIndex(self
):
5646 return CParser
.RULE_expression_statement
5648 def enterRule(self
, listener
:ParseTreeListener
):
5649 if hasattr( listener
, "enterExpression_statement" ):
5650 listener
.enterExpression_statement(self
)
5652 def exitRule(self
, listener
:ParseTreeListener
):
5653 if hasattr( listener
, "exitExpression_statement" ):
5654 listener
.exitExpression_statement(self
)
5659 def expression_statement(self
):
5661 localctx
= CParser
.Expression_statementContext(self
, self
._ctx
, self
.state
)
5662 self
.enterRule(localctx
, 134, self
.RULE_expression_statement
)
5665 self
._errHandler
.sync(self
)
5666 token
= self
._input
.LA(1)
5667 if token
in [CParser
.T__1
]:
5668 self
.enterOuterAlt(localctx
, 1)
5670 self
.match(CParser
.T__1
)
5672 elif token
in [CParser
.T__37
, CParser
.T__41
, CParser
.T__43
, CParser
.T__44
, CParser
.T__47
, CParser
.T__48
, CParser
.T__49
, CParser
.T__52
, CParser
.T__53
, CParser
.T__54
, CParser
.IDENTIFIER
, CParser
.CHARACTER_LITERAL
, CParser
.STRING_LITERAL
, CParser
.HEX_LITERAL
, CParser
.DECIMAL_LITERAL
, CParser
.OCTAL_LITERAL
, CParser
.FLOATING_POINT_LITERAL
]:
5673 self
.enterOuterAlt(localctx
, 2)
5677 self
.match(CParser
.T__1
)
5680 raise NoViableAltException(self
)
5682 except RecognitionException
as re
:
5683 localctx
.exception
= re
5684 self
._errHandler
.reportError(self
, re
)
5685 self
._errHandler
.recover(self
, re
)
5690 class Selection_statementContext(ParserRuleContext
):
5692 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5693 super().__init
__(parent
, invokingState
)
5694 self
.parser
= parser
5695 self
.e
= None # ExpressionContext
5697 def statement(self
, i
:int=None):
5699 return self
.getTypedRuleContexts(CParser
.StatementContext
)
5701 return self
.getTypedRuleContext(CParser
.StatementContext
,i
)
5704 def expression(self
):
5705 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5708 def getRuleIndex(self
):
5709 return CParser
.RULE_selection_statement
5711 def enterRule(self
, listener
:ParseTreeListener
):
5712 if hasattr( listener
, "enterSelection_statement" ):
5713 listener
.enterSelection_statement(self
)
5715 def exitRule(self
, listener
:ParseTreeListener
):
5716 if hasattr( listener
, "exitSelection_statement" ):
5717 listener
.exitSelection_statement(self
)
5722 def selection_statement(self
):
5724 localctx
= CParser
.Selection_statementContext(self
, self
._ctx
, self
.state
)
5725 self
.enterRule(localctx
, 136, self
.RULE_selection_statement
)
5728 self
._errHandler
.sync(self
)
5729 token
= self
._input
.LA(1)
5730 if token
in [CParser
.T__83
]:
5731 self
.enterOuterAlt(localctx
, 1)
5733 self
.match(CParser
.T__83
)
5735 self
.match(CParser
.T__37
)
5737 localctx
.e
= self
.expression()
5739 self
.match(CParser
.T__38
)
5740 self
.StorePredicateExpression((None if localctx
.e
is None else localctx
.e
.start
).line
, (None if localctx
.e
is None else localctx
.e
.start
).column
, (None if localctx
.e
is None else localctx
.e
.stop
).line
, (None if localctx
.e
is None else localctx
.e
.stop
).column
, (None if localctx
.e
is None else self
._input
.getText((localctx
.e
.start
,localctx
.e
.stop
))))
5744 self
._errHandler
.sync(self
)
5745 la_
= self
._interp
.adaptivePredict(self
._input
,105,self
._ctx
)
5748 self
.match(CParser
.T__84
)
5754 elif token
in [CParser
.T__85
]:
5755 self
.enterOuterAlt(localctx
, 2)
5757 self
.match(CParser
.T__85
)
5759 self
.match(CParser
.T__37
)
5763 self
.match(CParser
.T__38
)
5768 raise NoViableAltException(self
)
5770 except RecognitionException
as re
:
5771 localctx
.exception
= re
5772 self
._errHandler
.reportError(self
, re
)
5773 self
._errHandler
.recover(self
, re
)
5778 class Iteration_statementContext(ParserRuleContext
):
5780 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5781 super().__init
__(parent
, invokingState
)
5782 self
.parser
= parser
5783 self
.e
= None # ExpressionContext
5785 def statement(self
):
5786 return self
.getTypedRuleContext(CParser
.StatementContext
,0)
5789 def expression(self
):
5790 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5793 def getRuleIndex(self
):
5794 return CParser
.RULE_iteration_statement
5796 def enterRule(self
, listener
:ParseTreeListener
):
5797 if hasattr( listener
, "enterIteration_statement" ):
5798 listener
.enterIteration_statement(self
)
5800 def exitRule(self
, listener
:ParseTreeListener
):
5801 if hasattr( listener
, "exitIteration_statement" ):
5802 listener
.exitIteration_statement(self
)
5807 def iteration_statement(self
):
5809 localctx
= CParser
.Iteration_statementContext(self
, self
._ctx
, self
.state
)
5810 self
.enterRule(localctx
, 138, self
.RULE_iteration_statement
)
5813 self
._errHandler
.sync(self
)
5814 token
= self
._input
.LA(1)
5815 if token
in [CParser
.T__86
]:
5816 self
.enterOuterAlt(localctx
, 1)
5818 self
.match(CParser
.T__86
)
5820 self
.match(CParser
.T__37
)
5822 localctx
.e
= self
.expression()
5824 self
.match(CParser
.T__38
)
5827 self
.StorePredicateExpression((None if localctx
.e
is None else localctx
.e
.start
).line
, (None if localctx
.e
is None else localctx
.e
.start
).column
, (None if localctx
.e
is None else localctx
.e
.stop
).line
, (None if localctx
.e
is None else localctx
.e
.stop
).column
, (None if localctx
.e
is None else self
._input
.getText((localctx
.e
.start
,localctx
.e
.stop
))))
5829 elif token
in [CParser
.T__87
]:
5830 self
.enterOuterAlt(localctx
, 2)
5832 self
.match(CParser
.T__87
)
5836 self
.match(CParser
.T__86
)
5838 self
.match(CParser
.T__37
)
5840 localctx
.e
= self
.expression()
5842 self
.match(CParser
.T__38
)
5844 self
.match(CParser
.T__1
)
5845 self
.StorePredicateExpression((None if localctx
.e
is None else localctx
.e
.start
).line
, (None if localctx
.e
is None else localctx
.e
.start
).column
, (None if localctx
.e
is None else localctx
.e
.stop
).line
, (None if localctx
.e
is None else localctx
.e
.stop
).column
, (None if localctx
.e
is None else self
._input
.getText((localctx
.e
.start
,localctx
.e
.stop
))))
5848 raise NoViableAltException(self
)
5850 except RecognitionException
as re
:
5851 localctx
.exception
= re
5852 self
._errHandler
.reportError(self
, re
)
5853 self
._errHandler
.recover(self
, re
)
5858 class Jump_statementContext(ParserRuleContext
):
5860 def __init__(self
, parser
, parent
:ParserRuleContext
=None, invokingState
:int=-1):
5861 super().__init
__(parent
, invokingState
)
5862 self
.parser
= parser
5864 def IDENTIFIER(self
):
5865 return self
.getToken(CParser
.IDENTIFIER
, 0)
5867 def expression(self
):
5868 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5871 def getRuleIndex(self
):
5872 return CParser
.RULE_jump_statement
5874 def enterRule(self
, listener
:ParseTreeListener
):
5875 if hasattr( listener
, "enterJump_statement" ):
5876 listener
.enterJump_statement(self
)
5878 def exitRule(self
, listener
:ParseTreeListener
):
5879 if hasattr( listener
, "exitJump_statement" ):
5880 listener
.exitJump_statement(self
)
5885 def jump_statement(self
):
5887 localctx
= CParser
.Jump_statementContext(self
, self
._ctx
, self
.state
)
5888 self
.enterRule(localctx
, 140, self
.RULE_jump_statement
)
5891 self
._errHandler
.sync(self
)
5892 la_
= self
._interp
.adaptivePredict(self
._input
,108,self
._ctx
)
5894 self
.enterOuterAlt(localctx
, 1)
5896 self
.match(CParser
.T__88
)
5898 self
.match(CParser
.IDENTIFIER
)
5900 self
.match(CParser
.T__1
)
5904 self
.enterOuterAlt(localctx
, 2)
5906 self
.match(CParser
.T__89
)
5908 self
.match(CParser
.T__1
)
5912 self
.enterOuterAlt(localctx
, 3)
5914 self
.match(CParser
.T__90
)
5916 self
.match(CParser
.T__1
)
5920 self
.enterOuterAlt(localctx
, 4)
5922 self
.match(CParser
.T__91
)
5924 self
.match(CParser
.T__1
)
5928 self
.enterOuterAlt(localctx
, 5)
5930 self
.match(CParser
.T__91
)
5934 self
.match(CParser
.T__1
)
5938 except RecognitionException
as re
:
5939 localctx
.exception
= re
5940 self
._errHandler
.reportError(self
, re
)
5941 self
._errHandler
.recover(self
, re
)