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