]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BaseTools/Source/Python/Eot/CParser.py
BaseTools/Ecc/EOT: Add Python 3 support on ECC and EOT tools.
[mirror_edk2.git] / BaseTools / Source / Python / Eot / CParser.py
... / ...
CommitLineData
1# Generated from C.g4 by ANTLR 4.7.1\r
2# encoding: utf-8\r
3from antlr4 import *\r
4from io import StringIO\r
5from typing.io import TextIO\r
6import sys\r
7\r
8\r
9## @file\r
10# The file defines the parser for C source files.\r
11#\r
12# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
13# This file is generated by running:\r
14# java org.antlr.Tool C.g\r
15#\r
16# Copyright (c) 2009 - 2010, Intel Corporation All rights reserved.\r
17#\r
18# This program and the accompanying materials are licensed and made available\r
19# under the terms and conditions of the BSD License which accompanies this\r
20# distribution. The full text of the license may be found at:\r
21# http://opensource.org/licenses/bsd-license.php\r
22#\r
23# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
24# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
25#\r
26##\r
27\r
28import Ecc.CodeFragment as CodeFragment\r
29import Ecc.FileProfile as FileProfile\r
30\r
31def serializedATN():\r
32 with StringIO() as buf:\r
33 buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3k")\r
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")\r
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")\r
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")\r
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")\r
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")\r
39 buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t")\r
40 buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4")\r
41 buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64")\r
42 buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t")\r
43 buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t")\r
44 buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\3\2\7\2\u0092\n\2\f\2\16\2\u0095")\r
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")\r
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")\r
47 buf.write("\u00a9\n\3\3\4\5\4\u00ac\n\4\3\4\3\4\6\4\u00b0\n\4\r\4")\r
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")\r
49 buf.write("\3\5\6\5\u00be\n\5\r\5\16\5\u00bf\3\6\3\6\5\6\u00c4\n")\r
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")\r
51 buf.write("\6\u00d1\n\6\3\7\3\7\3\7\7\7\u00d6\n\7\f\7\16\7\u00d9")\r
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")\r
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")\r
54 buf.write("\7\n\u00f3\n\n\f\n\16\n\u00f6\13\n\3\n\3\n\5\n\u00fa\n")\r
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")\r
56 buf.write("\3\f\3\f\5\f\u0109\n\f\3\r\3\r\3\16\6\16\u010e\n\16\r")\r
57 buf.write("\16\16\16\u010f\3\17\3\17\3\17\3\17\3\20\3\20\6\20\u0118")\r
58 buf.write("\n\20\r\20\16\20\u0119\3\21\3\21\3\21\7\21\u011f\n\21")\r
59 buf.write("\f\21\16\21\u0122\13\21\3\22\3\22\3\22\5\22\u0127\n\22")\r
60 buf.write("\3\22\3\22\5\22\u012b\n\22\3\23\3\23\3\23\3\23\5\23\u0131")\r
61 buf.write("\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u013a\n")\r
62 buf.write("\23\3\23\3\23\3\23\3\23\5\23\u0140\n\23\3\24\3\24\3\24")\r
63 buf.write("\7\24\u0145\n\24\f\24\16\24\u0148\13\24\3\25\3\25\3\25")\r
64 buf.write("\5\25\u014d\n\25\3\26\3\26\3\27\5\27\u0152\n\27\3\27\5")\r
65 buf.write("\27\u0155\n\27\3\27\5\27\u0158\n\27\3\27\5\27\u015b\n")\r
66 buf.write("\27\3\27\3\27\5\27\u015f\n\27\3\30\3\30\7\30\u0163\n\30")\r
67 buf.write("\f\30\16\30\u0166\13\30\3\30\3\30\5\30\u016a\n\30\3\30")\r
68 buf.write("\3\30\3\30\6\30\u016f\n\30\r\30\16\30\u0170\5\30\u0173")\r
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")\r
70 buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u0185\n\31\3\32\3")\r
71 buf.write("\32\6\32\u0189\n\32\r\32\16\32\u018a\3\32\5\32\u018e\n")\r
72 buf.write("\32\3\32\3\32\3\32\5\32\u0193\n\32\3\33\3\33\3\33\5\33")\r
73 buf.write("\u0198\n\33\3\33\5\33\u019b\n\33\3\34\3\34\3\34\5\34\u01a0")\r
74 buf.write("\n\34\3\34\7\34\u01a3\n\34\f\34\16\34\u01a6\13\34\3\35")\r
75 buf.write("\3\35\3\35\7\35\u01ab\n\35\f\35\16\35\u01ae\13\35\3\35")\r
76 buf.write("\5\35\u01b1\n\35\3\35\7\35\u01b4\n\35\f\35\16\35\u01b7")\r
77 buf.write("\13\35\3\35\5\35\u01ba\n\35\3\36\3\36\3\36\7\36\u01bf")\r
78 buf.write("\n\36\f\36\16\36\u01c2\13\36\3\37\3\37\5\37\u01c6\n\37")\r
79 buf.write("\3\37\5\37\u01c9\n\37\3 \3 \5 \u01cd\n \3 \5 \u01d0\n")\r
80 buf.write(" \3!\3!\3!\3!\3!\5!\u01d7\n!\3!\7!\u01da\n!\f!\16!\u01dd")\r
81 buf.write("\13!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\5")\r
82 buf.write("\"\u01eb\n\"\3#\3#\3#\3#\5#\u01f1\n#\3#\3#\5#\u01f5\n")\r
83 buf.write("#\3$\3$\3$\7$\u01fa\n$\f$\16$\u01fd\13$\3%\3%\5%\u0201")\r
84 buf.write("\n%\3%\3%\3%\5%\u0206\n%\7%\u0208\n%\f%\16%\u020b\13%")\r
85 buf.write("\3&\3&\3&\3&\3&\7&\u0212\n&\f&\16&\u0215\13&\3\'\3\'\3")\r
86 buf.write("\'\3\'\3\'\3\'\3\'\7\'\u021e\n\'\f\'\16\'\u0221\13\'\3")\r
87 buf.write("(\3(\3(\3(\3(\3(\5(\u0229\n(\3)\3)\3)\3)\3)\3)\3)\3)\3")\r
88 buf.write(")\3)\3)\3)\3)\3)\3)\5)\u023a\n)\3*\3*\3*\3*\3*\3*\3*\3")\r
89 buf.write("*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3")\r
90 buf.write("*\3*\3*\3*\7*\u0259\n*\f*\16*\u025c\13*\3+\3+\3+\7+\u0261")\r
91 buf.write("\n+\f+\16+\u0264\13+\3,\3,\3-\3-\3-\3-\3-\3-\5-\u026e")\r
92 buf.write("\n-\3.\3.\3.\3.\3.\7.\u0275\n.\f.\16.\u0278\13.\3.\6.")\r
93 buf.write("\u027b\n.\r.\16.\u027c\6.\u027f\n.\r.\16.\u0280\3.\7.")\r
94 buf.write("\u0284\n.\f.\16.\u0287\13.\3.\5.\u028a\n.\3/\3/\3/\7/")\r
95 buf.write("\u028f\n/\f/\16/\u0292\13/\3\60\3\60\3\61\3\61\3\61\3")\r
96 buf.write("\61\3\61\5\61\u029b\n\61\3\62\3\62\3\63\3\63\3\64\3\64")\r
97 buf.write("\3\64\3\64\3\64\3\64\3\64\5\64\u02a8\n\64\3\65\3\65\3")\r
98 buf.write("\65\7\65\u02ad\n\65\f\65\16\65\u02b0\13\65\3\66\3\66\3")\r
99 buf.write("\66\7\66\u02b5\n\66\f\66\16\66\u02b8\13\66\3\67\3\67\3")\r
100 buf.write("\67\7\67\u02bd\n\67\f\67\16\67\u02c0\13\67\38\38\38\7")\r
101 buf.write("8\u02c5\n8\f8\168\u02c8\138\39\39\39\79\u02cd\n9\f9\16")\r
102 buf.write("9\u02d0\139\3:\3:\3:\7:\u02d5\n:\f:\16:\u02d8\13:\3;\3")\r
103 buf.write(";\3;\7;\u02dd\n;\f;\16;\u02e0\13;\3<\3<\3<\7<\u02e5\n")\r
104 buf.write("<\f<\16<\u02e8\13<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\5")\r
105 buf.write("=\u02f5\n=\3>\5>\u02f8\n>\3>\3>\3>\7>\u02fd\n>\f>\16>")\r
106 buf.write("\u0300\13>\3>\3>\3>\3?\3?\3?\7?\u0308\n?\f?\16?\u030b")\r
107 buf.write("\13?\3?\3?\3@\3@\3@\7@\u0312\n@\f@\16@\u0315\13@\3@\3")\r
108 buf.write("@\3A\3A\3A\7A\u031c\nA\fA\16A\u031f\13A\3A\5A\u0322\n")\r
109 buf.write("A\3A\5A\u0325\nA\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3")\r
110 buf.write("B\5B\u0334\nB\3C\3C\7C\u0338\nC\fC\16C\u033b\13C\3C\5")\r
111 buf.write("C\u033e\nC\3C\3C\3D\6D\u0343\nD\rD\16D\u0344\3E\3E\3E")\r
112 buf.write("\3E\5E\u034b\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0355\nF\3")\r
113 buf.write("F\3F\3F\3F\3F\3F\5F\u035d\nF\3G\3G\3G\3G\3G\3G\3G\3G\3")\r
114 buf.write("G\3G\3G\3G\3G\3G\3G\3G\5G\u036f\nG\3H\3H\3H\3H\3H\3H\3")\r
115 buf.write("H\3H\3H\3H\3H\3H\3H\5H\u037e\nH\3H\2\2I\2\4\6\b\n\f\16")\r
116 buf.write("\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDF")\r
117 buf.write("HJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086")\r
118 buf.write("\u0088\u008a\u008c\u008e\2\f\3\2\b\f\3\2\27\30\3\2\33")\r
119 buf.write("\'\5\2,,./\679\4\2\7\7:C\3\2IJ\3\2KN\3\2OP\3\2\4\4\3\2")\r
120 buf.write("\26\26\2\u03d8\2\u0093\3\2\2\2\4\u00a8\3\2\2\2\6\u00ab")\r
121 buf.write("\3\2\2\2\b\u00bd\3\2\2\2\n\u00d0\3\2\2\2\f\u00d2\3\2\2")\r
122 buf.write("\2\16\u00da\3\2\2\2\20\u00df\3\2\2\2\22\u00f9\3\2\2\2")\r
123 buf.write("\24\u00fb\3\2\2\2\26\u0108\3\2\2\2\30\u010a\3\2\2\2\32")\r
124 buf.write("\u010d\3\2\2\2\34\u0111\3\2\2\2\36\u0117\3\2\2\2 \u011b")\r
125 buf.write("\3\2\2\2\"\u012a\3\2\2\2$\u013f\3\2\2\2&\u0141\3\2\2\2")\r
126 buf.write("(\u0149\3\2\2\2*\u014e\3\2\2\2,\u015e\3\2\2\2.\u0172\3")\r
127 buf.write("\2\2\2\60\u0184\3\2\2\2\62\u0192\3\2\2\2\64\u0194\3\2")\r
128 buf.write("\2\2\66\u019c\3\2\2\28\u01b9\3\2\2\2:\u01bb\3\2\2\2<\u01c8")\r
129 buf.write("\3\2\2\2>\u01cf\3\2\2\2@\u01d6\3\2\2\2B\u01ea\3\2\2\2")\r
130 buf.write("D\u01f4\3\2\2\2F\u01f6\3\2\2\2H\u01fe\3\2\2\2J\u020c\3")\r
131 buf.write("\2\2\2L\u0216\3\2\2\2N\u0228\3\2\2\2P\u0239\3\2\2\2R\u023b")\r
132 buf.write("\3\2\2\2T\u025d\3\2\2\2V\u0265\3\2\2\2X\u026d\3\2\2\2")\r
133 buf.write("Z\u0289\3\2\2\2\\\u028b\3\2\2\2^\u0293\3\2\2\2`\u029a")\r
134 buf.write("\3\2\2\2b\u029c\3\2\2\2d\u029e\3\2\2\2f\u02a0\3\2\2\2")\r
135 buf.write("h\u02a9\3\2\2\2j\u02b1\3\2\2\2l\u02b9\3\2\2\2n\u02c1\3")\r
136 buf.write("\2\2\2p\u02c9\3\2\2\2r\u02d1\3\2\2\2t\u02d9\3\2\2\2v\u02e1")\r
137 buf.write("\3\2\2\2x\u02f4\3\2\2\2z\u02f7\3\2\2\2|\u0304\3\2\2\2")\r
138 buf.write("~\u030e\3\2\2\2\u0080\u0318\3\2\2\2\u0082\u0333\3\2\2")\r
139 buf.write("\2\u0084\u0335\3\2\2\2\u0086\u0342\3\2\2\2\u0088\u034a")\r
140 buf.write("\3\2\2\2\u008a\u035c\3\2\2\2\u008c\u036e\3\2\2\2\u008e")\r
141 buf.write("\u037d\3\2\2\2\u0090\u0092\5\4\3\2\u0091\u0090\3\2\2\2")\r
142 buf.write("\u0092\u0095\3\2\2\2\u0093\u0091\3\2\2\2\u0093\u0094\3")\r
143 buf.write("\2\2\2\u0094\3\3\2\2\2\u0095\u0093\3\2\2\2\u0096\u0098")\r
144 buf.write("\5\b\5\2\u0097\u0096\3\2\2\2\u0097\u0098\3\2\2\2\u0098")\r
145 buf.write("\u0099\3\2\2\2\u0099\u009d\5,\27\2\u009a\u009c\5\n\6\2")\r
146 buf.write("\u009b\u009a\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3")\r
147 buf.write("\2\2\2\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u009d")\r
148 buf.write("\3\2\2\2\u00a0\u00a1\7\3\2\2\u00a1\u00a9\3\2\2\2\u00a2")\r
149 buf.write("\u00a9\5\6\4\2\u00a3\u00a9\5\n\6\2\u00a4\u00a6\5\u0080")\r
150 buf.write("A\2\u00a5\u00a7\7\4\2\2\u00a6\u00a5\3\2\2\2\u00a6\u00a7")\r
151 buf.write("\3\2\2\2\u00a7\u00a9\3\2\2\2\u00a8\u0097\3\2\2\2\u00a8")\r
152 buf.write("\u00a2\3\2\2\2\u00a8\u00a3\3\2\2\2\u00a8\u00a4\3\2\2\2")\r
153 buf.write("\u00a9\5\3\2\2\2\u00aa\u00ac\5\b\5\2\u00ab\u00aa\3\2\2")\r
154 buf.write("\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad\3\2\2\2\u00ad\u00b6")\r
155 buf.write("\5,\27\2\u00ae\u00b0\5\n\6\2\u00af\u00ae\3\2\2\2\u00b0")\r
156 buf.write("\u00b1\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2")\r
157 buf.write("\u00b2\u00b3\3\2\2\2\u00b3\u00b4\5\u0084C\2\u00b4\u00b7")\r
158 buf.write("\3\2\2\2\u00b5\u00b7\5\u0084C\2\u00b6\u00af\3\2\2\2\u00b6")\r
159 buf.write("\u00b5\3\2\2\2\u00b7\u00b8\3\2\2\2\u00b8\u00b9\b\4\1\2")\r
160 buf.write("\u00b9\7\3\2\2\2\u00ba\u00be\5\20\t\2\u00bb\u00be\5\22")\r
161 buf.write("\n\2\u00bc\u00be\5*\26\2\u00bd\u00ba\3\2\2\2\u00bd\u00bb")\r
162 buf.write("\3\2\2\2\u00bd\u00bc\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf")\r
163 buf.write("\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\t\3\2\2\2\u00c1")\r
164 buf.write("\u00c3\7\5\2\2\u00c2\u00c4\5\b\5\2\u00c3\u00c2\3\2\2\2")\r
165 buf.write("\u00c3\u00c4\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\u00c6\5")\r
166 buf.write("\f\7\2\u00c6\u00c7\7\4\2\2\u00c7\u00c8\b\6\1\2\u00c8\u00d1")\r
167 buf.write("\3\2\2\2\u00c9\u00cb\5\b\5\2\u00ca\u00cc\5\f\7\2\u00cb")\r
168 buf.write("\u00ca\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\3\2\2\2")\r
169 buf.write("\u00cd\u00ce\7\4\2\2\u00ce\u00cf\b\6\1\2\u00cf\u00d1\3")\r
170 buf.write("\2\2\2\u00d0\u00c1\3\2\2\2\u00d0\u00c9\3\2\2\2\u00d1\13")\r
171 buf.write("\3\2\2\2\u00d2\u00d7\5\16\b\2\u00d3\u00d4\7\6\2\2\u00d4")\r
172 buf.write("\u00d6\5\16\b\2\u00d5\u00d3\3\2\2\2\u00d6\u00d9\3\2\2")\r
173 buf.write("\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\r\3\2")\r
174 buf.write("\2\2\u00d9\u00d7\3\2\2\2\u00da\u00dd\5,\27\2\u00db\u00dc")\r
175 buf.write("\7\7\2\2\u00dc\u00de\5D#\2\u00dd\u00db\3\2\2\2\u00dd\u00de")\r
176 buf.write("\3\2\2\2\u00de\17\3\2\2\2\u00df\u00e0\t\2\2\2\u00e0\21")\r
177 buf.write("\3\2\2\2\u00e1\u00fa\7\r\2\2\u00e2\u00fa\7\16\2\2\u00e3")\r
178 buf.write("\u00fa\7\17\2\2\u00e4\u00fa\7\20\2\2\u00e5\u00fa\7\21")\r
179 buf.write("\2\2\u00e6\u00fa\7\22\2\2\u00e7\u00fa\7\23\2\2\u00e8\u00fa")\r
180 buf.write("\7\24\2\2\u00e9\u00fa\7\25\2\2\u00ea\u00eb\5\26\f\2\u00eb")\r
181 buf.write("\u00ec\b\n\1\2\u00ec\u00fa\3\2\2\2\u00ed\u00ee\5$\23\2")\r
182 buf.write("\u00ee\u00ef\b\n\1\2\u00ef\u00fa\3\2\2\2\u00f0\u00f4\7")\r
183 buf.write("_\2\2\u00f1\u00f3\5*\26\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6")\r
184 buf.write("\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5")\r
185 buf.write("\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00fa\5,\27\2")\r
186 buf.write("\u00f8\u00fa\5\24\13\2\u00f9\u00e1\3\2\2\2\u00f9\u00e2")\r
187 buf.write("\3\2\2\2\u00f9\u00e3\3\2\2\2\u00f9\u00e4\3\2\2\2\u00f9")\r
188 buf.write("\u00e5\3\2\2\2\u00f9\u00e6\3\2\2\2\u00f9\u00e7\3\2\2\2")\r
189 buf.write("\u00f9\u00e8\3\2\2\2\u00f9\u00e9\3\2\2\2\u00f9\u00ea\3")\r
190 buf.write("\2\2\2\u00f9\u00ed\3\2\2\2\u00f9\u00f0\3\2\2\2\u00f9\u00f8")\r
191 buf.write("\3\2\2\2\u00fa\23\3\2\2\2\u00fb\u00fc\7_\2\2\u00fc\25")\r
192 buf.write("\3\2\2\2\u00fd\u00ff\5\30\r\2\u00fe\u0100\7_\2\2\u00ff")\r
193 buf.write("\u00fe\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0101\3\2\2\2")\r
194 buf.write("\u0101\u0102\7\3\2\2\u0102\u0103\5\32\16\2\u0103\u0104")\r
195 buf.write("\7\26\2\2\u0104\u0109\3\2\2\2\u0105\u0106\5\30\r\2\u0106")\r
196 buf.write("\u0107\7_\2\2\u0107\u0109\3\2\2\2\u0108\u00fd\3\2\2\2")\r
197 buf.write("\u0108\u0105\3\2\2\2\u0109\27\3\2\2\2\u010a\u010b\t\3")\r
198 buf.write("\2\2\u010b\31\3\2\2\2\u010c\u010e\5\34\17\2\u010d\u010c")\r
199 buf.write("\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u010d\3\2\2\2\u010f")\r
200 buf.write("\u0110\3\2\2\2\u0110\33\3\2\2\2\u0111\u0112\5\36\20\2")\r
201 buf.write("\u0112\u0113\5 \21\2\u0113\u0114\7\4\2\2\u0114\35\3\2")\r
202 buf.write("\2\2\u0115\u0118\5*\26\2\u0116\u0118\5\22\n\2\u0117\u0115")\r
203 buf.write("\3\2\2\2\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119")\r
204 buf.write("\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\37\3\2\2\2\u011b")\r
205 buf.write("\u0120\5\"\22\2\u011c\u011d\7\6\2\2\u011d\u011f\5\"\22")\r
206 buf.write("\2\u011e\u011c\3\2\2\2\u011f\u0122\3\2\2\2\u0120\u011e")\r
207 buf.write("\3\2\2\2\u0120\u0121\3\2\2\2\u0121!\3\2\2\2\u0122\u0120")\r
208 buf.write("\3\2\2\2\u0123\u0126\5,\27\2\u0124\u0125\7\31\2\2\u0125")\r
209 buf.write("\u0127\5^\60\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2")\r
210 buf.write("\u0127\u012b\3\2\2\2\u0128\u0129\7\31\2\2\u0129\u012b")\r
211 buf.write("\5^\60\2\u012a\u0123\3\2\2\2\u012a\u0128\3\2\2\2\u012b")\r
212 buf.write("#\3\2\2\2\u012c\u012d\7\32\2\2\u012d\u012e\7\3\2\2\u012e")\r
213 buf.write("\u0130\5&\24\2\u012f\u0131\7\6\2\2\u0130\u012f\3\2\2\2")\r
214 buf.write("\u0130\u0131\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0133\7")\r
215 buf.write("\26\2\2\u0133\u0140\3\2\2\2\u0134\u0135\7\32\2\2\u0135")\r
216 buf.write("\u0136\7_\2\2\u0136\u0137\7\3\2\2\u0137\u0139\5&\24\2")\r
217 buf.write("\u0138\u013a\7\6\2\2\u0139\u0138\3\2\2\2\u0139\u013a\3")\r
218 buf.write("\2\2\2\u013a\u013b\3\2\2\2\u013b\u013c\7\26\2\2\u013c")\r
219 buf.write("\u0140\3\2\2\2\u013d\u013e\7\32\2\2\u013e\u0140\7_\2\2")\r
220 buf.write("\u013f\u012c\3\2\2\2\u013f\u0134\3\2\2\2\u013f\u013d\3")\r
221 buf.write("\2\2\2\u0140%\3\2\2\2\u0141\u0146\5(\25\2\u0142\u0143")\r
222 buf.write("\7\6\2\2\u0143\u0145\5(\25\2\u0144\u0142\3\2\2\2\u0145")\r
223 buf.write("\u0148\3\2\2\2\u0146\u0144\3\2\2\2\u0146\u0147\3\2\2\2")\r
224 buf.write("\u0147\'\3\2\2\2\u0148\u0146\3\2\2\2\u0149\u014c\7_\2")\r
225 buf.write("\2\u014a\u014b\7\7\2\2\u014b\u014d\5^\60\2\u014c\u014a")\r
226 buf.write("\3\2\2\2\u014c\u014d\3\2\2\2\u014d)\3\2\2\2\u014e\u014f")\r
227 buf.write("\t\4\2\2\u014f+\3\2\2\2\u0150\u0152\5\62\32\2\u0151\u0150")\r
228 buf.write("\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0154\3\2\2\2\u0153")\r
229 buf.write("\u0155\7$\2\2\u0154\u0153\3\2\2\2\u0154\u0155\3\2\2\2")\r
230 buf.write("\u0155\u0157\3\2\2\2\u0156\u0158\7%\2\2\u0157\u0156\3")\r
231 buf.write("\2\2\2\u0157\u0158\3\2\2\2\u0158\u015a\3\2\2\2\u0159\u015b")\r
232 buf.write("\7&\2\2\u015a\u0159\3\2\2\2\u015a\u015b\3\2\2\2\u015b")\r
233 buf.write("\u015c\3\2\2\2\u015c\u015f\5.\30\2\u015d\u015f\5\62\32")\r
234 buf.write("\2\u015e\u0151\3\2\2\2\u015e\u015d\3\2\2\2\u015f-\3\2")\r
235 buf.write("\2\2\u0160\u0164\7_\2\2\u0161\u0163\5\60\31\2\u0162\u0161")\r
236 buf.write("\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164")\r
237 buf.write("\u0165\3\2\2\2\u0165\u0173\3\2\2\2\u0166\u0164\3\2\2\2")\r
238 buf.write("\u0167\u0169\7(\2\2\u0168\u016a\7$\2\2\u0169\u0168\3\2")\r
239 buf.write("\2\2\u0169\u016a\3\2\2\2\u016a\u016b\3\2\2\2\u016b\u016c")\r
240 buf.write("\5,\27\2\u016c\u016e\7)\2\2\u016d\u016f\5\60\31\2\u016e")\r
241 buf.write("\u016d\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u016e\3\2\2\2")\r
242 buf.write("\u0170\u0171\3\2\2\2\u0171\u0173\3\2\2\2\u0172\u0160\3")\r
243 buf.write("\2\2\2\u0172\u0167\3\2\2\2\u0173/\3\2\2\2\u0174\u0175")\r
244 buf.write("\7*\2\2\u0175\u0176\5^\60\2\u0176\u0177\7+\2\2\u0177\u0185")\r
245 buf.write("\3\2\2\2\u0178\u0179\7*\2\2\u0179\u0185\7+\2\2\u017a\u017b")\r
246 buf.write("\7(\2\2\u017b\u017c\5\64\33\2\u017c\u017d\7)\2\2\u017d")\r
247 buf.write("\u0185\3\2\2\2\u017e\u017f\7(\2\2\u017f\u0180\5:\36\2")\r
248 buf.write("\u0180\u0181\7)\2\2\u0181\u0185\3\2\2\2\u0182\u0183\7")\r
249 buf.write("(\2\2\u0183\u0185\7)\2\2\u0184\u0174\3\2\2\2\u0184\u0178")\r
250 buf.write("\3\2\2\2\u0184\u017a\3\2\2\2\u0184\u017e\3\2\2\2\u0184")\r
251 buf.write("\u0182\3\2\2\2\u0185\61\3\2\2\2\u0186\u0188\7,\2\2\u0187")\r
252 buf.write("\u0189\5*\26\2\u0188\u0187\3\2\2\2\u0189\u018a\3\2\2\2")\r
253 buf.write("\u018a\u0188\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018d\3")\r
254 buf.write("\2\2\2\u018c\u018e\5\62\32\2\u018d\u018c\3\2\2\2\u018d")\r
255 buf.write("\u018e\3\2\2\2\u018e\u0193\3\2\2\2\u018f\u0190\7,\2\2")\r
256 buf.write("\u0190\u0193\5\62\32\2\u0191\u0193\7,\2\2\u0192\u0186")\r
257 buf.write("\3\2\2\2\u0192\u018f\3\2\2\2\u0192\u0191\3\2\2\2\u0193")\r
258 buf.write("\63\3\2\2\2\u0194\u019a\5\66\34\2\u0195\u0197\7\6\2\2")\r
259 buf.write("\u0196\u0198\7\37\2\2\u0197\u0196\3\2\2\2\u0197\u0198")\r
260 buf.write("\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u019b\7-\2\2\u019a")\r
261 buf.write("\u0195\3\2\2\2\u019a\u019b\3\2\2\2\u019b\65\3\2\2\2\u019c")\r
262 buf.write("\u01a4\58\35\2\u019d\u019f\7\6\2\2\u019e\u01a0\7\37\2")\r
263 buf.write("\2\u019f\u019e\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a1")\r
264 buf.write("\3\2\2\2\u01a1\u01a3\58\35\2\u01a2\u019d\3\2\2\2\u01a3")\r
265 buf.write("\u01a6\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a4\u01a5\3\2\2\2")\r
266 buf.write("\u01a5\67\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a7\u01ac\5\b")\r
267 buf.write("\5\2\u01a8\u01ab\5,\27\2\u01a9\u01ab\5> \2\u01aa\u01a8")\r
268 buf.write("\3\2\2\2\u01aa\u01a9\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac")\r
269 buf.write("\u01aa\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b0\3\2\2\2")\r
270 buf.write("\u01ae\u01ac\3\2\2\2\u01af\u01b1\7\37\2\2\u01b0\u01af")\r
271 buf.write("\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01ba\3\2\2\2\u01b2")\r
272 buf.write("\u01b4\5\62\32\2\u01b3\u01b2\3\2\2\2\u01b4\u01b7\3\2\2")\r
273 buf.write("\2\u01b5\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b8")\r
274 buf.write("\3\2\2\2\u01b7\u01b5\3\2\2\2\u01b8\u01ba\7_\2\2\u01b9")\r
275 buf.write("\u01a7\3\2\2\2\u01b9\u01b5\3\2\2\2\u01ba9\3\2\2\2\u01bb")\r
276 buf.write("\u01c0\7_\2\2\u01bc\u01bd\7\6\2\2\u01bd\u01bf\7_\2\2\u01be")\r
277 buf.write("\u01bc\3\2\2\2\u01bf\u01c2\3\2\2\2\u01c0\u01be\3\2\2\2")\r
278 buf.write("\u01c0\u01c1\3\2\2\2\u01c1;\3\2\2\2\u01c2\u01c0\3\2\2")\r
279 buf.write("\2\u01c3\u01c5\5\36\20\2\u01c4\u01c6\5> \2\u01c5\u01c4")\r
280 buf.write("\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c9\3\2\2\2\u01c7")\r
281 buf.write("\u01c9\5\24\13\2\u01c8\u01c3\3\2\2\2\u01c8\u01c7\3\2\2")\r
282 buf.write("\2\u01c9=\3\2\2\2\u01ca\u01cc\5\62\32\2\u01cb\u01cd\5")\r
283 buf.write("@!\2\u01cc\u01cb\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01d0")\r
284 buf.write("\3\2\2\2\u01ce\u01d0\5@!\2\u01cf\u01ca\3\2\2\2\u01cf\u01ce")\r
285 buf.write("\3\2\2\2\u01d0?\3\2\2\2\u01d1\u01d2\7(\2\2\u01d2\u01d3")\r
286 buf.write("\5> \2\u01d3\u01d4\7)\2\2\u01d4\u01d7\3\2\2\2\u01d5\u01d7")\r
287 buf.write("\5B\"\2\u01d6\u01d1\3\2\2\2\u01d6\u01d5\3\2\2\2\u01d7")\r
288 buf.write("\u01db\3\2\2\2\u01d8\u01da\5B\"\2\u01d9\u01d8\3\2\2\2")\r
289 buf.write("\u01da\u01dd\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3")\r
290 buf.write("\2\2\2\u01dcA\3\2\2\2\u01dd\u01db\3\2\2\2\u01de\u01df")\r
291 buf.write("\7*\2\2\u01df\u01eb\7+\2\2\u01e0\u01e1\7*\2\2\u01e1\u01e2")\r
292 buf.write("\5^\60\2\u01e2\u01e3\7+\2\2\u01e3\u01eb\3\2\2\2\u01e4")\r
293 buf.write("\u01e5\7(\2\2\u01e5\u01eb\7)\2\2\u01e6\u01e7\7(\2\2\u01e7")\r
294 buf.write("\u01e8\5\64\33\2\u01e8\u01e9\7)\2\2\u01e9\u01eb\3\2\2")\r
295 buf.write("\2\u01ea\u01de\3\2\2\2\u01ea\u01e0\3\2\2\2\u01ea\u01e4")\r
296 buf.write("\3\2\2\2\u01ea\u01e6\3\2\2\2\u01ebC\3\2\2\2\u01ec\u01f5")\r
297 buf.write("\5`\61\2\u01ed\u01ee\7\3\2\2\u01ee\u01f0\5F$\2\u01ef\u01f1")\r
298 buf.write("\7\6\2\2\u01f0\u01ef\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1")\r
299 buf.write("\u01f2\3\2\2\2\u01f2\u01f3\7\26\2\2\u01f3\u01f5\3\2\2")\r
300 buf.write("\2\u01f4\u01ec\3\2\2\2\u01f4\u01ed\3\2\2\2\u01f5E\3\2")\r
301 buf.write("\2\2\u01f6\u01fb\5D#\2\u01f7\u01f8\7\6\2\2\u01f8\u01fa")\r
302 buf.write("\5D#\2\u01f9\u01f7\3\2\2\2\u01fa\u01fd\3\2\2\2\u01fb\u01f9")\r
303 buf.write("\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fcG\3\2\2\2\u01fd\u01fb")\r
304 buf.write("\3\2\2\2\u01fe\u0200\5`\61\2\u01ff\u0201\7\37\2\2\u0200")\r
305 buf.write("\u01ff\3\2\2\2\u0200\u0201\3\2\2\2\u0201\u0209\3\2\2\2")\r
306 buf.write("\u0202\u0203\7\6\2\2\u0203\u0205\5`\61\2\u0204\u0206\7")\r
307 buf.write("\37\2\2\u0205\u0204\3\2\2\2\u0205\u0206\3\2\2\2\u0206")\r
308 buf.write("\u0208\3\2\2\2\u0207\u0202\3\2\2\2\u0208\u020b\3\2\2\2")\r
309 buf.write("\u0209\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020aI\3\2\2")\r
310 buf.write("\2\u020b\u0209\3\2\2\2\u020c\u0213\5L\'\2\u020d\u020e")\r
311 buf.write("\7.\2\2\u020e\u0212\5L\'\2\u020f\u0210\7/\2\2\u0210\u0212")\r
312 buf.write("\5L\'\2\u0211\u020d\3\2\2\2\u0211\u020f\3\2\2\2\u0212")\r
313 buf.write("\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213\u0214\3\2\2\2")\r
314 buf.write("\u0214K\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u021f\5N(\2")\r
315 buf.write("\u0217\u0218\7,\2\2\u0218\u021e\5N(\2\u0219\u021a\7\60")\r
316 buf.write("\2\2\u021a\u021e\5N(\2\u021b\u021c\7\61\2\2\u021c\u021e")\r
317 buf.write("\5N(\2\u021d\u0217\3\2\2\2\u021d\u0219\3\2\2\2\u021d\u021b")\r
318 buf.write("\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u021f")\r
319 buf.write("\u0220\3\2\2\2\u0220M\3\2\2\2\u0221\u021f\3\2\2\2\u0222")\r
320 buf.write("\u0223\7(\2\2\u0223\u0224\5<\37\2\u0224\u0225\7)\2\2\u0225")\r
321 buf.write("\u0226\5N(\2\u0226\u0229\3\2\2\2\u0227\u0229\5P)\2\u0228")\r
322 buf.write("\u0222\3\2\2\2\u0228\u0227\3\2\2\2\u0229O\3\2\2\2\u022a")\r
323 buf.write("\u023a\5R*\2\u022b\u022c\7\62\2\2\u022c\u023a\5P)\2\u022d")\r
324 buf.write("\u022e\7\63\2\2\u022e\u023a\5P)\2\u022f\u0230\5V,\2\u0230")\r
325 buf.write("\u0231\5N(\2\u0231\u023a\3\2\2\2\u0232\u0233\7\64\2\2")\r
326 buf.write("\u0233\u023a\5P)\2\u0234\u0235\7\64\2\2\u0235\u0236\7")\r
327 buf.write("(\2\2\u0236\u0237\5<\37\2\u0237\u0238\7)\2\2\u0238\u023a")\r
328 buf.write("\3\2\2\2\u0239\u022a\3\2\2\2\u0239\u022b\3\2\2\2\u0239")\r
329 buf.write("\u022d\3\2\2\2\u0239\u022f\3\2\2\2\u0239\u0232\3\2\2\2")\r
330 buf.write("\u0239\u0234\3\2\2\2\u023aQ\3\2\2\2\u023b\u023c\5X-\2")\r
331 buf.write("\u023c\u025a\b*\1\2\u023d\u023e\7*\2\2\u023e\u023f\5\\")\r
332 buf.write("/\2\u023f\u0240\7+\2\2\u0240\u0259\3\2\2\2\u0241\u0242")\r
333 buf.write("\7(\2\2\u0242\u0243\7)\2\2\u0243\u0259\b*\1\2\u0244\u0245")\r
334 buf.write("\7(\2\2\u0245\u0246\5H%\2\u0246\u0247\7)\2\2\u0247\u0248")\r
335 buf.write("\b*\1\2\u0248\u0259\3\2\2\2\u0249\u024a\7(\2\2\u024a\u024b")\r
336 buf.write("\5T+\2\u024b\u024c\7)\2\2\u024c\u0259\3\2\2\2\u024d\u024e")\r
337 buf.write("\7\65\2\2\u024e\u024f\7_\2\2\u024f\u0259\b*\1\2\u0250")\r
338 buf.write("\u0251\7,\2\2\u0251\u0252\7_\2\2\u0252\u0259\b*\1\2\u0253")\r
339 buf.write("\u0254\7\66\2\2\u0254\u0255\7_\2\2\u0255\u0259\b*\1\2")\r
340 buf.write("\u0256\u0259\7\62\2\2\u0257\u0259\7\63\2\2\u0258\u023d")\r
341 buf.write("\3\2\2\2\u0258\u0241\3\2\2\2\u0258\u0244\3\2\2\2\u0258")\r
342 buf.write("\u0249\3\2\2\2\u0258\u024d\3\2\2\2\u0258\u0250\3\2\2\2")\r
343 buf.write("\u0258\u0253\3\2\2\2\u0258\u0256\3\2\2\2\u0258\u0257\3")\r
344 buf.write("\2\2\2\u0259\u025c\3\2\2\2\u025a\u0258\3\2\2\2\u025a\u025b")\r
345 buf.write("\3\2\2\2\u025bS\3\2\2\2\u025c\u025a\3\2\2\2\u025d\u0262")\r
346 buf.write("\58\35\2\u025e\u025f\7\6\2\2\u025f\u0261\58\35\2\u0260")\r
347 buf.write("\u025e\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2\2\2")\r
348 buf.write("\u0262\u0263\3\2\2\2\u0263U\3\2\2\2\u0264\u0262\3\2\2")\r
349 buf.write("\2\u0265\u0266\t\5\2\2\u0266W\3\2\2\2\u0267\u026e\7_\2")\r
350 buf.write("\2\u0268\u026e\5Z.\2\u0269\u026a\7(\2\2\u026a\u026b\5")\r
351 buf.write("\\/\2\u026b\u026c\7)\2\2\u026c\u026e\3\2\2\2\u026d\u0267")\r
352 buf.write("\3\2\2\2\u026d\u0268\3\2\2\2\u026d\u0269\3\2\2\2\u026e")\r
353 buf.write("Y\3\2\2\2\u026f\u028a\7b\2\2\u0270\u028a\7d\2\2\u0271")\r
354 buf.write("\u028a\7c\2\2\u0272\u028a\7`\2\2\u0273\u0275\7_\2\2\u0274")\r
355 buf.write("\u0273\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2\2")\r
356 buf.write("\u0276\u0277\3\2\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3")\r
357 buf.write("\2\2\2\u0279\u027b\7a\2\2\u027a\u0279\3\2\2\2\u027b\u027c")\r
358 buf.write("\3\2\2\2\u027c\u027a\3\2\2\2\u027c\u027d\3\2\2\2\u027d")\r
359 buf.write("\u027f\3\2\2\2\u027e\u0276\3\2\2\2\u027f\u0280\3\2\2\2")\r
360 buf.write("\u0280\u027e\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0285\3")\r
361 buf.write("\2\2\2\u0282\u0284\7_\2\2\u0283\u0282\3\2\2\2\u0284\u0287")\r
362 buf.write("\3\2\2\2\u0285\u0283\3\2\2\2\u0285\u0286\3\2\2\2\u0286")\r
363 buf.write("\u028a\3\2\2\2\u0287\u0285\3\2\2\2\u0288\u028a\7e\2\2")\r
364 buf.write("\u0289\u026f\3\2\2\2\u0289\u0270\3\2\2\2\u0289\u0271\3")\r
365 buf.write("\2\2\2\u0289\u0272\3\2\2\2\u0289\u027e\3\2\2\2\u0289\u0288")\r
366 buf.write("\3\2\2\2\u028a[\3\2\2\2\u028b\u0290\5`\61\2\u028c\u028d")\r
367 buf.write("\7\6\2\2\u028d\u028f\5`\61\2\u028e\u028c\3\2\2\2\u028f")\r
368 buf.write("\u0292\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2")\r
369 buf.write("\u0291]\3\2\2\2\u0292\u0290\3\2\2\2\u0293\u0294\5f\64")\r
370 buf.write("\2\u0294_\3\2\2\2\u0295\u0296\5b\62\2\u0296\u0297\5d\63")\r
371 buf.write("\2\u0297\u0298\5`\61\2\u0298\u029b\3\2\2\2\u0299\u029b")\r
372 buf.write("\5f\64\2\u029a\u0295\3\2\2\2\u029a\u0299\3\2\2\2\u029b")\r
373 buf.write("a\3\2\2\2\u029c\u029d\5P)\2\u029dc\3\2\2\2\u029e\u029f")\r
374 buf.write("\t\6\2\2\u029fe\3\2\2\2\u02a0\u02a7\5h\65\2\u02a1\u02a2")\r
375 buf.write("\7D\2\2\u02a2\u02a3\5\\/\2\u02a3\u02a4\7\31\2\2\u02a4")\r
376 buf.write("\u02a5\5f\64\2\u02a5\u02a6\b\64\1\2\u02a6\u02a8\3\2\2")\r
377 buf.write("\2\u02a7\u02a1\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8g\3\2")\r
378 buf.write("\2\2\u02a9\u02ae\5j\66\2\u02aa\u02ab\7E\2\2\u02ab\u02ad")\r
379 buf.write("\5j\66\2\u02ac\u02aa\3\2\2\2\u02ad\u02b0\3\2\2\2\u02ae")\r
380 buf.write("\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02afi\3\2\2\2\u02b0")\r
381 buf.write("\u02ae\3\2\2\2\u02b1\u02b6\5l\67\2\u02b2\u02b3\7F\2\2")\r
382 buf.write("\u02b3\u02b5\5l\67\2\u02b4\u02b2\3\2\2\2\u02b5\u02b8\3")\r
383 buf.write("\2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7k")\r
384 buf.write("\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9\u02be\5n8\2\u02ba\u02bb")\r
385 buf.write("\7G\2\2\u02bb\u02bd\5n8\2\u02bc\u02ba\3\2\2\2\u02bd\u02c0")\r
386 buf.write("\3\2\2\2\u02be\u02bc\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf")\r
387 buf.write("m\3\2\2\2\u02c0\u02be\3\2\2\2\u02c1\u02c6\5p9\2\u02c2")\r
388 buf.write("\u02c3\7H\2\2\u02c3\u02c5\5p9\2\u02c4\u02c2\3\2\2\2\u02c5")\r
389 buf.write("\u02c8\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c6\u02c7\3\2\2\2")\r
390 buf.write("\u02c7o\3\2\2\2\u02c8\u02c6\3\2\2\2\u02c9\u02ce\5r:\2")\r
391 buf.write("\u02ca\u02cb\7\67\2\2\u02cb\u02cd\5r:\2\u02cc\u02ca\3")\r
392 buf.write("\2\2\2\u02cd\u02d0\3\2\2\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf")\r
393 buf.write("\3\2\2\2\u02cfq\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d1\u02d6")\r
394 buf.write("\5t;\2\u02d2\u02d3\t\7\2\2\u02d3\u02d5\5t;\2\u02d4\u02d2")\r
395 buf.write("\3\2\2\2\u02d5\u02d8\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d6")\r
396 buf.write("\u02d7\3\2\2\2\u02d7s\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d9")\r
397 buf.write("\u02de\5v<\2\u02da\u02db\t\b\2\2\u02db\u02dd\5v<\2\u02dc")\r
398 buf.write("\u02da\3\2\2\2\u02dd\u02e0\3\2\2\2\u02de\u02dc\3\2\2\2")\r
399 buf.write("\u02de\u02df\3\2\2\2\u02dfu\3\2\2\2\u02e0\u02de\3\2\2")\r
400 buf.write("\2\u02e1\u02e6\5J&\2\u02e2\u02e3\t\t\2\2\u02e3\u02e5\5")\r
401 buf.write("J&\2\u02e4\u02e2\3\2\2\2\u02e5\u02e8\3\2\2\2\u02e6\u02e4")\r
402 buf.write("\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7w\3\2\2\2\u02e8\u02e6")\r
403 buf.write("\3\2\2\2\u02e9\u02f5\5\u0082B\2\u02ea\u02f5\5\u0084C\2")\r
404 buf.write("\u02eb\u02f5\5\u0088E\2\u02ec\u02f5\5\u008aF\2\u02ed\u02f5")\r
405 buf.write("\5\u008cG\2\u02ee\u02f5\5\u008eH\2\u02ef\u02f5\5\u0080")\r
406 buf.write("A\2\u02f0\u02f5\5z>\2\u02f1\u02f5\5|?\2\u02f2\u02f5\5")\r
407 buf.write("~@\2\u02f3\u02f5\5\n\6\2\u02f4\u02e9\3\2\2\2\u02f4\u02ea")\r
408 buf.write("\3\2\2\2\u02f4\u02eb\3\2\2\2\u02f4\u02ec\3\2\2\2\u02f4")\r
409 buf.write("\u02ed\3\2\2\2\u02f4\u02ee\3\2\2\2\u02f4\u02ef\3\2\2\2")\r
410 buf.write("\u02f4\u02f0\3\2\2\2\u02f4\u02f1\3\2\2\2\u02f4\u02f2\3")\r
411 buf.write("\2\2\2\u02f4\u02f3\3\2\2\2\u02f5y\3\2\2\2\u02f6\u02f8")\r
412 buf.write("\7Q\2\2\u02f7\u02f6\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8")\r
413 buf.write("\u02f9\3\2\2\2\u02f9\u02fa\7_\2\2\u02fa\u02fe\7(\2\2\u02fb")\r
414 buf.write("\u02fd\n\n\2\2\u02fc\u02fb\3\2\2\2\u02fd\u0300\3\2\2\2")\r
415 buf.write("\u02fe\u02fc\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0301\3")\r
416 buf.write("\2\2\2\u0300\u02fe\3\2\2\2\u0301\u0302\7)\2\2\u0302\u0303")\r
417 buf.write("\7\4\2\2\u0303{\3\2\2\2\u0304\u0305\7R\2\2\u0305\u0309")\r
418 buf.write("\7\3\2\2\u0306\u0308\n\13\2\2\u0307\u0306\3\2\2\2\u0308")\r
419 buf.write("\u030b\3\2\2\2\u0309\u0307\3\2\2\2\u0309\u030a\3\2\2\2")\r
420 buf.write("\u030a\u030c\3\2\2\2\u030b\u0309\3\2\2\2\u030c\u030d\7")\r
421 buf.write("\26\2\2\u030d}\3\2\2\2\u030e\u030f\7S\2\2\u030f\u0313")\r
422 buf.write("\7\3\2\2\u0310\u0312\n\13\2\2\u0311\u0310\3\2\2\2\u0312")\r
423 buf.write("\u0315\3\2\2\2\u0313\u0311\3\2\2\2\u0313\u0314\3\2\2\2")\r
424 buf.write("\u0314\u0316\3\2\2\2\u0315\u0313\3\2\2\2\u0316\u0317\7")\r
425 buf.write("\26\2\2\u0317\177\3\2\2\2\u0318\u0319\7_\2\2\u0319\u031d")\r
426 buf.write("\7(\2\2\u031a\u031c\5\n\6\2\u031b\u031a\3\2\2\2\u031c")\r
427 buf.write("\u031f\3\2\2\2\u031d\u031b\3\2\2\2\u031d\u031e\3\2\2\2")\r
428 buf.write("\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u0320\u0322\5")\r
429 buf.write("\u0086D\2\u0321\u0320\3\2\2\2\u0321\u0322\3\2\2\2\u0322")\r
430 buf.write("\u0324\3\2\2\2\u0323\u0325\5\\/\2\u0324\u0323\3\2\2\2")\r
431 buf.write("\u0324\u0325\3\2\2\2\u0325\u0326\3\2\2\2\u0326\u0327\7")\r
432 buf.write(")\2\2\u0327\u0081\3\2\2\2\u0328\u0329\7_\2\2\u0329\u032a")\r
433 buf.write("\7\31\2\2\u032a\u0334\5x=\2\u032b\u032c\7T\2\2\u032c\u032d")\r
434 buf.write("\5^\60\2\u032d\u032e\7\31\2\2\u032e\u032f\5x=\2\u032f")\r
435 buf.write("\u0334\3\2\2\2\u0330\u0331\7U\2\2\u0331\u0332\7\31\2\2")\r
436 buf.write("\u0332\u0334\5x=\2\u0333\u0328\3\2\2\2\u0333\u032b\3\2")\r
437 buf.write("\2\2\u0333\u0330\3\2\2\2\u0334\u0083\3\2\2\2\u0335\u0339")\r
438 buf.write("\7\3\2\2\u0336\u0338\5\n\6\2\u0337\u0336\3\2\2\2\u0338")\r
439 buf.write("\u033b\3\2\2\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2")\r
440 buf.write("\u033a\u033d\3\2\2\2\u033b\u0339\3\2\2\2\u033c\u033e\5")\r
441 buf.write("\u0086D\2\u033d\u033c\3\2\2\2\u033d\u033e\3\2\2\2\u033e")\r
442 buf.write("\u033f\3\2\2\2\u033f\u0340\7\26\2\2\u0340\u0085\3\2\2")\r
443 buf.write("\2\u0341\u0343\5x=\2\u0342\u0341\3\2\2\2\u0343\u0344\3")\r
444 buf.write("\2\2\2\u0344\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345\u0087")\r
445 buf.write("\3\2\2\2\u0346\u034b\7\4\2\2\u0347\u0348\5\\/\2\u0348")\r
446 buf.write("\u0349\7\4\2\2\u0349\u034b\3\2\2\2\u034a\u0346\3\2\2\2")\r
447 buf.write("\u034a\u0347\3\2\2\2\u034b\u0089\3\2\2\2\u034c\u034d\7")\r
448 buf.write("V\2\2\u034d\u034e\7(\2\2\u034e\u034f\5\\/\2\u034f\u0350")\r
449 buf.write("\7)\2\2\u0350\u0351\bF\1\2\u0351\u0354\5x=\2\u0352\u0353")\r
450 buf.write("\7W\2\2\u0353\u0355\5x=\2\u0354\u0352\3\2\2\2\u0354\u0355")\r
451 buf.write("\3\2\2\2\u0355\u035d\3\2\2\2\u0356\u0357\7X\2\2\u0357")\r
452 buf.write("\u0358\7(\2\2\u0358\u0359\5\\/\2\u0359\u035a\7)\2\2\u035a")\r
453 buf.write("\u035b\5x=\2\u035b\u035d\3\2\2\2\u035c\u034c\3\2\2\2\u035c")\r
454 buf.write("\u0356\3\2\2\2\u035d\u008b\3\2\2\2\u035e\u035f\7Y\2\2")\r
455 buf.write("\u035f\u0360\7(\2\2\u0360\u0361\5\\/\2\u0361\u0362\7)")\r
456 buf.write("\2\2\u0362\u0363\5x=\2\u0363\u0364\bG\1\2\u0364\u036f")\r
457 buf.write("\3\2\2\2\u0365\u0366\7Z\2\2\u0366\u0367\5x=\2\u0367\u0368")\r
458 buf.write("\7Y\2\2\u0368\u0369\7(\2\2\u0369\u036a\5\\/\2\u036a\u036b")\r
459 buf.write("\7)\2\2\u036b\u036c\7\4\2\2\u036c\u036d\bG\1\2\u036d\u036f")\r
460 buf.write("\3\2\2\2\u036e\u035e\3\2\2\2\u036e\u0365\3\2\2\2\u036f")\r
461 buf.write("\u008d\3\2\2\2\u0370\u0371\7[\2\2\u0371\u0372\7_\2\2\u0372")\r
462 buf.write("\u037e\7\4\2\2\u0373\u0374\7\\\2\2\u0374\u037e\7\4\2\2")\r
463 buf.write("\u0375\u0376\7]\2\2\u0376\u037e\7\4\2\2\u0377\u0378\7")\r
464 buf.write("^\2\2\u0378\u037e\7\4\2\2\u0379\u037a\7^\2\2\u037a\u037b")\r
465 buf.write("\5\\/\2\u037b\u037c\7\4\2\2\u037c\u037e\3\2\2\2\u037d")\r
466 buf.write("\u0370\3\2\2\2\u037d\u0373\3\2\2\2\u037d\u0375\3\2\2\2")\r
467 buf.write("\u037d\u0377\3\2\2\2\u037d\u0379\3\2\2\2\u037e\u008f\3")\r
468 buf.write("\2\2\2o\u0093\u0097\u009d\u00a6\u00a8\u00ab\u00b1\u00b6")\r
469 buf.write("\u00bd\u00bf\u00c3\u00cb\u00d0\u00d7\u00dd\u00f4\u00f9")\r
470 buf.write("\u00ff\u0108\u010f\u0117\u0119\u0120\u0126\u012a\u0130")\r
471 buf.write("\u0139\u013f\u0146\u014c\u0151\u0154\u0157\u015a\u015e")\r
472 buf.write("\u0164\u0169\u0170\u0172\u0184\u018a\u018d\u0192\u0197")\r
473 buf.write("\u019a\u019f\u01a4\u01aa\u01ac\u01b0\u01b5\u01b9\u01c0")\r
474 buf.write("\u01c5\u01c8\u01cc\u01cf\u01d6\u01db\u01ea\u01f0\u01f4")\r
475 buf.write("\u01fb\u0200\u0205\u0209\u0211\u0213\u021d\u021f\u0228")\r
476 buf.write("\u0239\u0258\u025a\u0262\u026d\u0276\u027c\u0280\u0285")\r
477 buf.write("\u0289\u0290\u029a\u02a7\u02ae\u02b6\u02be\u02c6\u02ce")\r
478 buf.write("\u02d6\u02de\u02e6\u02f4\u02f7\u02fe\u0309\u0313\u031d")\r
479 buf.write("\u0321\u0324\u0333\u0339\u033d\u0344\u034a\u0354\u035c")\r
480 buf.write("\u036e\u037d")\r
481 return buf.getvalue()\r
482\r
483\r
484class CParser ( Parser ):\r
485\r
486 grammarFileName = "C.g4"\r
487\r
488 atn = ATNDeserializer().deserialize(serializedATN())\r
489\r
490 decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]\r
491\r
492 sharedContextCache = PredictionContextCache()\r
493\r
494 literalNames = [ "<INVALID>", "'{'", "';'", "'typedef'", "','", "'='", \r
495 "'extern'", "'static'", "'auto'", "'register'", "'STATIC'", \r
496 "'void'", "'char'", "'short'", "'int'", "'long'", "'float'", \r
497 "'double'", "'signed'", "'unsigned'", "'}'", "'struct'", \r
498 "'union'", "':'", "'enum'", "'const'", "'volatile'", \r
499 "'IN'", "'OUT'", "'OPTIONAL'", "'CONST'", "'UNALIGNED'", \r
500 "'VOLATILE'", "'GLOBAL_REMOVE_IF_UNREFERENCED'", "'EFIAPI'", \r
501 "'EFI_BOOTSERVICE'", "'EFI_RUNTIMESERVICE'", "'PACKED'", \r
502 "'('", "')'", "'['", "']'", "'*'", "'...'", "'+'", \r
503 "'-'", "'/'", "'%'", "'++'", "'--'", "'sizeof'", "'.'", \r
504 "'->'", "'&'", "'~'", "'!'", "'*='", "'/='", "'%='", \r
505 "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='", \r
506 "'?'", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", \r
507 "'<'", "'>'", "'<='", "'>='", "'<<'", "'>>'", "'__asm__'", \r
508 "'_asm'", "'__asm'", "'case'", "'default'", "'if'", \r
509 "'else'", "'switch'", "'while'", "'do'", "'goto'", \r
510 "'continue'", "'break'", "'return'" ]\r
511\r
512 symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
513 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
514 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
515 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
516 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
517 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
518 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
519 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
520 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
521 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
522 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
523 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
524 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
525 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
526 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
527 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
528 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
529 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
530 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
531 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
532 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
533 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
534 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", \r
535 "<INVALID>", "IDENTIFIER", "CHARACTER_LITERAL", "STRING_LITERAL", \r
536 "HEX_LITERAL", "DECIMAL_LITERAL", "OCTAL_LITERAL", \r
537 "FLOATING_POINT_LITERAL", "WS", "BS", "UnicodeVocabulary", \r
538 "COMMENT", "LINE_COMMENT", "LINE_COMMAND" ]\r
539\r
540 RULE_translation_unit = 0\r
541 RULE_external_declaration = 1\r
542 RULE_function_definition = 2\r
543 RULE_declaration_specifiers = 3\r
544 RULE_declaration = 4\r
545 RULE_init_declarator_list = 5\r
546 RULE_init_declarator = 6\r
547 RULE_storage_class_specifier = 7\r
548 RULE_type_specifier = 8\r
549 RULE_type_id = 9\r
550 RULE_struct_or_union_specifier = 10\r
551 RULE_struct_or_union = 11\r
552 RULE_struct_declaration_list = 12\r
553 RULE_struct_declaration = 13\r
554 RULE_specifier_qualifier_list = 14\r
555 RULE_struct_declarator_list = 15\r
556 RULE_struct_declarator = 16\r
557 RULE_enum_specifier = 17\r
558 RULE_enumerator_list = 18\r
559 RULE_enumerator = 19\r
560 RULE_type_qualifier = 20\r
561 RULE_declarator = 21\r
562 RULE_direct_declarator = 22\r
563 RULE_declarator_suffix = 23\r
564 RULE_pointer = 24\r
565 RULE_parameter_type_list = 25\r
566 RULE_parameter_list = 26\r
567 RULE_parameter_declaration = 27\r
568 RULE_identifier_list = 28\r
569 RULE_type_name = 29\r
570 RULE_abstract_declarator = 30\r
571 RULE_direct_abstract_declarator = 31\r
572 RULE_abstract_declarator_suffix = 32\r
573 RULE_initializer = 33\r
574 RULE_initializer_list = 34\r
575 RULE_argument_expression_list = 35\r
576 RULE_additive_expression = 36\r
577 RULE_multiplicative_expression = 37\r
578 RULE_cast_expression = 38\r
579 RULE_unary_expression = 39\r
580 RULE_postfix_expression = 40\r
581 RULE_macro_parameter_list = 41\r
582 RULE_unary_operator = 42\r
583 RULE_primary_expression = 43\r
584 RULE_constant = 44\r
585 RULE_expression = 45\r
586 RULE_constant_expression = 46\r
587 RULE_assignment_expression = 47\r
588 RULE_lvalue = 48\r
589 RULE_assignment_operator = 49\r
590 RULE_conditional_expression = 50\r
591 RULE_logical_or_expression = 51\r
592 RULE_logical_and_expression = 52\r
593 RULE_inclusive_or_expression = 53\r
594 RULE_exclusive_or_expression = 54\r
595 RULE_and_expression = 55\r
596 RULE_equality_expression = 56\r
597 RULE_relational_expression = 57\r
598 RULE_shift_expression = 58\r
599 RULE_statement = 59\r
600 RULE_asm2_statement = 60\r
601 RULE_asm1_statement = 61\r
602 RULE_asm_statement = 62\r
603 RULE_macro_statement = 63\r
604 RULE_labeled_statement = 64\r
605 RULE_compound_statement = 65\r
606 RULE_statement_list = 66\r
607 RULE_expression_statement = 67\r
608 RULE_selection_statement = 68\r
609 RULE_iteration_statement = 69\r
610 RULE_jump_statement = 70\r
611\r
612 ruleNames = [ "translation_unit", "external_declaration", "function_definition", \r
613 "declaration_specifiers", "declaration", "init_declarator_list", \r
614 "init_declarator", "storage_class_specifier", "type_specifier", \r
615 "type_id", "struct_or_union_specifier", "struct_or_union", \r
616 "struct_declaration_list", "struct_declaration", "specifier_qualifier_list", \r
617 "struct_declarator_list", "struct_declarator", "enum_specifier", \r
618 "enumerator_list", "enumerator", "type_qualifier", "declarator", \r
619 "direct_declarator", "declarator_suffix", "pointer", \r
620 "parameter_type_list", "parameter_list", "parameter_declaration", \r
621 "identifier_list", "type_name", "abstract_declarator", \r
622 "direct_abstract_declarator", "abstract_declarator_suffix", \r
623 "initializer", "initializer_list", "argument_expression_list", \r
624 "additive_expression", "multiplicative_expression", "cast_expression", \r
625 "unary_expression", "postfix_expression", "macro_parameter_list", \r
626 "unary_operator", "primary_expression", "constant", "expression", \r
627 "constant_expression", "assignment_expression", "lvalue", \r
628 "assignment_operator", "conditional_expression", "logical_or_expression", \r
629 "logical_and_expression", "inclusive_or_expression", \r
630 "exclusive_or_expression", "and_expression", "equality_expression", \r
631 "relational_expression", "shift_expression", "statement", \r
632 "asm2_statement", "asm1_statement", "asm_statement", \r
633 "macro_statement", "labeled_statement", "compound_statement", \r
634 "statement_list", "expression_statement", "selection_statement", \r
635 "iteration_statement", "jump_statement" ]\r
636\r
637 EOF = Token.EOF\r
638 T__0=1\r
639 T__1=2\r
640 T__2=3\r
641 T__3=4\r
642 T__4=5\r
643 T__5=6\r
644 T__6=7\r
645 T__7=8\r
646 T__8=9\r
647 T__9=10\r
648 T__10=11\r
649 T__11=12\r
650 T__12=13\r
651 T__13=14\r
652 T__14=15\r
653 T__15=16\r
654 T__16=17\r
655 T__17=18\r
656 T__18=19\r
657 T__19=20\r
658 T__20=21\r
659 T__21=22\r
660 T__22=23\r
661 T__23=24\r
662 T__24=25\r
663 T__25=26\r
664 T__26=27\r
665 T__27=28\r
666 T__28=29\r
667 T__29=30\r
668 T__30=31\r
669 T__31=32\r
670 T__32=33\r
671 T__33=34\r
672 T__34=35\r
673 T__35=36\r
674 T__36=37\r
675 T__37=38\r
676 T__38=39\r
677 T__39=40\r
678 T__40=41\r
679 T__41=42\r
680 T__42=43\r
681 T__43=44\r
682 T__44=45\r
683 T__45=46\r
684 T__46=47\r
685 T__47=48\r
686 T__48=49\r
687 T__49=50\r
688 T__50=51\r
689 T__51=52\r
690 T__52=53\r
691 T__53=54\r
692 T__54=55\r
693 T__55=56\r
694 T__56=57\r
695 T__57=58\r
696 T__58=59\r
697 T__59=60\r
698 T__60=61\r
699 T__61=62\r
700 T__62=63\r
701 T__63=64\r
702 T__64=65\r
703 T__65=66\r
704 T__66=67\r
705 T__67=68\r
706 T__68=69\r
707 T__69=70\r
708 T__70=71\r
709 T__71=72\r
710 T__72=73\r
711 T__73=74\r
712 T__74=75\r
713 T__75=76\r
714 T__76=77\r
715 T__77=78\r
716 T__78=79\r
717 T__79=80\r
718 T__80=81\r
719 T__81=82\r
720 T__82=83\r
721 T__83=84\r
722 T__84=85\r
723 T__85=86\r
724 T__86=87\r
725 T__87=88\r
726 T__88=89\r
727 T__89=90\r
728 T__90=91\r
729 T__91=92\r
730 IDENTIFIER=93\r
731 CHARACTER_LITERAL=94\r
732 STRING_LITERAL=95\r
733 HEX_LITERAL=96\r
734 DECIMAL_LITERAL=97\r
735 OCTAL_LITERAL=98\r
736 FLOATING_POINT_LITERAL=99\r
737 WS=100\r
738 BS=101\r
739 UnicodeVocabulary=102\r
740 COMMENT=103\r
741 LINE_COMMENT=104\r
742 LINE_COMMAND=105\r
743\r
744 def __init__(self, input:TokenStream, output:TextIO = sys.stdout):\r
745 super().__init__(input, output)\r
746 self.checkVersion("4.7.1")\r
747 self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)\r
748 self._predicates = None\r
749\r
750\r
751\r
752 \r
753 def printTokenInfo(self, line, offset, tokenText):\r
754 print(str(line)+ ',' + str(offset) + ':' + str(tokenText))\r
755 \r
756 def StorePredicateExpression(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
757 PredExp = CodeFragment.PredicateExpression(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
758 FileProfile.PredicateExpressionList.append(PredExp)\r
759 \r
760 def StoreEnumerationDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
761 EnumDef = CodeFragment.EnumerationDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
762 FileProfile.EnumerationDefinitionList.append(EnumDef)\r
763 \r
764 def StoreStructUnionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
765 SUDef = CodeFragment.StructUnionDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
766 FileProfile.StructUnionDefinitionList.append(SUDef)\r
767 \r
768 def StoreTypedefDefinition(self, StartLine, StartOffset, EndLine, EndOffset, FromText, ToText):\r
769 Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))\r
770 FileProfile.TypedefDefinitionList.append(Tdef)\r
771\r
772 def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset, DeclLine, DeclOffset):\r
773 FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))\r
774 FileProfile.FunctionDefinitionList.append(FuncDef)\r
775 \r
776 def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
777 VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\r
778 FileProfile.VariableDeclarationList.append(VarDecl)\r
779\r
780 def StoreFunctionCalling(self, StartLine, StartOffset, EndLine, EndOffset, FuncName, ParamList):\r
781 FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))\r
782 FileProfile.FunctionCallingList.append(FuncCall)\r
783\r
784\r
785\r
786 class Translation_unitContext(ParserRuleContext):\r
787\r
788 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
789 super().__init__(parent, invokingState)\r
790 self.parser = parser\r
791\r
792 def external_declaration(self, i:int=None):\r
793 if i is None:\r
794 return self.getTypedRuleContexts(CParser.External_declarationContext)\r
795 else:\r
796 return self.getTypedRuleContext(CParser.External_declarationContext,i)\r
797\r
798\r
799 def getRuleIndex(self):\r
800 return CParser.RULE_translation_unit\r
801\r
802 def enterRule(self, listener:ParseTreeListener):\r
803 if hasattr( listener, "enterTranslation_unit" ):\r
804 listener.enterTranslation_unit(self)\r
805\r
806 def exitRule(self, listener:ParseTreeListener):\r
807 if hasattr( listener, "exitTranslation_unit" ):\r
808 listener.exitTranslation_unit(self)\r
809\r
810\r
811\r
812\r
813 def translation_unit(self):\r
814\r
815 localctx = CParser.Translation_unitContext(self, self._ctx, self.state)\r
816 self.enterRule(localctx, 0, self.RULE_translation_unit)\r
817 self._la = 0 # Token type\r
818 try:\r
819 self.enterOuterAlt(localctx, 1)\r
820 self.state = 145\r
821 self._errHandler.sync(self)\r
822 _la = self._input.LA(1)\r
823 while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__2) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36) | (1 << CParser.T__37) | (1 << CParser.T__41))) != 0) or _la==CParser.IDENTIFIER:\r
824 self.state = 142\r
825 self.external_declaration()\r
826 self.state = 147\r
827 self._errHandler.sync(self)\r
828 _la = self._input.LA(1)\r
829\r
830 except RecognitionException as re:\r
831 localctx.exception = re\r
832 self._errHandler.reportError(self, re)\r
833 self._errHandler.recover(self, re)\r
834 finally:\r
835 self.exitRule()\r
836 return localctx\r
837\r
838 class External_declarationContext(ParserRuleContext):\r
839\r
840 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
841 super().__init__(parent, invokingState)\r
842 self.parser = parser\r
843\r
844 def declarator(self):\r
845 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
846\r
847\r
848 def declaration_specifiers(self):\r
849 return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)\r
850\r
851\r
852 def declaration(self, i:int=None):\r
853 if i is None:\r
854 return self.getTypedRuleContexts(CParser.DeclarationContext)\r
855 else:\r
856 return self.getTypedRuleContext(CParser.DeclarationContext,i)\r
857\r
858\r
859 def function_definition(self):\r
860 return self.getTypedRuleContext(CParser.Function_definitionContext,0)\r
861\r
862\r
863 def macro_statement(self):\r
864 return self.getTypedRuleContext(CParser.Macro_statementContext,0)\r
865\r
866\r
867 def getRuleIndex(self):\r
868 return CParser.RULE_external_declaration\r
869\r
870 def enterRule(self, listener:ParseTreeListener):\r
871 if hasattr( listener, "enterExternal_declaration" ):\r
872 listener.enterExternal_declaration(self)\r
873\r
874 def exitRule(self, listener:ParseTreeListener):\r
875 if hasattr( listener, "exitExternal_declaration" ):\r
876 listener.exitExternal_declaration(self)\r
877\r
878\r
879\r
880\r
881 def external_declaration(self):\r
882\r
883 localctx = CParser.External_declarationContext(self, self._ctx, self.state)\r
884 self.enterRule(localctx, 2, self.RULE_external_declaration)\r
885 self._la = 0 # Token type\r
886 try:\r
887 self.state = 166\r
888 self._errHandler.sync(self)\r
889 la_ = self._interp.adaptivePredict(self._input,4,self._ctx)\r
890 if la_ == 1:\r
891 self.enterOuterAlt(localctx, 1)\r
892 self.state = 149\r
893 self._errHandler.sync(self)\r
894 la_ = self._interp.adaptivePredict(self._input,1,self._ctx)\r
895 if la_ == 1:\r
896 self.state = 148\r
897 self.declaration_specifiers()\r
898\r
899\r
900 self.state = 151\r
901 self.declarator()\r
902 self.state = 155\r
903 self._errHandler.sync(self)\r
904 _la = self._input.LA(1)\r
905 while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__2) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36))) != 0) or _la==CParser.IDENTIFIER:\r
906 self.state = 152\r
907 self.declaration()\r
908 self.state = 157\r
909 self._errHandler.sync(self)\r
910 _la = self._input.LA(1)\r
911\r
912 self.state = 158\r
913 self.match(CParser.T__0)\r
914 pass\r
915\r
916 elif la_ == 2:\r
917 self.enterOuterAlt(localctx, 2)\r
918 self.state = 160\r
919 self.function_definition()\r
920 pass\r
921\r
922 elif la_ == 3:\r
923 self.enterOuterAlt(localctx, 3)\r
924 self.state = 161\r
925 self.declaration()\r
926 pass\r
927\r
928 elif la_ == 4:\r
929 self.enterOuterAlt(localctx, 4)\r
930 self.state = 162\r
931 self.macro_statement()\r
932 self.state = 164\r
933 self._errHandler.sync(self)\r
934 _la = self._input.LA(1)\r
935 if _la==CParser.T__1:\r
936 self.state = 163\r
937 self.match(CParser.T__1)\r
938\r
939\r
940 pass\r
941\r
942\r
943 except RecognitionException as re:\r
944 localctx.exception = re\r
945 self._errHandler.reportError(self, re)\r
946 self._errHandler.recover(self, re)\r
947 finally:\r
948 self.exitRule()\r
949 return localctx\r
950\r
951 class Function_definitionContext(ParserRuleContext):\r
952\r
953 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
954 super().__init__(parent, invokingState)\r
955 self.parser = parser\r
956 self.ModifierText = ''\r
957 self.DeclText = ''\r
958 self.LBLine = 0\r
959 self.LBOffset = 0\r
960 self.DeclLine = 0\r
961 self.DeclOffset = 0\r
962 self.d = None # Declaration_specifiersContext\r
963 self._declaration_specifiers = None # Declaration_specifiersContext\r
964 self._declarator = None # DeclaratorContext\r
965 self.a = None # Compound_statementContext\r
966 self.b = None # Compound_statementContext\r
967\r
968 def declarator(self):\r
969 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
970\r
971\r
972 def compound_statement(self):\r
973 return self.getTypedRuleContext(CParser.Compound_statementContext,0)\r
974\r
975\r
976 def declaration_specifiers(self):\r
977 return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)\r
978\r
979\r
980 def declaration(self, i:int=None):\r
981 if i is None:\r
982 return self.getTypedRuleContexts(CParser.DeclarationContext)\r
983 else:\r
984 return self.getTypedRuleContext(CParser.DeclarationContext,i)\r
985\r
986\r
987 def getRuleIndex(self):\r
988 return CParser.RULE_function_definition\r
989\r
990 def enterRule(self, listener:ParseTreeListener):\r
991 if hasattr( listener, "enterFunction_definition" ):\r
992 listener.enterFunction_definition(self)\r
993\r
994 def exitRule(self, listener:ParseTreeListener):\r
995 if hasattr( listener, "exitFunction_definition" ):\r
996 listener.exitFunction_definition(self)\r
997\r
998\r
999\r
1000\r
1001 def function_definition(self):\r
1002\r
1003 localctx = CParser.Function_definitionContext(self, self._ctx, self.state)\r
1004 self.enterRule(localctx, 4, self.RULE_function_definition)\r
1005\r
1006 ModifierText = '';\r
1007 DeclText = '';\r
1008 LBLine = 0;\r
1009 LBOffset = 0;\r
1010 DeclLine = 0;\r
1011 DeclOffset = 0;\r
1012\r
1013 self._la = 0 # Token type\r
1014 try:\r
1015 self.enterOuterAlt(localctx, 1)\r
1016 self.state = 169\r
1017 self._errHandler.sync(self)\r
1018 la_ = self._interp.adaptivePredict(self._input,5,self._ctx)\r
1019 if la_ == 1:\r
1020 self.state = 168\r
1021 localctx.d = localctx._declaration_specifiers = self.declaration_specifiers()\r
1022\r
1023\r
1024 self.state = 171\r
1025 localctx._declarator = self.declarator()\r
1026 self.state = 180\r
1027 self._errHandler.sync(self)\r
1028 token = self._input.LA(1)\r
1029 if token in [CParser.T__2, CParser.T__5, CParser.T__6, CParser.T__7, CParser.T__8, CParser.T__9, CParser.T__10, CParser.T__11, CParser.T__12, CParser.T__13, CParser.T__14, CParser.T__15, CParser.T__16, CParser.T__17, CParser.T__18, CParser.T__20, CParser.T__21, CParser.T__23, CParser.T__24, CParser.T__25, CParser.T__26, CParser.T__27, CParser.T__28, CParser.T__29, CParser.T__30, CParser.T__31, CParser.T__32, CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__36, CParser.IDENTIFIER]:\r
1030 self.state = 173 \r
1031 self._errHandler.sync(self)\r
1032 _la = self._input.LA(1)\r
1033 while True:\r
1034 self.state = 172\r
1035 self.declaration()\r
1036 self.state = 175 \r
1037 self._errHandler.sync(self)\r
1038 _la = self._input.LA(1)\r
1039 if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__2) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36))) != 0) or _la==CParser.IDENTIFIER):\r
1040 break\r
1041\r
1042 self.state = 177\r
1043 localctx.a = self.compound_statement()\r
1044 pass\r
1045 elif token in [CParser.T__0]:\r
1046 self.state = 179\r
1047 localctx.b = self.compound_statement()\r
1048 pass\r
1049 else:\r
1050 raise NoViableAltException(self)\r
1051\r
1052 \r
1053 if localctx.d != None:\r
1054 ModifierText = (None if localctx._declaration_specifiers is None else self._input.getText((localctx._declaration_specifiers.start,localctx._declaration_specifiers.stop)))\r
1055 else:\r
1056 ModifierText = ''\r
1057 DeclText = (None if localctx._declarator is None else self._input.getText((localctx._declarator.start,localctx._declarator.stop)))\r
1058 DeclLine = (None if localctx._declarator is None else localctx._declarator.start).line\r
1059 DeclOffset = (None if localctx._declarator is None else localctx._declarator.start).column\r
1060 if localctx.a != None:\r
1061 LBLine = (None if localctx.a is None else localctx.a.start).line\r
1062 LBOffset = (None if localctx.a is None else localctx.a.start).column\r
1063 else:\r
1064 LBLine = (None if localctx.b is None else localctx.b.start).line\r
1065 LBOffset = (None if localctx.b is None else localctx.b.start).column\r
1066 \r
1067 self._ctx.stop = self._input.LT(-1)\r
1068\r
1069 self.StoreFunctionDefinition(localctx.start.line, localctx.start.column, localctx.stop.line, localctx.stop.column, ModifierText, DeclText, LBLine, LBOffset, DeclLine, DeclOffset)\r
1070\r
1071 except RecognitionException as re:\r
1072 localctx.exception = re\r
1073 self._errHandler.reportError(self, re)\r
1074 self._errHandler.recover(self, re)\r
1075 finally:\r
1076 self.exitRule()\r
1077 return localctx\r
1078\r
1079 class Declaration_specifiersContext(ParserRuleContext):\r
1080\r
1081 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1082 super().__init__(parent, invokingState)\r
1083 self.parser = parser\r
1084\r
1085 def storage_class_specifier(self, i:int=None):\r
1086 if i is None:\r
1087 return self.getTypedRuleContexts(CParser.Storage_class_specifierContext)\r
1088 else:\r
1089 return self.getTypedRuleContext(CParser.Storage_class_specifierContext,i)\r
1090\r
1091\r
1092 def type_specifier(self, i:int=None):\r
1093 if i is None:\r
1094 return self.getTypedRuleContexts(CParser.Type_specifierContext)\r
1095 else:\r
1096 return self.getTypedRuleContext(CParser.Type_specifierContext,i)\r
1097\r
1098\r
1099 def type_qualifier(self, i:int=None):\r
1100 if i is None:\r
1101 return self.getTypedRuleContexts(CParser.Type_qualifierContext)\r
1102 else:\r
1103 return self.getTypedRuleContext(CParser.Type_qualifierContext,i)\r
1104\r
1105\r
1106 def getRuleIndex(self):\r
1107 return CParser.RULE_declaration_specifiers\r
1108\r
1109 def enterRule(self, listener:ParseTreeListener):\r
1110 if hasattr( listener, "enterDeclaration_specifiers" ):\r
1111 listener.enterDeclaration_specifiers(self)\r
1112\r
1113 def exitRule(self, listener:ParseTreeListener):\r
1114 if hasattr( listener, "exitDeclaration_specifiers" ):\r
1115 listener.exitDeclaration_specifiers(self)\r
1116\r
1117\r
1118\r
1119\r
1120 def declaration_specifiers(self):\r
1121\r
1122 localctx = CParser.Declaration_specifiersContext(self, self._ctx, self.state)\r
1123 self.enterRule(localctx, 6, self.RULE_declaration_specifiers)\r
1124 try:\r
1125 self.enterOuterAlt(localctx, 1)\r
1126 self.state = 187 \r
1127 self._errHandler.sync(self)\r
1128 _alt = 1\r
1129 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
1130 if _alt == 1:\r
1131 self.state = 187\r
1132 self._errHandler.sync(self)\r
1133 token = self._input.LA(1)\r
1134 if token in [CParser.T__5, CParser.T__6, CParser.T__7, CParser.T__8, CParser.T__9]:\r
1135 self.state = 184\r
1136 self.storage_class_specifier()\r
1137 pass\r
1138 elif token in [CParser.T__10, CParser.T__11, CParser.T__12, CParser.T__13, CParser.T__14, CParser.T__15, CParser.T__16, CParser.T__17, CParser.T__18, CParser.T__20, CParser.T__21, CParser.T__23, CParser.IDENTIFIER]:\r
1139 self.state = 185\r
1140 self.type_specifier()\r
1141 pass\r
1142 elif token in [CParser.T__24, CParser.T__25, CParser.T__26, CParser.T__27, CParser.T__28, CParser.T__29, CParser.T__30, CParser.T__31, CParser.T__32, CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__36]:\r
1143 self.state = 186\r
1144 self.type_qualifier()\r
1145 pass\r
1146 else:\r
1147 raise NoViableAltException(self)\r
1148\r
1149\r
1150 else:\r
1151 raise NoViableAltException(self)\r
1152 self.state = 189 \r
1153 self._errHandler.sync(self)\r
1154 _alt = self._interp.adaptivePredict(self._input,9,self._ctx)\r
1155\r
1156 except RecognitionException as re:\r
1157 localctx.exception = re\r
1158 self._errHandler.reportError(self, re)\r
1159 self._errHandler.recover(self, re)\r
1160 finally:\r
1161 self.exitRule()\r
1162 return localctx\r
1163\r
1164 class DeclarationContext(ParserRuleContext):\r
1165\r
1166 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1167 super().__init__(parent, invokingState)\r
1168 self.parser = parser\r
1169 self.a = None # Token\r
1170 self.b = None # Declaration_specifiersContext\r
1171 self.c = None # Init_declarator_listContext\r
1172 self.d = None # Token\r
1173 self.s = None # Declaration_specifiersContext\r
1174 self.t = None # Init_declarator_listContext\r
1175 self.e = None # Token\r
1176\r
1177 def init_declarator_list(self):\r
1178 return self.getTypedRuleContext(CParser.Init_declarator_listContext,0)\r
1179\r
1180\r
1181 def declaration_specifiers(self):\r
1182 return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)\r
1183\r
1184\r
1185 def getRuleIndex(self):\r
1186 return CParser.RULE_declaration\r
1187\r
1188 def enterRule(self, listener:ParseTreeListener):\r
1189 if hasattr( listener, "enterDeclaration" ):\r
1190 listener.enterDeclaration(self)\r
1191\r
1192 def exitRule(self, listener:ParseTreeListener):\r
1193 if hasattr( listener, "exitDeclaration" ):\r
1194 listener.exitDeclaration(self)\r
1195\r
1196\r
1197\r
1198\r
1199 def declaration(self):\r
1200\r
1201 localctx = CParser.DeclarationContext(self, self._ctx, self.state)\r
1202 self.enterRule(localctx, 8, self.RULE_declaration)\r
1203 self._la = 0 # Token type\r
1204 try:\r
1205 self.state = 206\r
1206 self._errHandler.sync(self)\r
1207 token = self._input.LA(1)\r
1208 if token in [CParser.T__2]:\r
1209 self.enterOuterAlt(localctx, 1)\r
1210 self.state = 191\r
1211 localctx.a = self.match(CParser.T__2)\r
1212 self.state = 193\r
1213 self._errHandler.sync(self)\r
1214 la_ = self._interp.adaptivePredict(self._input,10,self._ctx)\r
1215 if la_ == 1:\r
1216 self.state = 192\r
1217 localctx.b = self.declaration_specifiers()\r
1218\r
1219\r
1220 self.state = 195\r
1221 localctx.c = self.init_declarator_list()\r
1222 self.state = 196\r
1223 localctx.d = self.match(CParser.T__1)\r
1224\r
1225 if localctx.b is not None:\r
1226 self.StoreTypedefDefinition(localctx.a.line, localctx.a.column, (0 if localctx.d is None else localctx.d.line), localctx.d.column, (None if localctx.b is None else self._input.getText((localctx.b.start,localctx.b.stop))), (None if localctx.c is None else self._input.getText((localctx.c.start,localctx.c.stop))))\r
1227 else:\r
1228 self.StoreTypedefDefinition(localctx.a.line, localctx.a.column, (0 if localctx.d is None else localctx.d.line), localctx.d.column, '', (None if localctx.c is None else self._input.getText((localctx.c.start,localctx.c.stop))))\r
1229 \r
1230 pass\r
1231 elif token in [CParser.T__5, CParser.T__6, CParser.T__7, CParser.T__8, CParser.T__9, CParser.T__10, CParser.T__11, CParser.T__12, CParser.T__13, CParser.T__14, CParser.T__15, CParser.T__16, CParser.T__17, CParser.T__18, CParser.T__20, CParser.T__21, CParser.T__23, CParser.T__24, CParser.T__25, CParser.T__26, CParser.T__27, CParser.T__28, CParser.T__29, CParser.T__30, CParser.T__31, CParser.T__32, CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__36, CParser.IDENTIFIER]:\r
1232 self.enterOuterAlt(localctx, 2)\r
1233 self.state = 199\r
1234 localctx.s = self.declaration_specifiers()\r
1235 self.state = 201\r
1236 self._errHandler.sync(self)\r
1237 _la = self._input.LA(1)\r
1238 if ((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (CParser.T__33 - 34)) | (1 << (CParser.T__34 - 34)) | (1 << (CParser.T__35 - 34)) | (1 << (CParser.T__37 - 34)) | (1 << (CParser.T__41 - 34)) | (1 << (CParser.IDENTIFIER - 34)))) != 0):\r
1239 self.state = 200\r
1240 localctx.t = self.init_declarator_list()\r
1241\r
1242\r
1243 self.state = 203\r
1244 localctx.e = self.match(CParser.T__1)\r
1245\r
1246 if localctx.t is not None:\r
1247 self.StoreVariableDeclaration((None if localctx.s is None else localctx.s.start).line, (None if localctx.s is None else localctx.s.start).column, (None if localctx.t is None else localctx.t.start).line, (None if localctx.t is None else localctx.t.start).column, (None if localctx.s is None else self._input.getText((localctx.s.start,localctx.s.stop))), (None if localctx.t is None else self._input.getText((localctx.t.start,localctx.t.stop))))\r
1248\r
1249 pass\r
1250 else:\r
1251 raise NoViableAltException(self)\r
1252\r
1253 except RecognitionException as re:\r
1254 localctx.exception = re\r
1255 self._errHandler.reportError(self, re)\r
1256 self._errHandler.recover(self, re)\r
1257 finally:\r
1258 self.exitRule()\r
1259 return localctx\r
1260\r
1261 class Init_declarator_listContext(ParserRuleContext):\r
1262\r
1263 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1264 super().__init__(parent, invokingState)\r
1265 self.parser = parser\r
1266\r
1267 def init_declarator(self, i:int=None):\r
1268 if i is None:\r
1269 return self.getTypedRuleContexts(CParser.Init_declaratorContext)\r
1270 else:\r
1271 return self.getTypedRuleContext(CParser.Init_declaratorContext,i)\r
1272\r
1273\r
1274 def getRuleIndex(self):\r
1275 return CParser.RULE_init_declarator_list\r
1276\r
1277 def enterRule(self, listener:ParseTreeListener):\r
1278 if hasattr( listener, "enterInit_declarator_list" ):\r
1279 listener.enterInit_declarator_list(self)\r
1280\r
1281 def exitRule(self, listener:ParseTreeListener):\r
1282 if hasattr( listener, "exitInit_declarator_list" ):\r
1283 listener.exitInit_declarator_list(self)\r
1284\r
1285\r
1286\r
1287\r
1288 def init_declarator_list(self):\r
1289\r
1290 localctx = CParser.Init_declarator_listContext(self, self._ctx, self.state)\r
1291 self.enterRule(localctx, 10, self.RULE_init_declarator_list)\r
1292 self._la = 0 # Token type\r
1293 try:\r
1294 self.enterOuterAlt(localctx, 1)\r
1295 self.state = 208\r
1296 self.init_declarator()\r
1297 self.state = 213\r
1298 self._errHandler.sync(self)\r
1299 _la = self._input.LA(1)\r
1300 while _la==CParser.T__3:\r
1301 self.state = 209\r
1302 self.match(CParser.T__3)\r
1303 self.state = 210\r
1304 self.init_declarator()\r
1305 self.state = 215\r
1306 self._errHandler.sync(self)\r
1307 _la = self._input.LA(1)\r
1308\r
1309 except RecognitionException as re:\r
1310 localctx.exception = re\r
1311 self._errHandler.reportError(self, re)\r
1312 self._errHandler.recover(self, re)\r
1313 finally:\r
1314 self.exitRule()\r
1315 return localctx\r
1316\r
1317 class Init_declaratorContext(ParserRuleContext):\r
1318\r
1319 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1320 super().__init__(parent, invokingState)\r
1321 self.parser = parser\r
1322\r
1323 def declarator(self):\r
1324 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
1325\r
1326\r
1327 def initializer(self):\r
1328 return self.getTypedRuleContext(CParser.InitializerContext,0)\r
1329\r
1330\r
1331 def getRuleIndex(self):\r
1332 return CParser.RULE_init_declarator\r
1333\r
1334 def enterRule(self, listener:ParseTreeListener):\r
1335 if hasattr( listener, "enterInit_declarator" ):\r
1336 listener.enterInit_declarator(self)\r
1337\r
1338 def exitRule(self, listener:ParseTreeListener):\r
1339 if hasattr( listener, "exitInit_declarator" ):\r
1340 listener.exitInit_declarator(self)\r
1341\r
1342\r
1343\r
1344\r
1345 def init_declarator(self):\r
1346\r
1347 localctx = CParser.Init_declaratorContext(self, self._ctx, self.state)\r
1348 self.enterRule(localctx, 12, self.RULE_init_declarator)\r
1349 self._la = 0 # Token type\r
1350 try:\r
1351 self.enterOuterAlt(localctx, 1)\r
1352 self.state = 216\r
1353 self.declarator()\r
1354 self.state = 219\r
1355 self._errHandler.sync(self)\r
1356 _la = self._input.LA(1)\r
1357 if _la==CParser.T__4:\r
1358 self.state = 217\r
1359 self.match(CParser.T__4)\r
1360 self.state = 218\r
1361 self.initializer()\r
1362\r
1363\r
1364 except RecognitionException as re:\r
1365 localctx.exception = re\r
1366 self._errHandler.reportError(self, re)\r
1367 self._errHandler.recover(self, re)\r
1368 finally:\r
1369 self.exitRule()\r
1370 return localctx\r
1371\r
1372 class Storage_class_specifierContext(ParserRuleContext):\r
1373\r
1374 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1375 super().__init__(parent, invokingState)\r
1376 self.parser = parser\r
1377\r
1378\r
1379 def getRuleIndex(self):\r
1380 return CParser.RULE_storage_class_specifier\r
1381\r
1382 def enterRule(self, listener:ParseTreeListener):\r
1383 if hasattr( listener, "enterStorage_class_specifier" ):\r
1384 listener.enterStorage_class_specifier(self)\r
1385\r
1386 def exitRule(self, listener:ParseTreeListener):\r
1387 if hasattr( listener, "exitStorage_class_specifier" ):\r
1388 listener.exitStorage_class_specifier(self)\r
1389\r
1390\r
1391\r
1392\r
1393 def storage_class_specifier(self):\r
1394\r
1395 localctx = CParser.Storage_class_specifierContext(self, self._ctx, self.state)\r
1396 self.enterRule(localctx, 14, self.RULE_storage_class_specifier)\r
1397 self._la = 0 # Token type\r
1398 try:\r
1399 self.enterOuterAlt(localctx, 1)\r
1400 self.state = 221\r
1401 _la = self._input.LA(1)\r
1402 if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9))) != 0)):\r
1403 self._errHandler.recoverInline(self)\r
1404 else:\r
1405 self._errHandler.reportMatch(self)\r
1406 self.consume()\r
1407 except RecognitionException as re:\r
1408 localctx.exception = re\r
1409 self._errHandler.reportError(self, re)\r
1410 self._errHandler.recover(self, re)\r
1411 finally:\r
1412 self.exitRule()\r
1413 return localctx\r
1414\r
1415 class Type_specifierContext(ParserRuleContext):\r
1416\r
1417 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1418 super().__init__(parent, invokingState)\r
1419 self.parser = parser\r
1420 self.s = None # Struct_or_union_specifierContext\r
1421 self.e = None # Enum_specifierContext\r
1422\r
1423 def struct_or_union_specifier(self):\r
1424 return self.getTypedRuleContext(CParser.Struct_or_union_specifierContext,0)\r
1425\r
1426\r
1427 def enum_specifier(self):\r
1428 return self.getTypedRuleContext(CParser.Enum_specifierContext,0)\r
1429\r
1430\r
1431 def IDENTIFIER(self):\r
1432 return self.getToken(CParser.IDENTIFIER, 0)\r
1433\r
1434 def declarator(self):\r
1435 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
1436\r
1437\r
1438 def type_qualifier(self, i:int=None):\r
1439 if i is None:\r
1440 return self.getTypedRuleContexts(CParser.Type_qualifierContext)\r
1441 else:\r
1442 return self.getTypedRuleContext(CParser.Type_qualifierContext,i)\r
1443\r
1444\r
1445 def type_id(self):\r
1446 return self.getTypedRuleContext(CParser.Type_idContext,0)\r
1447\r
1448\r
1449 def getRuleIndex(self):\r
1450 return CParser.RULE_type_specifier\r
1451\r
1452 def enterRule(self, listener:ParseTreeListener):\r
1453 if hasattr( listener, "enterType_specifier" ):\r
1454 listener.enterType_specifier(self)\r
1455\r
1456 def exitRule(self, listener:ParseTreeListener):\r
1457 if hasattr( listener, "exitType_specifier" ):\r
1458 listener.exitType_specifier(self)\r
1459\r
1460\r
1461\r
1462\r
1463 def type_specifier(self):\r
1464\r
1465 localctx = CParser.Type_specifierContext(self, self._ctx, self.state)\r
1466 self.enterRule(localctx, 16, self.RULE_type_specifier)\r
1467 try:\r
1468 self.state = 247\r
1469 self._errHandler.sync(self)\r
1470 la_ = self._interp.adaptivePredict(self._input,16,self._ctx)\r
1471 if la_ == 1:\r
1472 self.enterOuterAlt(localctx, 1)\r
1473 self.state = 223\r
1474 self.match(CParser.T__10)\r
1475 pass\r
1476\r
1477 elif la_ == 2:\r
1478 self.enterOuterAlt(localctx, 2)\r
1479 self.state = 224\r
1480 self.match(CParser.T__11)\r
1481 pass\r
1482\r
1483 elif la_ == 3:\r
1484 self.enterOuterAlt(localctx, 3)\r
1485 self.state = 225\r
1486 self.match(CParser.T__12)\r
1487 pass\r
1488\r
1489 elif la_ == 4:\r
1490 self.enterOuterAlt(localctx, 4)\r
1491 self.state = 226\r
1492 self.match(CParser.T__13)\r
1493 pass\r
1494\r
1495 elif la_ == 5:\r
1496 self.enterOuterAlt(localctx, 5)\r
1497 self.state = 227\r
1498 self.match(CParser.T__14)\r
1499 pass\r
1500\r
1501 elif la_ == 6:\r
1502 self.enterOuterAlt(localctx, 6)\r
1503 self.state = 228\r
1504 self.match(CParser.T__15)\r
1505 pass\r
1506\r
1507 elif la_ == 7:\r
1508 self.enterOuterAlt(localctx, 7)\r
1509 self.state = 229\r
1510 self.match(CParser.T__16)\r
1511 pass\r
1512\r
1513 elif la_ == 8:\r
1514 self.enterOuterAlt(localctx, 8)\r
1515 self.state = 230\r
1516 self.match(CParser.T__17)\r
1517 pass\r
1518\r
1519 elif la_ == 9:\r
1520 self.enterOuterAlt(localctx, 9)\r
1521 self.state = 231\r
1522 self.match(CParser.T__18)\r
1523 pass\r
1524\r
1525 elif la_ == 10:\r
1526 self.enterOuterAlt(localctx, 10)\r
1527 self.state = 232\r
1528 localctx.s = self.struct_or_union_specifier()\r
1529\r
1530 if localctx.s.stop is not None:\r
1531 self.StoreStructUnionDefinition((None if localctx.s is None else localctx.s.start).line, (None if localctx.s is None else localctx.s.start).column, (None if localctx.s is None else localctx.s.stop).line, (None if localctx.s is None else localctx.s.stop).column, (None if localctx.s is None else self._input.getText((localctx.s.start,localctx.s.stop))))\r
1532\r
1533 pass\r
1534\r
1535 elif la_ == 11:\r
1536 self.enterOuterAlt(localctx, 11)\r
1537 self.state = 235\r
1538 localctx.e = self.enum_specifier()\r
1539\r
1540 if localctx.e.stop is not None:\r
1541 self.StoreEnumerationDefinition((None if localctx.e is None else localctx.e.start).line, (None if localctx.e is None else localctx.e.start).column, (None if localctx.e is None else localctx.e.stop).line, (None if localctx.e is None else localctx.e.stop).column, (None if localctx.e is None else self._input.getText((localctx.e.start,localctx.e.stop))))\r
1542\r
1543 pass\r
1544\r
1545 elif la_ == 12:\r
1546 self.enterOuterAlt(localctx, 12)\r
1547 self.state = 238\r
1548 self.match(CParser.IDENTIFIER)\r
1549 self.state = 242\r
1550 self._errHandler.sync(self)\r
1551 _alt = self._interp.adaptivePredict(self._input,15,self._ctx)\r
1552 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
1553 if _alt==1:\r
1554 self.state = 239\r
1555 self.type_qualifier() \r
1556 self.state = 244\r
1557 self._errHandler.sync(self)\r
1558 _alt = self._interp.adaptivePredict(self._input,15,self._ctx)\r
1559\r
1560 self.state = 245\r
1561 self.declarator()\r
1562 pass\r
1563\r
1564 elif la_ == 13:\r
1565 self.enterOuterAlt(localctx, 13)\r
1566 self.state = 246\r
1567 self.type_id()\r
1568 pass\r
1569\r
1570\r
1571 except RecognitionException as re:\r
1572 localctx.exception = re\r
1573 self._errHandler.reportError(self, re)\r
1574 self._errHandler.recover(self, re)\r
1575 finally:\r
1576 self.exitRule()\r
1577 return localctx\r
1578\r
1579 class Type_idContext(ParserRuleContext):\r
1580\r
1581 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1582 super().__init__(parent, invokingState)\r
1583 self.parser = parser\r
1584\r
1585 def IDENTIFIER(self):\r
1586 return self.getToken(CParser.IDENTIFIER, 0)\r
1587\r
1588 def getRuleIndex(self):\r
1589 return CParser.RULE_type_id\r
1590\r
1591 def enterRule(self, listener:ParseTreeListener):\r
1592 if hasattr( listener, "enterType_id" ):\r
1593 listener.enterType_id(self)\r
1594\r
1595 def exitRule(self, listener:ParseTreeListener):\r
1596 if hasattr( listener, "exitType_id" ):\r
1597 listener.exitType_id(self)\r
1598\r
1599\r
1600\r
1601\r
1602 def type_id(self):\r
1603\r
1604 localctx = CParser.Type_idContext(self, self._ctx, self.state)\r
1605 self.enterRule(localctx, 18, self.RULE_type_id)\r
1606 try:\r
1607 self.enterOuterAlt(localctx, 1)\r
1608 self.state = 249\r
1609 self.match(CParser.IDENTIFIER)\r
1610 except RecognitionException as re:\r
1611 localctx.exception = re\r
1612 self._errHandler.reportError(self, re)\r
1613 self._errHandler.recover(self, re)\r
1614 finally:\r
1615 self.exitRule()\r
1616 return localctx\r
1617\r
1618 class Struct_or_union_specifierContext(ParserRuleContext):\r
1619\r
1620 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1621 super().__init__(parent, invokingState)\r
1622 self.parser = parser\r
1623\r
1624 def struct_or_union(self):\r
1625 return self.getTypedRuleContext(CParser.Struct_or_unionContext,0)\r
1626\r
1627\r
1628 def struct_declaration_list(self):\r
1629 return self.getTypedRuleContext(CParser.Struct_declaration_listContext,0)\r
1630\r
1631\r
1632 def IDENTIFIER(self):\r
1633 return self.getToken(CParser.IDENTIFIER, 0)\r
1634\r
1635 def getRuleIndex(self):\r
1636 return CParser.RULE_struct_or_union_specifier\r
1637\r
1638 def enterRule(self, listener:ParseTreeListener):\r
1639 if hasattr( listener, "enterStruct_or_union_specifier" ):\r
1640 listener.enterStruct_or_union_specifier(self)\r
1641\r
1642 def exitRule(self, listener:ParseTreeListener):\r
1643 if hasattr( listener, "exitStruct_or_union_specifier" ):\r
1644 listener.exitStruct_or_union_specifier(self)\r
1645\r
1646\r
1647\r
1648\r
1649 def struct_or_union_specifier(self):\r
1650\r
1651 localctx = CParser.Struct_or_union_specifierContext(self, self._ctx, self.state)\r
1652 self.enterRule(localctx, 20, self.RULE_struct_or_union_specifier)\r
1653 self._la = 0 # Token type\r
1654 try:\r
1655 self.state = 262\r
1656 self._errHandler.sync(self)\r
1657 la_ = self._interp.adaptivePredict(self._input,18,self._ctx)\r
1658 if la_ == 1:\r
1659 self.enterOuterAlt(localctx, 1)\r
1660 self.state = 251\r
1661 self.struct_or_union()\r
1662 self.state = 253\r
1663 self._errHandler.sync(self)\r
1664 _la = self._input.LA(1)\r
1665 if _la==CParser.IDENTIFIER:\r
1666 self.state = 252\r
1667 self.match(CParser.IDENTIFIER)\r
1668\r
1669\r
1670 self.state = 255\r
1671 self.match(CParser.T__0)\r
1672 self.state = 256\r
1673 self.struct_declaration_list()\r
1674 self.state = 257\r
1675 self.match(CParser.T__19)\r
1676 pass\r
1677\r
1678 elif la_ == 2:\r
1679 self.enterOuterAlt(localctx, 2)\r
1680 self.state = 259\r
1681 self.struct_or_union()\r
1682 self.state = 260\r
1683 self.match(CParser.IDENTIFIER)\r
1684 pass\r
1685\r
1686\r
1687 except RecognitionException as re:\r
1688 localctx.exception = re\r
1689 self._errHandler.reportError(self, re)\r
1690 self._errHandler.recover(self, re)\r
1691 finally:\r
1692 self.exitRule()\r
1693 return localctx\r
1694\r
1695 class Struct_or_unionContext(ParserRuleContext):\r
1696\r
1697 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1698 super().__init__(parent, invokingState)\r
1699 self.parser = parser\r
1700\r
1701\r
1702 def getRuleIndex(self):\r
1703 return CParser.RULE_struct_or_union\r
1704\r
1705 def enterRule(self, listener:ParseTreeListener):\r
1706 if hasattr( listener, "enterStruct_or_union" ):\r
1707 listener.enterStruct_or_union(self)\r
1708\r
1709 def exitRule(self, listener:ParseTreeListener):\r
1710 if hasattr( listener, "exitStruct_or_union" ):\r
1711 listener.exitStruct_or_union(self)\r
1712\r
1713\r
1714\r
1715\r
1716 def struct_or_union(self):\r
1717\r
1718 localctx = CParser.Struct_or_unionContext(self, self._ctx, self.state)\r
1719 self.enterRule(localctx, 22, self.RULE_struct_or_union)\r
1720 self._la = 0 # Token type\r
1721 try:\r
1722 self.enterOuterAlt(localctx, 1)\r
1723 self.state = 264\r
1724 _la = self._input.LA(1)\r
1725 if not(_la==CParser.T__20 or _la==CParser.T__21):\r
1726 self._errHandler.recoverInline(self)\r
1727 else:\r
1728 self._errHandler.reportMatch(self)\r
1729 self.consume()\r
1730 except RecognitionException as re:\r
1731 localctx.exception = re\r
1732 self._errHandler.reportError(self, re)\r
1733 self._errHandler.recover(self, re)\r
1734 finally:\r
1735 self.exitRule()\r
1736 return localctx\r
1737\r
1738 class Struct_declaration_listContext(ParserRuleContext):\r
1739\r
1740 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1741 super().__init__(parent, invokingState)\r
1742 self.parser = parser\r
1743\r
1744 def struct_declaration(self, i:int=None):\r
1745 if i is None:\r
1746 return self.getTypedRuleContexts(CParser.Struct_declarationContext)\r
1747 else:\r
1748 return self.getTypedRuleContext(CParser.Struct_declarationContext,i)\r
1749\r
1750\r
1751 def getRuleIndex(self):\r
1752 return CParser.RULE_struct_declaration_list\r
1753\r
1754 def enterRule(self, listener:ParseTreeListener):\r
1755 if hasattr( listener, "enterStruct_declaration_list" ):\r
1756 listener.enterStruct_declaration_list(self)\r
1757\r
1758 def exitRule(self, listener:ParseTreeListener):\r
1759 if hasattr( listener, "exitStruct_declaration_list" ):\r
1760 listener.exitStruct_declaration_list(self)\r
1761\r
1762\r
1763\r
1764\r
1765 def struct_declaration_list(self):\r
1766\r
1767 localctx = CParser.Struct_declaration_listContext(self, self._ctx, self.state)\r
1768 self.enterRule(localctx, 24, self.RULE_struct_declaration_list)\r
1769 self._la = 0 # Token type\r
1770 try:\r
1771 self.enterOuterAlt(localctx, 1)\r
1772 self.state = 267 \r
1773 self._errHandler.sync(self)\r
1774 _la = self._input.LA(1)\r
1775 while True:\r
1776 self.state = 266\r
1777 self.struct_declaration()\r
1778 self.state = 269 \r
1779 self._errHandler.sync(self)\r
1780 _la = self._input.LA(1)\r
1781 if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36))) != 0) or _la==CParser.IDENTIFIER):\r
1782 break\r
1783\r
1784 except RecognitionException as re:\r
1785 localctx.exception = re\r
1786 self._errHandler.reportError(self, re)\r
1787 self._errHandler.recover(self, re)\r
1788 finally:\r
1789 self.exitRule()\r
1790 return localctx\r
1791\r
1792 class Struct_declarationContext(ParserRuleContext):\r
1793\r
1794 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1795 super().__init__(parent, invokingState)\r
1796 self.parser = parser\r
1797\r
1798 def specifier_qualifier_list(self):\r
1799 return self.getTypedRuleContext(CParser.Specifier_qualifier_listContext,0)\r
1800\r
1801\r
1802 def struct_declarator_list(self):\r
1803 return self.getTypedRuleContext(CParser.Struct_declarator_listContext,0)\r
1804\r
1805\r
1806 def getRuleIndex(self):\r
1807 return CParser.RULE_struct_declaration\r
1808\r
1809 def enterRule(self, listener:ParseTreeListener):\r
1810 if hasattr( listener, "enterStruct_declaration" ):\r
1811 listener.enterStruct_declaration(self)\r
1812\r
1813 def exitRule(self, listener:ParseTreeListener):\r
1814 if hasattr( listener, "exitStruct_declaration" ):\r
1815 listener.exitStruct_declaration(self)\r
1816\r
1817\r
1818\r
1819\r
1820 def struct_declaration(self):\r
1821\r
1822 localctx = CParser.Struct_declarationContext(self, self._ctx, self.state)\r
1823 self.enterRule(localctx, 26, self.RULE_struct_declaration)\r
1824 try:\r
1825 self.enterOuterAlt(localctx, 1)\r
1826 self.state = 271\r
1827 self.specifier_qualifier_list()\r
1828 self.state = 272\r
1829 self.struct_declarator_list()\r
1830 self.state = 273\r
1831 self.match(CParser.T__1)\r
1832 except RecognitionException as re:\r
1833 localctx.exception = re\r
1834 self._errHandler.reportError(self, re)\r
1835 self._errHandler.recover(self, re)\r
1836 finally:\r
1837 self.exitRule()\r
1838 return localctx\r
1839\r
1840 class Specifier_qualifier_listContext(ParserRuleContext):\r
1841\r
1842 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1843 super().__init__(parent, invokingState)\r
1844 self.parser = parser\r
1845\r
1846 def type_qualifier(self, i:int=None):\r
1847 if i is None:\r
1848 return self.getTypedRuleContexts(CParser.Type_qualifierContext)\r
1849 else:\r
1850 return self.getTypedRuleContext(CParser.Type_qualifierContext,i)\r
1851\r
1852\r
1853 def type_specifier(self, i:int=None):\r
1854 if i is None:\r
1855 return self.getTypedRuleContexts(CParser.Type_specifierContext)\r
1856 else:\r
1857 return self.getTypedRuleContext(CParser.Type_specifierContext,i)\r
1858\r
1859\r
1860 def getRuleIndex(self):\r
1861 return CParser.RULE_specifier_qualifier_list\r
1862\r
1863 def enterRule(self, listener:ParseTreeListener):\r
1864 if hasattr( listener, "enterSpecifier_qualifier_list" ):\r
1865 listener.enterSpecifier_qualifier_list(self)\r
1866\r
1867 def exitRule(self, listener:ParseTreeListener):\r
1868 if hasattr( listener, "exitSpecifier_qualifier_list" ):\r
1869 listener.exitSpecifier_qualifier_list(self)\r
1870\r
1871\r
1872\r
1873\r
1874 def specifier_qualifier_list(self):\r
1875\r
1876 localctx = CParser.Specifier_qualifier_listContext(self, self._ctx, self.state)\r
1877 self.enterRule(localctx, 28, self.RULE_specifier_qualifier_list)\r
1878 try:\r
1879 self.enterOuterAlt(localctx, 1)\r
1880 self.state = 277 \r
1881 self._errHandler.sync(self)\r
1882 _alt = 1\r
1883 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
1884 if _alt == 1:\r
1885 self.state = 277\r
1886 self._errHandler.sync(self)\r
1887 token = self._input.LA(1)\r
1888 if token in [CParser.T__24, CParser.T__25, CParser.T__26, CParser.T__27, CParser.T__28, CParser.T__29, CParser.T__30, CParser.T__31, CParser.T__32, CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__36]:\r
1889 self.state = 275\r
1890 self.type_qualifier()\r
1891 pass\r
1892 elif token in [CParser.T__10, CParser.T__11, CParser.T__12, CParser.T__13, CParser.T__14, CParser.T__15, CParser.T__16, CParser.T__17, CParser.T__18, CParser.T__20, CParser.T__21, CParser.T__23, CParser.IDENTIFIER]:\r
1893 self.state = 276\r
1894 self.type_specifier()\r
1895 pass\r
1896 else:\r
1897 raise NoViableAltException(self)\r
1898\r
1899\r
1900 else:\r
1901 raise NoViableAltException(self)\r
1902 self.state = 279 \r
1903 self._errHandler.sync(self)\r
1904 _alt = self._interp.adaptivePredict(self._input,21,self._ctx)\r
1905\r
1906 except RecognitionException as re:\r
1907 localctx.exception = re\r
1908 self._errHandler.reportError(self, re)\r
1909 self._errHandler.recover(self, re)\r
1910 finally:\r
1911 self.exitRule()\r
1912 return localctx\r
1913\r
1914 class Struct_declarator_listContext(ParserRuleContext):\r
1915\r
1916 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1917 super().__init__(parent, invokingState)\r
1918 self.parser = parser\r
1919\r
1920 def struct_declarator(self, i:int=None):\r
1921 if i is None:\r
1922 return self.getTypedRuleContexts(CParser.Struct_declaratorContext)\r
1923 else:\r
1924 return self.getTypedRuleContext(CParser.Struct_declaratorContext,i)\r
1925\r
1926\r
1927 def getRuleIndex(self):\r
1928 return CParser.RULE_struct_declarator_list\r
1929\r
1930 def enterRule(self, listener:ParseTreeListener):\r
1931 if hasattr( listener, "enterStruct_declarator_list" ):\r
1932 listener.enterStruct_declarator_list(self)\r
1933\r
1934 def exitRule(self, listener:ParseTreeListener):\r
1935 if hasattr( listener, "exitStruct_declarator_list" ):\r
1936 listener.exitStruct_declarator_list(self)\r
1937\r
1938\r
1939\r
1940\r
1941 def struct_declarator_list(self):\r
1942\r
1943 localctx = CParser.Struct_declarator_listContext(self, self._ctx, self.state)\r
1944 self.enterRule(localctx, 30, self.RULE_struct_declarator_list)\r
1945 self._la = 0 # Token type\r
1946 try:\r
1947 self.enterOuterAlt(localctx, 1)\r
1948 self.state = 281\r
1949 self.struct_declarator()\r
1950 self.state = 286\r
1951 self._errHandler.sync(self)\r
1952 _la = self._input.LA(1)\r
1953 while _la==CParser.T__3:\r
1954 self.state = 282\r
1955 self.match(CParser.T__3)\r
1956 self.state = 283\r
1957 self.struct_declarator()\r
1958 self.state = 288\r
1959 self._errHandler.sync(self)\r
1960 _la = self._input.LA(1)\r
1961\r
1962 except RecognitionException as re:\r
1963 localctx.exception = re\r
1964 self._errHandler.reportError(self, re)\r
1965 self._errHandler.recover(self, re)\r
1966 finally:\r
1967 self.exitRule()\r
1968 return localctx\r
1969\r
1970 class Struct_declaratorContext(ParserRuleContext):\r
1971\r
1972 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
1973 super().__init__(parent, invokingState)\r
1974 self.parser = parser\r
1975\r
1976 def declarator(self):\r
1977 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
1978\r
1979\r
1980 def constant_expression(self):\r
1981 return self.getTypedRuleContext(CParser.Constant_expressionContext,0)\r
1982\r
1983\r
1984 def getRuleIndex(self):\r
1985 return CParser.RULE_struct_declarator\r
1986\r
1987 def enterRule(self, listener:ParseTreeListener):\r
1988 if hasattr( listener, "enterStruct_declarator" ):\r
1989 listener.enterStruct_declarator(self)\r
1990\r
1991 def exitRule(self, listener:ParseTreeListener):\r
1992 if hasattr( listener, "exitStruct_declarator" ):\r
1993 listener.exitStruct_declarator(self)\r
1994\r
1995\r
1996\r
1997\r
1998 def struct_declarator(self):\r
1999\r
2000 localctx = CParser.Struct_declaratorContext(self, self._ctx, self.state)\r
2001 self.enterRule(localctx, 32, self.RULE_struct_declarator)\r
2002 self._la = 0 # Token type\r
2003 try:\r
2004 self.state = 296\r
2005 self._errHandler.sync(self)\r
2006 token = self._input.LA(1)\r
2007 if token in [CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__37, CParser.T__41, CParser.IDENTIFIER]:\r
2008 self.enterOuterAlt(localctx, 1)\r
2009 self.state = 289\r
2010 self.declarator()\r
2011 self.state = 292\r
2012 self._errHandler.sync(self)\r
2013 _la = self._input.LA(1)\r
2014 if _la==CParser.T__22:\r
2015 self.state = 290\r
2016 self.match(CParser.T__22)\r
2017 self.state = 291\r
2018 self.constant_expression()\r
2019\r
2020\r
2021 pass\r
2022 elif token in [CParser.T__22]:\r
2023 self.enterOuterAlt(localctx, 2)\r
2024 self.state = 294\r
2025 self.match(CParser.T__22)\r
2026 self.state = 295\r
2027 self.constant_expression()\r
2028 pass\r
2029 else:\r
2030 raise NoViableAltException(self)\r
2031\r
2032 except RecognitionException as re:\r
2033 localctx.exception = re\r
2034 self._errHandler.reportError(self, re)\r
2035 self._errHandler.recover(self, re)\r
2036 finally:\r
2037 self.exitRule()\r
2038 return localctx\r
2039\r
2040 class Enum_specifierContext(ParserRuleContext):\r
2041\r
2042 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2043 super().__init__(parent, invokingState)\r
2044 self.parser = parser\r
2045\r
2046 def enumerator_list(self):\r
2047 return self.getTypedRuleContext(CParser.Enumerator_listContext,0)\r
2048\r
2049\r
2050 def IDENTIFIER(self):\r
2051 return self.getToken(CParser.IDENTIFIER, 0)\r
2052\r
2053 def getRuleIndex(self):\r
2054 return CParser.RULE_enum_specifier\r
2055\r
2056 def enterRule(self, listener:ParseTreeListener):\r
2057 if hasattr( listener, "enterEnum_specifier" ):\r
2058 listener.enterEnum_specifier(self)\r
2059\r
2060 def exitRule(self, listener:ParseTreeListener):\r
2061 if hasattr( listener, "exitEnum_specifier" ):\r
2062 listener.exitEnum_specifier(self)\r
2063\r
2064\r
2065\r
2066\r
2067 def enum_specifier(self):\r
2068\r
2069 localctx = CParser.Enum_specifierContext(self, self._ctx, self.state)\r
2070 self.enterRule(localctx, 34, self.RULE_enum_specifier)\r
2071 self._la = 0 # Token type\r
2072 try:\r
2073 self.state = 317\r
2074 self._errHandler.sync(self)\r
2075 la_ = self._interp.adaptivePredict(self._input,27,self._ctx)\r
2076 if la_ == 1:\r
2077 self.enterOuterAlt(localctx, 1)\r
2078 self.state = 298\r
2079 self.match(CParser.T__23)\r
2080 self.state = 299\r
2081 self.match(CParser.T__0)\r
2082 self.state = 300\r
2083 self.enumerator_list()\r
2084 self.state = 302\r
2085 self._errHandler.sync(self)\r
2086 _la = self._input.LA(1)\r
2087 if _la==CParser.T__3:\r
2088 self.state = 301\r
2089 self.match(CParser.T__3)\r
2090\r
2091\r
2092 self.state = 304\r
2093 self.match(CParser.T__19)\r
2094 pass\r
2095\r
2096 elif la_ == 2:\r
2097 self.enterOuterAlt(localctx, 2)\r
2098 self.state = 306\r
2099 self.match(CParser.T__23)\r
2100 self.state = 307\r
2101 self.match(CParser.IDENTIFIER)\r
2102 self.state = 308\r
2103 self.match(CParser.T__0)\r
2104 self.state = 309\r
2105 self.enumerator_list()\r
2106 self.state = 311\r
2107 self._errHandler.sync(self)\r
2108 _la = self._input.LA(1)\r
2109 if _la==CParser.T__3:\r
2110 self.state = 310\r
2111 self.match(CParser.T__3)\r
2112\r
2113\r
2114 self.state = 313\r
2115 self.match(CParser.T__19)\r
2116 pass\r
2117\r
2118 elif la_ == 3:\r
2119 self.enterOuterAlt(localctx, 3)\r
2120 self.state = 315\r
2121 self.match(CParser.T__23)\r
2122 self.state = 316\r
2123 self.match(CParser.IDENTIFIER)\r
2124 pass\r
2125\r
2126\r
2127 except RecognitionException as re:\r
2128 localctx.exception = re\r
2129 self._errHandler.reportError(self, re)\r
2130 self._errHandler.recover(self, re)\r
2131 finally:\r
2132 self.exitRule()\r
2133 return localctx\r
2134\r
2135 class Enumerator_listContext(ParserRuleContext):\r
2136\r
2137 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2138 super().__init__(parent, invokingState)\r
2139 self.parser = parser\r
2140\r
2141 def enumerator(self, i:int=None):\r
2142 if i is None:\r
2143 return self.getTypedRuleContexts(CParser.EnumeratorContext)\r
2144 else:\r
2145 return self.getTypedRuleContext(CParser.EnumeratorContext,i)\r
2146\r
2147\r
2148 def getRuleIndex(self):\r
2149 return CParser.RULE_enumerator_list\r
2150\r
2151 def enterRule(self, listener:ParseTreeListener):\r
2152 if hasattr( listener, "enterEnumerator_list" ):\r
2153 listener.enterEnumerator_list(self)\r
2154\r
2155 def exitRule(self, listener:ParseTreeListener):\r
2156 if hasattr( listener, "exitEnumerator_list" ):\r
2157 listener.exitEnumerator_list(self)\r
2158\r
2159\r
2160\r
2161\r
2162 def enumerator_list(self):\r
2163\r
2164 localctx = CParser.Enumerator_listContext(self, self._ctx, self.state)\r
2165 self.enterRule(localctx, 36, self.RULE_enumerator_list)\r
2166 try:\r
2167 self.enterOuterAlt(localctx, 1)\r
2168 self.state = 319\r
2169 self.enumerator()\r
2170 self.state = 324\r
2171 self._errHandler.sync(self)\r
2172 _alt = self._interp.adaptivePredict(self._input,28,self._ctx)\r
2173 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
2174 if _alt==1:\r
2175 self.state = 320\r
2176 self.match(CParser.T__3)\r
2177 self.state = 321\r
2178 self.enumerator() \r
2179 self.state = 326\r
2180 self._errHandler.sync(self)\r
2181 _alt = self._interp.adaptivePredict(self._input,28,self._ctx)\r
2182\r
2183 except RecognitionException as re:\r
2184 localctx.exception = re\r
2185 self._errHandler.reportError(self, re)\r
2186 self._errHandler.recover(self, re)\r
2187 finally:\r
2188 self.exitRule()\r
2189 return localctx\r
2190\r
2191 class EnumeratorContext(ParserRuleContext):\r
2192\r
2193 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2194 super().__init__(parent, invokingState)\r
2195 self.parser = parser\r
2196\r
2197 def IDENTIFIER(self):\r
2198 return self.getToken(CParser.IDENTIFIER, 0)\r
2199\r
2200 def constant_expression(self):\r
2201 return self.getTypedRuleContext(CParser.Constant_expressionContext,0)\r
2202\r
2203\r
2204 def getRuleIndex(self):\r
2205 return CParser.RULE_enumerator\r
2206\r
2207 def enterRule(self, listener:ParseTreeListener):\r
2208 if hasattr( listener, "enterEnumerator" ):\r
2209 listener.enterEnumerator(self)\r
2210\r
2211 def exitRule(self, listener:ParseTreeListener):\r
2212 if hasattr( listener, "exitEnumerator" ):\r
2213 listener.exitEnumerator(self)\r
2214\r
2215\r
2216\r
2217\r
2218 def enumerator(self):\r
2219\r
2220 localctx = CParser.EnumeratorContext(self, self._ctx, self.state)\r
2221 self.enterRule(localctx, 38, self.RULE_enumerator)\r
2222 self._la = 0 # Token type\r
2223 try:\r
2224 self.enterOuterAlt(localctx, 1)\r
2225 self.state = 327\r
2226 self.match(CParser.IDENTIFIER)\r
2227 self.state = 330\r
2228 self._errHandler.sync(self)\r
2229 _la = self._input.LA(1)\r
2230 if _la==CParser.T__4:\r
2231 self.state = 328\r
2232 self.match(CParser.T__4)\r
2233 self.state = 329\r
2234 self.constant_expression()\r
2235\r
2236\r
2237 except RecognitionException as re:\r
2238 localctx.exception = re\r
2239 self._errHandler.reportError(self, re)\r
2240 self._errHandler.recover(self, re)\r
2241 finally:\r
2242 self.exitRule()\r
2243 return localctx\r
2244\r
2245 class Type_qualifierContext(ParserRuleContext):\r
2246\r
2247 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2248 super().__init__(parent, invokingState)\r
2249 self.parser = parser\r
2250\r
2251\r
2252 def getRuleIndex(self):\r
2253 return CParser.RULE_type_qualifier\r
2254\r
2255 def enterRule(self, listener:ParseTreeListener):\r
2256 if hasattr( listener, "enterType_qualifier" ):\r
2257 listener.enterType_qualifier(self)\r
2258\r
2259 def exitRule(self, listener:ParseTreeListener):\r
2260 if hasattr( listener, "exitType_qualifier" ):\r
2261 listener.exitType_qualifier(self)\r
2262\r
2263\r
2264\r
2265\r
2266 def type_qualifier(self):\r
2267\r
2268 localctx = CParser.Type_qualifierContext(self, self._ctx, self.state)\r
2269 self.enterRule(localctx, 40, self.RULE_type_qualifier)\r
2270 self._la = 0 # Token type\r
2271 try:\r
2272 self.enterOuterAlt(localctx, 1)\r
2273 self.state = 332\r
2274 _la = self._input.LA(1)\r
2275 if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36))) != 0)):\r
2276 self._errHandler.recoverInline(self)\r
2277 else:\r
2278 self._errHandler.reportMatch(self)\r
2279 self.consume()\r
2280 except RecognitionException as re:\r
2281 localctx.exception = re\r
2282 self._errHandler.reportError(self, re)\r
2283 self._errHandler.recover(self, re)\r
2284 finally:\r
2285 self.exitRule()\r
2286 return localctx\r
2287\r
2288 class DeclaratorContext(ParserRuleContext):\r
2289\r
2290 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2291 super().__init__(parent, invokingState)\r
2292 self.parser = parser\r
2293\r
2294 def direct_declarator(self):\r
2295 return self.getTypedRuleContext(CParser.Direct_declaratorContext,0)\r
2296\r
2297\r
2298 def pointer(self):\r
2299 return self.getTypedRuleContext(CParser.PointerContext,0)\r
2300\r
2301\r
2302 def getRuleIndex(self):\r
2303 return CParser.RULE_declarator\r
2304\r
2305 def enterRule(self, listener:ParseTreeListener):\r
2306 if hasattr( listener, "enterDeclarator" ):\r
2307 listener.enterDeclarator(self)\r
2308\r
2309 def exitRule(self, listener:ParseTreeListener):\r
2310 if hasattr( listener, "exitDeclarator" ):\r
2311 listener.exitDeclarator(self)\r
2312\r
2313\r
2314\r
2315\r
2316 def declarator(self):\r
2317\r
2318 localctx = CParser.DeclaratorContext(self, self._ctx, self.state)\r
2319 self.enterRule(localctx, 42, self.RULE_declarator)\r
2320 self._la = 0 # Token type\r
2321 try:\r
2322 self.state = 348\r
2323 self._errHandler.sync(self)\r
2324 la_ = self._interp.adaptivePredict(self._input,34,self._ctx)\r
2325 if la_ == 1:\r
2326 self.enterOuterAlt(localctx, 1)\r
2327 self.state = 335\r
2328 self._errHandler.sync(self)\r
2329 _la = self._input.LA(1)\r
2330 if _la==CParser.T__41:\r
2331 self.state = 334\r
2332 self.pointer()\r
2333\r
2334\r
2335 self.state = 338\r
2336 self._errHandler.sync(self)\r
2337 _la = self._input.LA(1)\r
2338 if _la==CParser.T__33:\r
2339 self.state = 337\r
2340 self.match(CParser.T__33)\r
2341\r
2342\r
2343 self.state = 341\r
2344 self._errHandler.sync(self)\r
2345 _la = self._input.LA(1)\r
2346 if _la==CParser.T__34:\r
2347 self.state = 340\r
2348 self.match(CParser.T__34)\r
2349\r
2350\r
2351 self.state = 344\r
2352 self._errHandler.sync(self)\r
2353 _la = self._input.LA(1)\r
2354 if _la==CParser.T__35:\r
2355 self.state = 343\r
2356 self.match(CParser.T__35)\r
2357\r
2358\r
2359 self.state = 346\r
2360 self.direct_declarator()\r
2361 pass\r
2362\r
2363 elif la_ == 2:\r
2364 self.enterOuterAlt(localctx, 2)\r
2365 self.state = 347\r
2366 self.pointer()\r
2367 pass\r
2368\r
2369\r
2370 except RecognitionException as re:\r
2371 localctx.exception = re\r
2372 self._errHandler.reportError(self, re)\r
2373 self._errHandler.recover(self, re)\r
2374 finally:\r
2375 self.exitRule()\r
2376 return localctx\r
2377\r
2378 class Direct_declaratorContext(ParserRuleContext):\r
2379\r
2380 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2381 super().__init__(parent, invokingState)\r
2382 self.parser = parser\r
2383\r
2384 def IDENTIFIER(self):\r
2385 return self.getToken(CParser.IDENTIFIER, 0)\r
2386\r
2387 def declarator_suffix(self, i:int=None):\r
2388 if i is None:\r
2389 return self.getTypedRuleContexts(CParser.Declarator_suffixContext)\r
2390 else:\r
2391 return self.getTypedRuleContext(CParser.Declarator_suffixContext,i)\r
2392\r
2393\r
2394 def declarator(self):\r
2395 return self.getTypedRuleContext(CParser.DeclaratorContext,0)\r
2396\r
2397\r
2398 def getRuleIndex(self):\r
2399 return CParser.RULE_direct_declarator\r
2400\r
2401 def enterRule(self, listener:ParseTreeListener):\r
2402 if hasattr( listener, "enterDirect_declarator" ):\r
2403 listener.enterDirect_declarator(self)\r
2404\r
2405 def exitRule(self, listener:ParseTreeListener):\r
2406 if hasattr( listener, "exitDirect_declarator" ):\r
2407 listener.exitDirect_declarator(self)\r
2408\r
2409\r
2410\r
2411\r
2412 def direct_declarator(self):\r
2413\r
2414 localctx = CParser.Direct_declaratorContext(self, self._ctx, self.state)\r
2415 self.enterRule(localctx, 44, self.RULE_direct_declarator)\r
2416 try:\r
2417 self.state = 368\r
2418 self._errHandler.sync(self)\r
2419 token = self._input.LA(1)\r
2420 if token in [CParser.IDENTIFIER]:\r
2421 self.enterOuterAlt(localctx, 1)\r
2422 self.state = 350\r
2423 self.match(CParser.IDENTIFIER)\r
2424 self.state = 354\r
2425 self._errHandler.sync(self)\r
2426 _alt = self._interp.adaptivePredict(self._input,35,self._ctx)\r
2427 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
2428 if _alt==1:\r
2429 self.state = 351\r
2430 self.declarator_suffix() \r
2431 self.state = 356\r
2432 self._errHandler.sync(self)\r
2433 _alt = self._interp.adaptivePredict(self._input,35,self._ctx)\r
2434\r
2435 pass\r
2436 elif token in [CParser.T__37]:\r
2437 self.enterOuterAlt(localctx, 2)\r
2438 self.state = 357\r
2439 self.match(CParser.T__37)\r
2440 self.state = 359\r
2441 self._errHandler.sync(self)\r
2442 la_ = self._interp.adaptivePredict(self._input,36,self._ctx)\r
2443 if la_ == 1:\r
2444 self.state = 358\r
2445 self.match(CParser.T__33)\r
2446\r
2447\r
2448 self.state = 361\r
2449 self.declarator()\r
2450 self.state = 362\r
2451 self.match(CParser.T__38)\r
2452 self.state = 364 \r
2453 self._errHandler.sync(self)\r
2454 _alt = 1\r
2455 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
2456 if _alt == 1:\r
2457 self.state = 363\r
2458 self.declarator_suffix()\r
2459\r
2460 else:\r
2461 raise NoViableAltException(self)\r
2462 self.state = 366 \r
2463 self._errHandler.sync(self)\r
2464 _alt = self._interp.adaptivePredict(self._input,37,self._ctx)\r
2465\r
2466 pass\r
2467 else:\r
2468 raise NoViableAltException(self)\r
2469\r
2470 except RecognitionException as re:\r
2471 localctx.exception = re\r
2472 self._errHandler.reportError(self, re)\r
2473 self._errHandler.recover(self, re)\r
2474 finally:\r
2475 self.exitRule()\r
2476 return localctx\r
2477\r
2478 class Declarator_suffixContext(ParserRuleContext):\r
2479\r
2480 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2481 super().__init__(parent, invokingState)\r
2482 self.parser = parser\r
2483\r
2484 def constant_expression(self):\r
2485 return self.getTypedRuleContext(CParser.Constant_expressionContext,0)\r
2486\r
2487\r
2488 def parameter_type_list(self):\r
2489 return self.getTypedRuleContext(CParser.Parameter_type_listContext,0)\r
2490\r
2491\r
2492 def identifier_list(self):\r
2493 return self.getTypedRuleContext(CParser.Identifier_listContext,0)\r
2494\r
2495\r
2496 def getRuleIndex(self):\r
2497 return CParser.RULE_declarator_suffix\r
2498\r
2499 def enterRule(self, listener:ParseTreeListener):\r
2500 if hasattr( listener, "enterDeclarator_suffix" ):\r
2501 listener.enterDeclarator_suffix(self)\r
2502\r
2503 def exitRule(self, listener:ParseTreeListener):\r
2504 if hasattr( listener, "exitDeclarator_suffix" ):\r
2505 listener.exitDeclarator_suffix(self)\r
2506\r
2507\r
2508\r
2509\r
2510 def declarator_suffix(self):\r
2511\r
2512 localctx = CParser.Declarator_suffixContext(self, self._ctx, self.state)\r
2513 self.enterRule(localctx, 46, self.RULE_declarator_suffix)\r
2514 try:\r
2515 self.state = 386\r
2516 self._errHandler.sync(self)\r
2517 la_ = self._interp.adaptivePredict(self._input,39,self._ctx)\r
2518 if la_ == 1:\r
2519 self.enterOuterAlt(localctx, 1)\r
2520 self.state = 370\r
2521 self.match(CParser.T__39)\r
2522 self.state = 371\r
2523 self.constant_expression()\r
2524 self.state = 372\r
2525 self.match(CParser.T__40)\r
2526 pass\r
2527\r
2528 elif la_ == 2:\r
2529 self.enterOuterAlt(localctx, 2)\r
2530 self.state = 374\r
2531 self.match(CParser.T__39)\r
2532 self.state = 375\r
2533 self.match(CParser.T__40)\r
2534 pass\r
2535\r
2536 elif la_ == 3:\r
2537 self.enterOuterAlt(localctx, 3)\r
2538 self.state = 376\r
2539 self.match(CParser.T__37)\r
2540 self.state = 377\r
2541 self.parameter_type_list()\r
2542 self.state = 378\r
2543 self.match(CParser.T__38)\r
2544 pass\r
2545\r
2546 elif la_ == 4:\r
2547 self.enterOuterAlt(localctx, 4)\r
2548 self.state = 380\r
2549 self.match(CParser.T__37)\r
2550 self.state = 381\r
2551 self.identifier_list()\r
2552 self.state = 382\r
2553 self.match(CParser.T__38)\r
2554 pass\r
2555\r
2556 elif la_ == 5:\r
2557 self.enterOuterAlt(localctx, 5)\r
2558 self.state = 384\r
2559 self.match(CParser.T__37)\r
2560 self.state = 385\r
2561 self.match(CParser.T__38)\r
2562 pass\r
2563\r
2564\r
2565 except RecognitionException as re:\r
2566 localctx.exception = re\r
2567 self._errHandler.reportError(self, re)\r
2568 self._errHandler.recover(self, re)\r
2569 finally:\r
2570 self.exitRule()\r
2571 return localctx\r
2572\r
2573 class PointerContext(ParserRuleContext):\r
2574\r
2575 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2576 super().__init__(parent, invokingState)\r
2577 self.parser = parser\r
2578\r
2579 def type_qualifier(self, i:int=None):\r
2580 if i is None:\r
2581 return self.getTypedRuleContexts(CParser.Type_qualifierContext)\r
2582 else:\r
2583 return self.getTypedRuleContext(CParser.Type_qualifierContext,i)\r
2584\r
2585\r
2586 def pointer(self):\r
2587 return self.getTypedRuleContext(CParser.PointerContext,0)\r
2588\r
2589\r
2590 def getRuleIndex(self):\r
2591 return CParser.RULE_pointer\r
2592\r
2593 def enterRule(self, listener:ParseTreeListener):\r
2594 if hasattr( listener, "enterPointer" ):\r
2595 listener.enterPointer(self)\r
2596\r
2597 def exitRule(self, listener:ParseTreeListener):\r
2598 if hasattr( listener, "exitPointer" ):\r
2599 listener.exitPointer(self)\r
2600\r
2601\r
2602\r
2603\r
2604 def pointer(self):\r
2605\r
2606 localctx = CParser.PointerContext(self, self._ctx, self.state)\r
2607 self.enterRule(localctx, 48, self.RULE_pointer)\r
2608 try:\r
2609 self.state = 400\r
2610 self._errHandler.sync(self)\r
2611 la_ = self._interp.adaptivePredict(self._input,42,self._ctx)\r
2612 if la_ == 1:\r
2613 self.enterOuterAlt(localctx, 1)\r
2614 self.state = 388\r
2615 self.match(CParser.T__41)\r
2616 self.state = 390 \r
2617 self._errHandler.sync(self)\r
2618 _alt = 1\r
2619 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
2620 if _alt == 1:\r
2621 self.state = 389\r
2622 self.type_qualifier()\r
2623\r
2624 else:\r
2625 raise NoViableAltException(self)\r
2626 self.state = 392 \r
2627 self._errHandler.sync(self)\r
2628 _alt = self._interp.adaptivePredict(self._input,40,self._ctx)\r
2629\r
2630 self.state = 395\r
2631 self._errHandler.sync(self)\r
2632 la_ = self._interp.adaptivePredict(self._input,41,self._ctx)\r
2633 if la_ == 1:\r
2634 self.state = 394\r
2635 self.pointer()\r
2636\r
2637\r
2638 pass\r
2639\r
2640 elif la_ == 2:\r
2641 self.enterOuterAlt(localctx, 2)\r
2642 self.state = 397\r
2643 self.match(CParser.T__41)\r
2644 self.state = 398\r
2645 self.pointer()\r
2646 pass\r
2647\r
2648 elif la_ == 3:\r
2649 self.enterOuterAlt(localctx, 3)\r
2650 self.state = 399\r
2651 self.match(CParser.T__41)\r
2652 pass\r
2653\r
2654\r
2655 except RecognitionException as re:\r
2656 localctx.exception = re\r
2657 self._errHandler.reportError(self, re)\r
2658 self._errHandler.recover(self, re)\r
2659 finally:\r
2660 self.exitRule()\r
2661 return localctx\r
2662\r
2663 class Parameter_type_listContext(ParserRuleContext):\r
2664\r
2665 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2666 super().__init__(parent, invokingState)\r
2667 self.parser = parser\r
2668\r
2669 def parameter_list(self):\r
2670 return self.getTypedRuleContext(CParser.Parameter_listContext,0)\r
2671\r
2672\r
2673 def getRuleIndex(self):\r
2674 return CParser.RULE_parameter_type_list\r
2675\r
2676 def enterRule(self, listener:ParseTreeListener):\r
2677 if hasattr( listener, "enterParameter_type_list" ):\r
2678 listener.enterParameter_type_list(self)\r
2679\r
2680 def exitRule(self, listener:ParseTreeListener):\r
2681 if hasattr( listener, "exitParameter_type_list" ):\r
2682 listener.exitParameter_type_list(self)\r
2683\r
2684\r
2685\r
2686\r
2687 def parameter_type_list(self):\r
2688\r
2689 localctx = CParser.Parameter_type_listContext(self, self._ctx, self.state)\r
2690 self.enterRule(localctx, 50, self.RULE_parameter_type_list)\r
2691 self._la = 0 # Token type\r
2692 try:\r
2693 self.enterOuterAlt(localctx, 1)\r
2694 self.state = 402\r
2695 self.parameter_list()\r
2696 self.state = 408\r
2697 self._errHandler.sync(self)\r
2698 _la = self._input.LA(1)\r
2699 if _la==CParser.T__3:\r
2700 self.state = 403\r
2701 self.match(CParser.T__3)\r
2702 self.state = 405\r
2703 self._errHandler.sync(self)\r
2704 _la = self._input.LA(1)\r
2705 if _la==CParser.T__28:\r
2706 self.state = 404\r
2707 self.match(CParser.T__28)\r
2708\r
2709\r
2710 self.state = 407\r
2711 self.match(CParser.T__42)\r
2712\r
2713\r
2714 except RecognitionException as re:\r
2715 localctx.exception = re\r
2716 self._errHandler.reportError(self, re)\r
2717 self._errHandler.recover(self, re)\r
2718 finally:\r
2719 self.exitRule()\r
2720 return localctx\r
2721\r
2722 class Parameter_listContext(ParserRuleContext):\r
2723\r
2724 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2725 super().__init__(parent, invokingState)\r
2726 self.parser = parser\r
2727\r
2728 def parameter_declaration(self, i:int=None):\r
2729 if i is None:\r
2730 return self.getTypedRuleContexts(CParser.Parameter_declarationContext)\r
2731 else:\r
2732 return self.getTypedRuleContext(CParser.Parameter_declarationContext,i)\r
2733\r
2734\r
2735 def getRuleIndex(self):\r
2736 return CParser.RULE_parameter_list\r
2737\r
2738 def enterRule(self, listener:ParseTreeListener):\r
2739 if hasattr( listener, "enterParameter_list" ):\r
2740 listener.enterParameter_list(self)\r
2741\r
2742 def exitRule(self, listener:ParseTreeListener):\r
2743 if hasattr( listener, "exitParameter_list" ):\r
2744 listener.exitParameter_list(self)\r
2745\r
2746\r
2747\r
2748\r
2749 def parameter_list(self):\r
2750\r
2751 localctx = CParser.Parameter_listContext(self, self._ctx, self.state)\r
2752 self.enterRule(localctx, 52, self.RULE_parameter_list)\r
2753 try:\r
2754 self.enterOuterAlt(localctx, 1)\r
2755 self.state = 410\r
2756 self.parameter_declaration()\r
2757 self.state = 418\r
2758 self._errHandler.sync(self)\r
2759 _alt = self._interp.adaptivePredict(self._input,46,self._ctx)\r
2760 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
2761 if _alt==1:\r
2762 self.state = 411\r
2763 self.match(CParser.T__3)\r
2764 self.state = 413\r
2765 self._errHandler.sync(self)\r
2766 la_ = self._interp.adaptivePredict(self._input,45,self._ctx)\r
2767 if la_ == 1:\r
2768 self.state = 412\r
2769 self.match(CParser.T__28)\r
2770\r
2771\r
2772 self.state = 415\r
2773 self.parameter_declaration() \r
2774 self.state = 420\r
2775 self._errHandler.sync(self)\r
2776 _alt = self._interp.adaptivePredict(self._input,46,self._ctx)\r
2777\r
2778 except RecognitionException as re:\r
2779 localctx.exception = re\r
2780 self._errHandler.reportError(self, re)\r
2781 self._errHandler.recover(self, re)\r
2782 finally:\r
2783 self.exitRule()\r
2784 return localctx\r
2785\r
2786 class Parameter_declarationContext(ParserRuleContext):\r
2787\r
2788 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2789 super().__init__(parent, invokingState)\r
2790 self.parser = parser\r
2791\r
2792 def declaration_specifiers(self):\r
2793 return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)\r
2794\r
2795\r
2796 def declarator(self, i:int=None):\r
2797 if i is None:\r
2798 return self.getTypedRuleContexts(CParser.DeclaratorContext)\r
2799 else:\r
2800 return self.getTypedRuleContext(CParser.DeclaratorContext,i)\r
2801\r
2802\r
2803 def abstract_declarator(self, i:int=None):\r
2804 if i is None:\r
2805 return self.getTypedRuleContexts(CParser.Abstract_declaratorContext)\r
2806 else:\r
2807 return self.getTypedRuleContext(CParser.Abstract_declaratorContext,i)\r
2808\r
2809\r
2810 def IDENTIFIER(self):\r
2811 return self.getToken(CParser.IDENTIFIER, 0)\r
2812\r
2813 def pointer(self, i:int=None):\r
2814 if i is None:\r
2815 return self.getTypedRuleContexts(CParser.PointerContext)\r
2816 else:\r
2817 return self.getTypedRuleContext(CParser.PointerContext,i)\r
2818\r
2819\r
2820 def getRuleIndex(self):\r
2821 return CParser.RULE_parameter_declaration\r
2822\r
2823 def enterRule(self, listener:ParseTreeListener):\r
2824 if hasattr( listener, "enterParameter_declaration" ):\r
2825 listener.enterParameter_declaration(self)\r
2826\r
2827 def exitRule(self, listener:ParseTreeListener):\r
2828 if hasattr( listener, "exitParameter_declaration" ):\r
2829 listener.exitParameter_declaration(self)\r
2830\r
2831\r
2832\r
2833\r
2834 def parameter_declaration(self):\r
2835\r
2836 localctx = CParser.Parameter_declarationContext(self, self._ctx, self.state)\r
2837 self.enterRule(localctx, 54, self.RULE_parameter_declaration)\r
2838 self._la = 0 # Token type\r
2839 try:\r
2840 self.state = 439\r
2841 self._errHandler.sync(self)\r
2842 la_ = self._interp.adaptivePredict(self._input,51,self._ctx)\r
2843 if la_ == 1:\r
2844 self.enterOuterAlt(localctx, 1)\r
2845 self.state = 421\r
2846 self.declaration_specifiers()\r
2847 self.state = 426\r
2848 self._errHandler.sync(self)\r
2849 _la = self._input.LA(1)\r
2850 while ((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & ((1 << (CParser.T__33 - 34)) | (1 << (CParser.T__34 - 34)) | (1 << (CParser.T__35 - 34)) | (1 << (CParser.T__37 - 34)) | (1 << (CParser.T__39 - 34)) | (1 << (CParser.T__41 - 34)) | (1 << (CParser.IDENTIFIER - 34)))) != 0):\r
2851 self.state = 424\r
2852 self._errHandler.sync(self)\r
2853 la_ = self._interp.adaptivePredict(self._input,47,self._ctx)\r
2854 if la_ == 1:\r
2855 self.state = 422\r
2856 self.declarator()\r
2857 pass\r
2858\r
2859 elif la_ == 2:\r
2860 self.state = 423\r
2861 self.abstract_declarator()\r
2862 pass\r
2863\r
2864\r
2865 self.state = 428\r
2866 self._errHandler.sync(self)\r
2867 _la = self._input.LA(1)\r
2868\r
2869 self.state = 430\r
2870 self._errHandler.sync(self)\r
2871 _la = self._input.LA(1)\r
2872 if _la==CParser.T__28:\r
2873 self.state = 429\r
2874 self.match(CParser.T__28)\r
2875\r
2876\r
2877 pass\r
2878\r
2879 elif la_ == 2:\r
2880 self.enterOuterAlt(localctx, 2)\r
2881 self.state = 435\r
2882 self._errHandler.sync(self)\r
2883 _la = self._input.LA(1)\r
2884 while _la==CParser.T__41:\r
2885 self.state = 432\r
2886 self.pointer()\r
2887 self.state = 437\r
2888 self._errHandler.sync(self)\r
2889 _la = self._input.LA(1)\r
2890\r
2891 self.state = 438\r
2892 self.match(CParser.IDENTIFIER)\r
2893 pass\r
2894\r
2895\r
2896 except RecognitionException as re:\r
2897 localctx.exception = re\r
2898 self._errHandler.reportError(self, re)\r
2899 self._errHandler.recover(self, re)\r
2900 finally:\r
2901 self.exitRule()\r
2902 return localctx\r
2903\r
2904 class Identifier_listContext(ParserRuleContext):\r
2905\r
2906 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2907 super().__init__(parent, invokingState)\r
2908 self.parser = parser\r
2909\r
2910 def IDENTIFIER(self, i:int=None):\r
2911 if i is None:\r
2912 return self.getTokens(CParser.IDENTIFIER)\r
2913 else:\r
2914 return self.getToken(CParser.IDENTIFIER, i)\r
2915\r
2916 def getRuleIndex(self):\r
2917 return CParser.RULE_identifier_list\r
2918\r
2919 def enterRule(self, listener:ParseTreeListener):\r
2920 if hasattr( listener, "enterIdentifier_list" ):\r
2921 listener.enterIdentifier_list(self)\r
2922\r
2923 def exitRule(self, listener:ParseTreeListener):\r
2924 if hasattr( listener, "exitIdentifier_list" ):\r
2925 listener.exitIdentifier_list(self)\r
2926\r
2927\r
2928\r
2929\r
2930 def identifier_list(self):\r
2931\r
2932 localctx = CParser.Identifier_listContext(self, self._ctx, self.state)\r
2933 self.enterRule(localctx, 56, self.RULE_identifier_list)\r
2934 self._la = 0 # Token type\r
2935 try:\r
2936 self.enterOuterAlt(localctx, 1)\r
2937 self.state = 441\r
2938 self.match(CParser.IDENTIFIER)\r
2939 self.state = 446\r
2940 self._errHandler.sync(self)\r
2941 _la = self._input.LA(1)\r
2942 while _la==CParser.T__3:\r
2943 self.state = 442\r
2944 self.match(CParser.T__3)\r
2945 self.state = 443\r
2946 self.match(CParser.IDENTIFIER)\r
2947 self.state = 448\r
2948 self._errHandler.sync(self)\r
2949 _la = self._input.LA(1)\r
2950\r
2951 except RecognitionException as re:\r
2952 localctx.exception = re\r
2953 self._errHandler.reportError(self, re)\r
2954 self._errHandler.recover(self, re)\r
2955 finally:\r
2956 self.exitRule()\r
2957 return localctx\r
2958\r
2959 class Type_nameContext(ParserRuleContext):\r
2960\r
2961 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
2962 super().__init__(parent, invokingState)\r
2963 self.parser = parser\r
2964\r
2965 def specifier_qualifier_list(self):\r
2966 return self.getTypedRuleContext(CParser.Specifier_qualifier_listContext,0)\r
2967\r
2968\r
2969 def abstract_declarator(self):\r
2970 return self.getTypedRuleContext(CParser.Abstract_declaratorContext,0)\r
2971\r
2972\r
2973 def type_id(self):\r
2974 return self.getTypedRuleContext(CParser.Type_idContext,0)\r
2975\r
2976\r
2977 def getRuleIndex(self):\r
2978 return CParser.RULE_type_name\r
2979\r
2980 def enterRule(self, listener:ParseTreeListener):\r
2981 if hasattr( listener, "enterType_name" ):\r
2982 listener.enterType_name(self)\r
2983\r
2984 def exitRule(self, listener:ParseTreeListener):\r
2985 if hasattr( listener, "exitType_name" ):\r
2986 listener.exitType_name(self)\r
2987\r
2988\r
2989\r
2990\r
2991 def type_name(self):\r
2992\r
2993 localctx = CParser.Type_nameContext(self, self._ctx, self.state)\r
2994 self.enterRule(localctx, 58, self.RULE_type_name)\r
2995 self._la = 0 # Token type\r
2996 try:\r
2997 self.state = 454\r
2998 self._errHandler.sync(self)\r
2999 la_ = self._interp.adaptivePredict(self._input,54,self._ctx)\r
3000 if la_ == 1:\r
3001 self.enterOuterAlt(localctx, 1)\r
3002 self.state = 449\r
3003 self.specifier_qualifier_list()\r
3004 self.state = 451\r
3005 self._errHandler.sync(self)\r
3006 _la = self._input.LA(1)\r
3007 if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__37) | (1 << CParser.T__39) | (1 << CParser.T__41))) != 0):\r
3008 self.state = 450\r
3009 self.abstract_declarator()\r
3010\r
3011\r
3012 pass\r
3013\r
3014 elif la_ == 2:\r
3015 self.enterOuterAlt(localctx, 2)\r
3016 self.state = 453\r
3017 self.type_id()\r
3018 pass\r
3019\r
3020\r
3021 except RecognitionException as re:\r
3022 localctx.exception = re\r
3023 self._errHandler.reportError(self, re)\r
3024 self._errHandler.recover(self, re)\r
3025 finally:\r
3026 self.exitRule()\r
3027 return localctx\r
3028\r
3029 class Abstract_declaratorContext(ParserRuleContext):\r
3030\r
3031 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3032 super().__init__(parent, invokingState)\r
3033 self.parser = parser\r
3034\r
3035 def pointer(self):\r
3036 return self.getTypedRuleContext(CParser.PointerContext,0)\r
3037\r
3038\r
3039 def direct_abstract_declarator(self):\r
3040 return self.getTypedRuleContext(CParser.Direct_abstract_declaratorContext,0)\r
3041\r
3042\r
3043 def getRuleIndex(self):\r
3044 return CParser.RULE_abstract_declarator\r
3045\r
3046 def enterRule(self, listener:ParseTreeListener):\r
3047 if hasattr( listener, "enterAbstract_declarator" ):\r
3048 listener.enterAbstract_declarator(self)\r
3049\r
3050 def exitRule(self, listener:ParseTreeListener):\r
3051 if hasattr( listener, "exitAbstract_declarator" ):\r
3052 listener.exitAbstract_declarator(self)\r
3053\r
3054\r
3055\r
3056\r
3057 def abstract_declarator(self):\r
3058\r
3059 localctx = CParser.Abstract_declaratorContext(self, self._ctx, self.state)\r
3060 self.enterRule(localctx, 60, self.RULE_abstract_declarator)\r
3061 try:\r
3062 self.state = 461\r
3063 self._errHandler.sync(self)\r
3064 token = self._input.LA(1)\r
3065 if token in [CParser.T__41]:\r
3066 self.enterOuterAlt(localctx, 1)\r
3067 self.state = 456\r
3068 self.pointer()\r
3069 self.state = 458\r
3070 self._errHandler.sync(self)\r
3071 la_ = self._interp.adaptivePredict(self._input,55,self._ctx)\r
3072 if la_ == 1:\r
3073 self.state = 457\r
3074 self.direct_abstract_declarator()\r
3075\r
3076\r
3077 pass\r
3078 elif token in [CParser.T__37, CParser.T__39]:\r
3079 self.enterOuterAlt(localctx, 2)\r
3080 self.state = 460\r
3081 self.direct_abstract_declarator()\r
3082 pass\r
3083 else:\r
3084 raise NoViableAltException(self)\r
3085\r
3086 except RecognitionException as re:\r
3087 localctx.exception = re\r
3088 self._errHandler.reportError(self, re)\r
3089 self._errHandler.recover(self, re)\r
3090 finally:\r
3091 self.exitRule()\r
3092 return localctx\r
3093\r
3094 class Direct_abstract_declaratorContext(ParserRuleContext):\r
3095\r
3096 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3097 super().__init__(parent, invokingState)\r
3098 self.parser = parser\r
3099\r
3100 def abstract_declarator(self):\r
3101 return self.getTypedRuleContext(CParser.Abstract_declaratorContext,0)\r
3102\r
3103\r
3104 def abstract_declarator_suffix(self, i:int=None):\r
3105 if i is None:\r
3106 return self.getTypedRuleContexts(CParser.Abstract_declarator_suffixContext)\r
3107 else:\r
3108 return self.getTypedRuleContext(CParser.Abstract_declarator_suffixContext,i)\r
3109\r
3110\r
3111 def getRuleIndex(self):\r
3112 return CParser.RULE_direct_abstract_declarator\r
3113\r
3114 def enterRule(self, listener:ParseTreeListener):\r
3115 if hasattr( listener, "enterDirect_abstract_declarator" ):\r
3116 listener.enterDirect_abstract_declarator(self)\r
3117\r
3118 def exitRule(self, listener:ParseTreeListener):\r
3119 if hasattr( listener, "exitDirect_abstract_declarator" ):\r
3120 listener.exitDirect_abstract_declarator(self)\r
3121\r
3122\r
3123\r
3124\r
3125 def direct_abstract_declarator(self):\r
3126\r
3127 localctx = CParser.Direct_abstract_declaratorContext(self, self._ctx, self.state)\r
3128 self.enterRule(localctx, 62, self.RULE_direct_abstract_declarator)\r
3129 try:\r
3130 self.enterOuterAlt(localctx, 1)\r
3131 self.state = 468\r
3132 self._errHandler.sync(self)\r
3133 la_ = self._interp.adaptivePredict(self._input,57,self._ctx)\r
3134 if la_ == 1:\r
3135 self.state = 463\r
3136 self.match(CParser.T__37)\r
3137 self.state = 464\r
3138 self.abstract_declarator()\r
3139 self.state = 465\r
3140 self.match(CParser.T__38)\r
3141 pass\r
3142\r
3143 elif la_ == 2:\r
3144 self.state = 467\r
3145 self.abstract_declarator_suffix()\r
3146 pass\r
3147\r
3148\r
3149 self.state = 473\r
3150 self._errHandler.sync(self)\r
3151 _alt = self._interp.adaptivePredict(self._input,58,self._ctx)\r
3152 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
3153 if _alt==1:\r
3154 self.state = 470\r
3155 self.abstract_declarator_suffix() \r
3156 self.state = 475\r
3157 self._errHandler.sync(self)\r
3158 _alt = self._interp.adaptivePredict(self._input,58,self._ctx)\r
3159\r
3160 except RecognitionException as re:\r
3161 localctx.exception = re\r
3162 self._errHandler.reportError(self, re)\r
3163 self._errHandler.recover(self, re)\r
3164 finally:\r
3165 self.exitRule()\r
3166 return localctx\r
3167\r
3168 class Abstract_declarator_suffixContext(ParserRuleContext):\r
3169\r
3170 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3171 super().__init__(parent, invokingState)\r
3172 self.parser = parser\r
3173\r
3174 def constant_expression(self):\r
3175 return self.getTypedRuleContext(CParser.Constant_expressionContext,0)\r
3176\r
3177\r
3178 def parameter_type_list(self):\r
3179 return self.getTypedRuleContext(CParser.Parameter_type_listContext,0)\r
3180\r
3181\r
3182 def getRuleIndex(self):\r
3183 return CParser.RULE_abstract_declarator_suffix\r
3184\r
3185 def enterRule(self, listener:ParseTreeListener):\r
3186 if hasattr( listener, "enterAbstract_declarator_suffix" ):\r
3187 listener.enterAbstract_declarator_suffix(self)\r
3188\r
3189 def exitRule(self, listener:ParseTreeListener):\r
3190 if hasattr( listener, "exitAbstract_declarator_suffix" ):\r
3191 listener.exitAbstract_declarator_suffix(self)\r
3192\r
3193\r
3194\r
3195\r
3196 def abstract_declarator_suffix(self):\r
3197\r
3198 localctx = CParser.Abstract_declarator_suffixContext(self, self._ctx, self.state)\r
3199 self.enterRule(localctx, 64, self.RULE_abstract_declarator_suffix)\r
3200 try:\r
3201 self.state = 488\r
3202 self._errHandler.sync(self)\r
3203 la_ = self._interp.adaptivePredict(self._input,59,self._ctx)\r
3204 if la_ == 1:\r
3205 self.enterOuterAlt(localctx, 1)\r
3206 self.state = 476\r
3207 self.match(CParser.T__39)\r
3208 self.state = 477\r
3209 self.match(CParser.T__40)\r
3210 pass\r
3211\r
3212 elif la_ == 2:\r
3213 self.enterOuterAlt(localctx, 2)\r
3214 self.state = 478\r
3215 self.match(CParser.T__39)\r
3216 self.state = 479\r
3217 self.constant_expression()\r
3218 self.state = 480\r
3219 self.match(CParser.T__40)\r
3220 pass\r
3221\r
3222 elif la_ == 3:\r
3223 self.enterOuterAlt(localctx, 3)\r
3224 self.state = 482\r
3225 self.match(CParser.T__37)\r
3226 self.state = 483\r
3227 self.match(CParser.T__38)\r
3228 pass\r
3229\r
3230 elif la_ == 4:\r
3231 self.enterOuterAlt(localctx, 4)\r
3232 self.state = 484\r
3233 self.match(CParser.T__37)\r
3234 self.state = 485\r
3235 self.parameter_type_list()\r
3236 self.state = 486\r
3237 self.match(CParser.T__38)\r
3238 pass\r
3239\r
3240\r
3241 except RecognitionException as re:\r
3242 localctx.exception = re\r
3243 self._errHandler.reportError(self, re)\r
3244 self._errHandler.recover(self, re)\r
3245 finally:\r
3246 self.exitRule()\r
3247 return localctx\r
3248\r
3249 class InitializerContext(ParserRuleContext):\r
3250\r
3251 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3252 super().__init__(parent, invokingState)\r
3253 self.parser = parser\r
3254\r
3255 def assignment_expression(self):\r
3256 return self.getTypedRuleContext(CParser.Assignment_expressionContext,0)\r
3257\r
3258\r
3259 def initializer_list(self):\r
3260 return self.getTypedRuleContext(CParser.Initializer_listContext,0)\r
3261\r
3262\r
3263 def getRuleIndex(self):\r
3264 return CParser.RULE_initializer\r
3265\r
3266 def enterRule(self, listener:ParseTreeListener):\r
3267 if hasattr( listener, "enterInitializer" ):\r
3268 listener.enterInitializer(self)\r
3269\r
3270 def exitRule(self, listener:ParseTreeListener):\r
3271 if hasattr( listener, "exitInitializer" ):\r
3272 listener.exitInitializer(self)\r
3273\r
3274\r
3275\r
3276\r
3277 def initializer(self):\r
3278\r
3279 localctx = CParser.InitializerContext(self, self._ctx, self.state)\r
3280 self.enterRule(localctx, 66, self.RULE_initializer)\r
3281 self._la = 0 # Token type\r
3282 try:\r
3283 self.state = 498\r
3284 self._errHandler.sync(self)\r
3285 token = self._input.LA(1)\r
3286 if token in [CParser.T__37, CParser.T__41, CParser.T__43, CParser.T__44, CParser.T__47, CParser.T__48, CParser.T__49, CParser.T__52, CParser.T__53, CParser.T__54, CParser.IDENTIFIER, CParser.CHARACTER_LITERAL, CParser.STRING_LITERAL, CParser.HEX_LITERAL, CParser.DECIMAL_LITERAL, CParser.OCTAL_LITERAL, CParser.FLOATING_POINT_LITERAL]:\r
3287 self.enterOuterAlt(localctx, 1)\r
3288 self.state = 490\r
3289 self.assignment_expression()\r
3290 pass\r
3291 elif token in [CParser.T__0]:\r
3292 self.enterOuterAlt(localctx, 2)\r
3293 self.state = 491\r
3294 self.match(CParser.T__0)\r
3295 self.state = 492\r
3296 self.initializer_list()\r
3297 self.state = 494\r
3298 self._errHandler.sync(self)\r
3299 _la = self._input.LA(1)\r
3300 if _la==CParser.T__3:\r
3301 self.state = 493\r
3302 self.match(CParser.T__3)\r
3303\r
3304\r
3305 self.state = 496\r
3306 self.match(CParser.T__19)\r
3307 pass\r
3308 else:\r
3309 raise NoViableAltException(self)\r
3310\r
3311 except RecognitionException as re:\r
3312 localctx.exception = re\r
3313 self._errHandler.reportError(self, re)\r
3314 self._errHandler.recover(self, re)\r
3315 finally:\r
3316 self.exitRule()\r
3317 return localctx\r
3318\r
3319 class Initializer_listContext(ParserRuleContext):\r
3320\r
3321 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3322 super().__init__(parent, invokingState)\r
3323 self.parser = parser\r
3324\r
3325 def initializer(self, i:int=None):\r
3326 if i is None:\r
3327 return self.getTypedRuleContexts(CParser.InitializerContext)\r
3328 else:\r
3329 return self.getTypedRuleContext(CParser.InitializerContext,i)\r
3330\r
3331\r
3332 def getRuleIndex(self):\r
3333 return CParser.RULE_initializer_list\r
3334\r
3335 def enterRule(self, listener:ParseTreeListener):\r
3336 if hasattr( listener, "enterInitializer_list" ):\r
3337 listener.enterInitializer_list(self)\r
3338\r
3339 def exitRule(self, listener:ParseTreeListener):\r
3340 if hasattr( listener, "exitInitializer_list" ):\r
3341 listener.exitInitializer_list(self)\r
3342\r
3343\r
3344\r
3345\r
3346 def initializer_list(self):\r
3347\r
3348 localctx = CParser.Initializer_listContext(self, self._ctx, self.state)\r
3349 self.enterRule(localctx, 68, self.RULE_initializer_list)\r
3350 try:\r
3351 self.enterOuterAlt(localctx, 1)\r
3352 self.state = 500\r
3353 self.initializer()\r
3354 self.state = 505\r
3355 self._errHandler.sync(self)\r
3356 _alt = self._interp.adaptivePredict(self._input,62,self._ctx)\r
3357 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
3358 if _alt==1:\r
3359 self.state = 501\r
3360 self.match(CParser.T__3)\r
3361 self.state = 502\r
3362 self.initializer() \r
3363 self.state = 507\r
3364 self._errHandler.sync(self)\r
3365 _alt = self._interp.adaptivePredict(self._input,62,self._ctx)\r
3366\r
3367 except RecognitionException as re:\r
3368 localctx.exception = re\r
3369 self._errHandler.reportError(self, re)\r
3370 self._errHandler.recover(self, re)\r
3371 finally:\r
3372 self.exitRule()\r
3373 return localctx\r
3374\r
3375 class Argument_expression_listContext(ParserRuleContext):\r
3376\r
3377 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3378 super().__init__(parent, invokingState)\r
3379 self.parser = parser\r
3380\r
3381 def assignment_expression(self, i:int=None):\r
3382 if i is None:\r
3383 return self.getTypedRuleContexts(CParser.Assignment_expressionContext)\r
3384 else:\r
3385 return self.getTypedRuleContext(CParser.Assignment_expressionContext,i)\r
3386\r
3387\r
3388 def getRuleIndex(self):\r
3389 return CParser.RULE_argument_expression_list\r
3390\r
3391 def enterRule(self, listener:ParseTreeListener):\r
3392 if hasattr( listener, "enterArgument_expression_list" ):\r
3393 listener.enterArgument_expression_list(self)\r
3394\r
3395 def exitRule(self, listener:ParseTreeListener):\r
3396 if hasattr( listener, "exitArgument_expression_list" ):\r
3397 listener.exitArgument_expression_list(self)\r
3398\r
3399\r
3400\r
3401\r
3402 def argument_expression_list(self):\r
3403\r
3404 localctx = CParser.Argument_expression_listContext(self, self._ctx, self.state)\r
3405 self.enterRule(localctx, 70, self.RULE_argument_expression_list)\r
3406 self._la = 0 # Token type\r
3407 try:\r
3408 self.enterOuterAlt(localctx, 1)\r
3409 self.state = 508\r
3410 self.assignment_expression()\r
3411 self.state = 510\r
3412 self._errHandler.sync(self)\r
3413 _la = self._input.LA(1)\r
3414 if _la==CParser.T__28:\r
3415 self.state = 509\r
3416 self.match(CParser.T__28)\r
3417\r
3418\r
3419 self.state = 519\r
3420 self._errHandler.sync(self)\r
3421 _la = self._input.LA(1)\r
3422 while _la==CParser.T__3:\r
3423 self.state = 512\r
3424 self.match(CParser.T__3)\r
3425 self.state = 513\r
3426 self.assignment_expression()\r
3427 self.state = 515\r
3428 self._errHandler.sync(self)\r
3429 _la = self._input.LA(1)\r
3430 if _la==CParser.T__28:\r
3431 self.state = 514\r
3432 self.match(CParser.T__28)\r
3433\r
3434\r
3435 self.state = 521\r
3436 self._errHandler.sync(self)\r
3437 _la = self._input.LA(1)\r
3438\r
3439 except RecognitionException as re:\r
3440 localctx.exception = re\r
3441 self._errHandler.reportError(self, re)\r
3442 self._errHandler.recover(self, re)\r
3443 finally:\r
3444 self.exitRule()\r
3445 return localctx\r
3446\r
3447 class Additive_expressionContext(ParserRuleContext):\r
3448\r
3449 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3450 super().__init__(parent, invokingState)\r
3451 self.parser = parser\r
3452\r
3453 def multiplicative_expression(self, i:int=None):\r
3454 if i is None:\r
3455 return self.getTypedRuleContexts(CParser.Multiplicative_expressionContext)\r
3456 else:\r
3457 return self.getTypedRuleContext(CParser.Multiplicative_expressionContext,i)\r
3458\r
3459\r
3460 def getRuleIndex(self):\r
3461 return CParser.RULE_additive_expression\r
3462\r
3463 def enterRule(self, listener:ParseTreeListener):\r
3464 if hasattr( listener, "enterAdditive_expression" ):\r
3465 listener.enterAdditive_expression(self)\r
3466\r
3467 def exitRule(self, listener:ParseTreeListener):\r
3468 if hasattr( listener, "exitAdditive_expression" ):\r
3469 listener.exitAdditive_expression(self)\r
3470\r
3471\r
3472\r
3473\r
3474 def additive_expression(self):\r
3475\r
3476 localctx = CParser.Additive_expressionContext(self, self._ctx, self.state)\r
3477 self.enterRule(localctx, 72, self.RULE_additive_expression)\r
3478 self._la = 0 # Token type\r
3479 try:\r
3480 self.enterOuterAlt(localctx, 1)\r
3481 self.state = 522\r
3482 self.multiplicative_expression()\r
3483 self.state = 529\r
3484 self._errHandler.sync(self)\r
3485 _la = self._input.LA(1)\r
3486 while _la==CParser.T__43 or _la==CParser.T__44:\r
3487 self.state = 527\r
3488 self._errHandler.sync(self)\r
3489 token = self._input.LA(1)\r
3490 if token in [CParser.T__43]:\r
3491 self.state = 523\r
3492 self.match(CParser.T__43)\r
3493 self.state = 524\r
3494 self.multiplicative_expression()\r
3495 pass\r
3496 elif token in [CParser.T__44]:\r
3497 self.state = 525\r
3498 self.match(CParser.T__44)\r
3499 self.state = 526\r
3500 self.multiplicative_expression()\r
3501 pass\r
3502 else:\r
3503 raise NoViableAltException(self)\r
3504\r
3505 self.state = 531\r
3506 self._errHandler.sync(self)\r
3507 _la = self._input.LA(1)\r
3508\r
3509 except RecognitionException as re:\r
3510 localctx.exception = re\r
3511 self._errHandler.reportError(self, re)\r
3512 self._errHandler.recover(self, re)\r
3513 finally:\r
3514 self.exitRule()\r
3515 return localctx\r
3516\r
3517 class Multiplicative_expressionContext(ParserRuleContext):\r
3518\r
3519 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3520 super().__init__(parent, invokingState)\r
3521 self.parser = parser\r
3522\r
3523 def cast_expression(self, i:int=None):\r
3524 if i is None:\r
3525 return self.getTypedRuleContexts(CParser.Cast_expressionContext)\r
3526 else:\r
3527 return self.getTypedRuleContext(CParser.Cast_expressionContext,i)\r
3528\r
3529\r
3530 def getRuleIndex(self):\r
3531 return CParser.RULE_multiplicative_expression\r
3532\r
3533 def enterRule(self, listener:ParseTreeListener):\r
3534 if hasattr( listener, "enterMultiplicative_expression" ):\r
3535 listener.enterMultiplicative_expression(self)\r
3536\r
3537 def exitRule(self, listener:ParseTreeListener):\r
3538 if hasattr( listener, "exitMultiplicative_expression" ):\r
3539 listener.exitMultiplicative_expression(self)\r
3540\r
3541\r
3542\r
3543\r
3544 def multiplicative_expression(self):\r
3545\r
3546 localctx = CParser.Multiplicative_expressionContext(self, self._ctx, self.state)\r
3547 self.enterRule(localctx, 74, self.RULE_multiplicative_expression)\r
3548 self._la = 0 # Token type\r
3549 try:\r
3550 self.enterOuterAlt(localctx, 1)\r
3551 self.state = 532\r
3552 self.cast_expression()\r
3553 self.state = 541\r
3554 self._errHandler.sync(self)\r
3555 _la = self._input.LA(1)\r
3556 while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__41) | (1 << CParser.T__45) | (1 << CParser.T__46))) != 0):\r
3557 self.state = 539\r
3558 self._errHandler.sync(self)\r
3559 token = self._input.LA(1)\r
3560 if token in [CParser.T__41]:\r
3561 self.state = 533\r
3562 self.match(CParser.T__41)\r
3563 self.state = 534\r
3564 self.cast_expression()\r
3565 pass\r
3566 elif token in [CParser.T__45]:\r
3567 self.state = 535\r
3568 self.match(CParser.T__45)\r
3569 self.state = 536\r
3570 self.cast_expression()\r
3571 pass\r
3572 elif token in [CParser.T__46]:\r
3573 self.state = 537\r
3574 self.match(CParser.T__46)\r
3575 self.state = 538\r
3576 self.cast_expression()\r
3577 pass\r
3578 else:\r
3579 raise NoViableAltException(self)\r
3580\r
3581 self.state = 543\r
3582 self._errHandler.sync(self)\r
3583 _la = self._input.LA(1)\r
3584\r
3585 except RecognitionException as re:\r
3586 localctx.exception = re\r
3587 self._errHandler.reportError(self, re)\r
3588 self._errHandler.recover(self, re)\r
3589 finally:\r
3590 self.exitRule()\r
3591 return localctx\r
3592\r
3593 class Cast_expressionContext(ParserRuleContext):\r
3594\r
3595 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3596 super().__init__(parent, invokingState)\r
3597 self.parser = parser\r
3598\r
3599 def type_name(self):\r
3600 return self.getTypedRuleContext(CParser.Type_nameContext,0)\r
3601\r
3602\r
3603 def cast_expression(self):\r
3604 return self.getTypedRuleContext(CParser.Cast_expressionContext,0)\r
3605\r
3606\r
3607 def unary_expression(self):\r
3608 return self.getTypedRuleContext(CParser.Unary_expressionContext,0)\r
3609\r
3610\r
3611 def getRuleIndex(self):\r
3612 return CParser.RULE_cast_expression\r
3613\r
3614 def enterRule(self, listener:ParseTreeListener):\r
3615 if hasattr( listener, "enterCast_expression" ):\r
3616 listener.enterCast_expression(self)\r
3617\r
3618 def exitRule(self, listener:ParseTreeListener):\r
3619 if hasattr( listener, "exitCast_expression" ):\r
3620 listener.exitCast_expression(self)\r
3621\r
3622\r
3623\r
3624\r
3625 def cast_expression(self):\r
3626\r
3627 localctx = CParser.Cast_expressionContext(self, self._ctx, self.state)\r
3628 self.enterRule(localctx, 76, self.RULE_cast_expression)\r
3629 try:\r
3630 self.state = 550\r
3631 self._errHandler.sync(self)\r
3632 la_ = self._interp.adaptivePredict(self._input,70,self._ctx)\r
3633 if la_ == 1:\r
3634 self.enterOuterAlt(localctx, 1)\r
3635 self.state = 544\r
3636 self.match(CParser.T__37)\r
3637 self.state = 545\r
3638 self.type_name()\r
3639 self.state = 546\r
3640 self.match(CParser.T__38)\r
3641 self.state = 547\r
3642 self.cast_expression()\r
3643 pass\r
3644\r
3645 elif la_ == 2:\r
3646 self.enterOuterAlt(localctx, 2)\r
3647 self.state = 549\r
3648 self.unary_expression()\r
3649 pass\r
3650\r
3651\r
3652 except RecognitionException as re:\r
3653 localctx.exception = re\r
3654 self._errHandler.reportError(self, re)\r
3655 self._errHandler.recover(self, re)\r
3656 finally:\r
3657 self.exitRule()\r
3658 return localctx\r
3659\r
3660 class Unary_expressionContext(ParserRuleContext):\r
3661\r
3662 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3663 super().__init__(parent, invokingState)\r
3664 self.parser = parser\r
3665\r
3666 def postfix_expression(self):\r
3667 return self.getTypedRuleContext(CParser.Postfix_expressionContext,0)\r
3668\r
3669\r
3670 def unary_expression(self):\r
3671 return self.getTypedRuleContext(CParser.Unary_expressionContext,0)\r
3672\r
3673\r
3674 def unary_operator(self):\r
3675 return self.getTypedRuleContext(CParser.Unary_operatorContext,0)\r
3676\r
3677\r
3678 def cast_expression(self):\r
3679 return self.getTypedRuleContext(CParser.Cast_expressionContext,0)\r
3680\r
3681\r
3682 def type_name(self):\r
3683 return self.getTypedRuleContext(CParser.Type_nameContext,0)\r
3684\r
3685\r
3686 def getRuleIndex(self):\r
3687 return CParser.RULE_unary_expression\r
3688\r
3689 def enterRule(self, listener:ParseTreeListener):\r
3690 if hasattr( listener, "enterUnary_expression" ):\r
3691 listener.enterUnary_expression(self)\r
3692\r
3693 def exitRule(self, listener:ParseTreeListener):\r
3694 if hasattr( listener, "exitUnary_expression" ):\r
3695 listener.exitUnary_expression(self)\r
3696\r
3697\r
3698\r
3699\r
3700 def unary_expression(self):\r
3701\r
3702 localctx = CParser.Unary_expressionContext(self, self._ctx, self.state)\r
3703 self.enterRule(localctx, 78, self.RULE_unary_expression)\r
3704 try:\r
3705 self.state = 567\r
3706 self._errHandler.sync(self)\r
3707 la_ = self._interp.adaptivePredict(self._input,71,self._ctx)\r
3708 if la_ == 1:\r
3709 self.enterOuterAlt(localctx, 1)\r
3710 self.state = 552\r
3711 self.postfix_expression()\r
3712 pass\r
3713\r
3714 elif la_ == 2:\r
3715 self.enterOuterAlt(localctx, 2)\r
3716 self.state = 553\r
3717 self.match(CParser.T__47)\r
3718 self.state = 554\r
3719 self.unary_expression()\r
3720 pass\r
3721\r
3722 elif la_ == 3:\r
3723 self.enterOuterAlt(localctx, 3)\r
3724 self.state = 555\r
3725 self.match(CParser.T__48)\r
3726 self.state = 556\r
3727 self.unary_expression()\r
3728 pass\r
3729\r
3730 elif la_ == 4:\r
3731 self.enterOuterAlt(localctx, 4)\r
3732 self.state = 557\r
3733 self.unary_operator()\r
3734 self.state = 558\r
3735 self.cast_expression()\r
3736 pass\r
3737\r
3738 elif la_ == 5:\r
3739 self.enterOuterAlt(localctx, 5)\r
3740 self.state = 560\r
3741 self.match(CParser.T__49)\r
3742 self.state = 561\r
3743 self.unary_expression()\r
3744 pass\r
3745\r
3746 elif la_ == 6:\r
3747 self.enterOuterAlt(localctx, 6)\r
3748 self.state = 562\r
3749 self.match(CParser.T__49)\r
3750 self.state = 563\r
3751 self.match(CParser.T__37)\r
3752 self.state = 564\r
3753 self.type_name()\r
3754 self.state = 565\r
3755 self.match(CParser.T__38)\r
3756 pass\r
3757\r
3758\r
3759 except RecognitionException as re:\r
3760 localctx.exception = re\r
3761 self._errHandler.reportError(self, re)\r
3762 self._errHandler.recover(self, re)\r
3763 finally:\r
3764 self.exitRule()\r
3765 return localctx\r
3766\r
3767 class Postfix_expressionContext(ParserRuleContext):\r
3768\r
3769 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3770 super().__init__(parent, invokingState)\r
3771 self.parser = parser\r
3772 self.FuncCallText = ''\r
3773 self.p = None # Primary_expressionContext\r
3774 self.a = None # Token\r
3775 self.c = None # Argument_expression_listContext\r
3776 self.b = None # Token\r
3777 self.x = None # Token\r
3778 self.y = None # Token\r
3779 self.z = None # Token\r
3780\r
3781 def primary_expression(self):\r
3782 return self.getTypedRuleContext(CParser.Primary_expressionContext,0)\r
3783\r
3784\r
3785 def expression(self, i:int=None):\r
3786 if i is None:\r
3787 return self.getTypedRuleContexts(CParser.ExpressionContext)\r
3788 else:\r
3789 return self.getTypedRuleContext(CParser.ExpressionContext,i)\r
3790\r
3791\r
3792 def macro_parameter_list(self, i:int=None):\r
3793 if i is None:\r
3794 return self.getTypedRuleContexts(CParser.Macro_parameter_listContext)\r
3795 else:\r
3796 return self.getTypedRuleContext(CParser.Macro_parameter_listContext,i)\r
3797\r
3798\r
3799 def argument_expression_list(self, i:int=None):\r
3800 if i is None:\r
3801 return self.getTypedRuleContexts(CParser.Argument_expression_listContext)\r
3802 else:\r
3803 return self.getTypedRuleContext(CParser.Argument_expression_listContext,i)\r
3804\r
3805\r
3806 def IDENTIFIER(self, i:int=None):\r
3807 if i is None:\r
3808 return self.getTokens(CParser.IDENTIFIER)\r
3809 else:\r
3810 return self.getToken(CParser.IDENTIFIER, i)\r
3811\r
3812 def getRuleIndex(self):\r
3813 return CParser.RULE_postfix_expression\r
3814\r
3815 def enterRule(self, listener:ParseTreeListener):\r
3816 if hasattr( listener, "enterPostfix_expression" ):\r
3817 listener.enterPostfix_expression(self)\r
3818\r
3819 def exitRule(self, listener:ParseTreeListener):\r
3820 if hasattr( listener, "exitPostfix_expression" ):\r
3821 listener.exitPostfix_expression(self)\r
3822\r
3823\r
3824\r
3825\r
3826 def postfix_expression(self):\r
3827\r
3828 localctx = CParser.Postfix_expressionContext(self, self._ctx, self.state)\r
3829 self.enterRule(localctx, 80, self.RULE_postfix_expression)\r
3830\r
3831 self.FuncCallText=''\r
3832 \r
3833 try:\r
3834 self.enterOuterAlt(localctx, 1)\r
3835 self.state = 569\r
3836 localctx.p = self.primary_expression()\r
3837 self.FuncCallText += (None if localctx.p is None else self._input.getText((localctx.p.start,localctx.p.stop)))\r
3838 self.state = 600\r
3839 self._errHandler.sync(self)\r
3840 _alt = self._interp.adaptivePredict(self._input,73,self._ctx)\r
3841 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
3842 if _alt==1:\r
3843 self.state = 598\r
3844 self._errHandler.sync(self)\r
3845 la_ = self._interp.adaptivePredict(self._input,72,self._ctx)\r
3846 if la_ == 1:\r
3847 self.state = 571\r
3848 self.match(CParser.T__39)\r
3849 self.state = 572\r
3850 self.expression()\r
3851 self.state = 573\r
3852 self.match(CParser.T__40)\r
3853 pass\r
3854\r
3855 elif la_ == 2:\r
3856 self.state = 575\r
3857 self.match(CParser.T__37)\r
3858 self.state = 576\r
3859 localctx.a = self.match(CParser.T__38)\r
3860 self.StoreFunctionCalling((None if localctx.p is None else localctx.p.start).line, (None if localctx.p is None else localctx.p.start).column, (0 if localctx.a is None else localctx.a.line), localctx.a.start.column, self.FuncCallText, '')\r
3861 pass\r
3862\r
3863 elif la_ == 3:\r
3864 self.state = 578\r
3865 self.match(CParser.T__37)\r
3866 self.state = 579\r
3867 localctx.c = self.argument_expression_list()\r
3868 self.state = 580\r
3869 localctx.b = self.match(CParser.T__38)\r
3870 self.StoreFunctionCalling((None if localctx.p is None else localctx.p.start).line, (None if localctx.p is None else localctx.p.start).column, (0 if localctx.b is None else localctx.b.line), localctx.b.column, self.FuncCallText, (None if localctx.c is None else self._input.getText((localctx.c.start,localctx.c.stop))))\r
3871 pass\r
3872\r
3873 elif la_ == 4:\r
3874 self.state = 583\r
3875 self.match(CParser.T__37)\r
3876 self.state = 584\r
3877 self.macro_parameter_list()\r
3878 self.state = 585\r
3879 self.match(CParser.T__38)\r
3880 pass\r
3881\r
3882 elif la_ == 5:\r
3883 self.state = 587\r
3884 self.match(CParser.T__50)\r
3885 self.state = 588\r
3886 localctx.x = self.match(CParser.IDENTIFIER)\r
3887 self.FuncCallText += '.' + (None if localctx.x is None else localctx.x.text)\r
3888 pass\r
3889\r
3890 elif la_ == 6:\r
3891 self.state = 590\r
3892 self.match(CParser.T__41)\r
3893 self.state = 591\r
3894 localctx.y = self.match(CParser.IDENTIFIER)\r
3895 self.FuncCallText = (None if localctx.y is None else localctx.y.text)\r
3896 pass\r
3897\r
3898 elif la_ == 7:\r
3899 self.state = 593\r
3900 self.match(CParser.T__51)\r
3901 self.state = 594\r
3902 localctx.z = self.match(CParser.IDENTIFIER)\r
3903 self.FuncCallText += '->' + (None if localctx.z is None else localctx.z.text)\r
3904 pass\r
3905\r
3906 elif la_ == 8:\r
3907 self.state = 596\r
3908 self.match(CParser.T__47)\r
3909 pass\r
3910\r
3911 elif la_ == 9:\r
3912 self.state = 597\r
3913 self.match(CParser.T__48)\r
3914 pass\r
3915\r
3916 \r
3917 self.state = 602\r
3918 self._errHandler.sync(self)\r
3919 _alt = self._interp.adaptivePredict(self._input,73,self._ctx)\r
3920\r
3921 except RecognitionException as re:\r
3922 localctx.exception = re\r
3923 self._errHandler.reportError(self, re)\r
3924 self._errHandler.recover(self, re)\r
3925 finally:\r
3926 self.exitRule()\r
3927 return localctx\r
3928\r
3929 class Macro_parameter_listContext(ParserRuleContext):\r
3930\r
3931 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3932 super().__init__(parent, invokingState)\r
3933 self.parser = parser\r
3934\r
3935 def parameter_declaration(self, i:int=None):\r
3936 if i is None:\r
3937 return self.getTypedRuleContexts(CParser.Parameter_declarationContext)\r
3938 else:\r
3939 return self.getTypedRuleContext(CParser.Parameter_declarationContext,i)\r
3940\r
3941\r
3942 def getRuleIndex(self):\r
3943 return CParser.RULE_macro_parameter_list\r
3944\r
3945 def enterRule(self, listener:ParseTreeListener):\r
3946 if hasattr( listener, "enterMacro_parameter_list" ):\r
3947 listener.enterMacro_parameter_list(self)\r
3948\r
3949 def exitRule(self, listener:ParseTreeListener):\r
3950 if hasattr( listener, "exitMacro_parameter_list" ):\r
3951 listener.exitMacro_parameter_list(self)\r
3952\r
3953\r
3954\r
3955\r
3956 def macro_parameter_list(self):\r
3957\r
3958 localctx = CParser.Macro_parameter_listContext(self, self._ctx, self.state)\r
3959 self.enterRule(localctx, 82, self.RULE_macro_parameter_list)\r
3960 self._la = 0 # Token type\r
3961 try:\r
3962 self.enterOuterAlt(localctx, 1)\r
3963 self.state = 603\r
3964 self.parameter_declaration()\r
3965 self.state = 608\r
3966 self._errHandler.sync(self)\r
3967 _la = self._input.LA(1)\r
3968 while _la==CParser.T__3:\r
3969 self.state = 604\r
3970 self.match(CParser.T__3)\r
3971 self.state = 605\r
3972 self.parameter_declaration()\r
3973 self.state = 610\r
3974 self._errHandler.sync(self)\r
3975 _la = self._input.LA(1)\r
3976\r
3977 except RecognitionException as re:\r
3978 localctx.exception = re\r
3979 self._errHandler.reportError(self, re)\r
3980 self._errHandler.recover(self, re)\r
3981 finally:\r
3982 self.exitRule()\r
3983 return localctx\r
3984\r
3985 class Unary_operatorContext(ParserRuleContext):\r
3986\r
3987 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
3988 super().__init__(parent, invokingState)\r
3989 self.parser = parser\r
3990\r
3991\r
3992 def getRuleIndex(self):\r
3993 return CParser.RULE_unary_operator\r
3994\r
3995 def enterRule(self, listener:ParseTreeListener):\r
3996 if hasattr( listener, "enterUnary_operator" ):\r
3997 listener.enterUnary_operator(self)\r
3998\r
3999 def exitRule(self, listener:ParseTreeListener):\r
4000 if hasattr( listener, "exitUnary_operator" ):\r
4001 listener.exitUnary_operator(self)\r
4002\r
4003\r
4004\r
4005\r
4006 def unary_operator(self):\r
4007\r
4008 localctx = CParser.Unary_operatorContext(self, self._ctx, self.state)\r
4009 self.enterRule(localctx, 84, self.RULE_unary_operator)\r
4010 self._la = 0 # Token type\r
4011 try:\r
4012 self.enterOuterAlt(localctx, 1)\r
4013 self.state = 611\r
4014 _la = self._input.LA(1)\r
4015 if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__41) | (1 << CParser.T__43) | (1 << CParser.T__44) | (1 << CParser.T__52) | (1 << CParser.T__53) | (1 << CParser.T__54))) != 0)):\r
4016 self._errHandler.recoverInline(self)\r
4017 else:\r
4018 self._errHandler.reportMatch(self)\r
4019 self.consume()\r
4020 except RecognitionException as re:\r
4021 localctx.exception = re\r
4022 self._errHandler.reportError(self, re)\r
4023 self._errHandler.recover(self, re)\r
4024 finally:\r
4025 self.exitRule()\r
4026 return localctx\r
4027\r
4028 class Primary_expressionContext(ParserRuleContext):\r
4029\r
4030 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4031 super().__init__(parent, invokingState)\r
4032 self.parser = parser\r
4033\r
4034 def IDENTIFIER(self):\r
4035 return self.getToken(CParser.IDENTIFIER, 0)\r
4036\r
4037 def constant(self):\r
4038 return self.getTypedRuleContext(CParser.ConstantContext,0)\r
4039\r
4040\r
4041 def expression(self):\r
4042 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
4043\r
4044\r
4045 def getRuleIndex(self):\r
4046 return CParser.RULE_primary_expression\r
4047\r
4048 def enterRule(self, listener:ParseTreeListener):\r
4049 if hasattr( listener, "enterPrimary_expression" ):\r
4050 listener.enterPrimary_expression(self)\r
4051\r
4052 def exitRule(self, listener:ParseTreeListener):\r
4053 if hasattr( listener, "exitPrimary_expression" ):\r
4054 listener.exitPrimary_expression(self)\r
4055\r
4056\r
4057\r
4058\r
4059 def primary_expression(self):\r
4060\r
4061 localctx = CParser.Primary_expressionContext(self, self._ctx, self.state)\r
4062 self.enterRule(localctx, 86, self.RULE_primary_expression)\r
4063 try:\r
4064 self.state = 619\r
4065 self._errHandler.sync(self)\r
4066 la_ = self._interp.adaptivePredict(self._input,75,self._ctx)\r
4067 if la_ == 1:\r
4068 self.enterOuterAlt(localctx, 1)\r
4069 self.state = 613\r
4070 self.match(CParser.IDENTIFIER)\r
4071 pass\r
4072\r
4073 elif la_ == 2:\r
4074 self.enterOuterAlt(localctx, 2)\r
4075 self.state = 614\r
4076 self.constant()\r
4077 pass\r
4078\r
4079 elif la_ == 3:\r
4080 self.enterOuterAlt(localctx, 3)\r
4081 self.state = 615\r
4082 self.match(CParser.T__37)\r
4083 self.state = 616\r
4084 self.expression()\r
4085 self.state = 617\r
4086 self.match(CParser.T__38)\r
4087 pass\r
4088\r
4089\r
4090 except RecognitionException as re:\r
4091 localctx.exception = re\r
4092 self._errHandler.reportError(self, re)\r
4093 self._errHandler.recover(self, re)\r
4094 finally:\r
4095 self.exitRule()\r
4096 return localctx\r
4097\r
4098 class ConstantContext(ParserRuleContext):\r
4099\r
4100 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4101 super().__init__(parent, invokingState)\r
4102 self.parser = parser\r
4103\r
4104 def HEX_LITERAL(self):\r
4105 return self.getToken(CParser.HEX_LITERAL, 0)\r
4106\r
4107 def OCTAL_LITERAL(self):\r
4108 return self.getToken(CParser.OCTAL_LITERAL, 0)\r
4109\r
4110 def DECIMAL_LITERAL(self):\r
4111 return self.getToken(CParser.DECIMAL_LITERAL, 0)\r
4112\r
4113 def CHARACTER_LITERAL(self):\r
4114 return self.getToken(CParser.CHARACTER_LITERAL, 0)\r
4115\r
4116 def IDENTIFIER(self, i:int=None):\r
4117 if i is None:\r
4118 return self.getTokens(CParser.IDENTIFIER)\r
4119 else:\r
4120 return self.getToken(CParser.IDENTIFIER, i)\r
4121\r
4122 def STRING_LITERAL(self, i:int=None):\r
4123 if i is None:\r
4124 return self.getTokens(CParser.STRING_LITERAL)\r
4125 else:\r
4126 return self.getToken(CParser.STRING_LITERAL, i)\r
4127\r
4128 def FLOATING_POINT_LITERAL(self):\r
4129 return self.getToken(CParser.FLOATING_POINT_LITERAL, 0)\r
4130\r
4131 def getRuleIndex(self):\r
4132 return CParser.RULE_constant\r
4133\r
4134 def enterRule(self, listener:ParseTreeListener):\r
4135 if hasattr( listener, "enterConstant" ):\r
4136 listener.enterConstant(self)\r
4137\r
4138 def exitRule(self, listener:ParseTreeListener):\r
4139 if hasattr( listener, "exitConstant" ):\r
4140 listener.exitConstant(self)\r
4141\r
4142\r
4143\r
4144\r
4145 def constant(self):\r
4146\r
4147 localctx = CParser.ConstantContext(self, self._ctx, self.state)\r
4148 self.enterRule(localctx, 88, self.RULE_constant)\r
4149 self._la = 0 # Token type\r
4150 try:\r
4151 self.state = 647\r
4152 self._errHandler.sync(self)\r
4153 token = self._input.LA(1)\r
4154 if token in [CParser.HEX_LITERAL]:\r
4155 self.enterOuterAlt(localctx, 1)\r
4156 self.state = 621\r
4157 self.match(CParser.HEX_LITERAL)\r
4158 pass\r
4159 elif token in [CParser.OCTAL_LITERAL]:\r
4160 self.enterOuterAlt(localctx, 2)\r
4161 self.state = 622\r
4162 self.match(CParser.OCTAL_LITERAL)\r
4163 pass\r
4164 elif token in [CParser.DECIMAL_LITERAL]:\r
4165 self.enterOuterAlt(localctx, 3)\r
4166 self.state = 623\r
4167 self.match(CParser.DECIMAL_LITERAL)\r
4168 pass\r
4169 elif token in [CParser.CHARACTER_LITERAL]:\r
4170 self.enterOuterAlt(localctx, 4)\r
4171 self.state = 624\r
4172 self.match(CParser.CHARACTER_LITERAL)\r
4173 pass\r
4174 elif token in [CParser.IDENTIFIER, CParser.STRING_LITERAL]:\r
4175 self.enterOuterAlt(localctx, 5)\r
4176 self.state = 636 \r
4177 self._errHandler.sync(self)\r
4178 _alt = 1\r
4179 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
4180 if _alt == 1:\r
4181 self.state = 628\r
4182 self._errHandler.sync(self)\r
4183 _la = self._input.LA(1)\r
4184 while _la==CParser.IDENTIFIER:\r
4185 self.state = 625\r
4186 self.match(CParser.IDENTIFIER)\r
4187 self.state = 630\r
4188 self._errHandler.sync(self)\r
4189 _la = self._input.LA(1)\r
4190\r
4191 self.state = 632 \r
4192 self._errHandler.sync(self)\r
4193 _alt = 1\r
4194 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
4195 if _alt == 1:\r
4196 self.state = 631\r
4197 self.match(CParser.STRING_LITERAL)\r
4198\r
4199 else:\r
4200 raise NoViableAltException(self)\r
4201 self.state = 634 \r
4202 self._errHandler.sync(self)\r
4203 _alt = self._interp.adaptivePredict(self._input,77,self._ctx)\r
4204\r
4205\r
4206 else:\r
4207 raise NoViableAltException(self)\r
4208 self.state = 638 \r
4209 self._errHandler.sync(self)\r
4210 _alt = self._interp.adaptivePredict(self._input,78,self._ctx)\r
4211\r
4212 self.state = 643\r
4213 self._errHandler.sync(self)\r
4214 _la = self._input.LA(1)\r
4215 while _la==CParser.IDENTIFIER:\r
4216 self.state = 640\r
4217 self.match(CParser.IDENTIFIER)\r
4218 self.state = 645\r
4219 self._errHandler.sync(self)\r
4220 _la = self._input.LA(1)\r
4221\r
4222 pass\r
4223 elif token in [CParser.FLOATING_POINT_LITERAL]:\r
4224 self.enterOuterAlt(localctx, 6)\r
4225 self.state = 646\r
4226 self.match(CParser.FLOATING_POINT_LITERAL)\r
4227 pass\r
4228 else:\r
4229 raise NoViableAltException(self)\r
4230\r
4231 except RecognitionException as re:\r
4232 localctx.exception = re\r
4233 self._errHandler.reportError(self, re)\r
4234 self._errHandler.recover(self, re)\r
4235 finally:\r
4236 self.exitRule()\r
4237 return localctx\r
4238\r
4239 class ExpressionContext(ParserRuleContext):\r
4240\r
4241 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4242 super().__init__(parent, invokingState)\r
4243 self.parser = parser\r
4244\r
4245 def assignment_expression(self, i:int=None):\r
4246 if i is None:\r
4247 return self.getTypedRuleContexts(CParser.Assignment_expressionContext)\r
4248 else:\r
4249 return self.getTypedRuleContext(CParser.Assignment_expressionContext,i)\r
4250\r
4251\r
4252 def getRuleIndex(self):\r
4253 return CParser.RULE_expression\r
4254\r
4255 def enterRule(self, listener:ParseTreeListener):\r
4256 if hasattr( listener, "enterExpression" ):\r
4257 listener.enterExpression(self)\r
4258\r
4259 def exitRule(self, listener:ParseTreeListener):\r
4260 if hasattr( listener, "exitExpression" ):\r
4261 listener.exitExpression(self)\r
4262\r
4263\r
4264\r
4265\r
4266 def expression(self):\r
4267\r
4268 localctx = CParser.ExpressionContext(self, self._ctx, self.state)\r
4269 self.enterRule(localctx, 90, self.RULE_expression)\r
4270 self._la = 0 # Token type\r
4271 try:\r
4272 self.enterOuterAlt(localctx, 1)\r
4273 self.state = 649\r
4274 self.assignment_expression()\r
4275 self.state = 654\r
4276 self._errHandler.sync(self)\r
4277 _la = self._input.LA(1)\r
4278 while _la==CParser.T__3:\r
4279 self.state = 650\r
4280 self.match(CParser.T__3)\r
4281 self.state = 651\r
4282 self.assignment_expression()\r
4283 self.state = 656\r
4284 self._errHandler.sync(self)\r
4285 _la = self._input.LA(1)\r
4286\r
4287 except RecognitionException as re:\r
4288 localctx.exception = re\r
4289 self._errHandler.reportError(self, re)\r
4290 self._errHandler.recover(self, re)\r
4291 finally:\r
4292 self.exitRule()\r
4293 return localctx\r
4294\r
4295 class Constant_expressionContext(ParserRuleContext):\r
4296\r
4297 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4298 super().__init__(parent, invokingState)\r
4299 self.parser = parser\r
4300\r
4301 def conditional_expression(self):\r
4302 return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)\r
4303\r
4304\r
4305 def getRuleIndex(self):\r
4306 return CParser.RULE_constant_expression\r
4307\r
4308 def enterRule(self, listener:ParseTreeListener):\r
4309 if hasattr( listener, "enterConstant_expression" ):\r
4310 listener.enterConstant_expression(self)\r
4311\r
4312 def exitRule(self, listener:ParseTreeListener):\r
4313 if hasattr( listener, "exitConstant_expression" ):\r
4314 listener.exitConstant_expression(self)\r
4315\r
4316\r
4317\r
4318\r
4319 def constant_expression(self):\r
4320\r
4321 localctx = CParser.Constant_expressionContext(self, self._ctx, self.state)\r
4322 self.enterRule(localctx, 92, self.RULE_constant_expression)\r
4323 try:\r
4324 self.enterOuterAlt(localctx, 1)\r
4325 self.state = 657\r
4326 self.conditional_expression()\r
4327 except RecognitionException as re:\r
4328 localctx.exception = re\r
4329 self._errHandler.reportError(self, re)\r
4330 self._errHandler.recover(self, re)\r
4331 finally:\r
4332 self.exitRule()\r
4333 return localctx\r
4334\r
4335 class Assignment_expressionContext(ParserRuleContext):\r
4336\r
4337 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4338 super().__init__(parent, invokingState)\r
4339 self.parser = parser\r
4340\r
4341 def lvalue(self):\r
4342 return self.getTypedRuleContext(CParser.LvalueContext,0)\r
4343\r
4344\r
4345 def assignment_operator(self):\r
4346 return self.getTypedRuleContext(CParser.Assignment_operatorContext,0)\r
4347\r
4348\r
4349 def assignment_expression(self):\r
4350 return self.getTypedRuleContext(CParser.Assignment_expressionContext,0)\r
4351\r
4352\r
4353 def conditional_expression(self):\r
4354 return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)\r
4355\r
4356\r
4357 def getRuleIndex(self):\r
4358 return CParser.RULE_assignment_expression\r
4359\r
4360 def enterRule(self, listener:ParseTreeListener):\r
4361 if hasattr( listener, "enterAssignment_expression" ):\r
4362 listener.enterAssignment_expression(self)\r
4363\r
4364 def exitRule(self, listener:ParseTreeListener):\r
4365 if hasattr( listener, "exitAssignment_expression" ):\r
4366 listener.exitAssignment_expression(self)\r
4367\r
4368\r
4369\r
4370\r
4371 def assignment_expression(self):\r
4372\r
4373 localctx = CParser.Assignment_expressionContext(self, self._ctx, self.state)\r
4374 self.enterRule(localctx, 94, self.RULE_assignment_expression)\r
4375 try:\r
4376 self.state = 664\r
4377 self._errHandler.sync(self)\r
4378 la_ = self._interp.adaptivePredict(self._input,82,self._ctx)\r
4379 if la_ == 1:\r
4380 self.enterOuterAlt(localctx, 1)\r
4381 self.state = 659\r
4382 self.lvalue()\r
4383 self.state = 660\r
4384 self.assignment_operator()\r
4385 self.state = 661\r
4386 self.assignment_expression()\r
4387 pass\r
4388\r
4389 elif la_ == 2:\r
4390 self.enterOuterAlt(localctx, 2)\r
4391 self.state = 663\r
4392 self.conditional_expression()\r
4393 pass\r
4394\r
4395\r
4396 except RecognitionException as re:\r
4397 localctx.exception = re\r
4398 self._errHandler.reportError(self, re)\r
4399 self._errHandler.recover(self, re)\r
4400 finally:\r
4401 self.exitRule()\r
4402 return localctx\r
4403\r
4404 class LvalueContext(ParserRuleContext):\r
4405\r
4406 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4407 super().__init__(parent, invokingState)\r
4408 self.parser = parser\r
4409\r
4410 def unary_expression(self):\r
4411 return self.getTypedRuleContext(CParser.Unary_expressionContext,0)\r
4412\r
4413\r
4414 def getRuleIndex(self):\r
4415 return CParser.RULE_lvalue\r
4416\r
4417 def enterRule(self, listener:ParseTreeListener):\r
4418 if hasattr( listener, "enterLvalue" ):\r
4419 listener.enterLvalue(self)\r
4420\r
4421 def exitRule(self, listener:ParseTreeListener):\r
4422 if hasattr( listener, "exitLvalue" ):\r
4423 listener.exitLvalue(self)\r
4424\r
4425\r
4426\r
4427\r
4428 def lvalue(self):\r
4429\r
4430 localctx = CParser.LvalueContext(self, self._ctx, self.state)\r
4431 self.enterRule(localctx, 96, self.RULE_lvalue)\r
4432 try:\r
4433 self.enterOuterAlt(localctx, 1)\r
4434 self.state = 666\r
4435 self.unary_expression()\r
4436 except RecognitionException as re:\r
4437 localctx.exception = re\r
4438 self._errHandler.reportError(self, re)\r
4439 self._errHandler.recover(self, re)\r
4440 finally:\r
4441 self.exitRule()\r
4442 return localctx\r
4443\r
4444 class Assignment_operatorContext(ParserRuleContext):\r
4445\r
4446 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4447 super().__init__(parent, invokingState)\r
4448 self.parser = parser\r
4449\r
4450\r
4451 def getRuleIndex(self):\r
4452 return CParser.RULE_assignment_operator\r
4453\r
4454 def enterRule(self, listener:ParseTreeListener):\r
4455 if hasattr( listener, "enterAssignment_operator" ):\r
4456 listener.enterAssignment_operator(self)\r
4457\r
4458 def exitRule(self, listener:ParseTreeListener):\r
4459 if hasattr( listener, "exitAssignment_operator" ):\r
4460 listener.exitAssignment_operator(self)\r
4461\r
4462\r
4463\r
4464\r
4465 def assignment_operator(self):\r
4466\r
4467 localctx = CParser.Assignment_operatorContext(self, self._ctx, self.state)\r
4468 self.enterRule(localctx, 98, self.RULE_assignment_operator)\r
4469 self._la = 0 # Token type\r
4470 try:\r
4471 self.enterOuterAlt(localctx, 1)\r
4472 self.state = 668\r
4473 _la = self._input.LA(1)\r
4474 if not(((((_la - 5)) & ~0x3f) == 0 and ((1 << (_la - 5)) & ((1 << (CParser.T__4 - 5)) | (1 << (CParser.T__55 - 5)) | (1 << (CParser.T__56 - 5)) | (1 << (CParser.T__57 - 5)) | (1 << (CParser.T__58 - 5)) | (1 << (CParser.T__59 - 5)) | (1 << (CParser.T__60 - 5)) | (1 << (CParser.T__61 - 5)) | (1 << (CParser.T__62 - 5)) | (1 << (CParser.T__63 - 5)) | (1 << (CParser.T__64 - 5)))) != 0)):\r
4475 self._errHandler.recoverInline(self)\r
4476 else:\r
4477 self._errHandler.reportMatch(self)\r
4478 self.consume()\r
4479 except RecognitionException as re:\r
4480 localctx.exception = re\r
4481 self._errHandler.reportError(self, re)\r
4482 self._errHandler.recover(self, re)\r
4483 finally:\r
4484 self.exitRule()\r
4485 return localctx\r
4486\r
4487 class Conditional_expressionContext(ParserRuleContext):\r
4488\r
4489 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4490 super().__init__(parent, invokingState)\r
4491 self.parser = parser\r
4492 self.e = None # Logical_or_expressionContext\r
4493\r
4494 def logical_or_expression(self):\r
4495 return self.getTypedRuleContext(CParser.Logical_or_expressionContext,0)\r
4496\r
4497\r
4498 def expression(self):\r
4499 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
4500\r
4501\r
4502 def conditional_expression(self):\r
4503 return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)\r
4504\r
4505\r
4506 def getRuleIndex(self):\r
4507 return CParser.RULE_conditional_expression\r
4508\r
4509 def enterRule(self, listener:ParseTreeListener):\r
4510 if hasattr( listener, "enterConditional_expression" ):\r
4511 listener.enterConditional_expression(self)\r
4512\r
4513 def exitRule(self, listener:ParseTreeListener):\r
4514 if hasattr( listener, "exitConditional_expression" ):\r
4515 listener.exitConditional_expression(self)\r
4516\r
4517\r
4518\r
4519\r
4520 def conditional_expression(self):\r
4521\r
4522 localctx = CParser.Conditional_expressionContext(self, self._ctx, self.state)\r
4523 self.enterRule(localctx, 100, self.RULE_conditional_expression)\r
4524 self._la = 0 # Token type\r
4525 try:\r
4526 self.enterOuterAlt(localctx, 1)\r
4527 self.state = 670\r
4528 localctx.e = self.logical_or_expression()\r
4529 self.state = 677\r
4530 self._errHandler.sync(self)\r
4531 _la = self._input.LA(1)\r
4532 if _la==CParser.T__65:\r
4533 self.state = 671\r
4534 self.match(CParser.T__65)\r
4535 self.state = 672\r
4536 self.expression()\r
4537 self.state = 673\r
4538 self.match(CParser.T__22)\r
4539 self.state = 674\r
4540 self.conditional_expression()\r
4541 self.StorePredicateExpression((None if localctx.e is None else localctx.e.start).line, (None if localctx.e is None else localctx.e.start).column, (None if localctx.e is None else localctx.e.stop).line, (None if localctx.e is None else localctx.e.stop).column, (None if localctx.e is None else self._input.getText((localctx.e.start,localctx.e.stop))))\r
4542\r
4543\r
4544 except RecognitionException as re:\r
4545 localctx.exception = re\r
4546 self._errHandler.reportError(self, re)\r
4547 self._errHandler.recover(self, re)\r
4548 finally:\r
4549 self.exitRule()\r
4550 return localctx\r
4551\r
4552 class Logical_or_expressionContext(ParserRuleContext):\r
4553\r
4554 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4555 super().__init__(parent, invokingState)\r
4556 self.parser = parser\r
4557\r
4558 def logical_and_expression(self, i:int=None):\r
4559 if i is None:\r
4560 return self.getTypedRuleContexts(CParser.Logical_and_expressionContext)\r
4561 else:\r
4562 return self.getTypedRuleContext(CParser.Logical_and_expressionContext,i)\r
4563\r
4564\r
4565 def getRuleIndex(self):\r
4566 return CParser.RULE_logical_or_expression\r
4567\r
4568 def enterRule(self, listener:ParseTreeListener):\r
4569 if hasattr( listener, "enterLogical_or_expression" ):\r
4570 listener.enterLogical_or_expression(self)\r
4571\r
4572 def exitRule(self, listener:ParseTreeListener):\r
4573 if hasattr( listener, "exitLogical_or_expression" ):\r
4574 listener.exitLogical_or_expression(self)\r
4575\r
4576\r
4577\r
4578\r
4579 def logical_or_expression(self):\r
4580\r
4581 localctx = CParser.Logical_or_expressionContext(self, self._ctx, self.state)\r
4582 self.enterRule(localctx, 102, self.RULE_logical_or_expression)\r
4583 self._la = 0 # Token type\r
4584 try:\r
4585 self.enterOuterAlt(localctx, 1)\r
4586 self.state = 679\r
4587 self.logical_and_expression()\r
4588 self.state = 684\r
4589 self._errHandler.sync(self)\r
4590 _la = self._input.LA(1)\r
4591 while _la==CParser.T__66:\r
4592 self.state = 680\r
4593 self.match(CParser.T__66)\r
4594 self.state = 681\r
4595 self.logical_and_expression()\r
4596 self.state = 686\r
4597 self._errHandler.sync(self)\r
4598 _la = self._input.LA(1)\r
4599\r
4600 except RecognitionException as re:\r
4601 localctx.exception = re\r
4602 self._errHandler.reportError(self, re)\r
4603 self._errHandler.recover(self, re)\r
4604 finally:\r
4605 self.exitRule()\r
4606 return localctx\r
4607\r
4608 class Logical_and_expressionContext(ParserRuleContext):\r
4609\r
4610 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4611 super().__init__(parent, invokingState)\r
4612 self.parser = parser\r
4613\r
4614 def inclusive_or_expression(self, i:int=None):\r
4615 if i is None:\r
4616 return self.getTypedRuleContexts(CParser.Inclusive_or_expressionContext)\r
4617 else:\r
4618 return self.getTypedRuleContext(CParser.Inclusive_or_expressionContext,i)\r
4619\r
4620\r
4621 def getRuleIndex(self):\r
4622 return CParser.RULE_logical_and_expression\r
4623\r
4624 def enterRule(self, listener:ParseTreeListener):\r
4625 if hasattr( listener, "enterLogical_and_expression" ):\r
4626 listener.enterLogical_and_expression(self)\r
4627\r
4628 def exitRule(self, listener:ParseTreeListener):\r
4629 if hasattr( listener, "exitLogical_and_expression" ):\r
4630 listener.exitLogical_and_expression(self)\r
4631\r
4632\r
4633\r
4634\r
4635 def logical_and_expression(self):\r
4636\r
4637 localctx = CParser.Logical_and_expressionContext(self, self._ctx, self.state)\r
4638 self.enterRule(localctx, 104, self.RULE_logical_and_expression)\r
4639 self._la = 0 # Token type\r
4640 try:\r
4641 self.enterOuterAlt(localctx, 1)\r
4642 self.state = 687\r
4643 self.inclusive_or_expression()\r
4644 self.state = 692\r
4645 self._errHandler.sync(self)\r
4646 _la = self._input.LA(1)\r
4647 while _la==CParser.T__67:\r
4648 self.state = 688\r
4649 self.match(CParser.T__67)\r
4650 self.state = 689\r
4651 self.inclusive_or_expression()\r
4652 self.state = 694\r
4653 self._errHandler.sync(self)\r
4654 _la = self._input.LA(1)\r
4655\r
4656 except RecognitionException as re:\r
4657 localctx.exception = re\r
4658 self._errHandler.reportError(self, re)\r
4659 self._errHandler.recover(self, re)\r
4660 finally:\r
4661 self.exitRule()\r
4662 return localctx\r
4663\r
4664 class Inclusive_or_expressionContext(ParserRuleContext):\r
4665\r
4666 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4667 super().__init__(parent, invokingState)\r
4668 self.parser = parser\r
4669\r
4670 def exclusive_or_expression(self, i:int=None):\r
4671 if i is None:\r
4672 return self.getTypedRuleContexts(CParser.Exclusive_or_expressionContext)\r
4673 else:\r
4674 return self.getTypedRuleContext(CParser.Exclusive_or_expressionContext,i)\r
4675\r
4676\r
4677 def getRuleIndex(self):\r
4678 return CParser.RULE_inclusive_or_expression\r
4679\r
4680 def enterRule(self, listener:ParseTreeListener):\r
4681 if hasattr( listener, "enterInclusive_or_expression" ):\r
4682 listener.enterInclusive_or_expression(self)\r
4683\r
4684 def exitRule(self, listener:ParseTreeListener):\r
4685 if hasattr( listener, "exitInclusive_or_expression" ):\r
4686 listener.exitInclusive_or_expression(self)\r
4687\r
4688\r
4689\r
4690\r
4691 def inclusive_or_expression(self):\r
4692\r
4693 localctx = CParser.Inclusive_or_expressionContext(self, self._ctx, self.state)\r
4694 self.enterRule(localctx, 106, self.RULE_inclusive_or_expression)\r
4695 self._la = 0 # Token type\r
4696 try:\r
4697 self.enterOuterAlt(localctx, 1)\r
4698 self.state = 695\r
4699 self.exclusive_or_expression()\r
4700 self.state = 700\r
4701 self._errHandler.sync(self)\r
4702 _la = self._input.LA(1)\r
4703 while _la==CParser.T__68:\r
4704 self.state = 696\r
4705 self.match(CParser.T__68)\r
4706 self.state = 697\r
4707 self.exclusive_or_expression()\r
4708 self.state = 702\r
4709 self._errHandler.sync(self)\r
4710 _la = self._input.LA(1)\r
4711\r
4712 except RecognitionException as re:\r
4713 localctx.exception = re\r
4714 self._errHandler.reportError(self, re)\r
4715 self._errHandler.recover(self, re)\r
4716 finally:\r
4717 self.exitRule()\r
4718 return localctx\r
4719\r
4720 class Exclusive_or_expressionContext(ParserRuleContext):\r
4721\r
4722 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4723 super().__init__(parent, invokingState)\r
4724 self.parser = parser\r
4725\r
4726 def and_expression(self, i:int=None):\r
4727 if i is None:\r
4728 return self.getTypedRuleContexts(CParser.And_expressionContext)\r
4729 else:\r
4730 return self.getTypedRuleContext(CParser.And_expressionContext,i)\r
4731\r
4732\r
4733 def getRuleIndex(self):\r
4734 return CParser.RULE_exclusive_or_expression\r
4735\r
4736 def enterRule(self, listener:ParseTreeListener):\r
4737 if hasattr( listener, "enterExclusive_or_expression" ):\r
4738 listener.enterExclusive_or_expression(self)\r
4739\r
4740 def exitRule(self, listener:ParseTreeListener):\r
4741 if hasattr( listener, "exitExclusive_or_expression" ):\r
4742 listener.exitExclusive_or_expression(self)\r
4743\r
4744\r
4745\r
4746\r
4747 def exclusive_or_expression(self):\r
4748\r
4749 localctx = CParser.Exclusive_or_expressionContext(self, self._ctx, self.state)\r
4750 self.enterRule(localctx, 108, self.RULE_exclusive_or_expression)\r
4751 self._la = 0 # Token type\r
4752 try:\r
4753 self.enterOuterAlt(localctx, 1)\r
4754 self.state = 703\r
4755 self.and_expression()\r
4756 self.state = 708\r
4757 self._errHandler.sync(self)\r
4758 _la = self._input.LA(1)\r
4759 while _la==CParser.T__69:\r
4760 self.state = 704\r
4761 self.match(CParser.T__69)\r
4762 self.state = 705\r
4763 self.and_expression()\r
4764 self.state = 710\r
4765 self._errHandler.sync(self)\r
4766 _la = self._input.LA(1)\r
4767\r
4768 except RecognitionException as re:\r
4769 localctx.exception = re\r
4770 self._errHandler.reportError(self, re)\r
4771 self._errHandler.recover(self, re)\r
4772 finally:\r
4773 self.exitRule()\r
4774 return localctx\r
4775\r
4776 class And_expressionContext(ParserRuleContext):\r
4777\r
4778 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4779 super().__init__(parent, invokingState)\r
4780 self.parser = parser\r
4781\r
4782 def equality_expression(self, i:int=None):\r
4783 if i is None:\r
4784 return self.getTypedRuleContexts(CParser.Equality_expressionContext)\r
4785 else:\r
4786 return self.getTypedRuleContext(CParser.Equality_expressionContext,i)\r
4787\r
4788\r
4789 def getRuleIndex(self):\r
4790 return CParser.RULE_and_expression\r
4791\r
4792 def enterRule(self, listener:ParseTreeListener):\r
4793 if hasattr( listener, "enterAnd_expression" ):\r
4794 listener.enterAnd_expression(self)\r
4795\r
4796 def exitRule(self, listener:ParseTreeListener):\r
4797 if hasattr( listener, "exitAnd_expression" ):\r
4798 listener.exitAnd_expression(self)\r
4799\r
4800\r
4801\r
4802\r
4803 def and_expression(self):\r
4804\r
4805 localctx = CParser.And_expressionContext(self, self._ctx, self.state)\r
4806 self.enterRule(localctx, 110, self.RULE_and_expression)\r
4807 self._la = 0 # Token type\r
4808 try:\r
4809 self.enterOuterAlt(localctx, 1)\r
4810 self.state = 711\r
4811 self.equality_expression()\r
4812 self.state = 716\r
4813 self._errHandler.sync(self)\r
4814 _la = self._input.LA(1)\r
4815 while _la==CParser.T__52:\r
4816 self.state = 712\r
4817 self.match(CParser.T__52)\r
4818 self.state = 713\r
4819 self.equality_expression()\r
4820 self.state = 718\r
4821 self._errHandler.sync(self)\r
4822 _la = self._input.LA(1)\r
4823\r
4824 except RecognitionException as re:\r
4825 localctx.exception = re\r
4826 self._errHandler.reportError(self, re)\r
4827 self._errHandler.recover(self, re)\r
4828 finally:\r
4829 self.exitRule()\r
4830 return localctx\r
4831\r
4832 class Equality_expressionContext(ParserRuleContext):\r
4833\r
4834 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4835 super().__init__(parent, invokingState)\r
4836 self.parser = parser\r
4837\r
4838 def relational_expression(self, i:int=None):\r
4839 if i is None:\r
4840 return self.getTypedRuleContexts(CParser.Relational_expressionContext)\r
4841 else:\r
4842 return self.getTypedRuleContext(CParser.Relational_expressionContext,i)\r
4843\r
4844\r
4845 def getRuleIndex(self):\r
4846 return CParser.RULE_equality_expression\r
4847\r
4848 def enterRule(self, listener:ParseTreeListener):\r
4849 if hasattr( listener, "enterEquality_expression" ):\r
4850 listener.enterEquality_expression(self)\r
4851\r
4852 def exitRule(self, listener:ParseTreeListener):\r
4853 if hasattr( listener, "exitEquality_expression" ):\r
4854 listener.exitEquality_expression(self)\r
4855\r
4856\r
4857\r
4858\r
4859 def equality_expression(self):\r
4860\r
4861 localctx = CParser.Equality_expressionContext(self, self._ctx, self.state)\r
4862 self.enterRule(localctx, 112, self.RULE_equality_expression)\r
4863 self._la = 0 # Token type\r
4864 try:\r
4865 self.enterOuterAlt(localctx, 1)\r
4866 self.state = 719\r
4867 self.relational_expression()\r
4868 self.state = 724\r
4869 self._errHandler.sync(self)\r
4870 _la = self._input.LA(1)\r
4871 while _la==CParser.T__70 or _la==CParser.T__71:\r
4872 self.state = 720\r
4873 _la = self._input.LA(1)\r
4874 if not(_la==CParser.T__70 or _la==CParser.T__71):\r
4875 self._errHandler.recoverInline(self)\r
4876 else:\r
4877 self._errHandler.reportMatch(self)\r
4878 self.consume()\r
4879 self.state = 721\r
4880 self.relational_expression()\r
4881 self.state = 726\r
4882 self._errHandler.sync(self)\r
4883 _la = self._input.LA(1)\r
4884\r
4885 except RecognitionException as re:\r
4886 localctx.exception = re\r
4887 self._errHandler.reportError(self, re)\r
4888 self._errHandler.recover(self, re)\r
4889 finally:\r
4890 self.exitRule()\r
4891 return localctx\r
4892\r
4893 class Relational_expressionContext(ParserRuleContext):\r
4894\r
4895 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4896 super().__init__(parent, invokingState)\r
4897 self.parser = parser\r
4898\r
4899 def shift_expression(self, i:int=None):\r
4900 if i is None:\r
4901 return self.getTypedRuleContexts(CParser.Shift_expressionContext)\r
4902 else:\r
4903 return self.getTypedRuleContext(CParser.Shift_expressionContext,i)\r
4904\r
4905\r
4906 def getRuleIndex(self):\r
4907 return CParser.RULE_relational_expression\r
4908\r
4909 def enterRule(self, listener:ParseTreeListener):\r
4910 if hasattr( listener, "enterRelational_expression" ):\r
4911 listener.enterRelational_expression(self)\r
4912\r
4913 def exitRule(self, listener:ParseTreeListener):\r
4914 if hasattr( listener, "exitRelational_expression" ):\r
4915 listener.exitRelational_expression(self)\r
4916\r
4917\r
4918\r
4919\r
4920 def relational_expression(self):\r
4921\r
4922 localctx = CParser.Relational_expressionContext(self, self._ctx, self.state)\r
4923 self.enterRule(localctx, 114, self.RULE_relational_expression)\r
4924 self._la = 0 # Token type\r
4925 try:\r
4926 self.enterOuterAlt(localctx, 1)\r
4927 self.state = 727\r
4928 self.shift_expression()\r
4929 self.state = 732\r
4930 self._errHandler.sync(self)\r
4931 _la = self._input.LA(1)\r
4932 while ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & ((1 << (CParser.T__72 - 73)) | (1 << (CParser.T__73 - 73)) | (1 << (CParser.T__74 - 73)) | (1 << (CParser.T__75 - 73)))) != 0):\r
4933 self.state = 728\r
4934 _la = self._input.LA(1)\r
4935 if not(((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & ((1 << (CParser.T__72 - 73)) | (1 << (CParser.T__73 - 73)) | (1 << (CParser.T__74 - 73)) | (1 << (CParser.T__75 - 73)))) != 0)):\r
4936 self._errHandler.recoverInline(self)\r
4937 else:\r
4938 self._errHandler.reportMatch(self)\r
4939 self.consume()\r
4940 self.state = 729\r
4941 self.shift_expression()\r
4942 self.state = 734\r
4943 self._errHandler.sync(self)\r
4944 _la = self._input.LA(1)\r
4945\r
4946 except RecognitionException as re:\r
4947 localctx.exception = re\r
4948 self._errHandler.reportError(self, re)\r
4949 self._errHandler.recover(self, re)\r
4950 finally:\r
4951 self.exitRule()\r
4952 return localctx\r
4953\r
4954 class Shift_expressionContext(ParserRuleContext):\r
4955\r
4956 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
4957 super().__init__(parent, invokingState)\r
4958 self.parser = parser\r
4959\r
4960 def additive_expression(self, i:int=None):\r
4961 if i is None:\r
4962 return self.getTypedRuleContexts(CParser.Additive_expressionContext)\r
4963 else:\r
4964 return self.getTypedRuleContext(CParser.Additive_expressionContext,i)\r
4965\r
4966\r
4967 def getRuleIndex(self):\r
4968 return CParser.RULE_shift_expression\r
4969\r
4970 def enterRule(self, listener:ParseTreeListener):\r
4971 if hasattr( listener, "enterShift_expression" ):\r
4972 listener.enterShift_expression(self)\r
4973\r
4974 def exitRule(self, listener:ParseTreeListener):\r
4975 if hasattr( listener, "exitShift_expression" ):\r
4976 listener.exitShift_expression(self)\r
4977\r
4978\r
4979\r
4980\r
4981 def shift_expression(self):\r
4982\r
4983 localctx = CParser.Shift_expressionContext(self, self._ctx, self.state)\r
4984 self.enterRule(localctx, 116, self.RULE_shift_expression)\r
4985 self._la = 0 # Token type\r
4986 try:\r
4987 self.enterOuterAlt(localctx, 1)\r
4988 self.state = 735\r
4989 self.additive_expression()\r
4990 self.state = 740\r
4991 self._errHandler.sync(self)\r
4992 _la = self._input.LA(1)\r
4993 while _la==CParser.T__76 or _la==CParser.T__77:\r
4994 self.state = 736\r
4995 _la = self._input.LA(1)\r
4996 if not(_la==CParser.T__76 or _la==CParser.T__77):\r
4997 self._errHandler.recoverInline(self)\r
4998 else:\r
4999 self._errHandler.reportMatch(self)\r
5000 self.consume()\r
5001 self.state = 737\r
5002 self.additive_expression()\r
5003 self.state = 742\r
5004 self._errHandler.sync(self)\r
5005 _la = self._input.LA(1)\r
5006\r
5007 except RecognitionException as re:\r
5008 localctx.exception = re\r
5009 self._errHandler.reportError(self, re)\r
5010 self._errHandler.recover(self, re)\r
5011 finally:\r
5012 self.exitRule()\r
5013 return localctx\r
5014\r
5015 class StatementContext(ParserRuleContext):\r
5016\r
5017 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5018 super().__init__(parent, invokingState)\r
5019 self.parser = parser\r
5020\r
5021 def labeled_statement(self):\r
5022 return self.getTypedRuleContext(CParser.Labeled_statementContext,0)\r
5023\r
5024\r
5025 def compound_statement(self):\r
5026 return self.getTypedRuleContext(CParser.Compound_statementContext,0)\r
5027\r
5028\r
5029 def expression_statement(self):\r
5030 return self.getTypedRuleContext(CParser.Expression_statementContext,0)\r
5031\r
5032\r
5033 def selection_statement(self):\r
5034 return self.getTypedRuleContext(CParser.Selection_statementContext,0)\r
5035\r
5036\r
5037 def iteration_statement(self):\r
5038 return self.getTypedRuleContext(CParser.Iteration_statementContext,0)\r
5039\r
5040\r
5041 def jump_statement(self):\r
5042 return self.getTypedRuleContext(CParser.Jump_statementContext,0)\r
5043\r
5044\r
5045 def macro_statement(self):\r
5046 return self.getTypedRuleContext(CParser.Macro_statementContext,0)\r
5047\r
5048\r
5049 def asm2_statement(self):\r
5050 return self.getTypedRuleContext(CParser.Asm2_statementContext,0)\r
5051\r
5052\r
5053 def asm1_statement(self):\r
5054 return self.getTypedRuleContext(CParser.Asm1_statementContext,0)\r
5055\r
5056\r
5057 def asm_statement(self):\r
5058 return self.getTypedRuleContext(CParser.Asm_statementContext,0)\r
5059\r
5060\r
5061 def declaration(self):\r
5062 return self.getTypedRuleContext(CParser.DeclarationContext,0)\r
5063\r
5064\r
5065 def getRuleIndex(self):\r
5066 return CParser.RULE_statement\r
5067\r
5068 def enterRule(self, listener:ParseTreeListener):\r
5069 if hasattr( listener, "enterStatement" ):\r
5070 listener.enterStatement(self)\r
5071\r
5072 def exitRule(self, listener:ParseTreeListener):\r
5073 if hasattr( listener, "exitStatement" ):\r
5074 listener.exitStatement(self)\r
5075\r
5076\r
5077\r
5078\r
5079 def statement(self):\r
5080\r
5081 localctx = CParser.StatementContext(self, self._ctx, self.state)\r
5082 self.enterRule(localctx, 118, self.RULE_statement)\r
5083 try:\r
5084 self.state = 754\r
5085 self._errHandler.sync(self)\r
5086 la_ = self._interp.adaptivePredict(self._input,92,self._ctx)\r
5087 if la_ == 1:\r
5088 self.enterOuterAlt(localctx, 1)\r
5089 self.state = 743\r
5090 self.labeled_statement()\r
5091 pass\r
5092\r
5093 elif la_ == 2:\r
5094 self.enterOuterAlt(localctx, 2)\r
5095 self.state = 744\r
5096 self.compound_statement()\r
5097 pass\r
5098\r
5099 elif la_ == 3:\r
5100 self.enterOuterAlt(localctx, 3)\r
5101 self.state = 745\r
5102 self.expression_statement()\r
5103 pass\r
5104\r
5105 elif la_ == 4:\r
5106 self.enterOuterAlt(localctx, 4)\r
5107 self.state = 746\r
5108 self.selection_statement()\r
5109 pass\r
5110\r
5111 elif la_ == 5:\r
5112 self.enterOuterAlt(localctx, 5)\r
5113 self.state = 747\r
5114 self.iteration_statement()\r
5115 pass\r
5116\r
5117 elif la_ == 6:\r
5118 self.enterOuterAlt(localctx, 6)\r
5119 self.state = 748\r
5120 self.jump_statement()\r
5121 pass\r
5122\r
5123 elif la_ == 7:\r
5124 self.enterOuterAlt(localctx, 7)\r
5125 self.state = 749\r
5126 self.macro_statement()\r
5127 pass\r
5128\r
5129 elif la_ == 8:\r
5130 self.enterOuterAlt(localctx, 8)\r
5131 self.state = 750\r
5132 self.asm2_statement()\r
5133 pass\r
5134\r
5135 elif la_ == 9:\r
5136 self.enterOuterAlt(localctx, 9)\r
5137 self.state = 751\r
5138 self.asm1_statement()\r
5139 pass\r
5140\r
5141 elif la_ == 10:\r
5142 self.enterOuterAlt(localctx, 10)\r
5143 self.state = 752\r
5144 self.asm_statement()\r
5145 pass\r
5146\r
5147 elif la_ == 11:\r
5148 self.enterOuterAlt(localctx, 11)\r
5149 self.state = 753\r
5150 self.declaration()\r
5151 pass\r
5152\r
5153\r
5154 except RecognitionException as re:\r
5155 localctx.exception = re\r
5156 self._errHandler.reportError(self, re)\r
5157 self._errHandler.recover(self, re)\r
5158 finally:\r
5159 self.exitRule()\r
5160 return localctx\r
5161\r
5162 class Asm2_statementContext(ParserRuleContext):\r
5163\r
5164 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5165 super().__init__(parent, invokingState)\r
5166 self.parser = parser\r
5167\r
5168 def IDENTIFIER(self):\r
5169 return self.getToken(CParser.IDENTIFIER, 0)\r
5170\r
5171 def getRuleIndex(self):\r
5172 return CParser.RULE_asm2_statement\r
5173\r
5174 def enterRule(self, listener:ParseTreeListener):\r
5175 if hasattr( listener, "enterAsm2_statement" ):\r
5176 listener.enterAsm2_statement(self)\r
5177\r
5178 def exitRule(self, listener:ParseTreeListener):\r
5179 if hasattr( listener, "exitAsm2_statement" ):\r
5180 listener.exitAsm2_statement(self)\r
5181\r
5182\r
5183\r
5184\r
5185 def asm2_statement(self):\r
5186\r
5187 localctx = CParser.Asm2_statementContext(self, self._ctx, self.state)\r
5188 self.enterRule(localctx, 120, self.RULE_asm2_statement)\r
5189 self._la = 0 # Token type\r
5190 try:\r
5191 self.enterOuterAlt(localctx, 1)\r
5192 self.state = 757\r
5193 self._errHandler.sync(self)\r
5194 _la = self._input.LA(1)\r
5195 if _la==CParser.T__78:\r
5196 self.state = 756\r
5197 self.match(CParser.T__78)\r
5198\r
5199\r
5200 self.state = 759\r
5201 self.match(CParser.IDENTIFIER)\r
5202 self.state = 760\r
5203 self.match(CParser.T__37)\r
5204 self.state = 764\r
5205 self._errHandler.sync(self)\r
5206 _alt = self._interp.adaptivePredict(self._input,94,self._ctx)\r
5207 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
5208 if _alt==1:\r
5209 self.state = 761\r
5210 _la = self._input.LA(1)\r
5211 if _la <= 0 or _la==CParser.T__1:\r
5212 self._errHandler.recoverInline(self)\r
5213 else:\r
5214 self._errHandler.reportMatch(self)\r
5215 self.consume() \r
5216 self.state = 766\r
5217 self._errHandler.sync(self)\r
5218 _alt = self._interp.adaptivePredict(self._input,94,self._ctx)\r
5219\r
5220 self.state = 767\r
5221 self.match(CParser.T__38)\r
5222 self.state = 768\r
5223 self.match(CParser.T__1)\r
5224 except RecognitionException as re:\r
5225 localctx.exception = re\r
5226 self._errHandler.reportError(self, re)\r
5227 self._errHandler.recover(self, re)\r
5228 finally:\r
5229 self.exitRule()\r
5230 return localctx\r
5231\r
5232 class Asm1_statementContext(ParserRuleContext):\r
5233\r
5234 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5235 super().__init__(parent, invokingState)\r
5236 self.parser = parser\r
5237\r
5238\r
5239 def getRuleIndex(self):\r
5240 return CParser.RULE_asm1_statement\r
5241\r
5242 def enterRule(self, listener:ParseTreeListener):\r
5243 if hasattr( listener, "enterAsm1_statement" ):\r
5244 listener.enterAsm1_statement(self)\r
5245\r
5246 def exitRule(self, listener:ParseTreeListener):\r
5247 if hasattr( listener, "exitAsm1_statement" ):\r
5248 listener.exitAsm1_statement(self)\r
5249\r
5250\r
5251\r
5252\r
5253 def asm1_statement(self):\r
5254\r
5255 localctx = CParser.Asm1_statementContext(self, self._ctx, self.state)\r
5256 self.enterRule(localctx, 122, self.RULE_asm1_statement)\r
5257 self._la = 0 # Token type\r
5258 try:\r
5259 self.enterOuterAlt(localctx, 1)\r
5260 self.state = 770\r
5261 self.match(CParser.T__79)\r
5262 self.state = 771\r
5263 self.match(CParser.T__0)\r
5264 self.state = 775\r
5265 self._errHandler.sync(self)\r
5266 _la = self._input.LA(1)\r
5267 while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__22) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36) | (1 << CParser.T__37) | (1 << CParser.T__38) | (1 << CParser.T__39) | (1 << CParser.T__40) | (1 << CParser.T__41) | (1 << CParser.T__42) | (1 << CParser.T__43) | (1 << CParser.T__44) | (1 << CParser.T__45) | (1 << CParser.T__46) | (1 << CParser.T__47) | (1 << CParser.T__48) | (1 << CParser.T__49) | (1 << CParser.T__50) | (1 << CParser.T__51) | (1 << CParser.T__52) | (1 << CParser.T__53) | (1 << CParser.T__54) | (1 << CParser.T__55) | (1 << CParser.T__56) | (1 << CParser.T__57) | (1 << CParser.T__58) | (1 << CParser.T__59) | (1 << CParser.T__60) | (1 << CParser.T__61) | (1 << CParser.T__62))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CParser.T__63 - 64)) | (1 << (CParser.T__64 - 64)) | (1 << (CParser.T__65 - 64)) | (1 << (CParser.T__66 - 64)) | (1 << (CParser.T__67 - 64)) | (1 << (CParser.T__68 - 64)) | (1 << (CParser.T__69 - 64)) | (1 << (CParser.T__70 - 64)) | (1 << (CParser.T__71 - 64)) | (1 << (CParser.T__72 - 64)) | (1 << (CParser.T__73 - 64)) | (1 << (CParser.T__74 - 64)) | (1 << (CParser.T__75 - 64)) | (1 << (CParser.T__76 - 64)) | (1 << (CParser.T__77 - 64)) | (1 << (CParser.T__78 - 64)) | (1 << (CParser.T__79 - 64)) | (1 << (CParser.T__80 - 64)) | (1 << (CParser.T__81 - 64)) | (1 << (CParser.T__82 - 64)) | (1 << (CParser.T__83 - 64)) | (1 << (CParser.T__84 - 64)) | (1 << (CParser.T__85 - 64)) | (1 << (CParser.T__86 - 64)) | (1 << (CParser.T__87 - 64)) | (1 << (CParser.T__88 - 64)) | (1 << (CParser.T__89 - 64)) | (1 << (CParser.T__90 - 64)) | (1 << (CParser.T__91 - 64)) | (1 << (CParser.IDENTIFIER - 64)) | (1 << (CParser.CHARACTER_LITERAL - 64)) | (1 << (CParser.STRING_LITERAL - 64)) | (1 << (CParser.HEX_LITERAL - 64)) | (1 << (CParser.DECIMAL_LITERAL - 64)) | (1 << (CParser.OCTAL_LITERAL - 64)) | (1 << (CParser.FLOATING_POINT_LITERAL - 64)) | (1 << (CParser.WS - 64)) | (1 << (CParser.BS - 64)) | (1 << (CParser.UnicodeVocabulary - 64)) | (1 << (CParser.COMMENT - 64)) | (1 << (CParser.LINE_COMMENT - 64)) | (1 << (CParser.LINE_COMMAND - 64)))) != 0):\r
5268 self.state = 772\r
5269 _la = self._input.LA(1)\r
5270 if _la <= 0 or _la==CParser.T__19:\r
5271 self._errHandler.recoverInline(self)\r
5272 else:\r
5273 self._errHandler.reportMatch(self)\r
5274 self.consume()\r
5275 self.state = 777\r
5276 self._errHandler.sync(self)\r
5277 _la = self._input.LA(1)\r
5278\r
5279 self.state = 778\r
5280 self.match(CParser.T__19)\r
5281 except RecognitionException as re:\r
5282 localctx.exception = re\r
5283 self._errHandler.reportError(self, re)\r
5284 self._errHandler.recover(self, re)\r
5285 finally:\r
5286 self.exitRule()\r
5287 return localctx\r
5288\r
5289 class Asm_statementContext(ParserRuleContext):\r
5290\r
5291 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5292 super().__init__(parent, invokingState)\r
5293 self.parser = parser\r
5294\r
5295\r
5296 def getRuleIndex(self):\r
5297 return CParser.RULE_asm_statement\r
5298\r
5299 def enterRule(self, listener:ParseTreeListener):\r
5300 if hasattr( listener, "enterAsm_statement" ):\r
5301 listener.enterAsm_statement(self)\r
5302\r
5303 def exitRule(self, listener:ParseTreeListener):\r
5304 if hasattr( listener, "exitAsm_statement" ):\r
5305 listener.exitAsm_statement(self)\r
5306\r
5307\r
5308\r
5309\r
5310 def asm_statement(self):\r
5311\r
5312 localctx = CParser.Asm_statementContext(self, self._ctx, self.state)\r
5313 self.enterRule(localctx, 124, self.RULE_asm_statement)\r
5314 self._la = 0 # Token type\r
5315 try:\r
5316 self.enterOuterAlt(localctx, 1)\r
5317 self.state = 780\r
5318 self.match(CParser.T__80)\r
5319 self.state = 781\r
5320 self.match(CParser.T__0)\r
5321 self.state = 785\r
5322 self._errHandler.sync(self)\r
5323 _la = self._input.LA(1)\r
5324 while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2) | (1 << CParser.T__3) | (1 << CParser.T__4) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__22) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36) | (1 << CParser.T__37) | (1 << CParser.T__38) | (1 << CParser.T__39) | (1 << CParser.T__40) | (1 << CParser.T__41) | (1 << CParser.T__42) | (1 << CParser.T__43) | (1 << CParser.T__44) | (1 << CParser.T__45) | (1 << CParser.T__46) | (1 << CParser.T__47) | (1 << CParser.T__48) | (1 << CParser.T__49) | (1 << CParser.T__50) | (1 << CParser.T__51) | (1 << CParser.T__52) | (1 << CParser.T__53) | (1 << CParser.T__54) | (1 << CParser.T__55) | (1 << CParser.T__56) | (1 << CParser.T__57) | (1 << CParser.T__58) | (1 << CParser.T__59) | (1 << CParser.T__60) | (1 << CParser.T__61) | (1 << CParser.T__62))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CParser.T__63 - 64)) | (1 << (CParser.T__64 - 64)) | (1 << (CParser.T__65 - 64)) | (1 << (CParser.T__66 - 64)) | (1 << (CParser.T__67 - 64)) | (1 << (CParser.T__68 - 64)) | (1 << (CParser.T__69 - 64)) | (1 << (CParser.T__70 - 64)) | (1 << (CParser.T__71 - 64)) | (1 << (CParser.T__72 - 64)) | (1 << (CParser.T__73 - 64)) | (1 << (CParser.T__74 - 64)) | (1 << (CParser.T__75 - 64)) | (1 << (CParser.T__76 - 64)) | (1 << (CParser.T__77 - 64)) | (1 << (CParser.T__78 - 64)) | (1 << (CParser.T__79 - 64)) | (1 << (CParser.T__80 - 64)) | (1 << (CParser.T__81 - 64)) | (1 << (CParser.T__82 - 64)) | (1 << (CParser.T__83 - 64)) | (1 << (CParser.T__84 - 64)) | (1 << (CParser.T__85 - 64)) | (1 << (CParser.T__86 - 64)) | (1 << (CParser.T__87 - 64)) | (1 << (CParser.T__88 - 64)) | (1 << (CParser.T__89 - 64)) | (1 << (CParser.T__90 - 64)) | (1 << (CParser.T__91 - 64)) | (1 << (CParser.IDENTIFIER - 64)) | (1 << (CParser.CHARACTER_LITERAL - 64)) | (1 << (CParser.STRING_LITERAL - 64)) | (1 << (CParser.HEX_LITERAL - 64)) | (1 << (CParser.DECIMAL_LITERAL - 64)) | (1 << (CParser.OCTAL_LITERAL - 64)) | (1 << (CParser.FLOATING_POINT_LITERAL - 64)) | (1 << (CParser.WS - 64)) | (1 << (CParser.BS - 64)) | (1 << (CParser.UnicodeVocabulary - 64)) | (1 << (CParser.COMMENT - 64)) | (1 << (CParser.LINE_COMMENT - 64)) | (1 << (CParser.LINE_COMMAND - 64)))) != 0):\r
5325 self.state = 782\r
5326 _la = self._input.LA(1)\r
5327 if _la <= 0 or _la==CParser.T__19:\r
5328 self._errHandler.recoverInline(self)\r
5329 else:\r
5330 self._errHandler.reportMatch(self)\r
5331 self.consume()\r
5332 self.state = 787\r
5333 self._errHandler.sync(self)\r
5334 _la = self._input.LA(1)\r
5335\r
5336 self.state = 788\r
5337 self.match(CParser.T__19)\r
5338 except RecognitionException as re:\r
5339 localctx.exception = re\r
5340 self._errHandler.reportError(self, re)\r
5341 self._errHandler.recover(self, re)\r
5342 finally:\r
5343 self.exitRule()\r
5344 return localctx\r
5345\r
5346 class Macro_statementContext(ParserRuleContext):\r
5347\r
5348 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5349 super().__init__(parent, invokingState)\r
5350 self.parser = parser\r
5351\r
5352 def IDENTIFIER(self):\r
5353 return self.getToken(CParser.IDENTIFIER, 0)\r
5354\r
5355 def declaration(self, i:int=None):\r
5356 if i is None:\r
5357 return self.getTypedRuleContexts(CParser.DeclarationContext)\r
5358 else:\r
5359 return self.getTypedRuleContext(CParser.DeclarationContext,i)\r
5360\r
5361\r
5362 def statement_list(self):\r
5363 return self.getTypedRuleContext(CParser.Statement_listContext,0)\r
5364\r
5365\r
5366 def expression(self):\r
5367 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
5368\r
5369\r
5370 def getRuleIndex(self):\r
5371 return CParser.RULE_macro_statement\r
5372\r
5373 def enterRule(self, listener:ParseTreeListener):\r
5374 if hasattr( listener, "enterMacro_statement" ):\r
5375 listener.enterMacro_statement(self)\r
5376\r
5377 def exitRule(self, listener:ParseTreeListener):\r
5378 if hasattr( listener, "exitMacro_statement" ):\r
5379 listener.exitMacro_statement(self)\r
5380\r
5381\r
5382\r
5383\r
5384 def macro_statement(self):\r
5385\r
5386 localctx = CParser.Macro_statementContext(self, self._ctx, self.state)\r
5387 self.enterRule(localctx, 126, self.RULE_macro_statement)\r
5388 self._la = 0 # Token type\r
5389 try:\r
5390 self.enterOuterAlt(localctx, 1)\r
5391 self.state = 790\r
5392 self.match(CParser.IDENTIFIER)\r
5393 self.state = 791\r
5394 self.match(CParser.T__37)\r
5395 self.state = 795\r
5396 self._errHandler.sync(self)\r
5397 _alt = self._interp.adaptivePredict(self._input,97,self._ctx)\r
5398 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
5399 if _alt==1:\r
5400 self.state = 792\r
5401 self.declaration() \r
5402 self.state = 797\r
5403 self._errHandler.sync(self)\r
5404 _alt = self._interp.adaptivePredict(self._input,97,self._ctx)\r
5405\r
5406 self.state = 799\r
5407 self._errHandler.sync(self)\r
5408 la_ = self._interp.adaptivePredict(self._input,98,self._ctx)\r
5409 if la_ == 1:\r
5410 self.state = 798\r
5411 self.statement_list()\r
5412\r
5413\r
5414 self.state = 802\r
5415 self._errHandler.sync(self)\r
5416 _la = self._input.LA(1)\r
5417 if ((((_la - 38)) & ~0x3f) == 0 and ((1 << (_la - 38)) & ((1 << (CParser.T__37 - 38)) | (1 << (CParser.T__41 - 38)) | (1 << (CParser.T__43 - 38)) | (1 << (CParser.T__44 - 38)) | (1 << (CParser.T__47 - 38)) | (1 << (CParser.T__48 - 38)) | (1 << (CParser.T__49 - 38)) | (1 << (CParser.T__52 - 38)) | (1 << (CParser.T__53 - 38)) | (1 << (CParser.T__54 - 38)) | (1 << (CParser.IDENTIFIER - 38)) | (1 << (CParser.CHARACTER_LITERAL - 38)) | (1 << (CParser.STRING_LITERAL - 38)) | (1 << (CParser.HEX_LITERAL - 38)) | (1 << (CParser.DECIMAL_LITERAL - 38)) | (1 << (CParser.OCTAL_LITERAL - 38)) | (1 << (CParser.FLOATING_POINT_LITERAL - 38)))) != 0):\r
5418 self.state = 801\r
5419 self.expression()\r
5420\r
5421\r
5422 self.state = 804\r
5423 self.match(CParser.T__38)\r
5424 except RecognitionException as re:\r
5425 localctx.exception = re\r
5426 self._errHandler.reportError(self, re)\r
5427 self._errHandler.recover(self, re)\r
5428 finally:\r
5429 self.exitRule()\r
5430 return localctx\r
5431\r
5432 class Labeled_statementContext(ParserRuleContext):\r
5433\r
5434 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5435 super().__init__(parent, invokingState)\r
5436 self.parser = parser\r
5437\r
5438 def IDENTIFIER(self):\r
5439 return self.getToken(CParser.IDENTIFIER, 0)\r
5440\r
5441 def statement(self):\r
5442 return self.getTypedRuleContext(CParser.StatementContext,0)\r
5443\r
5444\r
5445 def constant_expression(self):\r
5446 return self.getTypedRuleContext(CParser.Constant_expressionContext,0)\r
5447\r
5448\r
5449 def getRuleIndex(self):\r
5450 return CParser.RULE_labeled_statement\r
5451\r
5452 def enterRule(self, listener:ParseTreeListener):\r
5453 if hasattr( listener, "enterLabeled_statement" ):\r
5454 listener.enterLabeled_statement(self)\r
5455\r
5456 def exitRule(self, listener:ParseTreeListener):\r
5457 if hasattr( listener, "exitLabeled_statement" ):\r
5458 listener.exitLabeled_statement(self)\r
5459\r
5460\r
5461\r
5462\r
5463 def labeled_statement(self):\r
5464\r
5465 localctx = CParser.Labeled_statementContext(self, self._ctx, self.state)\r
5466 self.enterRule(localctx, 128, self.RULE_labeled_statement)\r
5467 try:\r
5468 self.state = 817\r
5469 self._errHandler.sync(self)\r
5470 token = self._input.LA(1)\r
5471 if token in [CParser.IDENTIFIER]:\r
5472 self.enterOuterAlt(localctx, 1)\r
5473 self.state = 806\r
5474 self.match(CParser.IDENTIFIER)\r
5475 self.state = 807\r
5476 self.match(CParser.T__22)\r
5477 self.state = 808\r
5478 self.statement()\r
5479 pass\r
5480 elif token in [CParser.T__81]:\r
5481 self.enterOuterAlt(localctx, 2)\r
5482 self.state = 809\r
5483 self.match(CParser.T__81)\r
5484 self.state = 810\r
5485 self.constant_expression()\r
5486 self.state = 811\r
5487 self.match(CParser.T__22)\r
5488 self.state = 812\r
5489 self.statement()\r
5490 pass\r
5491 elif token in [CParser.T__82]:\r
5492 self.enterOuterAlt(localctx, 3)\r
5493 self.state = 814\r
5494 self.match(CParser.T__82)\r
5495 self.state = 815\r
5496 self.match(CParser.T__22)\r
5497 self.state = 816\r
5498 self.statement()\r
5499 pass\r
5500 else:\r
5501 raise NoViableAltException(self)\r
5502\r
5503 except RecognitionException as re:\r
5504 localctx.exception = re\r
5505 self._errHandler.reportError(self, re)\r
5506 self._errHandler.recover(self, re)\r
5507 finally:\r
5508 self.exitRule()\r
5509 return localctx\r
5510\r
5511 class Compound_statementContext(ParserRuleContext):\r
5512\r
5513 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5514 super().__init__(parent, invokingState)\r
5515 self.parser = parser\r
5516\r
5517 def declaration(self, i:int=None):\r
5518 if i is None:\r
5519 return self.getTypedRuleContexts(CParser.DeclarationContext)\r
5520 else:\r
5521 return self.getTypedRuleContext(CParser.DeclarationContext,i)\r
5522\r
5523\r
5524 def statement_list(self):\r
5525 return self.getTypedRuleContext(CParser.Statement_listContext,0)\r
5526\r
5527\r
5528 def getRuleIndex(self):\r
5529 return CParser.RULE_compound_statement\r
5530\r
5531 def enterRule(self, listener:ParseTreeListener):\r
5532 if hasattr( listener, "enterCompound_statement" ):\r
5533 listener.enterCompound_statement(self)\r
5534\r
5535 def exitRule(self, listener:ParseTreeListener):\r
5536 if hasattr( listener, "exitCompound_statement" ):\r
5537 listener.exitCompound_statement(self)\r
5538\r
5539\r
5540\r
5541\r
5542 def compound_statement(self):\r
5543\r
5544 localctx = CParser.Compound_statementContext(self, self._ctx, self.state)\r
5545 self.enterRule(localctx, 130, self.RULE_compound_statement)\r
5546 self._la = 0 # Token type\r
5547 try:\r
5548 self.enterOuterAlt(localctx, 1)\r
5549 self.state = 819\r
5550 self.match(CParser.T__0)\r
5551 self.state = 823\r
5552 self._errHandler.sync(self)\r
5553 _alt = self._interp.adaptivePredict(self._input,101,self._ctx)\r
5554 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
5555 if _alt==1:\r
5556 self.state = 820\r
5557 self.declaration() \r
5558 self.state = 825\r
5559 self._errHandler.sync(self)\r
5560 _alt = self._interp.adaptivePredict(self._input,101,self._ctx)\r
5561\r
5562 self.state = 827\r
5563 self._errHandler.sync(self)\r
5564 _la = self._input.LA(1)\r
5565 if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__0) | (1 << CParser.T__1) | (1 << CParser.T__2) | (1 << CParser.T__5) | (1 << CParser.T__6) | (1 << CParser.T__7) | (1 << CParser.T__8) | (1 << CParser.T__9) | (1 << CParser.T__10) | (1 << CParser.T__11) | (1 << CParser.T__12) | (1 << CParser.T__13) | (1 << CParser.T__14) | (1 << CParser.T__15) | (1 << CParser.T__16) | (1 << CParser.T__17) | (1 << CParser.T__18) | (1 << CParser.T__20) | (1 << CParser.T__21) | (1 << CParser.T__23) | (1 << CParser.T__24) | (1 << CParser.T__25) | (1 << CParser.T__26) | (1 << CParser.T__27) | (1 << CParser.T__28) | (1 << CParser.T__29) | (1 << CParser.T__30) | (1 << CParser.T__31) | (1 << CParser.T__32) | (1 << CParser.T__33) | (1 << CParser.T__34) | (1 << CParser.T__35) | (1 << CParser.T__36) | (1 << CParser.T__37) | (1 << CParser.T__41) | (1 << CParser.T__43) | (1 << CParser.T__44) | (1 << CParser.T__47) | (1 << CParser.T__48) | (1 << CParser.T__49) | (1 << CParser.T__52) | (1 << CParser.T__53) | (1 << CParser.T__54))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (CParser.T__78 - 79)) | (1 << (CParser.T__79 - 79)) | (1 << (CParser.T__80 - 79)) | (1 << (CParser.T__81 - 79)) | (1 << (CParser.T__82 - 79)) | (1 << (CParser.T__83 - 79)) | (1 << (CParser.T__85 - 79)) | (1 << (CParser.T__86 - 79)) | (1 << (CParser.T__87 - 79)) | (1 << (CParser.T__88 - 79)) | (1 << (CParser.T__89 - 79)) | (1 << (CParser.T__90 - 79)) | (1 << (CParser.T__91 - 79)) | (1 << (CParser.IDENTIFIER - 79)) | (1 << (CParser.CHARACTER_LITERAL - 79)) | (1 << (CParser.STRING_LITERAL - 79)) | (1 << (CParser.HEX_LITERAL - 79)) | (1 << (CParser.DECIMAL_LITERAL - 79)) | (1 << (CParser.OCTAL_LITERAL - 79)) | (1 << (CParser.FLOATING_POINT_LITERAL - 79)))) != 0):\r
5566 self.state = 826\r
5567 self.statement_list()\r
5568\r
5569\r
5570 self.state = 829\r
5571 self.match(CParser.T__19)\r
5572 except RecognitionException as re:\r
5573 localctx.exception = re\r
5574 self._errHandler.reportError(self, re)\r
5575 self._errHandler.recover(self, re)\r
5576 finally:\r
5577 self.exitRule()\r
5578 return localctx\r
5579\r
5580 class Statement_listContext(ParserRuleContext):\r
5581\r
5582 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5583 super().__init__(parent, invokingState)\r
5584 self.parser = parser\r
5585\r
5586 def statement(self, i:int=None):\r
5587 if i is None:\r
5588 return self.getTypedRuleContexts(CParser.StatementContext)\r
5589 else:\r
5590 return self.getTypedRuleContext(CParser.StatementContext,i)\r
5591\r
5592\r
5593 def getRuleIndex(self):\r
5594 return CParser.RULE_statement_list\r
5595\r
5596 def enterRule(self, listener:ParseTreeListener):\r
5597 if hasattr( listener, "enterStatement_list" ):\r
5598 listener.enterStatement_list(self)\r
5599\r
5600 def exitRule(self, listener:ParseTreeListener):\r
5601 if hasattr( listener, "exitStatement_list" ):\r
5602 listener.exitStatement_list(self)\r
5603\r
5604\r
5605\r
5606\r
5607 def statement_list(self):\r
5608\r
5609 localctx = CParser.Statement_listContext(self, self._ctx, self.state)\r
5610 self.enterRule(localctx, 132, self.RULE_statement_list)\r
5611 try:\r
5612 self.enterOuterAlt(localctx, 1)\r
5613 self.state = 832 \r
5614 self._errHandler.sync(self)\r
5615 _alt = 1\r
5616 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:\r
5617 if _alt == 1:\r
5618 self.state = 831\r
5619 self.statement()\r
5620\r
5621 else:\r
5622 raise NoViableAltException(self)\r
5623 self.state = 834 \r
5624 self._errHandler.sync(self)\r
5625 _alt = self._interp.adaptivePredict(self._input,103,self._ctx)\r
5626\r
5627 except RecognitionException as re:\r
5628 localctx.exception = re\r
5629 self._errHandler.reportError(self, re)\r
5630 self._errHandler.recover(self, re)\r
5631 finally:\r
5632 self.exitRule()\r
5633 return localctx\r
5634\r
5635 class Expression_statementContext(ParserRuleContext):\r
5636\r
5637 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5638 super().__init__(parent, invokingState)\r
5639 self.parser = parser\r
5640\r
5641 def expression(self):\r
5642 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
5643\r
5644\r
5645 def getRuleIndex(self):\r
5646 return CParser.RULE_expression_statement\r
5647\r
5648 def enterRule(self, listener:ParseTreeListener):\r
5649 if hasattr( listener, "enterExpression_statement" ):\r
5650 listener.enterExpression_statement(self)\r
5651\r
5652 def exitRule(self, listener:ParseTreeListener):\r
5653 if hasattr( listener, "exitExpression_statement" ):\r
5654 listener.exitExpression_statement(self)\r
5655\r
5656\r
5657\r
5658\r
5659 def expression_statement(self):\r
5660\r
5661 localctx = CParser.Expression_statementContext(self, self._ctx, self.state)\r
5662 self.enterRule(localctx, 134, self.RULE_expression_statement)\r
5663 try:\r
5664 self.state = 840\r
5665 self._errHandler.sync(self)\r
5666 token = self._input.LA(1)\r
5667 if token in [CParser.T__1]:\r
5668 self.enterOuterAlt(localctx, 1)\r
5669 self.state = 836\r
5670 self.match(CParser.T__1)\r
5671 pass\r
5672 elif token in [CParser.T__37, CParser.T__41, CParser.T__43, CParser.T__44, CParser.T__47, CParser.T__48, CParser.T__49, CParser.T__52, CParser.T__53, CParser.T__54, CParser.IDENTIFIER, CParser.CHARACTER_LITERAL, CParser.STRING_LITERAL, CParser.HEX_LITERAL, CParser.DECIMAL_LITERAL, CParser.OCTAL_LITERAL, CParser.FLOATING_POINT_LITERAL]:\r
5673 self.enterOuterAlt(localctx, 2)\r
5674 self.state = 837\r
5675 self.expression()\r
5676 self.state = 838\r
5677 self.match(CParser.T__1)\r
5678 pass\r
5679 else:\r
5680 raise NoViableAltException(self)\r
5681\r
5682 except RecognitionException as re:\r
5683 localctx.exception = re\r
5684 self._errHandler.reportError(self, re)\r
5685 self._errHandler.recover(self, re)\r
5686 finally:\r
5687 self.exitRule()\r
5688 return localctx\r
5689\r
5690 class Selection_statementContext(ParserRuleContext):\r
5691\r
5692 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5693 super().__init__(parent, invokingState)\r
5694 self.parser = parser\r
5695 self.e = None # ExpressionContext\r
5696\r
5697 def statement(self, i:int=None):\r
5698 if i is None:\r
5699 return self.getTypedRuleContexts(CParser.StatementContext)\r
5700 else:\r
5701 return self.getTypedRuleContext(CParser.StatementContext,i)\r
5702\r
5703\r
5704 def expression(self):\r
5705 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
5706\r
5707\r
5708 def getRuleIndex(self):\r
5709 return CParser.RULE_selection_statement\r
5710\r
5711 def enterRule(self, listener:ParseTreeListener):\r
5712 if hasattr( listener, "enterSelection_statement" ):\r
5713 listener.enterSelection_statement(self)\r
5714\r
5715 def exitRule(self, listener:ParseTreeListener):\r
5716 if hasattr( listener, "exitSelection_statement" ):\r
5717 listener.exitSelection_statement(self)\r
5718\r
5719\r
5720\r
5721\r
5722 def selection_statement(self):\r
5723\r
5724 localctx = CParser.Selection_statementContext(self, self._ctx, self.state)\r
5725 self.enterRule(localctx, 136, self.RULE_selection_statement)\r
5726 try:\r
5727 self.state = 858\r
5728 self._errHandler.sync(self)\r
5729 token = self._input.LA(1)\r
5730 if token in [CParser.T__83]:\r
5731 self.enterOuterAlt(localctx, 1)\r
5732 self.state = 842\r
5733 self.match(CParser.T__83)\r
5734 self.state = 843\r
5735 self.match(CParser.T__37)\r
5736 self.state = 844\r
5737 localctx.e = self.expression()\r
5738 self.state = 845\r
5739 self.match(CParser.T__38)\r
5740 self.StorePredicateExpression((None if localctx.e is None else localctx.e.start).line, (None if localctx.e is None else localctx.e.start).column, (None if localctx.e is None else localctx.e.stop).line, (None if localctx.e is None else localctx.e.stop).column, (None if localctx.e is None else self._input.getText((localctx.e.start,localctx.e.stop))))\r
5741 self.state = 847\r
5742 self.statement()\r
5743 self.state = 850\r
5744 self._errHandler.sync(self)\r
5745 la_ = self._interp.adaptivePredict(self._input,105,self._ctx)\r
5746 if la_ == 1:\r
5747 self.state = 848\r
5748 self.match(CParser.T__84)\r
5749 self.state = 849\r
5750 self.statement()\r
5751\r
5752\r
5753 pass\r
5754 elif token in [CParser.T__85]:\r
5755 self.enterOuterAlt(localctx, 2)\r
5756 self.state = 852\r
5757 self.match(CParser.T__85)\r
5758 self.state = 853\r
5759 self.match(CParser.T__37)\r
5760 self.state = 854\r
5761 self.expression()\r
5762 self.state = 855\r
5763 self.match(CParser.T__38)\r
5764 self.state = 856\r
5765 self.statement()\r
5766 pass\r
5767 else:\r
5768 raise NoViableAltException(self)\r
5769\r
5770 except RecognitionException as re:\r
5771 localctx.exception = re\r
5772 self._errHandler.reportError(self, re)\r
5773 self._errHandler.recover(self, re)\r
5774 finally:\r
5775 self.exitRule()\r
5776 return localctx\r
5777\r
5778 class Iteration_statementContext(ParserRuleContext):\r
5779\r
5780 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5781 super().__init__(parent, invokingState)\r
5782 self.parser = parser\r
5783 self.e = None # ExpressionContext\r
5784\r
5785 def statement(self):\r
5786 return self.getTypedRuleContext(CParser.StatementContext,0)\r
5787\r
5788\r
5789 def expression(self):\r
5790 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
5791\r
5792\r
5793 def getRuleIndex(self):\r
5794 return CParser.RULE_iteration_statement\r
5795\r
5796 def enterRule(self, listener:ParseTreeListener):\r
5797 if hasattr( listener, "enterIteration_statement" ):\r
5798 listener.enterIteration_statement(self)\r
5799\r
5800 def exitRule(self, listener:ParseTreeListener):\r
5801 if hasattr( listener, "exitIteration_statement" ):\r
5802 listener.exitIteration_statement(self)\r
5803\r
5804\r
5805\r
5806\r
5807 def iteration_statement(self):\r
5808\r
5809 localctx = CParser.Iteration_statementContext(self, self._ctx, self.state)\r
5810 self.enterRule(localctx, 138, self.RULE_iteration_statement)\r
5811 try:\r
5812 self.state = 876\r
5813 self._errHandler.sync(self)\r
5814 token = self._input.LA(1)\r
5815 if token in [CParser.T__86]:\r
5816 self.enterOuterAlt(localctx, 1)\r
5817 self.state = 860\r
5818 self.match(CParser.T__86)\r
5819 self.state = 861\r
5820 self.match(CParser.T__37)\r
5821 self.state = 862\r
5822 localctx.e = self.expression()\r
5823 self.state = 863\r
5824 self.match(CParser.T__38)\r
5825 self.state = 864\r
5826 self.statement()\r
5827 self.StorePredicateExpression((None if localctx.e is None else localctx.e.start).line, (None if localctx.e is None else localctx.e.start).column, (None if localctx.e is None else localctx.e.stop).line, (None if localctx.e is None else localctx.e.stop).column, (None if localctx.e is None else self._input.getText((localctx.e.start,localctx.e.stop))))\r
5828 pass\r
5829 elif token in [CParser.T__87]:\r
5830 self.enterOuterAlt(localctx, 2)\r
5831 self.state = 867\r
5832 self.match(CParser.T__87)\r
5833 self.state = 868\r
5834 self.statement()\r
5835 self.state = 869\r
5836 self.match(CParser.T__86)\r
5837 self.state = 870\r
5838 self.match(CParser.T__37)\r
5839 self.state = 871\r
5840 localctx.e = self.expression()\r
5841 self.state = 872\r
5842 self.match(CParser.T__38)\r
5843 self.state = 873\r
5844 self.match(CParser.T__1)\r
5845 self.StorePredicateExpression((None if localctx.e is None else localctx.e.start).line, (None if localctx.e is None else localctx.e.start).column, (None if localctx.e is None else localctx.e.stop).line, (None if localctx.e is None else localctx.e.stop).column, (None if localctx.e is None else self._input.getText((localctx.e.start,localctx.e.stop))))\r
5846 pass\r
5847 else:\r
5848 raise NoViableAltException(self)\r
5849\r
5850 except RecognitionException as re:\r
5851 localctx.exception = re\r
5852 self._errHandler.reportError(self, re)\r
5853 self._errHandler.recover(self, re)\r
5854 finally:\r
5855 self.exitRule()\r
5856 return localctx\r
5857\r
5858 class Jump_statementContext(ParserRuleContext):\r
5859\r
5860 def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):\r
5861 super().__init__(parent, invokingState)\r
5862 self.parser = parser\r
5863\r
5864 def IDENTIFIER(self):\r
5865 return self.getToken(CParser.IDENTIFIER, 0)\r
5866\r
5867 def expression(self):\r
5868 return self.getTypedRuleContext(CParser.ExpressionContext,0)\r
5869\r
5870\r
5871 def getRuleIndex(self):\r
5872 return CParser.RULE_jump_statement\r
5873\r
5874 def enterRule(self, listener:ParseTreeListener):\r
5875 if hasattr( listener, "enterJump_statement" ):\r
5876 listener.enterJump_statement(self)\r
5877\r
5878 def exitRule(self, listener:ParseTreeListener):\r
5879 if hasattr( listener, "exitJump_statement" ):\r
5880 listener.exitJump_statement(self)\r
5881\r
5882\r
5883\r
5884\r
5885 def jump_statement(self):\r
5886\r
5887 localctx = CParser.Jump_statementContext(self, self._ctx, self.state)\r
5888 self.enterRule(localctx, 140, self.RULE_jump_statement)\r
5889 try:\r
5890 self.state = 891\r
5891 self._errHandler.sync(self)\r
5892 la_ = self._interp.adaptivePredict(self._input,108,self._ctx)\r
5893 if la_ == 1:\r
5894 self.enterOuterAlt(localctx, 1)\r
5895 self.state = 878\r
5896 self.match(CParser.T__88)\r
5897 self.state = 879\r
5898 self.match(CParser.IDENTIFIER)\r
5899 self.state = 880\r
5900 self.match(CParser.T__1)\r
5901 pass\r
5902\r
5903 elif la_ == 2:\r
5904 self.enterOuterAlt(localctx, 2)\r
5905 self.state = 881\r
5906 self.match(CParser.T__89)\r
5907 self.state = 882\r
5908 self.match(CParser.T__1)\r
5909 pass\r
5910\r
5911 elif la_ == 3:\r
5912 self.enterOuterAlt(localctx, 3)\r
5913 self.state = 883\r
5914 self.match(CParser.T__90)\r
5915 self.state = 884\r
5916 self.match(CParser.T__1)\r
5917 pass\r
5918\r
5919 elif la_ == 4:\r
5920 self.enterOuterAlt(localctx, 4)\r
5921 self.state = 885\r
5922 self.match(CParser.T__91)\r
5923 self.state = 886\r
5924 self.match(CParser.T__1)\r
5925 pass\r
5926\r
5927 elif la_ == 5:\r
5928 self.enterOuterAlt(localctx, 5)\r
5929 self.state = 887\r
5930 self.match(CParser.T__91)\r
5931 self.state = 888\r
5932 self.expression()\r
5933 self.state = 889\r
5934 self.match(CParser.T__1)\r
5935 pass\r
5936\r
5937\r
5938 except RecognitionException as re:\r
5939 localctx.exception = re\r
5940 self._errHandler.reportError(self, re)\r
5941 self._errHandler.recover(self, re)\r
5942 finally:\r
5943 self.exitRule()\r
5944 return localctx\r
5945\r
5946\r
5947\r
5948\r
5949\r