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 # @param input Type: TokenStream
745 # @param output= sys.stdout Type: TextIO
746 def __init__(self
,input,output
= sys
.stdout
):
747 super().__init
__(input, output
)
748 self
.checkVersion("4.7.1")
749 self
._interp
= ParserATNSimulator(self
, self
.atn
, self
.decisionsToDFA
, self
.sharedContextCache
)
750 self
._predicates
= None
755 def printTokenInfo(self
,line
,offset
,tokenText
):
756 print(str(line
)+ ',' + str(offset
) + ':' + str(tokenText
))
758 def StorePredicateExpression(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,Text
):
759 PredExp
= CodeFragment
.PredicateExpression(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
760 FileProfile
.PredicateExpressionList
.append(PredExp
)
762 def StoreEnumerationDefinition(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,Text
):
763 EnumDef
= CodeFragment
.EnumerationDefinition(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
764 FileProfile
.EnumerationDefinitionList
.append(EnumDef
)
766 def StoreStructUnionDefinition(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,Text
):
767 SUDef
= CodeFragment
.StructUnionDefinition(Text
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
768 FileProfile
.StructUnionDefinitionList
.append(SUDef
)
770 def StoreTypedefDefinition(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,FromText
,ToText
):
771 Tdef
= CodeFragment
.TypedefDefinition(FromText
, ToText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
772 FileProfile
.TypedefDefinitionList
.append(Tdef
)
774 def StoreFunctionDefinition(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,ModifierText
,DeclText
,LeftBraceLine
,LeftBraceOffset
,DeclLine
,DeclOffset
):
775 FuncDef
= CodeFragment
.FunctionDefinition(ModifierText
, DeclText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
), (LeftBraceLine
, LeftBraceOffset
), (DeclLine
, DeclOffset
))
776 FileProfile
.FunctionDefinitionList
.append(FuncDef
)
778 def StoreVariableDeclaration(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,ModifierText
,DeclText
):
779 VarDecl
= CodeFragment
.VariableDeclaration(ModifierText
, DeclText
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
780 FileProfile
.VariableDeclarationList
.append(VarDecl
)
782 def StoreFunctionCalling(self
,StartLine
,StartOffset
,EndLine
,EndOffset
,FuncName
,ParamList
):
783 FuncCall
= CodeFragment
.FunctionCalling(FuncName
, ParamList
, (StartLine
, StartOffset
), (EndLine
, EndOffset
))
784 FileProfile
.FunctionCallingList
.append(FuncCall
)
788 class Translation_unitContext(ParserRuleContext
):
790 # @param parent=None Type: ParserRuleContext
791 # @param invokingState=-1 Type: int
792 def __init__(self
,parser
,parent
=None,invokingState
=-1):
793 super().__init
__(parent
, invokingState
)
796 # @param i=None Type: int
797 def external_declaration(self
,i
=None):
799 return self
.getTypedRuleContexts(CParser
.External_declarationContext
)
801 return self
.getTypedRuleContext(CParser
.External_declarationContext
,i
)
804 def getRuleIndex(self
):
805 return CParser
.RULE_translation_unit
807 # @param listener Type: ParseTreeListener
808 def enterRule(self
,listener
):
809 if hasattr( listener
, "enterTranslation_unit" ):
810 listener
.enterTranslation_unit(self
)
812 # @param listener Type: ParseTreeListener
813 def exitRule(self
,listener
):
814 if hasattr( listener
, "exitTranslation_unit" ):
815 listener
.exitTranslation_unit(self
)
820 def translation_unit(self
):
822 localctx
= CParser
.Translation_unitContext(self
, self
._ctx
, self
.state
)
823 self
.enterRule(localctx
, 0, self
.RULE_translation_unit
)
824 self
._la
= 0 # Token type
826 self
.enterOuterAlt(localctx
, 1)
828 self
._errHandler
.sync(self
)
829 _la
= self
._input
.LA(1)
830 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
:
832 self
.external_declaration()
834 self
._errHandler
.sync(self
)
835 _la
= self
._input
.LA(1)
837 except RecognitionException
as re
:
838 localctx
.exception
= re
839 self
._errHandler
.reportError(self
, re
)
840 self
._errHandler
.recover(self
, re
)
845 class External_declarationContext(ParserRuleContext
):
847 # @param parent=None Type: ParserRuleContext
848 # @param invokingState=-1 Type: int
849 def __init__(self
,parser
,parent
=None,invokingState
=-1):
850 super().__init
__(parent
, invokingState
)
853 def declarator(self
):
854 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
857 def declaration_specifiers(self
):
858 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
861 # @param i=None Type: int
862 def declaration(self
,i
=None):
864 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
866 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
869 def function_definition(self
):
870 return self
.getTypedRuleContext(CParser
.Function_definitionContext
,0)
873 def macro_statement(self
):
874 return self
.getTypedRuleContext(CParser
.Macro_statementContext
,0)
877 def getRuleIndex(self
):
878 return CParser
.RULE_external_declaration
880 # @param listener Type: ParseTreeListener
881 def enterRule(self
,listener
):
882 if hasattr( listener
, "enterExternal_declaration" ):
883 listener
.enterExternal_declaration(self
)
885 # @param listener Type: ParseTreeListener
886 def exitRule(self
,listener
):
887 if hasattr( listener
, "exitExternal_declaration" ):
888 listener
.exitExternal_declaration(self
)
893 def external_declaration(self
):
895 localctx
= CParser
.External_declarationContext(self
, self
._ctx
, self
.state
)
896 self
.enterRule(localctx
, 2, self
.RULE_external_declaration
)
897 self
._la
= 0 # Token type
900 self
._errHandler
.sync(self
)
901 la_
= self
._interp
.adaptivePredict(self
._input
,4,self
._ctx
)
903 self
.enterOuterAlt(localctx
, 1)
905 self
._errHandler
.sync(self
)
906 la_
= self
._interp
.adaptivePredict(self
._input
,1,self
._ctx
)
909 self
.declaration_specifiers()
915 self
._errHandler
.sync(self
)
916 _la
= self
._input
.LA(1)
917 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
:
921 self
._errHandler
.sync(self
)
922 _la
= self
._input
.LA(1)
925 self
.match(CParser
.T__0
)
929 self
.enterOuterAlt(localctx
, 2)
931 self
.function_definition()
935 self
.enterOuterAlt(localctx
, 3)
941 self
.enterOuterAlt(localctx
, 4)
943 self
.macro_statement()
945 self
._errHandler
.sync(self
)
946 _la
= self
._input
.LA(1)
947 if _la
==CParser
.T__1
:
949 self
.match(CParser
.T__1
)
955 except RecognitionException
as re
:
956 localctx
.exception
= re
957 self
._errHandler
.reportError(self
, re
)
958 self
._errHandler
.recover(self
, re
)
963 class Function_definitionContext(ParserRuleContext
):
965 # @param parent=None Type: ParserRuleContext
966 # @param invokingState=-1 Type: int
967 def __init__(self
,parser
,parent
=None,invokingState
=-1):
968 super().__init
__(parent
, invokingState
)
970 self
.ModifierText
= ''
976 self
.d
= None # Declaration_specifiersContext
977 self
._declaration
_specifiers
= None # Declaration_specifiersContext
978 self
._declarator
= None # DeclaratorContext
979 self
.a
= None # Compound_statementContext
980 self
.b
= None # Compound_statementContext
982 def declarator(self
):
983 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
986 def compound_statement(self
):
987 return self
.getTypedRuleContext(CParser
.Compound_statementContext
,0)
990 def declaration_specifiers(self
):
991 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
994 # @param i=None Type: int
995 def declaration(self
,i
=None):
997 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
999 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
1002 def getRuleIndex(self
):
1003 return CParser
.RULE_function_definition
1005 # @param listener Type: ParseTreeListener
1006 def enterRule(self
,listener
):
1007 if hasattr( listener
, "enterFunction_definition" ):
1008 listener
.enterFunction_definition(self
)
1010 # @param listener Type: ParseTreeListener
1011 def exitRule(self
,listener
):
1012 if hasattr( listener
, "exitFunction_definition" ):
1013 listener
.exitFunction_definition(self
)
1018 def function_definition(self
):
1020 localctx
= CParser
.Function_definitionContext(self
, self
._ctx
, self
.state
)
1021 self
.enterRule(localctx
, 4, self
.RULE_function_definition
)
1030 self
._la
= 0 # Token type
1032 self
.enterOuterAlt(localctx
, 1)
1034 self
._errHandler
.sync(self
)
1035 la_
= self
._interp
.adaptivePredict(self
._input
,5,self
._ctx
)
1038 localctx
.d
= localctx
._declaration
_specifiers
= self
.declaration_specifiers()
1042 localctx
._declarator
= self
.declarator()
1044 self
._errHandler
.sync(self
)
1045 token
= self
._input
.LA(1)
1046 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
]:
1048 self
._errHandler
.sync(self
)
1049 _la
= self
._input
.LA(1)
1054 self
._errHandler
.sync(self
)
1055 _la
= self
._input
.LA(1)
1056 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
):
1060 localctx
.a
= self
.compound_statement()
1062 elif token
in [CParser
.T__0
]:
1064 localctx
.b
= self
.compound_statement()
1067 raise NoViableAltException(self
)
1070 if localctx
.d
!= None:
1071 ModifierText
= (None if localctx
._declaration
_specifiers
is None else self
._input
.getText((localctx
._declaration
_specifiers
.start
,localctx
._declaration
_specifiers
.stop
)))
1074 DeclText
= (None if localctx
._declarator
is None else self
._input
.getText((localctx
._declarator
.start
,localctx
._declarator
.stop
)))
1075 DeclLine
= (None if localctx
._declarator
is None else localctx
._declarator
.start
).line
1076 DeclOffset
= (None if localctx
._declarator
is None else localctx
._declarator
.start
).column
1077 if localctx
.a
!= None:
1078 LBLine
= (None if localctx
.a
is None else localctx
.a
.start
).line
1079 LBOffset
= (None if localctx
.a
is None else localctx
.a
.start
).column
1081 LBLine
= (None if localctx
.b
is None else localctx
.b
.start
).line
1082 LBOffset
= (None if localctx
.b
is None else localctx
.b
.start
).column
1084 self
._ctx
.stop
= self
._input
.LT(-1)
1086 self
.StoreFunctionDefinition(localctx
.start
.line
, localctx
.start
.column
, localctx
.stop
.line
, localctx
.stop
.column
, ModifierText
, DeclText
, LBLine
, LBOffset
, DeclLine
, DeclOffset
)
1088 except RecognitionException
as re
:
1089 localctx
.exception
= re
1090 self
._errHandler
.reportError(self
, re
)
1091 self
._errHandler
.recover(self
, re
)
1096 class Declaration_specifiersContext(ParserRuleContext
):
1098 # @param parent=None Type: ParserRuleContext
1099 # @param invokingState=-1 Type: int
1100 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1101 super().__init
__(parent
, invokingState
)
1102 self
.parser
= parser
1104 # @param i=None Type: int
1105 def storage_class_specifier(self
,i
=None):
1107 return self
.getTypedRuleContexts(CParser
.Storage_class_specifierContext
)
1109 return self
.getTypedRuleContext(CParser
.Storage_class_specifierContext
,i
)
1112 # @param i=None Type: int
1113 def type_specifier(self
,i
=None):
1115 return self
.getTypedRuleContexts(CParser
.Type_specifierContext
)
1117 return self
.getTypedRuleContext(CParser
.Type_specifierContext
,i
)
1120 # @param i=None Type: int
1121 def type_qualifier(self
,i
=None):
1123 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1125 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1128 def getRuleIndex(self
):
1129 return CParser
.RULE_declaration_specifiers
1131 # @param listener Type: ParseTreeListener
1132 def enterRule(self
,listener
):
1133 if hasattr( listener
, "enterDeclaration_specifiers" ):
1134 listener
.enterDeclaration_specifiers(self
)
1136 # @param listener Type: ParseTreeListener
1137 def exitRule(self
,listener
):
1138 if hasattr( listener
, "exitDeclaration_specifiers" ):
1139 listener
.exitDeclaration_specifiers(self
)
1144 def declaration_specifiers(self
):
1146 localctx
= CParser
.Declaration_specifiersContext(self
, self
._ctx
, self
.state
)
1147 self
.enterRule(localctx
, 6, self
.RULE_declaration_specifiers
)
1149 self
.enterOuterAlt(localctx
, 1)
1151 self
._errHandler
.sync(self
)
1153 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1156 self
._errHandler
.sync(self
)
1157 token
= self
._input
.LA(1)
1158 if token
in [CParser
.T__5
, CParser
.T__6
, CParser
.T__7
, CParser
.T__8
, CParser
.T__9
]:
1160 self
.storage_class_specifier()
1162 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
]:
1164 self
.type_specifier()
1166 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
]:
1168 self
.type_qualifier()
1171 raise NoViableAltException(self
)
1175 raise NoViableAltException(self
)
1177 self
._errHandler
.sync(self
)
1178 _alt
= self
._interp
.adaptivePredict(self
._input
,9,self
._ctx
)
1180 except RecognitionException
as re
:
1181 localctx
.exception
= re
1182 self
._errHandler
.reportError(self
, re
)
1183 self
._errHandler
.recover(self
, re
)
1188 class DeclarationContext(ParserRuleContext
):
1190 # @param parent=None Type: ParserRuleContext
1191 # @param invokingState=-1 Type: int
1192 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1193 super().__init
__(parent
, invokingState
)
1194 self
.parser
= parser
1195 self
.a
= None # Token
1196 self
.b
= None # Declaration_specifiersContext
1197 self
.c
= None # Init_declarator_listContext
1198 self
.d
= None # Token
1199 self
.s
= None # Declaration_specifiersContext
1200 self
.t
= None # Init_declarator_listContext
1201 self
.e
= None # Token
1203 def init_declarator_list(self
):
1204 return self
.getTypedRuleContext(CParser
.Init_declarator_listContext
,0)
1207 def declaration_specifiers(self
):
1208 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
1211 def getRuleIndex(self
):
1212 return CParser
.RULE_declaration
1214 # @param listener Type: ParseTreeListener
1215 def enterRule(self
,listener
):
1216 if hasattr( listener
, "enterDeclaration" ):
1217 listener
.enterDeclaration(self
)
1219 # @param listener Type: ParseTreeListener
1220 def exitRule(self
,listener
):
1221 if hasattr( listener
, "exitDeclaration" ):
1222 listener
.exitDeclaration(self
)
1227 def declaration(self
):
1229 localctx
= CParser
.DeclarationContext(self
, self
._ctx
, self
.state
)
1230 self
.enterRule(localctx
, 8, self
.RULE_declaration
)
1231 self
._la
= 0 # Token type
1234 self
._errHandler
.sync(self
)
1235 token
= self
._input
.LA(1)
1236 if token
in [CParser
.T__2
]:
1237 self
.enterOuterAlt(localctx
, 1)
1239 localctx
.a
= self
.match(CParser
.T__2
)
1241 self
._errHandler
.sync(self
)
1242 la_
= self
._interp
.adaptivePredict(self
._input
,10,self
._ctx
)
1245 localctx
.b
= self
.declaration_specifiers()
1249 localctx
.c
= self
.init_declarator_list()
1251 localctx
.d
= self
.match(CParser
.T__1
)
1253 if localctx
.b
is not None:
1254 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
))))
1256 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
))))
1259 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
]:
1260 self
.enterOuterAlt(localctx
, 2)
1262 localctx
.s
= self
.declaration_specifiers()
1264 self
._errHandler
.sync(self
)
1265 _la
= self
._input
.LA(1)
1266 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):
1268 localctx
.t
= self
.init_declarator_list()
1272 localctx
.e
= self
.match(CParser
.T__1
)
1274 if localctx
.t
is not None:
1275 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
))))
1279 raise NoViableAltException(self
)
1281 except RecognitionException
as re
:
1282 localctx
.exception
= re
1283 self
._errHandler
.reportError(self
, re
)
1284 self
._errHandler
.recover(self
, re
)
1289 class Init_declarator_listContext(ParserRuleContext
):
1291 # @param parent=None Type: ParserRuleContext
1292 # @param invokingState=-1 Type: int
1293 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1294 super().__init
__(parent
, invokingState
)
1295 self
.parser
= parser
1297 # @param i=None Type: int
1298 def init_declarator(self
,i
=None):
1300 return self
.getTypedRuleContexts(CParser
.Init_declaratorContext
)
1302 return self
.getTypedRuleContext(CParser
.Init_declaratorContext
,i
)
1305 def getRuleIndex(self
):
1306 return CParser
.RULE_init_declarator_list
1308 # @param listener Type: ParseTreeListener
1309 def enterRule(self
,listener
):
1310 if hasattr( listener
, "enterInit_declarator_list" ):
1311 listener
.enterInit_declarator_list(self
)
1313 # @param listener Type: ParseTreeListener
1314 def exitRule(self
,listener
):
1315 if hasattr( listener
, "exitInit_declarator_list" ):
1316 listener
.exitInit_declarator_list(self
)
1321 def init_declarator_list(self
):
1323 localctx
= CParser
.Init_declarator_listContext(self
, self
._ctx
, self
.state
)
1324 self
.enterRule(localctx
, 10, self
.RULE_init_declarator_list
)
1325 self
._la
= 0 # Token type
1327 self
.enterOuterAlt(localctx
, 1)
1329 self
.init_declarator()
1331 self
._errHandler
.sync(self
)
1332 _la
= self
._input
.LA(1)
1333 while _la
==CParser
.T__3
:
1335 self
.match(CParser
.T__3
)
1337 self
.init_declarator()
1339 self
._errHandler
.sync(self
)
1340 _la
= self
._input
.LA(1)
1342 except RecognitionException
as re
:
1343 localctx
.exception
= re
1344 self
._errHandler
.reportError(self
, re
)
1345 self
._errHandler
.recover(self
, re
)
1350 class Init_declaratorContext(ParserRuleContext
):
1352 # @param parent=None Type: ParserRuleContext
1353 # @param invokingState=-1 Type: int
1354 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1355 super().__init
__(parent
, invokingState
)
1356 self
.parser
= parser
1358 def declarator(self
):
1359 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
1362 def initializer(self
):
1363 return self
.getTypedRuleContext(CParser
.InitializerContext
,0)
1366 def getRuleIndex(self
):
1367 return CParser
.RULE_init_declarator
1369 # @param listener Type: ParseTreeListener
1370 def enterRule(self
,listener
):
1371 if hasattr( listener
, "enterInit_declarator" ):
1372 listener
.enterInit_declarator(self
)
1374 # @param listener Type: ParseTreeListener
1375 def exitRule(self
,listener
):
1376 if hasattr( listener
, "exitInit_declarator" ):
1377 listener
.exitInit_declarator(self
)
1382 def init_declarator(self
):
1384 localctx
= CParser
.Init_declaratorContext(self
, self
._ctx
, self
.state
)
1385 self
.enterRule(localctx
, 12, self
.RULE_init_declarator
)
1386 self
._la
= 0 # Token type
1388 self
.enterOuterAlt(localctx
, 1)
1392 self
._errHandler
.sync(self
)
1393 _la
= self
._input
.LA(1)
1394 if _la
==CParser
.T__4
:
1396 self
.match(CParser
.T__4
)
1401 except RecognitionException
as re
:
1402 localctx
.exception
= re
1403 self
._errHandler
.reportError(self
, re
)
1404 self
._errHandler
.recover(self
, re
)
1409 class Storage_class_specifierContext(ParserRuleContext
):
1411 # @param parent=None Type: ParserRuleContext
1412 # @param invokingState=-1 Type: int
1413 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1414 super().__init
__(parent
, invokingState
)
1415 self
.parser
= parser
1418 def getRuleIndex(self
):
1419 return CParser
.RULE_storage_class_specifier
1421 # @param listener Type: ParseTreeListener
1422 def enterRule(self
,listener
):
1423 if hasattr( listener
, "enterStorage_class_specifier" ):
1424 listener
.enterStorage_class_specifier(self
)
1426 # @param listener Type: ParseTreeListener
1427 def exitRule(self
,listener
):
1428 if hasattr( listener
, "exitStorage_class_specifier" ):
1429 listener
.exitStorage_class_specifier(self
)
1434 def storage_class_specifier(self
):
1436 localctx
= CParser
.Storage_class_specifierContext(self
, self
._ctx
, self
.state
)
1437 self
.enterRule(localctx
, 14, self
.RULE_storage_class_specifier
)
1438 self
._la
= 0 # Token type
1440 self
.enterOuterAlt(localctx
, 1)
1442 _la
= self
._input
.LA(1)
1443 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)):
1444 self
._errHandler
.recoverInline(self
)
1446 self
._errHandler
.reportMatch(self
)
1448 except RecognitionException
as re
:
1449 localctx
.exception
= re
1450 self
._errHandler
.reportError(self
, re
)
1451 self
._errHandler
.recover(self
, re
)
1456 class Type_specifierContext(ParserRuleContext
):
1458 # @param parent=None Type: ParserRuleContext
1459 # @param invokingState=-1 Type: int
1460 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1461 super().__init
__(parent
, invokingState
)
1462 self
.parser
= parser
1463 self
.s
= None # Struct_or_union_specifierContext
1464 self
.e
= None # Enum_specifierContext
1466 def struct_or_union_specifier(self
):
1467 return self
.getTypedRuleContext(CParser
.Struct_or_union_specifierContext
,0)
1470 def enum_specifier(self
):
1471 return self
.getTypedRuleContext(CParser
.Enum_specifierContext
,0)
1474 def IDENTIFIER(self
):
1475 return self
.getToken(CParser
.IDENTIFIER
, 0)
1477 def declarator(self
):
1478 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
1481 # @param i=None Type: int
1482 def type_qualifier(self
,i
=None):
1484 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1486 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1490 return self
.getTypedRuleContext(CParser
.Type_idContext
,0)
1493 def getRuleIndex(self
):
1494 return CParser
.RULE_type_specifier
1496 # @param listener Type: ParseTreeListener
1497 def enterRule(self
,listener
):
1498 if hasattr( listener
, "enterType_specifier" ):
1499 listener
.enterType_specifier(self
)
1501 # @param listener Type: ParseTreeListener
1502 def exitRule(self
,listener
):
1503 if hasattr( listener
, "exitType_specifier" ):
1504 listener
.exitType_specifier(self
)
1509 def type_specifier(self
):
1511 localctx
= CParser
.Type_specifierContext(self
, self
._ctx
, self
.state
)
1512 self
.enterRule(localctx
, 16, self
.RULE_type_specifier
)
1515 self
._errHandler
.sync(self
)
1516 la_
= self
._interp
.adaptivePredict(self
._input
,16,self
._ctx
)
1518 self
.enterOuterAlt(localctx
, 1)
1520 self
.match(CParser
.T__10
)
1524 self
.enterOuterAlt(localctx
, 2)
1526 self
.match(CParser
.T__11
)
1530 self
.enterOuterAlt(localctx
, 3)
1532 self
.match(CParser
.T__12
)
1536 self
.enterOuterAlt(localctx
, 4)
1538 self
.match(CParser
.T__13
)
1542 self
.enterOuterAlt(localctx
, 5)
1544 self
.match(CParser
.T__14
)
1548 self
.enterOuterAlt(localctx
, 6)
1550 self
.match(CParser
.T__15
)
1554 self
.enterOuterAlt(localctx
, 7)
1556 self
.match(CParser
.T__16
)
1560 self
.enterOuterAlt(localctx
, 8)
1562 self
.match(CParser
.T__17
)
1566 self
.enterOuterAlt(localctx
, 9)
1568 self
.match(CParser
.T__18
)
1572 self
.enterOuterAlt(localctx
, 10)
1574 localctx
.s
= self
.struct_or_union_specifier()
1576 if localctx
.s
.stop
is not None:
1577 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
))))
1582 self
.enterOuterAlt(localctx
, 11)
1584 localctx
.e
= self
.enum_specifier()
1586 if localctx
.e
.stop
is not None:
1587 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
))))
1592 self
.enterOuterAlt(localctx
, 12)
1594 self
.match(CParser
.IDENTIFIER
)
1596 self
._errHandler
.sync(self
)
1597 _alt
= self
._interp
.adaptivePredict(self
._input
,15,self
._ctx
)
1598 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1601 self
.type_qualifier()
1603 self
._errHandler
.sync(self
)
1604 _alt
= self
._interp
.adaptivePredict(self
._input
,15,self
._ctx
)
1611 self
.enterOuterAlt(localctx
, 13)
1617 except RecognitionException
as re
:
1618 localctx
.exception
= re
1619 self
._errHandler
.reportError(self
, re
)
1620 self
._errHandler
.recover(self
, re
)
1625 class Type_idContext(ParserRuleContext
):
1627 # @param parent=None Type: ParserRuleContext
1628 # @param invokingState=-1 Type: int
1629 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1630 super().__init
__(parent
, invokingState
)
1631 self
.parser
= parser
1633 def IDENTIFIER(self
):
1634 return self
.getToken(CParser
.IDENTIFIER
, 0)
1636 def getRuleIndex(self
):
1637 return CParser
.RULE_type_id
1639 # @param listener Type: ParseTreeListener
1640 def enterRule(self
,listener
):
1641 if hasattr( listener
, "enterType_id" ):
1642 listener
.enterType_id(self
)
1644 # @param listener Type: ParseTreeListener
1645 def exitRule(self
,listener
):
1646 if hasattr( listener
, "exitType_id" ):
1647 listener
.exitType_id(self
)
1654 localctx
= CParser
.Type_idContext(self
, self
._ctx
, self
.state
)
1655 self
.enterRule(localctx
, 18, self
.RULE_type_id
)
1657 self
.enterOuterAlt(localctx
, 1)
1659 self
.match(CParser
.IDENTIFIER
)
1660 except RecognitionException
as re
:
1661 localctx
.exception
= re
1662 self
._errHandler
.reportError(self
, re
)
1663 self
._errHandler
.recover(self
, re
)
1668 class Struct_or_union_specifierContext(ParserRuleContext
):
1670 # @param parent=None Type: ParserRuleContext
1671 # @param invokingState=-1 Type: int
1672 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1673 super().__init
__(parent
, invokingState
)
1674 self
.parser
= parser
1676 def struct_or_union(self
):
1677 return self
.getTypedRuleContext(CParser
.Struct_or_unionContext
,0)
1680 def struct_declaration_list(self
):
1681 return self
.getTypedRuleContext(CParser
.Struct_declaration_listContext
,0)
1684 def IDENTIFIER(self
):
1685 return self
.getToken(CParser
.IDENTIFIER
, 0)
1687 def getRuleIndex(self
):
1688 return CParser
.RULE_struct_or_union_specifier
1690 # @param listener Type: ParseTreeListener
1691 def enterRule(self
,listener
):
1692 if hasattr( listener
, "enterStruct_or_union_specifier" ):
1693 listener
.enterStruct_or_union_specifier(self
)
1695 # @param listener Type: ParseTreeListener
1696 def exitRule(self
,listener
):
1697 if hasattr( listener
, "exitStruct_or_union_specifier" ):
1698 listener
.exitStruct_or_union_specifier(self
)
1703 def struct_or_union_specifier(self
):
1705 localctx
= CParser
.Struct_or_union_specifierContext(self
, self
._ctx
, self
.state
)
1706 self
.enterRule(localctx
, 20, self
.RULE_struct_or_union_specifier
)
1707 self
._la
= 0 # Token type
1710 self
._errHandler
.sync(self
)
1711 la_
= self
._interp
.adaptivePredict(self
._input
,18,self
._ctx
)
1713 self
.enterOuterAlt(localctx
, 1)
1715 self
.struct_or_union()
1717 self
._errHandler
.sync(self
)
1718 _la
= self
._input
.LA(1)
1719 if _la
==CParser
.IDENTIFIER
:
1721 self
.match(CParser
.IDENTIFIER
)
1725 self
.match(CParser
.T__0
)
1727 self
.struct_declaration_list()
1729 self
.match(CParser
.T__19
)
1733 self
.enterOuterAlt(localctx
, 2)
1735 self
.struct_or_union()
1737 self
.match(CParser
.IDENTIFIER
)
1741 except RecognitionException
as re
:
1742 localctx
.exception
= re
1743 self
._errHandler
.reportError(self
, re
)
1744 self
._errHandler
.recover(self
, re
)
1749 class Struct_or_unionContext(ParserRuleContext
):
1751 # @param parent=None Type: ParserRuleContext
1752 # @param invokingState=-1 Type: int
1753 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1754 super().__init
__(parent
, invokingState
)
1755 self
.parser
= parser
1758 def getRuleIndex(self
):
1759 return CParser
.RULE_struct_or_union
1761 # @param listener Type: ParseTreeListener
1762 def enterRule(self
,listener
):
1763 if hasattr( listener
, "enterStruct_or_union" ):
1764 listener
.enterStruct_or_union(self
)
1766 # @param listener Type: ParseTreeListener
1767 def exitRule(self
,listener
):
1768 if hasattr( listener
, "exitStruct_or_union" ):
1769 listener
.exitStruct_or_union(self
)
1774 def struct_or_union(self
):
1776 localctx
= CParser
.Struct_or_unionContext(self
, self
._ctx
, self
.state
)
1777 self
.enterRule(localctx
, 22, self
.RULE_struct_or_union
)
1778 self
._la
= 0 # Token type
1780 self
.enterOuterAlt(localctx
, 1)
1782 _la
= self
._input
.LA(1)
1783 if not(_la
==CParser
.T__20
or _la
==CParser
.T__21
):
1784 self
._errHandler
.recoverInline(self
)
1786 self
._errHandler
.reportMatch(self
)
1788 except RecognitionException
as re
:
1789 localctx
.exception
= re
1790 self
._errHandler
.reportError(self
, re
)
1791 self
._errHandler
.recover(self
, re
)
1796 class Struct_declaration_listContext(ParserRuleContext
):
1798 # @param parent=None Type: ParserRuleContext
1799 # @param invokingState=-1 Type: int
1800 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1801 super().__init
__(parent
, invokingState
)
1802 self
.parser
= parser
1804 # @param i=None Type: int
1805 def struct_declaration(self
,i
=None):
1807 return self
.getTypedRuleContexts(CParser
.Struct_declarationContext
)
1809 return self
.getTypedRuleContext(CParser
.Struct_declarationContext
,i
)
1812 def getRuleIndex(self
):
1813 return CParser
.RULE_struct_declaration_list
1815 # @param listener Type: ParseTreeListener
1816 def enterRule(self
,listener
):
1817 if hasattr( listener
, "enterStruct_declaration_list" ):
1818 listener
.enterStruct_declaration_list(self
)
1820 # @param listener Type: ParseTreeListener
1821 def exitRule(self
,listener
):
1822 if hasattr( listener
, "exitStruct_declaration_list" ):
1823 listener
.exitStruct_declaration_list(self
)
1828 def struct_declaration_list(self
):
1830 localctx
= CParser
.Struct_declaration_listContext(self
, self
._ctx
, self
.state
)
1831 self
.enterRule(localctx
, 24, self
.RULE_struct_declaration_list
)
1832 self
._la
= 0 # Token type
1834 self
.enterOuterAlt(localctx
, 1)
1836 self
._errHandler
.sync(self
)
1837 _la
= self
._input
.LA(1)
1840 self
.struct_declaration()
1842 self
._errHandler
.sync(self
)
1843 _la
= self
._input
.LA(1)
1844 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
):
1847 except RecognitionException
as re
:
1848 localctx
.exception
= re
1849 self
._errHandler
.reportError(self
, re
)
1850 self
._errHandler
.recover(self
, re
)
1855 class Struct_declarationContext(ParserRuleContext
):
1857 # @param parent=None Type: ParserRuleContext
1858 # @param invokingState=-1 Type: int
1859 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1860 super().__init
__(parent
, invokingState
)
1861 self
.parser
= parser
1863 def specifier_qualifier_list(self
):
1864 return self
.getTypedRuleContext(CParser
.Specifier_qualifier_listContext
,0)
1867 def struct_declarator_list(self
):
1868 return self
.getTypedRuleContext(CParser
.Struct_declarator_listContext
,0)
1871 def getRuleIndex(self
):
1872 return CParser
.RULE_struct_declaration
1874 # @param listener Type: ParseTreeListener
1875 def enterRule(self
,listener
):
1876 if hasattr( listener
, "enterStruct_declaration" ):
1877 listener
.enterStruct_declaration(self
)
1879 # @param listener Type: ParseTreeListener
1880 def exitRule(self
,listener
):
1881 if hasattr( listener
, "exitStruct_declaration" ):
1882 listener
.exitStruct_declaration(self
)
1887 def struct_declaration(self
):
1889 localctx
= CParser
.Struct_declarationContext(self
, self
._ctx
, self
.state
)
1890 self
.enterRule(localctx
, 26, self
.RULE_struct_declaration
)
1892 self
.enterOuterAlt(localctx
, 1)
1894 self
.specifier_qualifier_list()
1896 self
.struct_declarator_list()
1898 self
.match(CParser
.T__1
)
1899 except RecognitionException
as re
:
1900 localctx
.exception
= re
1901 self
._errHandler
.reportError(self
, re
)
1902 self
._errHandler
.recover(self
, re
)
1907 class Specifier_qualifier_listContext(ParserRuleContext
):
1909 # @param parent=None Type: ParserRuleContext
1910 # @param invokingState=-1 Type: int
1911 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1912 super().__init
__(parent
, invokingState
)
1913 self
.parser
= parser
1915 # @param i=None Type: int
1916 def type_qualifier(self
,i
=None):
1918 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
1920 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
1923 # @param i=None Type: int
1924 def type_specifier(self
,i
=None):
1926 return self
.getTypedRuleContexts(CParser
.Type_specifierContext
)
1928 return self
.getTypedRuleContext(CParser
.Type_specifierContext
,i
)
1931 def getRuleIndex(self
):
1932 return CParser
.RULE_specifier_qualifier_list
1934 # @param listener Type: ParseTreeListener
1935 def enterRule(self
,listener
):
1936 if hasattr( listener
, "enterSpecifier_qualifier_list" ):
1937 listener
.enterSpecifier_qualifier_list(self
)
1939 # @param listener Type: ParseTreeListener
1940 def exitRule(self
,listener
):
1941 if hasattr( listener
, "exitSpecifier_qualifier_list" ):
1942 listener
.exitSpecifier_qualifier_list(self
)
1947 def specifier_qualifier_list(self
):
1949 localctx
= CParser
.Specifier_qualifier_listContext(self
, self
._ctx
, self
.state
)
1950 self
.enterRule(localctx
, 28, self
.RULE_specifier_qualifier_list
)
1952 self
.enterOuterAlt(localctx
, 1)
1954 self
._errHandler
.sync(self
)
1956 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
1959 self
._errHandler
.sync(self
)
1960 token
= self
._input
.LA(1)
1961 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
]:
1963 self
.type_qualifier()
1965 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
]:
1967 self
.type_specifier()
1970 raise NoViableAltException(self
)
1974 raise NoViableAltException(self
)
1976 self
._errHandler
.sync(self
)
1977 _alt
= self
._interp
.adaptivePredict(self
._input
,21,self
._ctx
)
1979 except RecognitionException
as re
:
1980 localctx
.exception
= re
1981 self
._errHandler
.reportError(self
, re
)
1982 self
._errHandler
.recover(self
, re
)
1987 class Struct_declarator_listContext(ParserRuleContext
):
1989 # @param parent=None Type: ParserRuleContext
1990 # @param invokingState=-1 Type: int
1991 def __init__(self
,parser
,parent
=None,invokingState
=-1):
1992 super().__init
__(parent
, invokingState
)
1993 self
.parser
= parser
1995 # @param i=None Type: int
1996 def struct_declarator(self
,i
=None):
1998 return self
.getTypedRuleContexts(CParser
.Struct_declaratorContext
)
2000 return self
.getTypedRuleContext(CParser
.Struct_declaratorContext
,i
)
2003 def getRuleIndex(self
):
2004 return CParser
.RULE_struct_declarator_list
2006 # @param listener Type: ParseTreeListener
2007 def enterRule(self
,listener
):
2008 if hasattr( listener
, "enterStruct_declarator_list" ):
2009 listener
.enterStruct_declarator_list(self
)
2011 # @param listener Type: ParseTreeListener
2012 def exitRule(self
,listener
):
2013 if hasattr( listener
, "exitStruct_declarator_list" ):
2014 listener
.exitStruct_declarator_list(self
)
2019 def struct_declarator_list(self
):
2021 localctx
= CParser
.Struct_declarator_listContext(self
, self
._ctx
, self
.state
)
2022 self
.enterRule(localctx
, 30, self
.RULE_struct_declarator_list
)
2023 self
._la
= 0 # Token type
2025 self
.enterOuterAlt(localctx
, 1)
2027 self
.struct_declarator()
2029 self
._errHandler
.sync(self
)
2030 _la
= self
._input
.LA(1)
2031 while _la
==CParser
.T__3
:
2033 self
.match(CParser
.T__3
)
2035 self
.struct_declarator()
2037 self
._errHandler
.sync(self
)
2038 _la
= self
._input
.LA(1)
2040 except RecognitionException
as re
:
2041 localctx
.exception
= re
2042 self
._errHandler
.reportError(self
, re
)
2043 self
._errHandler
.recover(self
, re
)
2048 class Struct_declaratorContext(ParserRuleContext
):
2050 # @param parent=None Type: ParserRuleContext
2051 # @param invokingState=-1 Type: int
2052 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2053 super().__init
__(parent
, invokingState
)
2054 self
.parser
= parser
2056 def declarator(self
):
2057 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
2060 def constant_expression(self
):
2061 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
2064 def getRuleIndex(self
):
2065 return CParser
.RULE_struct_declarator
2067 # @param listener Type: ParseTreeListener
2068 def enterRule(self
,listener
):
2069 if hasattr( listener
, "enterStruct_declarator" ):
2070 listener
.enterStruct_declarator(self
)
2072 # @param listener Type: ParseTreeListener
2073 def exitRule(self
,listener
):
2074 if hasattr( listener
, "exitStruct_declarator" ):
2075 listener
.exitStruct_declarator(self
)
2080 def struct_declarator(self
):
2082 localctx
= CParser
.Struct_declaratorContext(self
, self
._ctx
, self
.state
)
2083 self
.enterRule(localctx
, 32, self
.RULE_struct_declarator
)
2084 self
._la
= 0 # Token type
2087 self
._errHandler
.sync(self
)
2088 token
= self
._input
.LA(1)
2089 if token
in [CParser
.T__33
, CParser
.T__34
, CParser
.T__35
, CParser
.T__37
, CParser
.T__41
, CParser
.IDENTIFIER
]:
2090 self
.enterOuterAlt(localctx
, 1)
2094 self
._errHandler
.sync(self
)
2095 _la
= self
._input
.LA(1)
2096 if _la
==CParser
.T__22
:
2098 self
.match(CParser
.T__22
)
2100 self
.constant_expression()
2104 elif token
in [CParser
.T__22
]:
2105 self
.enterOuterAlt(localctx
, 2)
2107 self
.match(CParser
.T__22
)
2109 self
.constant_expression()
2112 raise NoViableAltException(self
)
2114 except RecognitionException
as re
:
2115 localctx
.exception
= re
2116 self
._errHandler
.reportError(self
, re
)
2117 self
._errHandler
.recover(self
, re
)
2122 class Enum_specifierContext(ParserRuleContext
):
2124 # @param parent=None Type: ParserRuleContext
2125 # @param invokingState=-1 Type: int
2126 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2127 super().__init
__(parent
, invokingState
)
2128 self
.parser
= parser
2130 def enumerator_list(self
):
2131 return self
.getTypedRuleContext(CParser
.Enumerator_listContext
,0)
2134 def IDENTIFIER(self
):
2135 return self
.getToken(CParser
.IDENTIFIER
, 0)
2137 def getRuleIndex(self
):
2138 return CParser
.RULE_enum_specifier
2140 # @param listener Type: ParseTreeListener
2141 def enterRule(self
,listener
):
2142 if hasattr( listener
, "enterEnum_specifier" ):
2143 listener
.enterEnum_specifier(self
)
2145 # @param listener Type: ParseTreeListener
2146 def exitRule(self
,listener
):
2147 if hasattr( listener
, "exitEnum_specifier" ):
2148 listener
.exitEnum_specifier(self
)
2153 def enum_specifier(self
):
2155 localctx
= CParser
.Enum_specifierContext(self
, self
._ctx
, self
.state
)
2156 self
.enterRule(localctx
, 34, self
.RULE_enum_specifier
)
2157 self
._la
= 0 # Token type
2160 self
._errHandler
.sync(self
)
2161 la_
= self
._interp
.adaptivePredict(self
._input
,27,self
._ctx
)
2163 self
.enterOuterAlt(localctx
, 1)
2165 self
.match(CParser
.T__23
)
2167 self
.match(CParser
.T__0
)
2169 self
.enumerator_list()
2171 self
._errHandler
.sync(self
)
2172 _la
= self
._input
.LA(1)
2173 if _la
==CParser
.T__3
:
2175 self
.match(CParser
.T__3
)
2179 self
.match(CParser
.T__19
)
2183 self
.enterOuterAlt(localctx
, 2)
2185 self
.match(CParser
.T__23
)
2187 self
.match(CParser
.IDENTIFIER
)
2189 self
.match(CParser
.T__0
)
2191 self
.enumerator_list()
2193 self
._errHandler
.sync(self
)
2194 _la
= self
._input
.LA(1)
2195 if _la
==CParser
.T__3
:
2197 self
.match(CParser
.T__3
)
2201 self
.match(CParser
.T__19
)
2205 self
.enterOuterAlt(localctx
, 3)
2207 self
.match(CParser
.T__23
)
2209 self
.match(CParser
.IDENTIFIER
)
2213 except RecognitionException
as re
:
2214 localctx
.exception
= re
2215 self
._errHandler
.reportError(self
, re
)
2216 self
._errHandler
.recover(self
, re
)
2221 class Enumerator_listContext(ParserRuleContext
):
2223 # @param parent=None Type: ParserRuleContext
2224 # @param invokingState=-1 Type: int
2225 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2226 super().__init
__(parent
, invokingState
)
2227 self
.parser
= parser
2229 # @param i=None Type: int
2230 def enumerator(self
,i
=None):
2232 return self
.getTypedRuleContexts(CParser
.EnumeratorContext
)
2234 return self
.getTypedRuleContext(CParser
.EnumeratorContext
,i
)
2237 def getRuleIndex(self
):
2238 return CParser
.RULE_enumerator_list
2240 # @param listener Type: ParseTreeListener
2241 def enterRule(self
,listener
):
2242 if hasattr( listener
, "enterEnumerator_list" ):
2243 listener
.enterEnumerator_list(self
)
2245 # @param listener Type: ParseTreeListener
2246 def exitRule(self
,listener
):
2247 if hasattr( listener
, "exitEnumerator_list" ):
2248 listener
.exitEnumerator_list(self
)
2253 def enumerator_list(self
):
2255 localctx
= CParser
.Enumerator_listContext(self
, self
._ctx
, self
.state
)
2256 self
.enterRule(localctx
, 36, self
.RULE_enumerator_list
)
2258 self
.enterOuterAlt(localctx
, 1)
2262 self
._errHandler
.sync(self
)
2263 _alt
= self
._interp
.adaptivePredict(self
._input
,28,self
._ctx
)
2264 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2267 self
.match(CParser
.T__3
)
2271 self
._errHandler
.sync(self
)
2272 _alt
= self
._interp
.adaptivePredict(self
._input
,28,self
._ctx
)
2274 except RecognitionException
as re
:
2275 localctx
.exception
= re
2276 self
._errHandler
.reportError(self
, re
)
2277 self
._errHandler
.recover(self
, re
)
2282 class EnumeratorContext(ParserRuleContext
):
2284 # @param parent=None Type: ParserRuleContext
2285 # @param invokingState=-1 Type: int
2286 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2287 super().__init
__(parent
, invokingState
)
2288 self
.parser
= parser
2290 def IDENTIFIER(self
):
2291 return self
.getToken(CParser
.IDENTIFIER
, 0)
2293 def constant_expression(self
):
2294 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
2297 def getRuleIndex(self
):
2298 return CParser
.RULE_enumerator
2300 # @param listener Type: ParseTreeListener
2301 def enterRule(self
,listener
):
2302 if hasattr( listener
, "enterEnumerator" ):
2303 listener
.enterEnumerator(self
)
2305 # @param listener Type: ParseTreeListener
2306 def exitRule(self
,listener
):
2307 if hasattr( listener
, "exitEnumerator" ):
2308 listener
.exitEnumerator(self
)
2313 def enumerator(self
):
2315 localctx
= CParser
.EnumeratorContext(self
, self
._ctx
, self
.state
)
2316 self
.enterRule(localctx
, 38, self
.RULE_enumerator
)
2317 self
._la
= 0 # Token type
2319 self
.enterOuterAlt(localctx
, 1)
2321 self
.match(CParser
.IDENTIFIER
)
2323 self
._errHandler
.sync(self
)
2324 _la
= self
._input
.LA(1)
2325 if _la
==CParser
.T__4
:
2327 self
.match(CParser
.T__4
)
2329 self
.constant_expression()
2332 except RecognitionException
as re
:
2333 localctx
.exception
= re
2334 self
._errHandler
.reportError(self
, re
)
2335 self
._errHandler
.recover(self
, re
)
2340 class Type_qualifierContext(ParserRuleContext
):
2342 # @param parent=None Type: ParserRuleContext
2343 # @param invokingState=-1 Type: int
2344 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2345 super().__init
__(parent
, invokingState
)
2346 self
.parser
= parser
2349 def getRuleIndex(self
):
2350 return CParser
.RULE_type_qualifier
2352 # @param listener Type: ParseTreeListener
2353 def enterRule(self
,listener
):
2354 if hasattr( listener
, "enterType_qualifier" ):
2355 listener
.enterType_qualifier(self
)
2357 # @param listener Type: ParseTreeListener
2358 def exitRule(self
,listener
):
2359 if hasattr( listener
, "exitType_qualifier" ):
2360 listener
.exitType_qualifier(self
)
2365 def type_qualifier(self
):
2367 localctx
= CParser
.Type_qualifierContext(self
, self
._ctx
, self
.state
)
2368 self
.enterRule(localctx
, 40, self
.RULE_type_qualifier
)
2369 self
._la
= 0 # Token type
2371 self
.enterOuterAlt(localctx
, 1)
2373 _la
= self
._input
.LA(1)
2374 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)):
2375 self
._errHandler
.recoverInline(self
)
2377 self
._errHandler
.reportMatch(self
)
2379 except RecognitionException
as re
:
2380 localctx
.exception
= re
2381 self
._errHandler
.reportError(self
, re
)
2382 self
._errHandler
.recover(self
, re
)
2387 class DeclaratorContext(ParserRuleContext
):
2389 # @param parent=None Type: ParserRuleContext
2390 # @param invokingState=-1 Type: int
2391 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2392 super().__init
__(parent
, invokingState
)
2393 self
.parser
= parser
2395 def direct_declarator(self
):
2396 return self
.getTypedRuleContext(CParser
.Direct_declaratorContext
,0)
2400 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
2403 def getRuleIndex(self
):
2404 return CParser
.RULE_declarator
2406 # @param listener Type: ParseTreeListener
2407 def enterRule(self
,listener
):
2408 if hasattr( listener
, "enterDeclarator" ):
2409 listener
.enterDeclarator(self
)
2411 # @param listener Type: ParseTreeListener
2412 def exitRule(self
,listener
):
2413 if hasattr( listener
, "exitDeclarator" ):
2414 listener
.exitDeclarator(self
)
2419 def declarator(self
):
2421 localctx
= CParser
.DeclaratorContext(self
, self
._ctx
, self
.state
)
2422 self
.enterRule(localctx
, 42, self
.RULE_declarator
)
2423 self
._la
= 0 # Token type
2426 self
._errHandler
.sync(self
)
2427 la_
= self
._interp
.adaptivePredict(self
._input
,34,self
._ctx
)
2429 self
.enterOuterAlt(localctx
, 1)
2431 self
._errHandler
.sync(self
)
2432 _la
= self
._input
.LA(1)
2433 if _la
==CParser
.T__41
:
2439 self
._errHandler
.sync(self
)
2440 _la
= self
._input
.LA(1)
2441 if _la
==CParser
.T__33
:
2443 self
.match(CParser
.T__33
)
2447 self
._errHandler
.sync(self
)
2448 _la
= self
._input
.LA(1)
2449 if _la
==CParser
.T__34
:
2451 self
.match(CParser
.T__34
)
2455 self
._errHandler
.sync(self
)
2456 _la
= self
._input
.LA(1)
2457 if _la
==CParser
.T__35
:
2459 self
.match(CParser
.T__35
)
2463 self
.direct_declarator()
2467 self
.enterOuterAlt(localctx
, 2)
2473 except RecognitionException
as re
:
2474 localctx
.exception
= re
2475 self
._errHandler
.reportError(self
, re
)
2476 self
._errHandler
.recover(self
, re
)
2481 class Direct_declaratorContext(ParserRuleContext
):
2483 # @param parent=None Type: ParserRuleContext
2484 # @param invokingState=-1 Type: int
2485 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2486 super().__init
__(parent
, invokingState
)
2487 self
.parser
= parser
2489 def IDENTIFIER(self
):
2490 return self
.getToken(CParser
.IDENTIFIER
, 0)
2492 # @param i=None Type: int
2493 def declarator_suffix(self
,i
=None):
2495 return self
.getTypedRuleContexts(CParser
.Declarator_suffixContext
)
2497 return self
.getTypedRuleContext(CParser
.Declarator_suffixContext
,i
)
2500 def declarator(self
):
2501 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,0)
2504 def getRuleIndex(self
):
2505 return CParser
.RULE_direct_declarator
2507 # @param listener Type: ParseTreeListener
2508 def enterRule(self
,listener
):
2509 if hasattr( listener
, "enterDirect_declarator" ):
2510 listener
.enterDirect_declarator(self
)
2512 # @param listener Type: ParseTreeListener
2513 def exitRule(self
,listener
):
2514 if hasattr( listener
, "exitDirect_declarator" ):
2515 listener
.exitDirect_declarator(self
)
2520 def direct_declarator(self
):
2522 localctx
= CParser
.Direct_declaratorContext(self
, self
._ctx
, self
.state
)
2523 self
.enterRule(localctx
, 44, self
.RULE_direct_declarator
)
2526 self
._errHandler
.sync(self
)
2527 token
= self
._input
.LA(1)
2528 if token
in [CParser
.IDENTIFIER
]:
2529 self
.enterOuterAlt(localctx
, 1)
2531 self
.match(CParser
.IDENTIFIER
)
2533 self
._errHandler
.sync(self
)
2534 _alt
= self
._interp
.adaptivePredict(self
._input
,35,self
._ctx
)
2535 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2538 self
.declarator_suffix()
2540 self
._errHandler
.sync(self
)
2541 _alt
= self
._interp
.adaptivePredict(self
._input
,35,self
._ctx
)
2544 elif token
in [CParser
.T__37
]:
2545 self
.enterOuterAlt(localctx
, 2)
2547 self
.match(CParser
.T__37
)
2549 self
._errHandler
.sync(self
)
2550 la_
= self
._interp
.adaptivePredict(self
._input
,36,self
._ctx
)
2553 self
.match(CParser
.T__33
)
2559 self
.match(CParser
.T__38
)
2561 self
._errHandler
.sync(self
)
2563 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2566 self
.declarator_suffix()
2569 raise NoViableAltException(self
)
2571 self
._errHandler
.sync(self
)
2572 _alt
= self
._interp
.adaptivePredict(self
._input
,37,self
._ctx
)
2576 raise NoViableAltException(self
)
2578 except RecognitionException
as re
:
2579 localctx
.exception
= re
2580 self
._errHandler
.reportError(self
, re
)
2581 self
._errHandler
.recover(self
, re
)
2586 class Declarator_suffixContext(ParserRuleContext
):
2588 # @param parent=None Type: ParserRuleContext
2589 # @param invokingState=-1 Type: int
2590 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2591 super().__init
__(parent
, invokingState
)
2592 self
.parser
= parser
2594 def constant_expression(self
):
2595 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
2598 def parameter_type_list(self
):
2599 return self
.getTypedRuleContext(CParser
.Parameter_type_listContext
,0)
2602 def identifier_list(self
):
2603 return self
.getTypedRuleContext(CParser
.Identifier_listContext
,0)
2606 def getRuleIndex(self
):
2607 return CParser
.RULE_declarator_suffix
2609 # @param listener Type: ParseTreeListener
2610 def enterRule(self
,listener
):
2611 if hasattr( listener
, "enterDeclarator_suffix" ):
2612 listener
.enterDeclarator_suffix(self
)
2614 # @param listener Type: ParseTreeListener
2615 def exitRule(self
,listener
):
2616 if hasattr( listener
, "exitDeclarator_suffix" ):
2617 listener
.exitDeclarator_suffix(self
)
2622 def declarator_suffix(self
):
2624 localctx
= CParser
.Declarator_suffixContext(self
, self
._ctx
, self
.state
)
2625 self
.enterRule(localctx
, 46, self
.RULE_declarator_suffix
)
2628 self
._errHandler
.sync(self
)
2629 la_
= self
._interp
.adaptivePredict(self
._input
,39,self
._ctx
)
2631 self
.enterOuterAlt(localctx
, 1)
2633 self
.match(CParser
.T__39
)
2635 self
.constant_expression()
2637 self
.match(CParser
.T__40
)
2641 self
.enterOuterAlt(localctx
, 2)
2643 self
.match(CParser
.T__39
)
2645 self
.match(CParser
.T__40
)
2649 self
.enterOuterAlt(localctx
, 3)
2651 self
.match(CParser
.T__37
)
2653 self
.parameter_type_list()
2655 self
.match(CParser
.T__38
)
2659 self
.enterOuterAlt(localctx
, 4)
2661 self
.match(CParser
.T__37
)
2663 self
.identifier_list()
2665 self
.match(CParser
.T__38
)
2669 self
.enterOuterAlt(localctx
, 5)
2671 self
.match(CParser
.T__37
)
2673 self
.match(CParser
.T__38
)
2677 except RecognitionException
as re
:
2678 localctx
.exception
= re
2679 self
._errHandler
.reportError(self
, re
)
2680 self
._errHandler
.recover(self
, re
)
2685 class PointerContext(ParserRuleContext
):
2687 # @param parent=None Type: ParserRuleContext
2688 # @param invokingState=-1 Type: int
2689 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2690 super().__init
__(parent
, invokingState
)
2691 self
.parser
= parser
2693 # @param i=None Type: int
2694 def type_qualifier(self
,i
=None):
2696 return self
.getTypedRuleContexts(CParser
.Type_qualifierContext
)
2698 return self
.getTypedRuleContext(CParser
.Type_qualifierContext
,i
)
2702 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
2705 def getRuleIndex(self
):
2706 return CParser
.RULE_pointer
2708 # @param listener Type: ParseTreeListener
2709 def enterRule(self
,listener
):
2710 if hasattr( listener
, "enterPointer" ):
2711 listener
.enterPointer(self
)
2713 # @param listener Type: ParseTreeListener
2714 def exitRule(self
,listener
):
2715 if hasattr( listener
, "exitPointer" ):
2716 listener
.exitPointer(self
)
2723 localctx
= CParser
.PointerContext(self
, self
._ctx
, self
.state
)
2724 self
.enterRule(localctx
, 48, self
.RULE_pointer
)
2727 self
._errHandler
.sync(self
)
2728 la_
= self
._interp
.adaptivePredict(self
._input
,42,self
._ctx
)
2730 self
.enterOuterAlt(localctx
, 1)
2732 self
.match(CParser
.T__41
)
2734 self
._errHandler
.sync(self
)
2736 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2739 self
.type_qualifier()
2742 raise NoViableAltException(self
)
2744 self
._errHandler
.sync(self
)
2745 _alt
= self
._interp
.adaptivePredict(self
._input
,40,self
._ctx
)
2748 self
._errHandler
.sync(self
)
2749 la_
= self
._interp
.adaptivePredict(self
._input
,41,self
._ctx
)
2758 self
.enterOuterAlt(localctx
, 2)
2760 self
.match(CParser
.T__41
)
2766 self
.enterOuterAlt(localctx
, 3)
2768 self
.match(CParser
.T__41
)
2772 except RecognitionException
as re
:
2773 localctx
.exception
= re
2774 self
._errHandler
.reportError(self
, re
)
2775 self
._errHandler
.recover(self
, re
)
2780 class Parameter_type_listContext(ParserRuleContext
):
2782 # @param parent=None Type: ParserRuleContext
2783 # @param invokingState=-1 Type: int
2784 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2785 super().__init
__(parent
, invokingState
)
2786 self
.parser
= parser
2788 def parameter_list(self
):
2789 return self
.getTypedRuleContext(CParser
.Parameter_listContext
,0)
2792 def getRuleIndex(self
):
2793 return CParser
.RULE_parameter_type_list
2795 # @param listener Type: ParseTreeListener
2796 def enterRule(self
,listener
):
2797 if hasattr( listener
, "enterParameter_type_list" ):
2798 listener
.enterParameter_type_list(self
)
2800 # @param listener Type: ParseTreeListener
2801 def exitRule(self
,listener
):
2802 if hasattr( listener
, "exitParameter_type_list" ):
2803 listener
.exitParameter_type_list(self
)
2808 def parameter_type_list(self
):
2810 localctx
= CParser
.Parameter_type_listContext(self
, self
._ctx
, self
.state
)
2811 self
.enterRule(localctx
, 50, self
.RULE_parameter_type_list
)
2812 self
._la
= 0 # Token type
2814 self
.enterOuterAlt(localctx
, 1)
2816 self
.parameter_list()
2818 self
._errHandler
.sync(self
)
2819 _la
= self
._input
.LA(1)
2820 if _la
==CParser
.T__3
:
2822 self
.match(CParser
.T__3
)
2824 self
._errHandler
.sync(self
)
2825 _la
= self
._input
.LA(1)
2826 if _la
==CParser
.T__28
:
2828 self
.match(CParser
.T__28
)
2832 self
.match(CParser
.T__42
)
2835 except RecognitionException
as re
:
2836 localctx
.exception
= re
2837 self
._errHandler
.reportError(self
, re
)
2838 self
._errHandler
.recover(self
, re
)
2843 class Parameter_listContext(ParserRuleContext
):
2845 # @param parent=None Type: ParserRuleContext
2846 # @param invokingState=-1 Type: int
2847 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2848 super().__init
__(parent
, invokingState
)
2849 self
.parser
= parser
2851 # @param i=None Type: int
2852 def parameter_declaration(self
,i
=None):
2854 return self
.getTypedRuleContexts(CParser
.Parameter_declarationContext
)
2856 return self
.getTypedRuleContext(CParser
.Parameter_declarationContext
,i
)
2859 def getRuleIndex(self
):
2860 return CParser
.RULE_parameter_list
2862 # @param listener Type: ParseTreeListener
2863 def enterRule(self
,listener
):
2864 if hasattr( listener
, "enterParameter_list" ):
2865 listener
.enterParameter_list(self
)
2867 # @param listener Type: ParseTreeListener
2868 def exitRule(self
,listener
):
2869 if hasattr( listener
, "exitParameter_list" ):
2870 listener
.exitParameter_list(self
)
2875 def parameter_list(self
):
2877 localctx
= CParser
.Parameter_listContext(self
, self
._ctx
, self
.state
)
2878 self
.enterRule(localctx
, 52, self
.RULE_parameter_list
)
2880 self
.enterOuterAlt(localctx
, 1)
2882 self
.parameter_declaration()
2884 self
._errHandler
.sync(self
)
2885 _alt
= self
._interp
.adaptivePredict(self
._input
,46,self
._ctx
)
2886 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
2889 self
.match(CParser
.T__3
)
2891 self
._errHandler
.sync(self
)
2892 la_
= self
._interp
.adaptivePredict(self
._input
,45,self
._ctx
)
2895 self
.match(CParser
.T__28
)
2899 self
.parameter_declaration()
2901 self
._errHandler
.sync(self
)
2902 _alt
= self
._interp
.adaptivePredict(self
._input
,46,self
._ctx
)
2904 except RecognitionException
as re
:
2905 localctx
.exception
= re
2906 self
._errHandler
.reportError(self
, re
)
2907 self
._errHandler
.recover(self
, re
)
2912 class Parameter_declarationContext(ParserRuleContext
):
2914 # @param parent=None Type: ParserRuleContext
2915 # @param invokingState=-1 Type: int
2916 def __init__(self
,parser
,parent
=None,invokingState
=-1):
2917 super().__init
__(parent
, invokingState
)
2918 self
.parser
= parser
2920 def declaration_specifiers(self
):
2921 return self
.getTypedRuleContext(CParser
.Declaration_specifiersContext
,0)
2924 # @param i=None Type: int
2925 def declarator(self
,i
=None):
2927 return self
.getTypedRuleContexts(CParser
.DeclaratorContext
)
2929 return self
.getTypedRuleContext(CParser
.DeclaratorContext
,i
)
2932 # @param i=None Type: int
2933 def abstract_declarator(self
,i
=None):
2935 return self
.getTypedRuleContexts(CParser
.Abstract_declaratorContext
)
2937 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,i
)
2940 def IDENTIFIER(self
):
2941 return self
.getToken(CParser
.IDENTIFIER
, 0)
2943 # @param i=None Type: int
2944 def pointer(self
,i
=None):
2946 return self
.getTypedRuleContexts(CParser
.PointerContext
)
2948 return self
.getTypedRuleContext(CParser
.PointerContext
,i
)
2951 def getRuleIndex(self
):
2952 return CParser
.RULE_parameter_declaration
2954 # @param listener Type: ParseTreeListener
2955 def enterRule(self
,listener
):
2956 if hasattr( listener
, "enterParameter_declaration" ):
2957 listener
.enterParameter_declaration(self
)
2959 # @param listener Type: ParseTreeListener
2960 def exitRule(self
,listener
):
2961 if hasattr( listener
, "exitParameter_declaration" ):
2962 listener
.exitParameter_declaration(self
)
2967 def parameter_declaration(self
):
2969 localctx
= CParser
.Parameter_declarationContext(self
, self
._ctx
, self
.state
)
2970 self
.enterRule(localctx
, 54, self
.RULE_parameter_declaration
)
2971 self
._la
= 0 # Token type
2974 self
._errHandler
.sync(self
)
2975 la_
= self
._interp
.adaptivePredict(self
._input
,51,self
._ctx
)
2977 self
.enterOuterAlt(localctx
, 1)
2979 self
.declaration_specifiers()
2981 self
._errHandler
.sync(self
)
2982 _la
= self
._input
.LA(1)
2983 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):
2985 self
._errHandler
.sync(self
)
2986 la_
= self
._interp
.adaptivePredict(self
._input
,47,self
._ctx
)
2994 self
.abstract_declarator()
2999 self
._errHandler
.sync(self
)
3000 _la
= self
._input
.LA(1)
3003 self
._errHandler
.sync(self
)
3004 _la
= self
._input
.LA(1)
3005 if _la
==CParser
.T__28
:
3007 self
.match(CParser
.T__28
)
3013 self
.enterOuterAlt(localctx
, 2)
3015 self
._errHandler
.sync(self
)
3016 _la
= self
._input
.LA(1)
3017 while _la
==CParser
.T__41
:
3021 self
._errHandler
.sync(self
)
3022 _la
= self
._input
.LA(1)
3025 self
.match(CParser
.IDENTIFIER
)
3029 except RecognitionException
as re
:
3030 localctx
.exception
= re
3031 self
._errHandler
.reportError(self
, re
)
3032 self
._errHandler
.recover(self
, re
)
3037 class Identifier_listContext(ParserRuleContext
):
3039 # @param parent=None Type: ParserRuleContext
3040 # @param invokingState=-1 Type: int
3041 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3042 super().__init
__(parent
, invokingState
)
3043 self
.parser
= parser
3045 # @param i=None Type: int
3046 def IDENTIFIER(self
,i
=None):
3048 return self
.getTokens(CParser
.IDENTIFIER
)
3050 return self
.getToken(CParser
.IDENTIFIER
, i
)
3052 def getRuleIndex(self
):
3053 return CParser
.RULE_identifier_list
3055 # @param listener Type: ParseTreeListener
3056 def enterRule(self
,listener
):
3057 if hasattr( listener
, "enterIdentifier_list" ):
3058 listener
.enterIdentifier_list(self
)
3060 # @param listener Type: ParseTreeListener
3061 def exitRule(self
,listener
):
3062 if hasattr( listener
, "exitIdentifier_list" ):
3063 listener
.exitIdentifier_list(self
)
3068 def identifier_list(self
):
3070 localctx
= CParser
.Identifier_listContext(self
, self
._ctx
, self
.state
)
3071 self
.enterRule(localctx
, 56, self
.RULE_identifier_list
)
3072 self
._la
= 0 # Token type
3074 self
.enterOuterAlt(localctx
, 1)
3076 self
.match(CParser
.IDENTIFIER
)
3078 self
._errHandler
.sync(self
)
3079 _la
= self
._input
.LA(1)
3080 while _la
==CParser
.T__3
:
3082 self
.match(CParser
.T__3
)
3084 self
.match(CParser
.IDENTIFIER
)
3086 self
._errHandler
.sync(self
)
3087 _la
= self
._input
.LA(1)
3089 except RecognitionException
as re
:
3090 localctx
.exception
= re
3091 self
._errHandler
.reportError(self
, re
)
3092 self
._errHandler
.recover(self
, re
)
3097 class Type_nameContext(ParserRuleContext
):
3099 # @param parent=None Type: ParserRuleContext
3100 # @param invokingState=-1 Type: int
3101 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3102 super().__init
__(parent
, invokingState
)
3103 self
.parser
= parser
3105 def specifier_qualifier_list(self
):
3106 return self
.getTypedRuleContext(CParser
.Specifier_qualifier_listContext
,0)
3109 def abstract_declarator(self
):
3110 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,0)
3114 return self
.getTypedRuleContext(CParser
.Type_idContext
,0)
3117 def getRuleIndex(self
):
3118 return CParser
.RULE_type_name
3120 # @param listener Type: ParseTreeListener
3121 def enterRule(self
,listener
):
3122 if hasattr( listener
, "enterType_name" ):
3123 listener
.enterType_name(self
)
3125 # @param listener Type: ParseTreeListener
3126 def exitRule(self
,listener
):
3127 if hasattr( listener
, "exitType_name" ):
3128 listener
.exitType_name(self
)
3133 def type_name(self
):
3135 localctx
= CParser
.Type_nameContext(self
, self
._ctx
, self
.state
)
3136 self
.enterRule(localctx
, 58, self
.RULE_type_name
)
3137 self
._la
= 0 # Token type
3140 self
._errHandler
.sync(self
)
3141 la_
= self
._interp
.adaptivePredict(self
._input
,54,self
._ctx
)
3143 self
.enterOuterAlt(localctx
, 1)
3145 self
.specifier_qualifier_list()
3147 self
._errHandler
.sync(self
)
3148 _la
= self
._input
.LA(1)
3149 if (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__37
) |
(1 << CParser
.T__39
) |
(1 << CParser
.T__41
))) != 0):
3151 self
.abstract_declarator()
3157 self
.enterOuterAlt(localctx
, 2)
3163 except RecognitionException
as re
:
3164 localctx
.exception
= re
3165 self
._errHandler
.reportError(self
, re
)
3166 self
._errHandler
.recover(self
, re
)
3171 class Abstract_declaratorContext(ParserRuleContext
):
3173 # @param parent=None Type: ParserRuleContext
3174 # @param invokingState=-1 Type: int
3175 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3176 super().__init
__(parent
, invokingState
)
3177 self
.parser
= parser
3180 return self
.getTypedRuleContext(CParser
.PointerContext
,0)
3183 def direct_abstract_declarator(self
):
3184 return self
.getTypedRuleContext(CParser
.Direct_abstract_declaratorContext
,0)
3187 def getRuleIndex(self
):
3188 return CParser
.RULE_abstract_declarator
3190 # @param listener Type: ParseTreeListener
3191 def enterRule(self
,listener
):
3192 if hasattr( listener
, "enterAbstract_declarator" ):
3193 listener
.enterAbstract_declarator(self
)
3195 # @param listener Type: ParseTreeListener
3196 def exitRule(self
,listener
):
3197 if hasattr( listener
, "exitAbstract_declarator" ):
3198 listener
.exitAbstract_declarator(self
)
3203 def abstract_declarator(self
):
3205 localctx
= CParser
.Abstract_declaratorContext(self
, self
._ctx
, self
.state
)
3206 self
.enterRule(localctx
, 60, self
.RULE_abstract_declarator
)
3209 self
._errHandler
.sync(self
)
3210 token
= self
._input
.LA(1)
3211 if token
in [CParser
.T__41
]:
3212 self
.enterOuterAlt(localctx
, 1)
3216 self
._errHandler
.sync(self
)
3217 la_
= self
._interp
.adaptivePredict(self
._input
,55,self
._ctx
)
3220 self
.direct_abstract_declarator()
3224 elif token
in [CParser
.T__37
, CParser
.T__39
]:
3225 self
.enterOuterAlt(localctx
, 2)
3227 self
.direct_abstract_declarator()
3230 raise NoViableAltException(self
)
3232 except RecognitionException
as re
:
3233 localctx
.exception
= re
3234 self
._errHandler
.reportError(self
, re
)
3235 self
._errHandler
.recover(self
, re
)
3240 class Direct_abstract_declaratorContext(ParserRuleContext
):
3242 # @param parent=None Type: ParserRuleContext
3243 # @param invokingState=-1 Type: int
3244 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3245 super().__init
__(parent
, invokingState
)
3246 self
.parser
= parser
3248 def abstract_declarator(self
):
3249 return self
.getTypedRuleContext(CParser
.Abstract_declaratorContext
,0)
3252 # @param i=None Type: int
3253 def abstract_declarator_suffix(self
,i
=None):
3255 return self
.getTypedRuleContexts(CParser
.Abstract_declarator_suffixContext
)
3257 return self
.getTypedRuleContext(CParser
.Abstract_declarator_suffixContext
,i
)
3260 def getRuleIndex(self
):
3261 return CParser
.RULE_direct_abstract_declarator
3263 # @param listener Type: ParseTreeListener
3264 def enterRule(self
,listener
):
3265 if hasattr( listener
, "enterDirect_abstract_declarator" ):
3266 listener
.enterDirect_abstract_declarator(self
)
3268 # @param listener Type: ParseTreeListener
3269 def exitRule(self
,listener
):
3270 if hasattr( listener
, "exitDirect_abstract_declarator" ):
3271 listener
.exitDirect_abstract_declarator(self
)
3275 def direct_abstract_declarator(self
):
3277 localctx
= CParser
.Direct_abstract_declaratorContext(self
, self
._ctx
, self
.state
)
3278 self
.enterRule(localctx
, 62, self
.RULE_direct_abstract_declarator
)
3280 self
.enterOuterAlt(localctx
, 1)
3282 self
._errHandler
.sync(self
)
3283 la_
= self
._interp
.adaptivePredict(self
._input
,57,self
._ctx
)
3286 self
.match(CParser
.T__37
)
3288 self
.abstract_declarator()
3290 self
.match(CParser
.T__38
)
3295 self
.abstract_declarator_suffix()
3300 self
._errHandler
.sync(self
)
3301 _alt
= self
._interp
.adaptivePredict(self
._input
,58,self
._ctx
)
3302 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
3305 self
.abstract_declarator_suffix()
3307 self
._errHandler
.sync(self
)
3308 _alt
= self
._interp
.adaptivePredict(self
._input
,58,self
._ctx
)
3310 except RecognitionException
as re
:
3311 localctx
.exception
= re
3312 self
._errHandler
.reportError(self
, re
)
3313 self
._errHandler
.recover(self
, re
)
3318 class Abstract_declarator_suffixContext(ParserRuleContext
):
3320 # @param parent=None Type: ParserRuleContext
3321 # @param invokingState=-1 Type: int
3322 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3323 super().__init
__(parent
, invokingState
)
3324 self
.parser
= parser
3326 def constant_expression(self
):
3327 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
3330 def parameter_type_list(self
):
3331 return self
.getTypedRuleContext(CParser
.Parameter_type_listContext
,0)
3334 def getRuleIndex(self
):
3335 return CParser
.RULE_abstract_declarator_suffix
3337 # @param listener Type: ParseTreeListener
3338 def enterRule(self
,listener
):
3339 if hasattr( listener
, "enterAbstract_declarator_suffix" ):
3340 listener
.enterAbstract_declarator_suffix(self
)
3342 # @param listener Type: ParseTreeListener
3343 def exitRule(self
,listener
):
3344 if hasattr( listener
, "exitAbstract_declarator_suffix" ):
3345 listener
.exitAbstract_declarator_suffix(self
)
3350 def abstract_declarator_suffix(self
):
3352 localctx
= CParser
.Abstract_declarator_suffixContext(self
, self
._ctx
, self
.state
)
3353 self
.enterRule(localctx
, 64, self
.RULE_abstract_declarator_suffix
)
3356 self
._errHandler
.sync(self
)
3357 la_
= self
._interp
.adaptivePredict(self
._input
,59,self
._ctx
)
3359 self
.enterOuterAlt(localctx
, 1)
3361 self
.match(CParser
.T__39
)
3363 self
.match(CParser
.T__40
)
3367 self
.enterOuterAlt(localctx
, 2)
3369 self
.match(CParser
.T__39
)
3371 self
.constant_expression()
3373 self
.match(CParser
.T__40
)
3377 self
.enterOuterAlt(localctx
, 3)
3379 self
.match(CParser
.T__37
)
3381 self
.match(CParser
.T__38
)
3385 self
.enterOuterAlt(localctx
, 4)
3387 self
.match(CParser
.T__37
)
3389 self
.parameter_type_list()
3391 self
.match(CParser
.T__38
)
3395 except RecognitionException
as re
:
3396 localctx
.exception
= re
3397 self
._errHandler
.reportError(self
, re
)
3398 self
._errHandler
.recover(self
, re
)
3403 class InitializerContext(ParserRuleContext
):
3405 # @param parent=None Type: ParserRuleContext
3406 # @param invokingState=-1 Type: int
3407 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3408 super().__init
__(parent
, invokingState
)
3409 self
.parser
= parser
3411 def assignment_expression(self
):
3412 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,0)
3415 def initializer_list(self
):
3416 return self
.getTypedRuleContext(CParser
.Initializer_listContext
,0)
3419 def getRuleIndex(self
):
3420 return CParser
.RULE_initializer
3422 # @param listener Type: ParseTreeListener
3423 def enterRule(self
,listener
):
3424 if hasattr( listener
, "enterInitializer" ):
3425 listener
.enterInitializer(self
)
3427 # @param listener Type: ParseTreeListener
3428 def exitRule(self
,listener
):
3429 if hasattr( listener
, "exitInitializer" ):
3430 listener
.exitInitializer(self
)
3435 def initializer(self
):
3437 localctx
= CParser
.InitializerContext(self
, self
._ctx
, self
.state
)
3438 self
.enterRule(localctx
, 66, self
.RULE_initializer
)
3439 self
._la
= 0 # Token type
3442 self
._errHandler
.sync(self
)
3443 token
= self
._input
.LA(1)
3444 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
]:
3445 self
.enterOuterAlt(localctx
, 1)
3447 self
.assignment_expression()
3449 elif token
in [CParser
.T__0
]:
3450 self
.enterOuterAlt(localctx
, 2)
3452 self
.match(CParser
.T__0
)
3454 self
.initializer_list()
3456 self
._errHandler
.sync(self
)
3457 _la
= self
._input
.LA(1)
3458 if _la
==CParser
.T__3
:
3460 self
.match(CParser
.T__3
)
3464 self
.match(CParser
.T__19
)
3467 raise NoViableAltException(self
)
3469 except RecognitionException
as re
:
3470 localctx
.exception
= re
3471 self
._errHandler
.reportError(self
, re
)
3472 self
._errHandler
.recover(self
, re
)
3477 class Initializer_listContext(ParserRuleContext
):
3479 # @param parent=None Type: ParserRuleContext
3480 # @param invokingState=-1 Type: int
3481 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3482 super().__init
__(parent
, invokingState
)
3483 self
.parser
= parser
3485 # @param i=None Type: int
3486 def initializer(self
,i
=None):
3488 return self
.getTypedRuleContexts(CParser
.InitializerContext
)
3490 return self
.getTypedRuleContext(CParser
.InitializerContext
,i
)
3493 def getRuleIndex(self
):
3494 return CParser
.RULE_initializer_list
3496 # @param listener Type: ParseTreeListener
3497 def enterRule(self
,listener
):
3498 if hasattr( listener
, "enterInitializer_list" ):
3499 listener
.enterInitializer_list(self
)
3501 # @param listener Type: ParseTreeListener
3502 def exitRule(self
,listener
):
3503 if hasattr( listener
, "exitInitializer_list" ):
3504 listener
.exitInitializer_list(self
)
3509 def initializer_list(self
):
3511 localctx
= CParser
.Initializer_listContext(self
, self
._ctx
, self
.state
)
3512 self
.enterRule(localctx
, 68, self
.RULE_initializer_list
)
3514 self
.enterOuterAlt(localctx
, 1)
3518 self
._errHandler
.sync(self
)
3519 _alt
= self
._interp
.adaptivePredict(self
._input
,62,self
._ctx
)
3520 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
3523 self
.match(CParser
.T__3
)
3527 self
._errHandler
.sync(self
)
3528 _alt
= self
._interp
.adaptivePredict(self
._input
,62,self
._ctx
)
3530 except RecognitionException
as re
:
3531 localctx
.exception
= re
3532 self
._errHandler
.reportError(self
, re
)
3533 self
._errHandler
.recover(self
, re
)
3538 class Argument_expression_listContext(ParserRuleContext
):
3540 # @param parent=None Type: ParserRuleContext
3541 # @param invokingState=-1 Type: int
3542 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3543 super().__init
__(parent
, invokingState
)
3544 self
.parser
= parser
3546 # @param i=None Type: int
3547 def assignment_expression(self
,i
=None):
3549 return self
.getTypedRuleContexts(CParser
.Assignment_expressionContext
)
3551 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,i
)
3554 def getRuleIndex(self
):
3555 return CParser
.RULE_argument_expression_list
3557 # @param listener Type: ParseTreeListener
3558 def enterRule(self
,listener
):
3559 if hasattr( listener
, "enterArgument_expression_list" ):
3560 listener
.enterArgument_expression_list(self
)
3562 # @param listener Type: ParseTreeListener
3563 def exitRule(self
,listener
):
3564 if hasattr( listener
, "exitArgument_expression_list" ):
3565 listener
.exitArgument_expression_list(self
)
3570 def argument_expression_list(self
):
3572 localctx
= CParser
.Argument_expression_listContext(self
, self
._ctx
, self
.state
)
3573 self
.enterRule(localctx
, 70, self
.RULE_argument_expression_list
)
3574 self
._la
= 0 # Token type
3576 self
.enterOuterAlt(localctx
, 1)
3578 self
.assignment_expression()
3580 self
._errHandler
.sync(self
)
3581 _la
= self
._input
.LA(1)
3582 if _la
==CParser
.T__28
:
3584 self
.match(CParser
.T__28
)
3588 self
._errHandler
.sync(self
)
3589 _la
= self
._input
.LA(1)
3590 while _la
==CParser
.T__3
:
3592 self
.match(CParser
.T__3
)
3594 self
.assignment_expression()
3596 self
._errHandler
.sync(self
)
3597 _la
= self
._input
.LA(1)
3598 if _la
==CParser
.T__28
:
3600 self
.match(CParser
.T__28
)
3604 self
._errHandler
.sync(self
)
3605 _la
= self
._input
.LA(1)
3607 except RecognitionException
as re
:
3608 localctx
.exception
= re
3609 self
._errHandler
.reportError(self
, re
)
3610 self
._errHandler
.recover(self
, re
)
3615 class Additive_expressionContext(ParserRuleContext
):
3617 # @param parent=None Type: ParserRuleContext
3618 # @param invokingState=-1 Type: int
3619 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3620 super().__init
__(parent
, invokingState
)
3621 self
.parser
= parser
3623 # @param i=None Type: int
3624 def multiplicative_expression(self
,i
=None):
3626 return self
.getTypedRuleContexts(CParser
.Multiplicative_expressionContext
)
3628 return self
.getTypedRuleContext(CParser
.Multiplicative_expressionContext
,i
)
3631 def getRuleIndex(self
):
3632 return CParser
.RULE_additive_expression
3634 # @param listener Type: ParseTreeListener
3635 def enterRule(self
,listener
):
3636 if hasattr( listener
, "enterAdditive_expression" ):
3637 listener
.enterAdditive_expression(self
)
3639 # @param listener Type: ParseTreeListener
3640 def exitRule(self
,listener
):
3641 if hasattr( listener
, "exitAdditive_expression" ):
3642 listener
.exitAdditive_expression(self
)
3647 def additive_expression(self
):
3649 localctx
= CParser
.Additive_expressionContext(self
, self
._ctx
, self
.state
)
3650 self
.enterRule(localctx
, 72, self
.RULE_additive_expression
)
3651 self
._la
= 0 # Token type
3653 self
.enterOuterAlt(localctx
, 1)
3655 self
.multiplicative_expression()
3657 self
._errHandler
.sync(self
)
3658 _la
= self
._input
.LA(1)
3659 while _la
==CParser
.T__43
or _la
==CParser
.T__44
:
3661 self
._errHandler
.sync(self
)
3662 token
= self
._input
.LA(1)
3663 if token
in [CParser
.T__43
]:
3665 self
.match(CParser
.T__43
)
3667 self
.multiplicative_expression()
3669 elif token
in [CParser
.T__44
]:
3671 self
.match(CParser
.T__44
)
3673 self
.multiplicative_expression()
3676 raise NoViableAltException(self
)
3679 self
._errHandler
.sync(self
)
3680 _la
= self
._input
.LA(1)
3682 except RecognitionException
as re
:
3683 localctx
.exception
= re
3684 self
._errHandler
.reportError(self
, re
)
3685 self
._errHandler
.recover(self
, re
)
3690 class Multiplicative_expressionContext(ParserRuleContext
):
3692 # @param parent=None Type: ParserRuleContext
3693 # @param invokingState=-1 Type: int
3694 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3695 super().__init
__(parent
, invokingState
)
3696 self
.parser
= parser
3698 # @param i=None Type: int
3699 def cast_expression(self
,i
=None):
3701 return self
.getTypedRuleContexts(CParser
.Cast_expressionContext
)
3703 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,i
)
3706 def getRuleIndex(self
):
3707 return CParser
.RULE_multiplicative_expression
3709 # @param listener Type: ParseTreeListener
3710 def enterRule(self
,listener
):
3711 if hasattr( listener
, "enterMultiplicative_expression" ):
3712 listener
.enterMultiplicative_expression(self
)
3714 # @param listener Type: ParseTreeListener
3715 def exitRule(self
,listener
):
3716 if hasattr( listener
, "exitMultiplicative_expression" ):
3717 listener
.exitMultiplicative_expression(self
)
3722 def multiplicative_expression(self
):
3724 localctx
= CParser
.Multiplicative_expressionContext(self
, self
._ctx
, self
.state
)
3725 self
.enterRule(localctx
, 74, self
.RULE_multiplicative_expression
)
3726 self
._la
= 0 # Token type
3728 self
.enterOuterAlt(localctx
, 1)
3730 self
.cast_expression()
3732 self
._errHandler
.sync(self
)
3733 _la
= self
._input
.LA(1)
3734 while (((_la
) & ~
0x3f) == 0 and ((1 << _la
) & ((1 << CParser
.T__41
) |
(1 << CParser
.T__45
) |
(1 << CParser
.T__46
))) != 0):
3736 self
._errHandler
.sync(self
)
3737 token
= self
._input
.LA(1)
3738 if token
in [CParser
.T__41
]:
3740 self
.match(CParser
.T__41
)
3742 self
.cast_expression()
3744 elif token
in [CParser
.T__45
]:
3746 self
.match(CParser
.T__45
)
3748 self
.cast_expression()
3750 elif token
in [CParser
.T__46
]:
3752 self
.match(CParser
.T__46
)
3754 self
.cast_expression()
3757 raise NoViableAltException(self
)
3760 self
._errHandler
.sync(self
)
3761 _la
= self
._input
.LA(1)
3763 except RecognitionException
as re
:
3764 localctx
.exception
= re
3765 self
._errHandler
.reportError(self
, re
)
3766 self
._errHandler
.recover(self
, re
)
3771 class Cast_expressionContext(ParserRuleContext
):
3773 # @param parent=None Type: ParserRuleContext
3774 # @param invokingState=-1 Type: int
3775 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3776 super().__init
__(parent
, invokingState
)
3777 self
.parser
= parser
3779 def type_name(self
):
3780 return self
.getTypedRuleContext(CParser
.Type_nameContext
,0)
3783 def cast_expression(self
):
3784 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,0)
3787 def unary_expression(self
):
3788 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
3791 def getRuleIndex(self
):
3792 return CParser
.RULE_cast_expression
3794 # @param listener Type: ParseTreeListener
3795 def enterRule(self
,listener
):
3796 if hasattr( listener
, "enterCast_expression" ):
3797 listener
.enterCast_expression(self
)
3799 # @param listener Type: ParseTreeListener
3800 def exitRule(self
,listener
):
3801 if hasattr( listener
, "exitCast_expression" ):
3802 listener
.exitCast_expression(self
)
3807 def cast_expression(self
):
3809 localctx
= CParser
.Cast_expressionContext(self
, self
._ctx
, self
.state
)
3810 self
.enterRule(localctx
, 76, self
.RULE_cast_expression
)
3813 self
._errHandler
.sync(self
)
3814 la_
= self
._interp
.adaptivePredict(self
._input
,70,self
._ctx
)
3816 self
.enterOuterAlt(localctx
, 1)
3818 self
.match(CParser
.T__37
)
3822 self
.match(CParser
.T__38
)
3824 self
.cast_expression()
3828 self
.enterOuterAlt(localctx
, 2)
3830 self
.unary_expression()
3834 except RecognitionException
as re
:
3835 localctx
.exception
= re
3836 self
._errHandler
.reportError(self
, re
)
3837 self
._errHandler
.recover(self
, re
)
3842 class Unary_expressionContext(ParserRuleContext
):
3844 # @param parent=None Type: ParserRuleContext
3845 # @param invokingState=-1 Type: int
3846 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3847 super().__init
__(parent
, invokingState
)
3848 self
.parser
= parser
3850 def postfix_expression(self
):
3851 return self
.getTypedRuleContext(CParser
.Postfix_expressionContext
,0)
3854 def unary_expression(self
):
3855 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
3858 def unary_operator(self
):
3859 return self
.getTypedRuleContext(CParser
.Unary_operatorContext
,0)
3862 def cast_expression(self
):
3863 return self
.getTypedRuleContext(CParser
.Cast_expressionContext
,0)
3866 def type_name(self
):
3867 return self
.getTypedRuleContext(CParser
.Type_nameContext
,0)
3870 def getRuleIndex(self
):
3871 return CParser
.RULE_unary_expression
3873 # @param listener Type: ParseTreeListener
3874 def enterRule(self
,listener
):
3875 if hasattr( listener
, "enterUnary_expression" ):
3876 listener
.enterUnary_expression(self
)
3878 # @param listener Type: ParseTreeListener
3879 def exitRule(self
,listener
):
3880 if hasattr( listener
, "exitUnary_expression" ):
3881 listener
.exitUnary_expression(self
)
3886 def unary_expression(self
):
3888 localctx
= CParser
.Unary_expressionContext(self
, self
._ctx
, self
.state
)
3889 self
.enterRule(localctx
, 78, self
.RULE_unary_expression
)
3892 self
._errHandler
.sync(self
)
3893 la_
= self
._interp
.adaptivePredict(self
._input
,71,self
._ctx
)
3895 self
.enterOuterAlt(localctx
, 1)
3897 self
.postfix_expression()
3901 self
.enterOuterAlt(localctx
, 2)
3903 self
.match(CParser
.T__47
)
3905 self
.unary_expression()
3909 self
.enterOuterAlt(localctx
, 3)
3911 self
.match(CParser
.T__48
)
3913 self
.unary_expression()
3917 self
.enterOuterAlt(localctx
, 4)
3919 self
.unary_operator()
3921 self
.cast_expression()
3925 self
.enterOuterAlt(localctx
, 5)
3927 self
.match(CParser
.T__49
)
3929 self
.unary_expression()
3933 self
.enterOuterAlt(localctx
, 6)
3935 self
.match(CParser
.T__49
)
3937 self
.match(CParser
.T__37
)
3941 self
.match(CParser
.T__38
)
3945 except RecognitionException
as re
:
3946 localctx
.exception
= re
3947 self
._errHandler
.reportError(self
, re
)
3948 self
._errHandler
.recover(self
, re
)
3953 class Postfix_expressionContext(ParserRuleContext
):
3955 # @param parent=None Type: ParserRuleContext
3956 # @param invokingState=-1 Type: int
3957 def __init__(self
,parser
,parent
=None,invokingState
=-1):
3958 super().__init
__(parent
, invokingState
)
3959 self
.parser
= parser
3960 self
.FuncCallText
= ''
3961 self
.p
= None # Primary_expressionContext
3962 self
.a
= None # Token
3963 self
.c
= None # Argument_expression_listContext
3964 self
.b
= None # Token
3965 self
.x
= None # Token
3966 self
.y
= None # Token
3967 self
.z
= None # Token
3969 def primary_expression(self
):
3970 return self
.getTypedRuleContext(CParser
.Primary_expressionContext
,0)
3973 # @param i=None Type: int
3974 def expression(self
,i
=None):
3976 return self
.getTypedRuleContexts(CParser
.ExpressionContext
)
3978 return self
.getTypedRuleContext(CParser
.ExpressionContext
,i
)
3981 # @param i=None Type: int
3982 def macro_parameter_list(self
,i
=None):
3984 return self
.getTypedRuleContexts(CParser
.Macro_parameter_listContext
)
3986 return self
.getTypedRuleContext(CParser
.Macro_parameter_listContext
,i
)
3989 # @param i=None Type: int
3990 def argument_expression_list(self
,i
=None):
3992 return self
.getTypedRuleContexts(CParser
.Argument_expression_listContext
)
3994 return self
.getTypedRuleContext(CParser
.Argument_expression_listContext
,i
)
3997 # @param i=None Type: int
3998 def IDENTIFIER(self
,i
=None):
4000 return self
.getTokens(CParser
.IDENTIFIER
)
4002 return self
.getToken(CParser
.IDENTIFIER
, i
)
4004 def getRuleIndex(self
):
4005 return CParser
.RULE_postfix_expression
4007 # @param listener Type: ParseTreeListener
4008 def enterRule(self
,listener
):
4009 if hasattr( listener
, "enterPostfix_expression" ):
4010 listener
.enterPostfix_expression(self
)
4012 # @param listener Type: ParseTreeListener
4013 def exitRule(self
,listener
):
4014 if hasattr( listener
, "exitPostfix_expression" ):
4015 listener
.exitPostfix_expression(self
)
4020 def postfix_expression(self
):
4022 localctx
= CParser
.Postfix_expressionContext(self
, self
._ctx
, self
.state
)
4023 self
.enterRule(localctx
, 80, self
.RULE_postfix_expression
)
4025 self
.FuncCallText
=''
4028 self
.enterOuterAlt(localctx
, 1)
4030 localctx
.p
= self
.primary_expression()
4031 self
.FuncCallText
+= (None if localctx
.p
is None else self
._input
.getText((localctx
.p
.start
,localctx
.p
.stop
)))
4033 self
._errHandler
.sync(self
)
4034 _alt
= self
._interp
.adaptivePredict(self
._input
,73,self
._ctx
)
4035 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
4038 self
._errHandler
.sync(self
)
4039 la_
= self
._interp
.adaptivePredict(self
._input
,72,self
._ctx
)
4042 self
.match(CParser
.T__39
)
4046 self
.match(CParser
.T__40
)
4051 self
.match(CParser
.T__37
)
4053 localctx
.a
= self
.match(CParser
.T__38
)
4054 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
.column
, self
.FuncCallText
, '')
4059 self
.match(CParser
.T__37
)
4061 localctx
.c
= self
.argument_expression_list()
4063 localctx
.b
= self
.match(CParser
.T__38
)
4064 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
))))
4069 self
.match(CParser
.T__37
)
4071 self
.macro_parameter_list()
4073 self
.match(CParser
.T__38
)
4078 self
.match(CParser
.T__50
)
4080 localctx
.x
= self
.match(CParser
.IDENTIFIER
)
4081 self
.FuncCallText
+= '.' + (None if localctx
.x
is None else localctx
.x
.text
)
4086 self
.match(CParser
.T__41
)
4088 localctx
.y
= self
.match(CParser
.IDENTIFIER
)
4089 self
.FuncCallText
= (None if localctx
.y
is None else localctx
.y
.text
)
4094 self
.match(CParser
.T__51
)
4096 localctx
.z
= self
.match(CParser
.IDENTIFIER
)
4097 self
.FuncCallText
+= '->' + (None if localctx
.z
is None else localctx
.z
.text
)
4102 self
.match(CParser
.T__47
)
4107 self
.match(CParser
.T__48
)
4112 self
._errHandler
.sync(self
)
4113 _alt
= self
._interp
.adaptivePredict(self
._input
,73,self
._ctx
)
4115 except RecognitionException
as re
:
4116 localctx
.exception
= re
4117 self
._errHandler
.reportError(self
, re
)
4118 self
._errHandler
.recover(self
, re
)
4123 class Macro_parameter_listContext(ParserRuleContext
):
4125 # @param parent=None Type: ParserRuleContext
4126 # @param invokingState=-1 Type: int
4127 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4128 super().__init
__(parent
, invokingState
)
4129 self
.parser
= parser
4131 # @param i=None Type: int
4132 def parameter_declaration(self
,i
=None):
4134 return self
.getTypedRuleContexts(CParser
.Parameter_declarationContext
)
4136 return self
.getTypedRuleContext(CParser
.Parameter_declarationContext
,i
)
4139 def getRuleIndex(self
):
4140 return CParser
.RULE_macro_parameter_list
4142 # @param listener Type: ParseTreeListener
4143 def enterRule(self
,listener
):
4144 if hasattr( listener
, "enterMacro_parameter_list" ):
4145 listener
.enterMacro_parameter_list(self
)
4147 # @param listener Type: ParseTreeListener
4148 def exitRule(self
,listener
):
4149 if hasattr( listener
, "exitMacro_parameter_list" ):
4150 listener
.exitMacro_parameter_list(self
)
4155 def macro_parameter_list(self
):
4157 localctx
= CParser
.Macro_parameter_listContext(self
, self
._ctx
, self
.state
)
4158 self
.enterRule(localctx
, 82, self
.RULE_macro_parameter_list
)
4159 self
._la
= 0 # Token type
4161 self
.enterOuterAlt(localctx
, 1)
4163 self
.parameter_declaration()
4165 self
._errHandler
.sync(self
)
4166 _la
= self
._input
.LA(1)
4167 while _la
==CParser
.T__3
:
4169 self
.match(CParser
.T__3
)
4171 self
.parameter_declaration()
4173 self
._errHandler
.sync(self
)
4174 _la
= self
._input
.LA(1)
4176 except RecognitionException
as re
:
4177 localctx
.exception
= re
4178 self
._errHandler
.reportError(self
, re
)
4179 self
._errHandler
.recover(self
, re
)
4184 class Unary_operatorContext(ParserRuleContext
):
4186 # @param parent=None Type: ParserRuleContext
4187 # @param invokingState=-1 Type: int
4188 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4189 super().__init
__(parent
, invokingState
)
4190 self
.parser
= parser
4193 def getRuleIndex(self
):
4194 return CParser
.RULE_unary_operator
4196 # @param listener Type: ParseTreeListener
4197 def enterRule(self
,listener
):
4198 if hasattr( listener
, "enterUnary_operator" ):
4199 listener
.enterUnary_operator(self
)
4201 # @param listener Type: ParseTreeListener
4202 def exitRule(self
,listener
):
4203 if hasattr( listener
, "exitUnary_operator" ):
4204 listener
.exitUnary_operator(self
)
4209 def unary_operator(self
):
4211 localctx
= CParser
.Unary_operatorContext(self
, self
._ctx
, self
.state
)
4212 self
.enterRule(localctx
, 84, self
.RULE_unary_operator
)
4213 self
._la
= 0 # Token type
4215 self
.enterOuterAlt(localctx
, 1)
4217 _la
= self
._input
.LA(1)
4218 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)):
4219 self
._errHandler
.recoverInline(self
)
4221 self
._errHandler
.reportMatch(self
)
4223 except RecognitionException
as re
:
4224 localctx
.exception
= re
4225 self
._errHandler
.reportError(self
, re
)
4226 self
._errHandler
.recover(self
, re
)
4231 class Primary_expressionContext(ParserRuleContext
):
4233 # @param parent=None Type: ParserRuleContext
4234 # @param invokingState=-1 Type: int
4235 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4236 super().__init
__(parent
, invokingState
)
4237 self
.parser
= parser
4239 def IDENTIFIER(self
):
4240 return self
.getToken(CParser
.IDENTIFIER
, 0)
4243 return self
.getTypedRuleContext(CParser
.ConstantContext
,0)
4246 def expression(self
):
4247 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
4250 def getRuleIndex(self
):
4251 return CParser
.RULE_primary_expression
4253 # @param listener Type: ParseTreeListener
4254 def enterRule(self
,listener
):
4255 if hasattr( listener
, "enterPrimary_expression" ):
4256 listener
.enterPrimary_expression(self
)
4258 # @param listener Type: ParseTreeListener
4259 def exitRule(self
,listener
):
4260 if hasattr( listener
, "exitPrimary_expression" ):
4261 listener
.exitPrimary_expression(self
)
4266 def primary_expression(self
):
4268 localctx
= CParser
.Primary_expressionContext(self
, self
._ctx
, self
.state
)
4269 self
.enterRule(localctx
, 86, self
.RULE_primary_expression
)
4272 self
._errHandler
.sync(self
)
4273 la_
= self
._interp
.adaptivePredict(self
._input
,75,self
._ctx
)
4275 self
.enterOuterAlt(localctx
, 1)
4277 self
.match(CParser
.IDENTIFIER
)
4281 self
.enterOuterAlt(localctx
, 2)
4287 self
.enterOuterAlt(localctx
, 3)
4289 self
.match(CParser
.T__37
)
4293 self
.match(CParser
.T__38
)
4297 except RecognitionException
as re
:
4298 localctx
.exception
= re
4299 self
._errHandler
.reportError(self
, re
)
4300 self
._errHandler
.recover(self
, re
)
4305 class ConstantContext(ParserRuleContext
):
4307 # @param parent=None Type: ParserRuleContext
4308 # @param invokingState=-1 Type: int
4309 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4310 super().__init
__(parent
, invokingState
)
4311 self
.parser
= parser
4313 def HEX_LITERAL(self
):
4314 return self
.getToken(CParser
.HEX_LITERAL
, 0)
4316 def OCTAL_LITERAL(self
):
4317 return self
.getToken(CParser
.OCTAL_LITERAL
, 0)
4319 def DECIMAL_LITERAL(self
):
4320 return self
.getToken(CParser
.DECIMAL_LITERAL
, 0)
4322 def CHARACTER_LITERAL(self
):
4323 return self
.getToken(CParser
.CHARACTER_LITERAL
, 0)
4325 # @param i=None Type: int
4326 def IDENTIFIER(self
,i
=None):
4328 return self
.getTokens(CParser
.IDENTIFIER
)
4330 return self
.getToken(CParser
.IDENTIFIER
, i
)
4332 # @param i=None Type: int
4333 def STRING_LITERAL(self
,i
=None):
4335 return self
.getTokens(CParser
.STRING_LITERAL
)
4337 return self
.getToken(CParser
.STRING_LITERAL
, i
)
4339 def FLOATING_POINT_LITERAL(self
):
4340 return self
.getToken(CParser
.FLOATING_POINT_LITERAL
, 0)
4342 def getRuleIndex(self
):
4343 return CParser
.RULE_constant
4345 # @param listener Type: ParseTreeListener
4346 def enterRule(self
,listener
):
4347 if hasattr( listener
, "enterConstant" ):
4348 listener
.enterConstant(self
)
4350 # @param listener Type: ParseTreeListener
4351 def exitRule(self
,listener
):
4352 if hasattr( listener
, "exitConstant" ):
4353 listener
.exitConstant(self
)
4360 localctx
= CParser
.ConstantContext(self
, self
._ctx
, self
.state
)
4361 self
.enterRule(localctx
, 88, self
.RULE_constant
)
4362 self
._la
= 0 # Token type
4365 self
._errHandler
.sync(self
)
4366 token
= self
._input
.LA(1)
4367 if token
in [CParser
.HEX_LITERAL
]:
4368 self
.enterOuterAlt(localctx
, 1)
4370 self
.match(CParser
.HEX_LITERAL
)
4372 elif token
in [CParser
.OCTAL_LITERAL
]:
4373 self
.enterOuterAlt(localctx
, 2)
4375 self
.match(CParser
.OCTAL_LITERAL
)
4377 elif token
in [CParser
.DECIMAL_LITERAL
]:
4378 self
.enterOuterAlt(localctx
, 3)
4380 self
.match(CParser
.DECIMAL_LITERAL
)
4382 elif token
in [CParser
.CHARACTER_LITERAL
]:
4383 self
.enterOuterAlt(localctx
, 4)
4385 self
.match(CParser
.CHARACTER_LITERAL
)
4387 elif token
in [CParser
.IDENTIFIER
, CParser
.STRING_LITERAL
]:
4388 self
.enterOuterAlt(localctx
, 5)
4390 self
._errHandler
.sync(self
)
4392 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
4395 self
._errHandler
.sync(self
)
4396 _la
= self
._input
.LA(1)
4397 while _la
==CParser
.IDENTIFIER
:
4399 self
.match(CParser
.IDENTIFIER
)
4401 self
._errHandler
.sync(self
)
4402 _la
= self
._input
.LA(1)
4405 self
._errHandler
.sync(self
)
4407 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
4410 self
.match(CParser
.STRING_LITERAL
)
4413 raise NoViableAltException(self
)
4415 self
._errHandler
.sync(self
)
4416 _alt
= self
._interp
.adaptivePredict(self
._input
,77,self
._ctx
)
4420 raise NoViableAltException(self
)
4422 self
._errHandler
.sync(self
)
4423 _alt
= self
._interp
.adaptivePredict(self
._input
,78,self
._ctx
)
4426 self
._errHandler
.sync(self
)
4427 _la
= self
._input
.LA(1)
4428 while _la
==CParser
.IDENTIFIER
:
4430 self
.match(CParser
.IDENTIFIER
)
4432 self
._errHandler
.sync(self
)
4433 _la
= self
._input
.LA(1)
4436 elif token
in [CParser
.FLOATING_POINT_LITERAL
]:
4437 self
.enterOuterAlt(localctx
, 6)
4439 self
.match(CParser
.FLOATING_POINT_LITERAL
)
4442 raise NoViableAltException(self
)
4444 except RecognitionException
as re
:
4445 localctx
.exception
= re
4446 self
._errHandler
.reportError(self
, re
)
4447 self
._errHandler
.recover(self
, re
)
4452 class ExpressionContext(ParserRuleContext
):
4454 # @param parent=None Type: ParserRuleContext
4455 # @param invokingState=-1 Type: int
4456 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4457 super().__init
__(parent
, invokingState
)
4458 self
.parser
= parser
4460 # @param i=None Type: int
4461 def assignment_expression(self
,i
=None):
4463 return self
.getTypedRuleContexts(CParser
.Assignment_expressionContext
)
4465 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,i
)
4468 def getRuleIndex(self
):
4469 return CParser
.RULE_expression
4471 # @param listener Type: ParseTreeListener
4472 def enterRule(self
,listener
):
4473 if hasattr( listener
, "enterExpression" ):
4474 listener
.enterExpression(self
)
4476 # @param listener Type: ParseTreeListener
4477 def exitRule(self
,listener
):
4478 if hasattr( listener
, "exitExpression" ):
4479 listener
.exitExpression(self
)
4484 def expression(self
):
4486 localctx
= CParser
.ExpressionContext(self
, self
._ctx
, self
.state
)
4487 self
.enterRule(localctx
, 90, self
.RULE_expression
)
4488 self
._la
= 0 # Token type
4490 self
.enterOuterAlt(localctx
, 1)
4492 self
.assignment_expression()
4494 self
._errHandler
.sync(self
)
4495 _la
= self
._input
.LA(1)
4496 while _la
==CParser
.T__3
:
4498 self
.match(CParser
.T__3
)
4500 self
.assignment_expression()
4502 self
._errHandler
.sync(self
)
4503 _la
= self
._input
.LA(1)
4505 except RecognitionException
as re
:
4506 localctx
.exception
= re
4507 self
._errHandler
.reportError(self
, re
)
4508 self
._errHandler
.recover(self
, re
)
4513 class Constant_expressionContext(ParserRuleContext
):
4515 # @param parent=None Type: ParserRuleContext
4516 # @param invokingState=-1 Type: int
4517 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4518 super().__init
__(parent
, invokingState
)
4519 self
.parser
= parser
4521 def conditional_expression(self
):
4522 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4525 def getRuleIndex(self
):
4526 return CParser
.RULE_constant_expression
4528 # @param listener Type: ParseTreeListener
4529 def enterRule(self
,listener
):
4530 if hasattr( listener
, "enterConstant_expression" ):
4531 listener
.enterConstant_expression(self
)
4533 # @param listener Type: ParseTreeListener
4534 def exitRule(self
,listener
):
4535 if hasattr( listener
, "exitConstant_expression" ):
4536 listener
.exitConstant_expression(self
)
4541 def constant_expression(self
):
4543 localctx
= CParser
.Constant_expressionContext(self
, self
._ctx
, self
.state
)
4544 self
.enterRule(localctx
, 92, self
.RULE_constant_expression
)
4546 self
.enterOuterAlt(localctx
, 1)
4548 self
.conditional_expression()
4549 except RecognitionException
as re
:
4550 localctx
.exception
= re
4551 self
._errHandler
.reportError(self
, re
)
4552 self
._errHandler
.recover(self
, re
)
4557 class Assignment_expressionContext(ParserRuleContext
):
4559 # @param parent=None Type: ParserRuleContext
4560 # @param invokingState=-1 Type: int
4561 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4562 super().__init
__(parent
, invokingState
)
4563 self
.parser
= parser
4566 return self
.getTypedRuleContext(CParser
.LvalueContext
,0)
4569 def assignment_operator(self
):
4570 return self
.getTypedRuleContext(CParser
.Assignment_operatorContext
,0)
4573 def assignment_expression(self
):
4574 return self
.getTypedRuleContext(CParser
.Assignment_expressionContext
,0)
4577 def conditional_expression(self
):
4578 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4581 def getRuleIndex(self
):
4582 return CParser
.RULE_assignment_expression
4584 # @param listener Type: ParseTreeListener
4585 def enterRule(self
,listener
):
4586 if hasattr( listener
, "enterAssignment_expression" ):
4587 listener
.enterAssignment_expression(self
)
4589 # @param listener Type: ParseTreeListener
4590 def exitRule(self
,listener
):
4591 if hasattr( listener
, "exitAssignment_expression" ):
4592 listener
.exitAssignment_expression(self
)
4597 def assignment_expression(self
):
4599 localctx
= CParser
.Assignment_expressionContext(self
, self
._ctx
, self
.state
)
4600 self
.enterRule(localctx
, 94, self
.RULE_assignment_expression
)
4603 self
._errHandler
.sync(self
)
4604 la_
= self
._interp
.adaptivePredict(self
._input
,82,self
._ctx
)
4606 self
.enterOuterAlt(localctx
, 1)
4610 self
.assignment_operator()
4612 self
.assignment_expression()
4616 self
.enterOuterAlt(localctx
, 2)
4618 self
.conditional_expression()
4622 except RecognitionException
as re
:
4623 localctx
.exception
= re
4624 self
._errHandler
.reportError(self
, re
)
4625 self
._errHandler
.recover(self
, re
)
4630 class LvalueContext(ParserRuleContext
):
4632 # @param parent=None Type: ParserRuleContext
4633 # @param invokingState=-1 Type: int
4634 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4635 super().__init
__(parent
, invokingState
)
4636 self
.parser
= parser
4638 def unary_expression(self
):
4639 return self
.getTypedRuleContext(CParser
.Unary_expressionContext
,0)
4642 def getRuleIndex(self
):
4643 return CParser
.RULE_lvalue
4645 # @param listener Type: ParseTreeListener
4646 def enterRule(self
,listener
):
4647 if hasattr( listener
, "enterLvalue" ):
4648 listener
.enterLvalue(self
)
4650 # @param listener Type: ParseTreeListener
4651 def exitRule(self
,listener
):
4652 if hasattr( listener
, "exitLvalue" ):
4653 listener
.exitLvalue(self
)
4660 localctx
= CParser
.LvalueContext(self
, self
._ctx
, self
.state
)
4661 self
.enterRule(localctx
, 96, self
.RULE_lvalue
)
4663 self
.enterOuterAlt(localctx
, 1)
4665 self
.unary_expression()
4666 except RecognitionException
as re
:
4667 localctx
.exception
= re
4668 self
._errHandler
.reportError(self
, re
)
4669 self
._errHandler
.recover(self
, re
)
4674 class Assignment_operatorContext(ParserRuleContext
):
4676 # @param parent=None Type: ParserRuleContext
4677 # @param invokingState=-1 Type: int
4678 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4679 super().__init
__(parent
, invokingState
)
4680 self
.parser
= parser
4683 def getRuleIndex(self
):
4684 return CParser
.RULE_assignment_operator
4686 # @param listener Type: ParseTreeListener
4687 def enterRule(self
,listener
):
4688 if hasattr( listener
, "enterAssignment_operator" ):
4689 listener
.enterAssignment_operator(self
)
4691 # @param listener Type: ParseTreeListener
4692 def exitRule(self
,listener
):
4693 if hasattr( listener
, "exitAssignment_operator" ):
4694 listener
.exitAssignment_operator(self
)
4699 def assignment_operator(self
):
4701 localctx
= CParser
.Assignment_operatorContext(self
, self
._ctx
, self
.state
)
4702 self
.enterRule(localctx
, 98, self
.RULE_assignment_operator
)
4703 self
._la
= 0 # Token type
4705 self
.enterOuterAlt(localctx
, 1)
4707 _la
= self
._input
.LA(1)
4708 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)):
4709 self
._errHandler
.recoverInline(self
)
4711 self
._errHandler
.reportMatch(self
)
4713 except RecognitionException
as re
:
4714 localctx
.exception
= re
4715 self
._errHandler
.reportError(self
, re
)
4716 self
._errHandler
.recover(self
, re
)
4721 class Conditional_expressionContext(ParserRuleContext
):
4723 # @param parent=None Type: ParserRuleContext
4724 # @param invokingState=-1 Type: int
4725 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4726 super().__init
__(parent
, invokingState
)
4727 self
.parser
= parser
4728 self
.e
= None # Logical_or_expressionContext
4730 def logical_or_expression(self
):
4731 return self
.getTypedRuleContext(CParser
.Logical_or_expressionContext
,0)
4734 def expression(self
):
4735 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
4738 def conditional_expression(self
):
4739 return self
.getTypedRuleContext(CParser
.Conditional_expressionContext
,0)
4742 def getRuleIndex(self
):
4743 return CParser
.RULE_conditional_expression
4745 # @param listener Type: ParseTreeListener
4746 def enterRule(self
,listener
):
4747 if hasattr( listener
, "enterConditional_expression" ):
4748 listener
.enterConditional_expression(self
)
4750 # @param listener Type: ParseTreeListener
4751 def exitRule(self
,listener
):
4752 if hasattr( listener
, "exitConditional_expression" ):
4753 listener
.exitConditional_expression(self
)
4758 def conditional_expression(self
):
4760 localctx
= CParser
.Conditional_expressionContext(self
, self
._ctx
, self
.state
)
4761 self
.enterRule(localctx
, 100, self
.RULE_conditional_expression
)
4762 self
._la
= 0 # Token type
4764 self
.enterOuterAlt(localctx
, 1)
4766 localctx
.e
= self
.logical_or_expression()
4768 self
._errHandler
.sync(self
)
4769 _la
= self
._input
.LA(1)
4770 if _la
==CParser
.T__65
:
4772 self
.match(CParser
.T__65
)
4776 self
.match(CParser
.T__22
)
4778 self
.conditional_expression()
4779 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
))))
4782 except RecognitionException
as re
:
4783 localctx
.exception
= re
4784 self
._errHandler
.reportError(self
, re
)
4785 self
._errHandler
.recover(self
, re
)
4790 class Logical_or_expressionContext(ParserRuleContext
):
4792 # @param parent=None Type: ParserRuleContext
4793 # @param invokingState=-1 Type: int
4794 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4795 super().__init
__(parent
, invokingState
)
4796 self
.parser
= parser
4798 # @param i=None Type: int
4799 def logical_and_expression(self
,i
=None):
4801 return self
.getTypedRuleContexts(CParser
.Logical_and_expressionContext
)
4803 return self
.getTypedRuleContext(CParser
.Logical_and_expressionContext
,i
)
4806 def getRuleIndex(self
):
4807 return CParser
.RULE_logical_or_expression
4809 # @param listener Type: ParseTreeListener
4810 def enterRule(self
,listener
):
4811 if hasattr( listener
, "enterLogical_or_expression" ):
4812 listener
.enterLogical_or_expression(self
)
4814 # @param listener Type: ParseTreeListener
4815 def exitRule(self
,listener
):
4816 if hasattr( listener
, "exitLogical_or_expression" ):
4817 listener
.exitLogical_or_expression(self
)
4822 def logical_or_expression(self
):
4824 localctx
= CParser
.Logical_or_expressionContext(self
, self
._ctx
, self
.state
)
4825 self
.enterRule(localctx
, 102, self
.RULE_logical_or_expression
)
4826 self
._la
= 0 # Token type
4828 self
.enterOuterAlt(localctx
, 1)
4830 self
.logical_and_expression()
4832 self
._errHandler
.sync(self
)
4833 _la
= self
._input
.LA(1)
4834 while _la
==CParser
.T__66
:
4836 self
.match(CParser
.T__66
)
4838 self
.logical_and_expression()
4840 self
._errHandler
.sync(self
)
4841 _la
= self
._input
.LA(1)
4843 except RecognitionException
as re
:
4844 localctx
.exception
= re
4845 self
._errHandler
.reportError(self
, re
)
4846 self
._errHandler
.recover(self
, re
)
4851 class Logical_and_expressionContext(ParserRuleContext
):
4853 # @param parent=None Type: ParserRuleContext
4854 # @param invokingState=-1 Type: int
4855 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4856 super().__init
__(parent
, invokingState
)
4857 self
.parser
= parser
4859 # @param i=None Type: int
4860 def inclusive_or_expression(self
,i
=None):
4862 return self
.getTypedRuleContexts(CParser
.Inclusive_or_expressionContext
)
4864 return self
.getTypedRuleContext(CParser
.Inclusive_or_expressionContext
,i
)
4867 def getRuleIndex(self
):
4868 return CParser
.RULE_logical_and_expression
4870 # @param listener Type: ParseTreeListener
4871 def enterRule(self
,listener
):
4872 if hasattr( listener
, "enterLogical_and_expression" ):
4873 listener
.enterLogical_and_expression(self
)
4875 # @param listener Type: ParseTreeListener
4876 def exitRule(self
,listener
):
4877 if hasattr( listener
, "exitLogical_and_expression" ):
4878 listener
.exitLogical_and_expression(self
)
4883 def logical_and_expression(self
):
4885 localctx
= CParser
.Logical_and_expressionContext(self
, self
._ctx
, self
.state
)
4886 self
.enterRule(localctx
, 104, self
.RULE_logical_and_expression
)
4887 self
._la
= 0 # Token type
4889 self
.enterOuterAlt(localctx
, 1)
4891 self
.inclusive_or_expression()
4893 self
._errHandler
.sync(self
)
4894 _la
= self
._input
.LA(1)
4895 while _la
==CParser
.T__67
:
4897 self
.match(CParser
.T__67
)
4899 self
.inclusive_or_expression()
4901 self
._errHandler
.sync(self
)
4902 _la
= self
._input
.LA(1)
4904 except RecognitionException
as re
:
4905 localctx
.exception
= re
4906 self
._errHandler
.reportError(self
, re
)
4907 self
._errHandler
.recover(self
, re
)
4912 class Inclusive_or_expressionContext(ParserRuleContext
):
4914 # @param parent=None Type: ParserRuleContext
4915 # @param invokingState=-1 Type: int
4916 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4917 super().__init
__(parent
, invokingState
)
4918 self
.parser
= parser
4920 # @param i=None Type: int
4921 def exclusive_or_expression(self
,i
=None):
4923 return self
.getTypedRuleContexts(CParser
.Exclusive_or_expressionContext
)
4925 return self
.getTypedRuleContext(CParser
.Exclusive_or_expressionContext
,i
)
4928 def getRuleIndex(self
):
4929 return CParser
.RULE_inclusive_or_expression
4931 # @param listener Type: ParseTreeListener
4932 def enterRule(self
,listener
):
4933 if hasattr( listener
, "enterInclusive_or_expression" ):
4934 listener
.enterInclusive_or_expression(self
)
4936 # @param listener Type: ParseTreeListener
4937 def exitRule(self
,listener
):
4938 if hasattr( listener
, "exitInclusive_or_expression" ):
4939 listener
.exitInclusive_or_expression(self
)
4944 def inclusive_or_expression(self
):
4946 localctx
= CParser
.Inclusive_or_expressionContext(self
, self
._ctx
, self
.state
)
4947 self
.enterRule(localctx
, 106, self
.RULE_inclusive_or_expression
)
4948 self
._la
= 0 # Token type
4950 self
.enterOuterAlt(localctx
, 1)
4952 self
.exclusive_or_expression()
4954 self
._errHandler
.sync(self
)
4955 _la
= self
._input
.LA(1)
4956 while _la
==CParser
.T__68
:
4958 self
.match(CParser
.T__68
)
4960 self
.exclusive_or_expression()
4962 self
._errHandler
.sync(self
)
4963 _la
= self
._input
.LA(1)
4965 except RecognitionException
as re
:
4966 localctx
.exception
= re
4967 self
._errHandler
.reportError(self
, re
)
4968 self
._errHandler
.recover(self
, re
)
4973 class Exclusive_or_expressionContext(ParserRuleContext
):
4975 # @param parent=None Type: ParserRuleContext
4976 # @param invokingState=-1 Type: int
4977 def __init__(self
,parser
,parent
=None,invokingState
=-1):
4978 super().__init
__(parent
, invokingState
)
4979 self
.parser
= parser
4981 # @param i=None Type: int
4982 def and_expression(self
,i
=None):
4984 return self
.getTypedRuleContexts(CParser
.And_expressionContext
)
4986 return self
.getTypedRuleContext(CParser
.And_expressionContext
,i
)
4989 def getRuleIndex(self
):
4990 return CParser
.RULE_exclusive_or_expression
4992 # @param listener Type: ParseTreeListener
4993 def enterRule(self
,listener
):
4994 if hasattr( listener
, "enterExclusive_or_expression" ):
4995 listener
.enterExclusive_or_expression(self
)
4997 # @param listener Type: ParseTreeListener
4998 def exitRule(self
,listener
):
4999 if hasattr( listener
, "exitExclusive_or_expression" ):
5000 listener
.exitExclusive_or_expression(self
)
5005 def exclusive_or_expression(self
):
5007 localctx
= CParser
.Exclusive_or_expressionContext(self
, self
._ctx
, self
.state
)
5008 self
.enterRule(localctx
, 108, self
.RULE_exclusive_or_expression
)
5009 self
._la
= 0 # Token type
5011 self
.enterOuterAlt(localctx
, 1)
5013 self
.and_expression()
5015 self
._errHandler
.sync(self
)
5016 _la
= self
._input
.LA(1)
5017 while _la
==CParser
.T__69
:
5019 self
.match(CParser
.T__69
)
5021 self
.and_expression()
5023 self
._errHandler
.sync(self
)
5024 _la
= self
._input
.LA(1)
5026 except RecognitionException
as re
:
5027 localctx
.exception
= re
5028 self
._errHandler
.reportError(self
, re
)
5029 self
._errHandler
.recover(self
, re
)
5034 class And_expressionContext(ParserRuleContext
):
5036 # @param parent=None Type: ParserRuleContext
5037 # @param invokingState=-1 Type: int
5038 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5039 super().__init
__(parent
, invokingState
)
5040 self
.parser
= parser
5042 # @param i=None Type: int
5043 def equality_expression(self
,i
=None):
5045 return self
.getTypedRuleContexts(CParser
.Equality_expressionContext
)
5047 return self
.getTypedRuleContext(CParser
.Equality_expressionContext
,i
)
5050 def getRuleIndex(self
):
5051 return CParser
.RULE_and_expression
5053 # @param listener Type: ParseTreeListener
5054 def enterRule(self
,listener
):
5055 if hasattr( listener
, "enterAnd_expression" ):
5056 listener
.enterAnd_expression(self
)
5058 # @param listener Type: ParseTreeListener
5059 def exitRule(self
,listener
):
5060 if hasattr( listener
, "exitAnd_expression" ):
5061 listener
.exitAnd_expression(self
)
5066 def and_expression(self
):
5068 localctx
= CParser
.And_expressionContext(self
, self
._ctx
, self
.state
)
5069 self
.enterRule(localctx
, 110, self
.RULE_and_expression
)
5070 self
._la
= 0 # Token type
5072 self
.enterOuterAlt(localctx
, 1)
5074 self
.equality_expression()
5076 self
._errHandler
.sync(self
)
5077 _la
= self
._input
.LA(1)
5078 while _la
==CParser
.T__52
:
5080 self
.match(CParser
.T__52
)
5082 self
.equality_expression()
5084 self
._errHandler
.sync(self
)
5085 _la
= self
._input
.LA(1)
5087 except RecognitionException
as re
:
5088 localctx
.exception
= re
5089 self
._errHandler
.reportError(self
, re
)
5090 self
._errHandler
.recover(self
, re
)
5095 class Equality_expressionContext(ParserRuleContext
):
5097 # @param parent=None Type: ParserRuleContext
5098 # @param invokingState=-1 Type: int
5099 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5100 super().__init
__(parent
, invokingState
)
5101 self
.parser
= parser
5103 # @param i=None Type: int
5104 def relational_expression(self
,i
=None):
5106 return self
.getTypedRuleContexts(CParser
.Relational_expressionContext
)
5108 return self
.getTypedRuleContext(CParser
.Relational_expressionContext
,i
)
5111 def getRuleIndex(self
):
5112 return CParser
.RULE_equality_expression
5114 # @param listener Type: ParseTreeListener
5115 def enterRule(self
,listener
):
5116 if hasattr( listener
, "enterEquality_expression" ):
5117 listener
.enterEquality_expression(self
)
5119 # @param listener Type: ParseTreeListener
5120 def exitRule(self
,listener
):
5121 if hasattr( listener
, "exitEquality_expression" ):
5122 listener
.exitEquality_expression(self
)
5127 def equality_expression(self
):
5129 localctx
= CParser
.Equality_expressionContext(self
, self
._ctx
, self
.state
)
5130 self
.enterRule(localctx
, 112, self
.RULE_equality_expression
)
5131 self
._la
= 0 # Token type
5133 self
.enterOuterAlt(localctx
, 1)
5135 self
.relational_expression()
5137 self
._errHandler
.sync(self
)
5138 _la
= self
._input
.LA(1)
5139 while _la
==CParser
.T__70
or _la
==CParser
.T__71
:
5141 _la
= self
._input
.LA(1)
5142 if not(_la
==CParser
.T__70
or _la
==CParser
.T__71
):
5143 self
._errHandler
.recoverInline(self
)
5145 self
._errHandler
.reportMatch(self
)
5148 self
.relational_expression()
5150 self
._errHandler
.sync(self
)
5151 _la
= self
._input
.LA(1)
5153 except RecognitionException
as re
:
5154 localctx
.exception
= re
5155 self
._errHandler
.reportError(self
, re
)
5156 self
._errHandler
.recover(self
, re
)
5161 class Relational_expressionContext(ParserRuleContext
):
5163 # @param parent=None Type: ParserRuleContext
5164 # @param invokingState=-1 Type: int
5165 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5166 super().__init
__(parent
, invokingState
)
5167 self
.parser
= parser
5169 # @param i=None Type: int
5170 def shift_expression(self
,i
=None):
5172 return self
.getTypedRuleContexts(CParser
.Shift_expressionContext
)
5174 return self
.getTypedRuleContext(CParser
.Shift_expressionContext
,i
)
5177 def getRuleIndex(self
):
5178 return CParser
.RULE_relational_expression
5180 # @param listener Type: ParseTreeListener
5181 def enterRule(self
,listener
):
5182 if hasattr( listener
, "enterRelational_expression" ):
5183 listener
.enterRelational_expression(self
)
5185 # @param listener Type: ParseTreeListener
5186 def exitRule(self
,listener
):
5187 if hasattr( listener
, "exitRelational_expression" ):
5188 listener
.exitRelational_expression(self
)
5193 def relational_expression(self
):
5195 localctx
= CParser
.Relational_expressionContext(self
, self
._ctx
, self
.state
)
5196 self
.enterRule(localctx
, 114, self
.RULE_relational_expression
)
5197 self
._la
= 0 # Token type
5199 self
.enterOuterAlt(localctx
, 1)
5201 self
.shift_expression()
5203 self
._errHandler
.sync(self
)
5204 _la
= self
._input
.LA(1)
5205 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):
5207 _la
= self
._input
.LA(1)
5208 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)):
5209 self
._errHandler
.recoverInline(self
)
5211 self
._errHandler
.reportMatch(self
)
5214 self
.shift_expression()
5216 self
._errHandler
.sync(self
)
5217 _la
= self
._input
.LA(1)
5219 except RecognitionException
as re
:
5220 localctx
.exception
= re
5221 self
._errHandler
.reportError(self
, re
)
5222 self
._errHandler
.recover(self
, re
)
5227 class Shift_expressionContext(ParserRuleContext
):
5229 # @param parent=None Type: ParserRuleContext
5230 # @param invokingState=-1 Type: int
5231 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5232 super().__init
__(parent
, invokingState
)
5233 self
.parser
= parser
5235 # @param i=None Type: int
5236 def additive_expression(self
,i
=None):
5238 return self
.getTypedRuleContexts(CParser
.Additive_expressionContext
)
5240 return self
.getTypedRuleContext(CParser
.Additive_expressionContext
,i
)
5243 def getRuleIndex(self
):
5244 return CParser
.RULE_shift_expression
5246 # @param listener Type: ParseTreeListener
5247 def enterRule(self
,listener
):
5248 if hasattr( listener
, "enterShift_expression" ):
5249 listener
.enterShift_expression(self
)
5251 # @param listener Type: ParseTreeListener
5252 def exitRule(self
,listener
):
5253 if hasattr( listener
, "exitShift_expression" ):
5254 listener
.exitShift_expression(self
)
5259 def shift_expression(self
):
5261 localctx
= CParser
.Shift_expressionContext(self
, self
._ctx
, self
.state
)
5262 self
.enterRule(localctx
, 116, self
.RULE_shift_expression
)
5263 self
._la
= 0 # Token type
5265 self
.enterOuterAlt(localctx
, 1)
5267 self
.additive_expression()
5269 self
._errHandler
.sync(self
)
5270 _la
= self
._input
.LA(1)
5271 while _la
==CParser
.T__76
or _la
==CParser
.T__77
:
5273 _la
= self
._input
.LA(1)
5274 if not(_la
==CParser
.T__76
or _la
==CParser
.T__77
):
5275 self
._errHandler
.recoverInline(self
)
5277 self
._errHandler
.reportMatch(self
)
5280 self
.additive_expression()
5282 self
._errHandler
.sync(self
)
5283 _la
= self
._input
.LA(1)
5285 except RecognitionException
as re
:
5286 localctx
.exception
= re
5287 self
._errHandler
.reportError(self
, re
)
5288 self
._errHandler
.recover(self
, re
)
5293 class StatementContext(ParserRuleContext
):
5295 # @param parent=None Type: ParserRuleContext
5296 # @param invokingState=-1 Type: int
5297 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5298 super().__init
__(parent
, invokingState
)
5299 self
.parser
= parser
5301 def labeled_statement(self
):
5302 return self
.getTypedRuleContext(CParser
.Labeled_statementContext
,0)
5305 def compound_statement(self
):
5306 return self
.getTypedRuleContext(CParser
.Compound_statementContext
,0)
5309 def expression_statement(self
):
5310 return self
.getTypedRuleContext(CParser
.Expression_statementContext
,0)
5313 def selection_statement(self
):
5314 return self
.getTypedRuleContext(CParser
.Selection_statementContext
,0)
5317 def iteration_statement(self
):
5318 return self
.getTypedRuleContext(CParser
.Iteration_statementContext
,0)
5321 def jump_statement(self
):
5322 return self
.getTypedRuleContext(CParser
.Jump_statementContext
,0)
5325 def macro_statement(self
):
5326 return self
.getTypedRuleContext(CParser
.Macro_statementContext
,0)
5329 def asm2_statement(self
):
5330 return self
.getTypedRuleContext(CParser
.Asm2_statementContext
,0)
5333 def asm1_statement(self
):
5334 return self
.getTypedRuleContext(CParser
.Asm1_statementContext
,0)
5337 def asm_statement(self
):
5338 return self
.getTypedRuleContext(CParser
.Asm_statementContext
,0)
5341 def declaration(self
):
5342 return self
.getTypedRuleContext(CParser
.DeclarationContext
,0)
5345 def getRuleIndex(self
):
5346 return CParser
.RULE_statement
5348 # @param listener Type: ParseTreeListener
5349 def enterRule(self
,listener
):
5350 if hasattr( listener
, "enterStatement" ):
5351 listener
.enterStatement(self
)
5353 # @param listener Type: ParseTreeListener
5354 def exitRule(self
,listener
):
5355 if hasattr( listener
, "exitStatement" ):
5356 listener
.exitStatement(self
)
5361 def statement(self
):
5363 localctx
= CParser
.StatementContext(self
, self
._ctx
, self
.state
)
5364 self
.enterRule(localctx
, 118, self
.RULE_statement
)
5367 self
._errHandler
.sync(self
)
5368 la_
= self
._interp
.adaptivePredict(self
._input
,92,self
._ctx
)
5370 self
.enterOuterAlt(localctx
, 1)
5372 self
.labeled_statement()
5376 self
.enterOuterAlt(localctx
, 2)
5378 self
.compound_statement()
5382 self
.enterOuterAlt(localctx
, 3)
5384 self
.expression_statement()
5388 self
.enterOuterAlt(localctx
, 4)
5390 self
.selection_statement()
5394 self
.enterOuterAlt(localctx
, 5)
5396 self
.iteration_statement()
5400 self
.enterOuterAlt(localctx
, 6)
5402 self
.jump_statement()
5406 self
.enterOuterAlt(localctx
, 7)
5408 self
.macro_statement()
5412 self
.enterOuterAlt(localctx
, 8)
5414 self
.asm2_statement()
5418 self
.enterOuterAlt(localctx
, 9)
5420 self
.asm1_statement()
5424 self
.enterOuterAlt(localctx
, 10)
5426 self
.asm_statement()
5430 self
.enterOuterAlt(localctx
, 11)
5436 except RecognitionException
as re
:
5437 localctx
.exception
= re
5438 self
._errHandler
.reportError(self
, re
)
5439 self
._errHandler
.recover(self
, re
)
5444 class Asm2_statementContext(ParserRuleContext
):
5446 # @param parent=None Type: ParserRuleContext
5447 # @param invokingState=-1 Type: int
5448 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5449 super().__init
__(parent
, invokingState
)
5450 self
.parser
= parser
5452 def IDENTIFIER(self
):
5453 return self
.getToken(CParser
.IDENTIFIER
, 0)
5455 def getRuleIndex(self
):
5456 return CParser
.RULE_asm2_statement
5458 # @param listener Type: ParseTreeListener
5459 def enterRule(self
,listener
):
5460 if hasattr( listener
, "enterAsm2_statement" ):
5461 listener
.enterAsm2_statement(self
)
5463 # @param listener Type: ParseTreeListener
5464 def exitRule(self
,listener
):
5465 if hasattr( listener
, "exitAsm2_statement" ):
5466 listener
.exitAsm2_statement(self
)
5471 def asm2_statement(self
):
5473 localctx
= CParser
.Asm2_statementContext(self
, self
._ctx
, self
.state
)
5474 self
.enterRule(localctx
, 120, self
.RULE_asm2_statement
)
5475 self
._la
= 0 # Token type
5477 self
.enterOuterAlt(localctx
, 1)
5479 self
._errHandler
.sync(self
)
5480 _la
= self
._input
.LA(1)
5481 if _la
==CParser
.T__78
:
5483 self
.match(CParser
.T__78
)
5487 self
.match(CParser
.IDENTIFIER
)
5489 self
.match(CParser
.T__37
)
5491 self
._errHandler
.sync(self
)
5492 _alt
= self
._interp
.adaptivePredict(self
._input
,94,self
._ctx
)
5493 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5496 _la
= self
._input
.LA(1)
5497 if _la
<= 0 or _la
==CParser
.T__1
:
5498 self
._errHandler
.recoverInline(self
)
5500 self
._errHandler
.reportMatch(self
)
5503 self
._errHandler
.sync(self
)
5504 _alt
= self
._interp
.adaptivePredict(self
._input
,94,self
._ctx
)
5507 self
.match(CParser
.T__38
)
5509 self
.match(CParser
.T__1
)
5510 except RecognitionException
as re
:
5511 localctx
.exception
= re
5512 self
._errHandler
.reportError(self
, re
)
5513 self
._errHandler
.recover(self
, re
)
5518 class Asm1_statementContext(ParserRuleContext
):
5520 # @param parent=None Type: ParserRuleContext
5521 # @param invokingState=-1 Type: int
5522 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5523 super().__init
__(parent
, invokingState
)
5524 self
.parser
= parser
5527 def getRuleIndex(self
):
5528 return CParser
.RULE_asm1_statement
5530 # @param listener Type: ParseTreeListener
5531 def enterRule(self
,listener
):
5532 if hasattr( listener
, "enterAsm1_statement" ):
5533 listener
.enterAsm1_statement(self
)
5535 # @param listener Type: ParseTreeListener
5536 def exitRule(self
,listener
):
5537 if hasattr( listener
, "exitAsm1_statement" ):
5538 listener
.exitAsm1_statement(self
)
5543 def asm1_statement(self
):
5545 localctx
= CParser
.Asm1_statementContext(self
, self
._ctx
, self
.state
)
5546 self
.enterRule(localctx
, 122, self
.RULE_asm1_statement
)
5547 self
._la
= 0 # Token type
5549 self
.enterOuterAlt(localctx
, 1)
5551 self
.match(CParser
.T__79
)
5553 self
.match(CParser
.T__0
)
5555 self
._errHandler
.sync(self
)
5556 _la
= self
._input
.LA(1)
5557 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):
5559 _la
= self
._input
.LA(1)
5560 if _la
<= 0 or _la
==CParser
.T__19
:
5561 self
._errHandler
.recoverInline(self
)
5563 self
._errHandler
.reportMatch(self
)
5566 self
._errHandler
.sync(self
)
5567 _la
= self
._input
.LA(1)
5570 self
.match(CParser
.T__19
)
5571 except RecognitionException
as re
:
5572 localctx
.exception
= re
5573 self
._errHandler
.reportError(self
, re
)
5574 self
._errHandler
.recover(self
, re
)
5579 class Asm_statementContext(ParserRuleContext
):
5581 # @param parent=None Type: ParserRuleContext
5582 # @param invokingState=-1 Type: int
5583 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5584 super().__init
__(parent
, invokingState
)
5585 self
.parser
= parser
5588 def getRuleIndex(self
):
5589 return CParser
.RULE_asm_statement
5591 # @param listener Type: ParseTreeListener
5592 def enterRule(self
,listener
):
5593 if hasattr( listener
, "enterAsm_statement" ):
5594 listener
.enterAsm_statement(self
)
5596 # @param listener Type: ParseTreeListener
5597 def exitRule(self
,listener
):
5598 if hasattr( listener
, "exitAsm_statement" ):
5599 listener
.exitAsm_statement(self
)
5604 def asm_statement(self
):
5606 localctx
= CParser
.Asm_statementContext(self
, self
._ctx
, self
.state
)
5607 self
.enterRule(localctx
, 124, self
.RULE_asm_statement
)
5608 self
._la
= 0 # Token type
5610 self
.enterOuterAlt(localctx
, 1)
5612 self
.match(CParser
.T__80
)
5614 self
.match(CParser
.T__0
)
5616 self
._errHandler
.sync(self
)
5617 _la
= self
._input
.LA(1)
5618 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):
5620 _la
= self
._input
.LA(1)
5621 if _la
<= 0 or _la
==CParser
.T__19
:
5622 self
._errHandler
.recoverInline(self
)
5624 self
._errHandler
.reportMatch(self
)
5627 self
._errHandler
.sync(self
)
5628 _la
= self
._input
.LA(1)
5631 self
.match(CParser
.T__19
)
5632 except RecognitionException
as re
:
5633 localctx
.exception
= re
5634 self
._errHandler
.reportError(self
, re
)
5635 self
._errHandler
.recover(self
, re
)
5640 class Macro_statementContext(ParserRuleContext
):
5642 # @param parent=None Type: ParserRuleContext
5643 # @param invokingState=-1 Type: int
5644 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5645 super().__init
__(parent
, invokingState
)
5646 self
.parser
= parser
5648 def IDENTIFIER(self
):
5649 return self
.getToken(CParser
.IDENTIFIER
, 0)
5651 # @param i=None Type: int
5652 def declaration(self
,i
=None):
5654 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
5656 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
5659 def statement_list(self
):
5660 return self
.getTypedRuleContext(CParser
.Statement_listContext
,0)
5663 def expression(self
):
5664 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5667 def getRuleIndex(self
):
5668 return CParser
.RULE_macro_statement
5670 # @param listener Type: ParseTreeListener
5671 def enterRule(self
,listener
):
5672 if hasattr( listener
, "enterMacro_statement" ):
5673 listener
.enterMacro_statement(self
)
5675 # @param listener Type: ParseTreeListener
5676 def exitRule(self
,listener
):
5677 if hasattr( listener
, "exitMacro_statement" ):
5678 listener
.exitMacro_statement(self
)
5683 def macro_statement(self
):
5685 localctx
= CParser
.Macro_statementContext(self
, self
._ctx
, self
.state
)
5686 self
.enterRule(localctx
, 126, self
.RULE_macro_statement
)
5687 self
._la
= 0 # Token type
5689 self
.enterOuterAlt(localctx
, 1)
5691 self
.match(CParser
.IDENTIFIER
)
5693 self
.match(CParser
.T__37
)
5695 self
._errHandler
.sync(self
)
5696 _alt
= self
._interp
.adaptivePredict(self
._input
,97,self
._ctx
)
5697 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5702 self
._errHandler
.sync(self
)
5703 _alt
= self
._interp
.adaptivePredict(self
._input
,97,self
._ctx
)
5706 self
._errHandler
.sync(self
)
5707 la_
= self
._interp
.adaptivePredict(self
._input
,98,self
._ctx
)
5710 self
.statement_list()
5714 self
._errHandler
.sync(self
)
5715 _la
= self
._input
.LA(1)
5716 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):
5722 self
.match(CParser
.T__38
)
5723 except RecognitionException
as re
:
5724 localctx
.exception
= re
5725 self
._errHandler
.reportError(self
, re
)
5726 self
._errHandler
.recover(self
, re
)
5731 class Labeled_statementContext(ParserRuleContext
):
5733 # @param parent=None Type: ParserRuleContext
5734 # @param invokingState=-1 Type: int
5735 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5736 super().__init
__(parent
, invokingState
)
5737 self
.parser
= parser
5739 def IDENTIFIER(self
):
5740 return self
.getToken(CParser
.IDENTIFIER
, 0)
5742 def statement(self
):
5743 return self
.getTypedRuleContext(CParser
.StatementContext
,0)
5746 def constant_expression(self
):
5747 return self
.getTypedRuleContext(CParser
.Constant_expressionContext
,0)
5750 def getRuleIndex(self
):
5751 return CParser
.RULE_labeled_statement
5753 # @param listener Type: ParseTreeListener
5754 def enterRule(self
,listener
):
5755 if hasattr( listener
, "enterLabeled_statement" ):
5756 listener
.enterLabeled_statement(self
)
5758 # @param listener Type: ParseTreeListener
5759 def exitRule(self
,listener
):
5760 if hasattr( listener
, "exitLabeled_statement" ):
5761 listener
.exitLabeled_statement(self
)
5766 def labeled_statement(self
):
5768 localctx
= CParser
.Labeled_statementContext(self
, self
._ctx
, self
.state
)
5769 self
.enterRule(localctx
, 128, self
.RULE_labeled_statement
)
5772 self
._errHandler
.sync(self
)
5773 token
= self
._input
.LA(1)
5774 if token
in [CParser
.IDENTIFIER
]:
5775 self
.enterOuterAlt(localctx
, 1)
5777 self
.match(CParser
.IDENTIFIER
)
5779 self
.match(CParser
.T__22
)
5783 elif token
in [CParser
.T__81
]:
5784 self
.enterOuterAlt(localctx
, 2)
5786 self
.match(CParser
.T__81
)
5788 self
.constant_expression()
5790 self
.match(CParser
.T__22
)
5794 elif token
in [CParser
.T__82
]:
5795 self
.enterOuterAlt(localctx
, 3)
5797 self
.match(CParser
.T__82
)
5799 self
.match(CParser
.T__22
)
5804 raise NoViableAltException(self
)
5806 except RecognitionException
as re
:
5807 localctx
.exception
= re
5808 self
._errHandler
.reportError(self
, re
)
5809 self
._errHandler
.recover(self
, re
)
5814 class Compound_statementContext(ParserRuleContext
):
5816 # @param parent=None Type: ParserRuleContext
5817 # @param invokingState=-1 Type: int
5818 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5819 super().__init
__(parent
, invokingState
)
5820 self
.parser
= parser
5822 # @param i=None Type: int
5823 def declaration(self
,i
=None):
5825 return self
.getTypedRuleContexts(CParser
.DeclarationContext
)
5827 return self
.getTypedRuleContext(CParser
.DeclarationContext
,i
)
5830 def statement_list(self
):
5831 return self
.getTypedRuleContext(CParser
.Statement_listContext
,0)
5834 def getRuleIndex(self
):
5835 return CParser
.RULE_compound_statement
5837 # @param listener Type: ParseTreeListener
5838 def enterRule(self
,listener
):
5839 if hasattr( listener
, "enterCompound_statement" ):
5840 listener
.enterCompound_statement(self
)
5842 # @param listener Type: ParseTreeListener
5843 def exitRule(self
,listener
):
5844 if hasattr( listener
, "exitCompound_statement" ):
5845 listener
.exitCompound_statement(self
)
5850 def compound_statement(self
):
5852 localctx
= CParser
.Compound_statementContext(self
, self
._ctx
, self
.state
)
5853 self
.enterRule(localctx
, 130, self
.RULE_compound_statement
)
5854 self
._la
= 0 # Token type
5856 self
.enterOuterAlt(localctx
, 1)
5858 self
.match(CParser
.T__0
)
5860 self
._errHandler
.sync(self
)
5861 _alt
= self
._interp
.adaptivePredict(self
._input
,101,self
._ctx
)
5862 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5867 self
._errHandler
.sync(self
)
5868 _alt
= self
._interp
.adaptivePredict(self
._input
,101,self
._ctx
)
5871 self
._errHandler
.sync(self
)
5872 _la
= self
._input
.LA(1)
5873 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):
5875 self
.statement_list()
5879 self
.match(CParser
.T__19
)
5880 except RecognitionException
as re
:
5881 localctx
.exception
= re
5882 self
._errHandler
.reportError(self
, re
)
5883 self
._errHandler
.recover(self
, re
)
5888 class Statement_listContext(ParserRuleContext
):
5890 # @param parent=None Type: ParserRuleContext
5891 # @param invokingState=-1 Type: int
5892 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5893 super().__init
__(parent
, invokingState
)
5894 self
.parser
= parser
5896 # @param i=None Type: int
5897 def statement(self
,i
=None):
5899 return self
.getTypedRuleContexts(CParser
.StatementContext
)
5901 return self
.getTypedRuleContext(CParser
.StatementContext
,i
)
5904 def getRuleIndex(self
):
5905 return CParser
.RULE_statement_list
5907 # @param listener Type: ParseTreeListener
5908 def enterRule(self
,listener
):
5909 if hasattr( listener
, "enterStatement_list" ):
5910 listener
.enterStatement_list(self
)
5912 # @param listener Type: ParseTreeListener
5913 def exitRule(self
,listener
):
5914 if hasattr( listener
, "exitStatement_list" ):
5915 listener
.exitStatement_list(self
)
5920 def statement_list(self
):
5922 localctx
= CParser
.Statement_listContext(self
, self
._ctx
, self
.state
)
5923 self
.enterRule(localctx
, 132, self
.RULE_statement_list
)
5925 self
.enterOuterAlt(localctx
, 1)
5927 self
._errHandler
.sync(self
)
5929 while _alt
!=2 and _alt
!=ATN
.INVALID_ALT_NUMBER
:
5935 raise NoViableAltException(self
)
5937 self
._errHandler
.sync(self
)
5938 _alt
= self
._interp
.adaptivePredict(self
._input
,103,self
._ctx
)
5940 except RecognitionException
as re
:
5941 localctx
.exception
= re
5942 self
._errHandler
.reportError(self
, re
)
5943 self
._errHandler
.recover(self
, re
)
5948 class Expression_statementContext(ParserRuleContext
):
5950 # @param parent=None Type: ParserRuleContext
5951 # @param invokingState=-1 Type: int
5952 def __init__(self
,parser
,parent
=None,invokingState
=-1):
5953 super().__init
__(parent
, invokingState
)
5954 self
.parser
= parser
5956 def expression(self
):
5957 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
5960 def getRuleIndex(self
):
5961 return CParser
.RULE_expression_statement
5963 # @param listener Type: ParseTreeListener
5964 def enterRule(self
,listener
):
5965 if hasattr( listener
, "enterExpression_statement" ):
5966 listener
.enterExpression_statement(self
)
5968 # @param listener Type: ParseTreeListener
5969 def exitRule(self
,listener
):
5970 if hasattr( listener
, "exitExpression_statement" ):
5971 listener
.exitExpression_statement(self
)
5976 def expression_statement(self
):
5978 localctx
= CParser
.Expression_statementContext(self
, self
._ctx
, self
.state
)
5979 self
.enterRule(localctx
, 134, self
.RULE_expression_statement
)
5982 self
._errHandler
.sync(self
)
5983 token
= self
._input
.LA(1)
5984 if token
in [CParser
.T__1
]:
5985 self
.enterOuterAlt(localctx
, 1)
5987 self
.match(CParser
.T__1
)
5989 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
]:
5990 self
.enterOuterAlt(localctx
, 2)
5994 self
.match(CParser
.T__1
)
5997 raise NoViableAltException(self
)
5999 except RecognitionException
as re
:
6000 localctx
.exception
= re
6001 self
._errHandler
.reportError(self
, re
)
6002 self
._errHandler
.recover(self
, re
)
6007 class Selection_statementContext(ParserRuleContext
):
6009 # @param parent=None Type: ParserRuleContext
6010 # @param invokingState=-1 Type: int
6011 def __init__(self
,parser
,parent
=None,invokingState
=-1):
6012 super().__init
__(parent
, invokingState
)
6013 self
.parser
= parser
6014 self
.e
= None # ExpressionContext
6016 # @param i=None Type: int
6017 def statement(self
,i
=None):
6019 return self
.getTypedRuleContexts(CParser
.StatementContext
)
6021 return self
.getTypedRuleContext(CParser
.StatementContext
,i
)
6024 def expression(self
):
6025 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
6028 def getRuleIndex(self
):
6029 return CParser
.RULE_selection_statement
6031 # @param listener Type: ParseTreeListener
6032 def enterRule(self
,listener
):
6033 if hasattr( listener
, "enterSelection_statement" ):
6034 listener
.enterSelection_statement(self
)
6036 # @param listener Type: ParseTreeListener
6037 def exitRule(self
,listener
):
6038 if hasattr( listener
, "exitSelection_statement" ):
6039 listener
.exitSelection_statement(self
)
6044 def selection_statement(self
):
6046 localctx
= CParser
.Selection_statementContext(self
, self
._ctx
, self
.state
)
6047 self
.enterRule(localctx
, 136, self
.RULE_selection_statement
)
6050 self
._errHandler
.sync(self
)
6051 token
= self
._input
.LA(1)
6052 if token
in [CParser
.T__83
]:
6053 self
.enterOuterAlt(localctx
, 1)
6055 self
.match(CParser
.T__83
)
6057 self
.match(CParser
.T__37
)
6059 localctx
.e
= self
.expression()
6061 self
.match(CParser
.T__38
)
6062 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
))))
6066 self
._errHandler
.sync(self
)
6067 la_
= self
._interp
.adaptivePredict(self
._input
,105,self
._ctx
)
6070 self
.match(CParser
.T__84
)
6076 elif token
in [CParser
.T__85
]:
6077 self
.enterOuterAlt(localctx
, 2)
6079 self
.match(CParser
.T__85
)
6081 self
.match(CParser
.T__37
)
6085 self
.match(CParser
.T__38
)
6090 raise NoViableAltException(self
)
6092 except RecognitionException
as re
:
6093 localctx
.exception
= re
6094 self
._errHandler
.reportError(self
, re
)
6095 self
._errHandler
.recover(self
, re
)
6100 class Iteration_statementContext(ParserRuleContext
):
6102 # @param parent=None Type: ParserRuleContext
6103 # @param invokingState=-1 Type: int
6104 def __init__(self
,parser
,parent
=None,invokingState
=-1):
6105 super().__init
__(parent
, invokingState
)
6106 self
.parser
= parser
6107 self
.e
= None # ExpressionContext
6109 def statement(self
):
6110 return self
.getTypedRuleContext(CParser
.StatementContext
,0)
6113 def expression(self
):
6114 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
6117 def getRuleIndex(self
):
6118 return CParser
.RULE_iteration_statement
6120 # @param listener Type: ParseTreeListener
6121 def enterRule(self
,listener
):
6122 if hasattr( listener
, "enterIteration_statement" ):
6123 listener
.enterIteration_statement(self
)
6125 # @param listener Type: ParseTreeListener
6126 def exitRule(self
,listener
):
6127 if hasattr( listener
, "exitIteration_statement" ):
6128 listener
.exitIteration_statement(self
)
6133 def iteration_statement(self
):
6135 localctx
= CParser
.Iteration_statementContext(self
, self
._ctx
, self
.state
)
6136 self
.enterRule(localctx
, 138, self
.RULE_iteration_statement
)
6139 self
._errHandler
.sync(self
)
6140 token
= self
._input
.LA(1)
6141 if token
in [CParser
.T__86
]:
6142 self
.enterOuterAlt(localctx
, 1)
6144 self
.match(CParser
.T__86
)
6146 self
.match(CParser
.T__37
)
6148 localctx
.e
= self
.expression()
6150 self
.match(CParser
.T__38
)
6153 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
))))
6155 elif token
in [CParser
.T__87
]:
6156 self
.enterOuterAlt(localctx
, 2)
6158 self
.match(CParser
.T__87
)
6162 self
.match(CParser
.T__86
)
6164 self
.match(CParser
.T__37
)
6166 localctx
.e
= self
.expression()
6168 self
.match(CParser
.T__38
)
6170 self
.match(CParser
.T__1
)
6171 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
))))
6174 raise NoViableAltException(self
)
6176 except RecognitionException
as re
:
6177 localctx
.exception
= re
6178 self
._errHandler
.reportError(self
, re
)
6179 self
._errHandler
.recover(self
, re
)
6184 class Jump_statementContext(ParserRuleContext
):
6186 # @param parent=None Type: ParserRuleContext
6187 # @param invokingState=-1 Type: int
6188 def __init__(self
,parser
,parent
=None,invokingState
=-1):
6189 super().__init
__(parent
, invokingState
)
6190 self
.parser
= parser
6192 def IDENTIFIER(self
):
6193 return self
.getToken(CParser
.IDENTIFIER
, 0)
6195 def expression(self
):
6196 return self
.getTypedRuleContext(CParser
.ExpressionContext
,0)
6199 def getRuleIndex(self
):
6200 return CParser
.RULE_jump_statement
6202 # @param listener Type: ParseTreeListener
6203 def enterRule(self
,listener
):
6204 if hasattr( listener
, "enterJump_statement" ):
6205 listener
.enterJump_statement(self
)
6207 # @param listener Type: ParseTreeListener
6208 def exitRule(self
,listener
):
6209 if hasattr( listener
, "exitJump_statement" ):
6210 listener
.exitJump_statement(self
)
6215 def jump_statement(self
):
6217 localctx
= CParser
.Jump_statementContext(self
, self
._ctx
, self
.state
)
6218 self
.enterRule(localctx
, 140, self
.RULE_jump_statement
)
6221 self
._errHandler
.sync(self
)
6222 la_
= self
._interp
.adaptivePredict(self
._input
,108,self
._ctx
)
6224 self
.enterOuterAlt(localctx
, 1)
6226 self
.match(CParser
.T__88
)
6228 self
.match(CParser
.IDENTIFIER
)
6230 self
.match(CParser
.T__1
)
6234 self
.enterOuterAlt(localctx
, 2)
6236 self
.match(CParser
.T__89
)
6238 self
.match(CParser
.T__1
)
6242 self
.enterOuterAlt(localctx
, 3)
6244 self
.match(CParser
.T__90
)
6246 self
.match(CParser
.T__1
)
6250 self
.enterOuterAlt(localctx
, 4)
6252 self
.match(CParser
.T__91
)
6254 self
.match(CParser
.T__1
)
6258 self
.enterOuterAlt(localctx
, 5)
6260 self
.match(CParser
.T__91
)
6264 self
.match(CParser
.T__1
)
6268 except RecognitionException
as re
:
6269 localctx
.exception
= re
6270 self
._errHandler
.reportError(self
, re
)
6271 self
._errHandler
.recover(self
, re
)