CloverBootloader/BaseTools/Source/Python/Ecc/CParser4/CParser.py
Sergey Isakov b1264ef1e3 changes of BaseTools
Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
2019-09-04 23:02:41 +03:00

6274 lines
251 KiB
Python
Executable File

# Generated from C.g4 by ANTLR 4.7.1
# encoding: utf-8
from antlr4 import *
from io import StringIO
from typing.io import TextIO
import sys
## @file
# The file defines the parser for C source files.
#
# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.
# This file is generated by running:
# java org.antlr.Tool C.g
#
# Copyright (c) 2009 - 2010, Intel Corporation All rights reserved.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
import Ecc.CodeFragment as CodeFragment
import Ecc.FileProfile as FileProfile
def serializedATN():
with StringIO() as buf:
buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3k")
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")
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")
buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23")
buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31")
buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36")
buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t")
buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4")
buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64")
buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t")
buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t")
buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\3\2\7\2\u0092\n\2\f\2\16\2\u0095")
buf.write("\13\2\3\3\5\3\u0098\n\3\3\3\3\3\7\3\u009c\n\3\f\3\16\3")
buf.write("\u009f\13\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u00a7\n\3\5\3")
buf.write("\u00a9\n\3\3\4\5\4\u00ac\n\4\3\4\3\4\6\4\u00b0\n\4\r\4")
buf.write("\16\4\u00b1\3\4\3\4\3\4\5\4\u00b7\n\4\3\4\3\4\3\5\3\5")
buf.write("\3\5\6\5\u00be\n\5\r\5\16\5\u00bf\3\6\3\6\5\6\u00c4\n")
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")
buf.write("\6\u00d1\n\6\3\7\3\7\3\7\7\7\u00d6\n\7\f\7\16\7\u00d9")
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")
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")
buf.write("\7\n\u00f3\n\n\f\n\16\n\u00f6\13\n\3\n\3\n\5\n\u00fa\n")
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")
buf.write("\3\f\3\f\5\f\u0109\n\f\3\r\3\r\3\16\6\16\u010e\n\16\r")
buf.write("\16\16\16\u010f\3\17\3\17\3\17\3\17\3\20\3\20\6\20\u0118")
buf.write("\n\20\r\20\16\20\u0119\3\21\3\21\3\21\7\21\u011f\n\21")
buf.write("\f\21\16\21\u0122\13\21\3\22\3\22\3\22\5\22\u0127\n\22")
buf.write("\3\22\3\22\5\22\u012b\n\22\3\23\3\23\3\23\3\23\5\23\u0131")
buf.write("\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u013a\n")
buf.write("\23\3\23\3\23\3\23\3\23\5\23\u0140\n\23\3\24\3\24\3\24")
buf.write("\7\24\u0145\n\24\f\24\16\24\u0148\13\24\3\25\3\25\3\25")
buf.write("\5\25\u014d\n\25\3\26\3\26\3\27\5\27\u0152\n\27\3\27\5")
buf.write("\27\u0155\n\27\3\27\5\27\u0158\n\27\3\27\5\27\u015b\n")
buf.write("\27\3\27\3\27\5\27\u015f\n\27\3\30\3\30\7\30\u0163\n\30")
buf.write("\f\30\16\30\u0166\13\30\3\30\3\30\5\30\u016a\n\30\3\30")
buf.write("\3\30\3\30\6\30\u016f\n\30\r\30\16\30\u0170\5\30\u0173")
buf.write("\n\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31")
buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u0185\n\31\3\32\3")
buf.write("\32\6\32\u0189\n\32\r\32\16\32\u018a\3\32\5\32\u018e\n")
buf.write("\32\3\32\3\32\3\32\5\32\u0193\n\32\3\33\3\33\3\33\5\33")
buf.write("\u0198\n\33\3\33\5\33\u019b\n\33\3\34\3\34\3\34\5\34\u01a0")
buf.write("\n\34\3\34\7\34\u01a3\n\34\f\34\16\34\u01a6\13\34\3\35")
buf.write("\3\35\3\35\7\35\u01ab\n\35\f\35\16\35\u01ae\13\35\3\35")
buf.write("\5\35\u01b1\n\35\3\35\7\35\u01b4\n\35\f\35\16\35\u01b7")
buf.write("\13\35\3\35\5\35\u01ba\n\35\3\36\3\36\3\36\7\36\u01bf")
buf.write("\n\36\f\36\16\36\u01c2\13\36\3\37\3\37\5\37\u01c6\n\37")
buf.write("\3\37\5\37\u01c9\n\37\3 \3 \5 \u01cd\n \3 \5 \u01d0\n")
buf.write(" \3!\3!\3!\3!\3!\5!\u01d7\n!\3!\7!\u01da\n!\f!\16!\u01dd")
buf.write("\13!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\5")
buf.write("\"\u01eb\n\"\3#\3#\3#\3#\5#\u01f1\n#\3#\3#\5#\u01f5\n")
buf.write("#\3$\3$\3$\7$\u01fa\n$\f$\16$\u01fd\13$\3%\3%\5%\u0201")
buf.write("\n%\3%\3%\3%\5%\u0206\n%\7%\u0208\n%\f%\16%\u020b\13%")
buf.write("\3&\3&\3&\3&\3&\7&\u0212\n&\f&\16&\u0215\13&\3\'\3\'\3")
buf.write("\'\3\'\3\'\3\'\3\'\7\'\u021e\n\'\f\'\16\'\u0221\13\'\3")
buf.write("(\3(\3(\3(\3(\3(\5(\u0229\n(\3)\3)\3)\3)\3)\3)\3)\3)\3")
buf.write(")\3)\3)\3)\3)\3)\3)\5)\u023a\n)\3*\3*\3*\3*\3*\3*\3*\3")
buf.write("*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3")
buf.write("*\3*\3*\3*\7*\u0259\n*\f*\16*\u025c\13*\3+\3+\3+\7+\u0261")
buf.write("\n+\f+\16+\u0264\13+\3,\3,\3-\3-\3-\3-\3-\3-\5-\u026e")
buf.write("\n-\3.\3.\3.\3.\3.\7.\u0275\n.\f.\16.\u0278\13.\3.\6.")
buf.write("\u027b\n.\r.\16.\u027c\6.\u027f\n.\r.\16.\u0280\3.\7.")
buf.write("\u0284\n.\f.\16.\u0287\13.\3.\5.\u028a\n.\3/\3/\3/\7/")
buf.write("\u028f\n/\f/\16/\u0292\13/\3\60\3\60\3\61\3\61\3\61\3")
buf.write("\61\3\61\5\61\u029b\n\61\3\62\3\62\3\63\3\63\3\64\3\64")
buf.write("\3\64\3\64\3\64\3\64\3\64\5\64\u02a8\n\64\3\65\3\65\3")
buf.write("\65\7\65\u02ad\n\65\f\65\16\65\u02b0\13\65\3\66\3\66\3")
buf.write("\66\7\66\u02b5\n\66\f\66\16\66\u02b8\13\66\3\67\3\67\3")
buf.write("\67\7\67\u02bd\n\67\f\67\16\67\u02c0\13\67\38\38\38\7")
buf.write("8\u02c5\n8\f8\168\u02c8\138\39\39\39\79\u02cd\n9\f9\16")
buf.write("9\u02d0\139\3:\3:\3:\7:\u02d5\n:\f:\16:\u02d8\13:\3;\3")
buf.write(";\3;\7;\u02dd\n;\f;\16;\u02e0\13;\3<\3<\3<\7<\u02e5\n")
buf.write("<\f<\16<\u02e8\13<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\5")
buf.write("=\u02f5\n=\3>\5>\u02f8\n>\3>\3>\3>\7>\u02fd\n>\f>\16>")
buf.write("\u0300\13>\3>\3>\3>\3?\3?\3?\7?\u0308\n?\f?\16?\u030b")
buf.write("\13?\3?\3?\3@\3@\3@\7@\u0312\n@\f@\16@\u0315\13@\3@\3")
buf.write("@\3A\3A\3A\7A\u031c\nA\fA\16A\u031f\13A\3A\5A\u0322\n")
buf.write("A\3A\5A\u0325\nA\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3")
buf.write("B\5B\u0334\nB\3C\3C\7C\u0338\nC\fC\16C\u033b\13C\3C\5")
buf.write("C\u033e\nC\3C\3C\3D\6D\u0343\nD\rD\16D\u0344\3E\3E\3E")
buf.write("\3E\5E\u034b\nE\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0355\nF\3")
buf.write("F\3F\3F\3F\3F\3F\5F\u035d\nF\3G\3G\3G\3G\3G\3G\3G\3G\3")
buf.write("G\3G\3G\3G\3G\3G\3G\3G\5G\u036f\nG\3H\3H\3H\3H\3H\3H\3")
buf.write("H\3H\3H\3H\3H\3H\3H\5H\u037e\nH\3H\2\2I\2\4\6\b\n\f\16")
buf.write("\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDF")
buf.write("HJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086")
buf.write("\u0088\u008a\u008c\u008e\2\f\3\2\b\f\3\2\27\30\3\2\33")
buf.write("\'\5\2,,./\679\4\2\7\7:C\3\2IJ\3\2KN\3\2OP\3\2\4\4\3\2")
buf.write("\26\26\2\u03d8\2\u0093\3\2\2\2\4\u00a8\3\2\2\2\6\u00ab")
buf.write("\3\2\2\2\b\u00bd\3\2\2\2\n\u00d0\3\2\2\2\f\u00d2\3\2\2")
buf.write("\2\16\u00da\3\2\2\2\20\u00df\3\2\2\2\22\u00f9\3\2\2\2")
buf.write("\24\u00fb\3\2\2\2\26\u0108\3\2\2\2\30\u010a\3\2\2\2\32")
buf.write("\u010d\3\2\2\2\34\u0111\3\2\2\2\36\u0117\3\2\2\2 \u011b")
buf.write("\3\2\2\2\"\u012a\3\2\2\2$\u013f\3\2\2\2&\u0141\3\2\2\2")
buf.write("(\u0149\3\2\2\2*\u014e\3\2\2\2,\u015e\3\2\2\2.\u0172\3")
buf.write("\2\2\2\60\u0184\3\2\2\2\62\u0192\3\2\2\2\64\u0194\3\2")
buf.write("\2\2\66\u019c\3\2\2\28\u01b9\3\2\2\2:\u01bb\3\2\2\2<\u01c8")
buf.write("\3\2\2\2>\u01cf\3\2\2\2@\u01d6\3\2\2\2B\u01ea\3\2\2\2")
buf.write("D\u01f4\3\2\2\2F\u01f6\3\2\2\2H\u01fe\3\2\2\2J\u020c\3")
buf.write("\2\2\2L\u0216\3\2\2\2N\u0228\3\2\2\2P\u0239\3\2\2\2R\u023b")
buf.write("\3\2\2\2T\u025d\3\2\2\2V\u0265\3\2\2\2X\u026d\3\2\2\2")
buf.write("Z\u0289\3\2\2\2\\\u028b\3\2\2\2^\u0293\3\2\2\2`\u029a")
buf.write("\3\2\2\2b\u029c\3\2\2\2d\u029e\3\2\2\2f\u02a0\3\2\2\2")
buf.write("h\u02a9\3\2\2\2j\u02b1\3\2\2\2l\u02b9\3\2\2\2n\u02c1\3")
buf.write("\2\2\2p\u02c9\3\2\2\2r\u02d1\3\2\2\2t\u02d9\3\2\2\2v\u02e1")
buf.write("\3\2\2\2x\u02f4\3\2\2\2z\u02f7\3\2\2\2|\u0304\3\2\2\2")
buf.write("~\u030e\3\2\2\2\u0080\u0318\3\2\2\2\u0082\u0333\3\2\2")
buf.write("\2\u0084\u0335\3\2\2\2\u0086\u0342\3\2\2\2\u0088\u034a")
buf.write("\3\2\2\2\u008a\u035c\3\2\2\2\u008c\u036e\3\2\2\2\u008e")
buf.write("\u037d\3\2\2\2\u0090\u0092\5\4\3\2\u0091\u0090\3\2\2\2")
buf.write("\u0092\u0095\3\2\2\2\u0093\u0091\3\2\2\2\u0093\u0094\3")
buf.write("\2\2\2\u0094\3\3\2\2\2\u0095\u0093\3\2\2\2\u0096\u0098")
buf.write("\5\b\5\2\u0097\u0096\3\2\2\2\u0097\u0098\3\2\2\2\u0098")
buf.write("\u0099\3\2\2\2\u0099\u009d\5,\27\2\u009a\u009c\5\n\6\2")
buf.write("\u009b\u009a\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3")
buf.write("\2\2\2\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u009d")
buf.write("\3\2\2\2\u00a0\u00a1\7\3\2\2\u00a1\u00a9\3\2\2\2\u00a2")
buf.write("\u00a9\5\6\4\2\u00a3\u00a9\5\n\6\2\u00a4\u00a6\5\u0080")
buf.write("A\2\u00a5\u00a7\7\4\2\2\u00a6\u00a5\3\2\2\2\u00a6\u00a7")
buf.write("\3\2\2\2\u00a7\u00a9\3\2\2\2\u00a8\u0097\3\2\2\2\u00a8")
buf.write("\u00a2\3\2\2\2\u00a8\u00a3\3\2\2\2\u00a8\u00a4\3\2\2\2")
buf.write("\u00a9\5\3\2\2\2\u00aa\u00ac\5\b\5\2\u00ab\u00aa\3\2\2")
buf.write("\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad\3\2\2\2\u00ad\u00b6")
buf.write("\5,\27\2\u00ae\u00b0\5\n\6\2\u00af\u00ae\3\2\2\2\u00b0")
buf.write("\u00b1\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2")
buf.write("\u00b2\u00b3\3\2\2\2\u00b3\u00b4\5\u0084C\2\u00b4\u00b7")
buf.write("\3\2\2\2\u00b5\u00b7\5\u0084C\2\u00b6\u00af\3\2\2\2\u00b6")
buf.write("\u00b5\3\2\2\2\u00b7\u00b8\3\2\2\2\u00b8\u00b9\b\4\1\2")
buf.write("\u00b9\7\3\2\2\2\u00ba\u00be\5\20\t\2\u00bb\u00be\5\22")
buf.write("\n\2\u00bc\u00be\5*\26\2\u00bd\u00ba\3\2\2\2\u00bd\u00bb")
buf.write("\3\2\2\2\u00bd\u00bc\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf")
buf.write("\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\t\3\2\2\2\u00c1")
buf.write("\u00c3\7\5\2\2\u00c2\u00c4\5\b\5\2\u00c3\u00c2\3\2\2\2")
buf.write("\u00c3\u00c4\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\u00c6\5")
buf.write("\f\7\2\u00c6\u00c7\7\4\2\2\u00c7\u00c8\b\6\1\2\u00c8\u00d1")
buf.write("\3\2\2\2\u00c9\u00cb\5\b\5\2\u00ca\u00cc\5\f\7\2\u00cb")
buf.write("\u00ca\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\3\2\2\2")
buf.write("\u00cd\u00ce\7\4\2\2\u00ce\u00cf\b\6\1\2\u00cf\u00d1\3")
buf.write("\2\2\2\u00d0\u00c1\3\2\2\2\u00d0\u00c9\3\2\2\2\u00d1\13")
buf.write("\3\2\2\2\u00d2\u00d7\5\16\b\2\u00d3\u00d4\7\6\2\2\u00d4")
buf.write("\u00d6\5\16\b\2\u00d5\u00d3\3\2\2\2\u00d6\u00d9\3\2\2")
buf.write("\2\u00d7\u00d5\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\r\3\2")
buf.write("\2\2\u00d9\u00d7\3\2\2\2\u00da\u00dd\5,\27\2\u00db\u00dc")
buf.write("\7\7\2\2\u00dc\u00de\5D#\2\u00dd\u00db\3\2\2\2\u00dd\u00de")
buf.write("\3\2\2\2\u00de\17\3\2\2\2\u00df\u00e0\t\2\2\2\u00e0\21")
buf.write("\3\2\2\2\u00e1\u00fa\7\r\2\2\u00e2\u00fa\7\16\2\2\u00e3")
buf.write("\u00fa\7\17\2\2\u00e4\u00fa\7\20\2\2\u00e5\u00fa\7\21")
buf.write("\2\2\u00e6\u00fa\7\22\2\2\u00e7\u00fa\7\23\2\2\u00e8\u00fa")
buf.write("\7\24\2\2\u00e9\u00fa\7\25\2\2\u00ea\u00eb\5\26\f\2\u00eb")
buf.write("\u00ec\b\n\1\2\u00ec\u00fa\3\2\2\2\u00ed\u00ee\5$\23\2")
buf.write("\u00ee\u00ef\b\n\1\2\u00ef\u00fa\3\2\2\2\u00f0\u00f4\7")
buf.write("_\2\2\u00f1\u00f3\5*\26\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6")
buf.write("\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5")
buf.write("\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00fa\5,\27\2")
buf.write("\u00f8\u00fa\5\24\13\2\u00f9\u00e1\3\2\2\2\u00f9\u00e2")
buf.write("\3\2\2\2\u00f9\u00e3\3\2\2\2\u00f9\u00e4\3\2\2\2\u00f9")
buf.write("\u00e5\3\2\2\2\u00f9\u00e6\3\2\2\2\u00f9\u00e7\3\2\2\2")
buf.write("\u00f9\u00e8\3\2\2\2\u00f9\u00e9\3\2\2\2\u00f9\u00ea\3")
buf.write("\2\2\2\u00f9\u00ed\3\2\2\2\u00f9\u00f0\3\2\2\2\u00f9\u00f8")
buf.write("\3\2\2\2\u00fa\23\3\2\2\2\u00fb\u00fc\7_\2\2\u00fc\25")
buf.write("\3\2\2\2\u00fd\u00ff\5\30\r\2\u00fe\u0100\7_\2\2\u00ff")
buf.write("\u00fe\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0101\3\2\2\2")
buf.write("\u0101\u0102\7\3\2\2\u0102\u0103\5\32\16\2\u0103\u0104")
buf.write("\7\26\2\2\u0104\u0109\3\2\2\2\u0105\u0106\5\30\r\2\u0106")
buf.write("\u0107\7_\2\2\u0107\u0109\3\2\2\2\u0108\u00fd\3\2\2\2")
buf.write("\u0108\u0105\3\2\2\2\u0109\27\3\2\2\2\u010a\u010b\t\3")
buf.write("\2\2\u010b\31\3\2\2\2\u010c\u010e\5\34\17\2\u010d\u010c")
buf.write("\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u010d\3\2\2\2\u010f")
buf.write("\u0110\3\2\2\2\u0110\33\3\2\2\2\u0111\u0112\5\36\20\2")
buf.write("\u0112\u0113\5 \21\2\u0113\u0114\7\4\2\2\u0114\35\3\2")
buf.write("\2\2\u0115\u0118\5*\26\2\u0116\u0118\5\22\n\2\u0117\u0115")
buf.write("\3\2\2\2\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119")
buf.write("\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\37\3\2\2\2\u011b")
buf.write("\u0120\5\"\22\2\u011c\u011d\7\6\2\2\u011d\u011f\5\"\22")
buf.write("\2\u011e\u011c\3\2\2\2\u011f\u0122\3\2\2\2\u0120\u011e")
buf.write("\3\2\2\2\u0120\u0121\3\2\2\2\u0121!\3\2\2\2\u0122\u0120")
buf.write("\3\2\2\2\u0123\u0126\5,\27\2\u0124\u0125\7\31\2\2\u0125")
buf.write("\u0127\5^\60\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2")
buf.write("\u0127\u012b\3\2\2\2\u0128\u0129\7\31\2\2\u0129\u012b")
buf.write("\5^\60\2\u012a\u0123\3\2\2\2\u012a\u0128\3\2\2\2\u012b")
buf.write("#\3\2\2\2\u012c\u012d\7\32\2\2\u012d\u012e\7\3\2\2\u012e")
buf.write("\u0130\5&\24\2\u012f\u0131\7\6\2\2\u0130\u012f\3\2\2\2")
buf.write("\u0130\u0131\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0133\7")
buf.write("\26\2\2\u0133\u0140\3\2\2\2\u0134\u0135\7\32\2\2\u0135")
buf.write("\u0136\7_\2\2\u0136\u0137\7\3\2\2\u0137\u0139\5&\24\2")
buf.write("\u0138\u013a\7\6\2\2\u0139\u0138\3\2\2\2\u0139\u013a\3")
buf.write("\2\2\2\u013a\u013b\3\2\2\2\u013b\u013c\7\26\2\2\u013c")
buf.write("\u0140\3\2\2\2\u013d\u013e\7\32\2\2\u013e\u0140\7_\2\2")
buf.write("\u013f\u012c\3\2\2\2\u013f\u0134\3\2\2\2\u013f\u013d\3")
buf.write("\2\2\2\u0140%\3\2\2\2\u0141\u0146\5(\25\2\u0142\u0143")
buf.write("\7\6\2\2\u0143\u0145\5(\25\2\u0144\u0142\3\2\2\2\u0145")
buf.write("\u0148\3\2\2\2\u0146\u0144\3\2\2\2\u0146\u0147\3\2\2\2")
buf.write("\u0147\'\3\2\2\2\u0148\u0146\3\2\2\2\u0149\u014c\7_\2")
buf.write("\2\u014a\u014b\7\7\2\2\u014b\u014d\5^\60\2\u014c\u014a")
buf.write("\3\2\2\2\u014c\u014d\3\2\2\2\u014d)\3\2\2\2\u014e\u014f")
buf.write("\t\4\2\2\u014f+\3\2\2\2\u0150\u0152\5\62\32\2\u0151\u0150")
buf.write("\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0154\3\2\2\2\u0153")
buf.write("\u0155\7$\2\2\u0154\u0153\3\2\2\2\u0154\u0155\3\2\2\2")
buf.write("\u0155\u0157\3\2\2\2\u0156\u0158\7%\2\2\u0157\u0156\3")
buf.write("\2\2\2\u0157\u0158\3\2\2\2\u0158\u015a\3\2\2\2\u0159\u015b")
buf.write("\7&\2\2\u015a\u0159\3\2\2\2\u015a\u015b\3\2\2\2\u015b")
buf.write("\u015c\3\2\2\2\u015c\u015f\5.\30\2\u015d\u015f\5\62\32")
buf.write("\2\u015e\u0151\3\2\2\2\u015e\u015d\3\2\2\2\u015f-\3\2")
buf.write("\2\2\u0160\u0164\7_\2\2\u0161\u0163\5\60\31\2\u0162\u0161")
buf.write("\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164")
buf.write("\u0165\3\2\2\2\u0165\u0173\3\2\2\2\u0166\u0164\3\2\2\2")
buf.write("\u0167\u0169\7(\2\2\u0168\u016a\7$\2\2\u0169\u0168\3\2")
buf.write("\2\2\u0169\u016a\3\2\2\2\u016a\u016b\3\2\2\2\u016b\u016c")
buf.write("\5,\27\2\u016c\u016e\7)\2\2\u016d\u016f\5\60\31\2\u016e")
buf.write("\u016d\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u016e\3\2\2\2")
buf.write("\u0170\u0171\3\2\2\2\u0171\u0173\3\2\2\2\u0172\u0160\3")
buf.write("\2\2\2\u0172\u0167\3\2\2\2\u0173/\3\2\2\2\u0174\u0175")
buf.write("\7*\2\2\u0175\u0176\5^\60\2\u0176\u0177\7+\2\2\u0177\u0185")
buf.write("\3\2\2\2\u0178\u0179\7*\2\2\u0179\u0185\7+\2\2\u017a\u017b")
buf.write("\7(\2\2\u017b\u017c\5\64\33\2\u017c\u017d\7)\2\2\u017d")
buf.write("\u0185\3\2\2\2\u017e\u017f\7(\2\2\u017f\u0180\5:\36\2")
buf.write("\u0180\u0181\7)\2\2\u0181\u0185\3\2\2\2\u0182\u0183\7")
buf.write("(\2\2\u0183\u0185\7)\2\2\u0184\u0174\3\2\2\2\u0184\u0178")
buf.write("\3\2\2\2\u0184\u017a\3\2\2\2\u0184\u017e\3\2\2\2\u0184")
buf.write("\u0182\3\2\2\2\u0185\61\3\2\2\2\u0186\u0188\7,\2\2\u0187")
buf.write("\u0189\5*\26\2\u0188\u0187\3\2\2\2\u0189\u018a\3\2\2\2")
buf.write("\u018a\u0188\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018d\3")
buf.write("\2\2\2\u018c\u018e\5\62\32\2\u018d\u018c\3\2\2\2\u018d")
buf.write("\u018e\3\2\2\2\u018e\u0193\3\2\2\2\u018f\u0190\7,\2\2")
buf.write("\u0190\u0193\5\62\32\2\u0191\u0193\7,\2\2\u0192\u0186")
buf.write("\3\2\2\2\u0192\u018f\3\2\2\2\u0192\u0191\3\2\2\2\u0193")
buf.write("\63\3\2\2\2\u0194\u019a\5\66\34\2\u0195\u0197\7\6\2\2")
buf.write("\u0196\u0198\7\37\2\2\u0197\u0196\3\2\2\2\u0197\u0198")
buf.write("\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u019b\7-\2\2\u019a")
buf.write("\u0195\3\2\2\2\u019a\u019b\3\2\2\2\u019b\65\3\2\2\2\u019c")
buf.write("\u01a4\58\35\2\u019d\u019f\7\6\2\2\u019e\u01a0\7\37\2")
buf.write("\2\u019f\u019e\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a1")
buf.write("\3\2\2\2\u01a1\u01a3\58\35\2\u01a2\u019d\3\2\2\2\u01a3")
buf.write("\u01a6\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a4\u01a5\3\2\2\2")
buf.write("\u01a5\67\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a7\u01ac\5\b")
buf.write("\5\2\u01a8\u01ab\5,\27\2\u01a9\u01ab\5> \2\u01aa\u01a8")
buf.write("\3\2\2\2\u01aa\u01a9\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac")
buf.write("\u01aa\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b0\3\2\2\2")
buf.write("\u01ae\u01ac\3\2\2\2\u01af\u01b1\7\37\2\2\u01b0\u01af")
buf.write("\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01ba\3\2\2\2\u01b2")
buf.write("\u01b4\5\62\32\2\u01b3\u01b2\3\2\2\2\u01b4\u01b7\3\2\2")
buf.write("\2\u01b5\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b8")
buf.write("\3\2\2\2\u01b7\u01b5\3\2\2\2\u01b8\u01ba\7_\2\2\u01b9")
buf.write("\u01a7\3\2\2\2\u01b9\u01b5\3\2\2\2\u01ba9\3\2\2\2\u01bb")
buf.write("\u01c0\7_\2\2\u01bc\u01bd\7\6\2\2\u01bd\u01bf\7_\2\2\u01be")
buf.write("\u01bc\3\2\2\2\u01bf\u01c2\3\2\2\2\u01c0\u01be\3\2\2\2")
buf.write("\u01c0\u01c1\3\2\2\2\u01c1;\3\2\2\2\u01c2\u01c0\3\2\2")
buf.write("\2\u01c3\u01c5\5\36\20\2\u01c4\u01c6\5> \2\u01c5\u01c4")
buf.write("\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c9\3\2\2\2\u01c7")
buf.write("\u01c9\5\24\13\2\u01c8\u01c3\3\2\2\2\u01c8\u01c7\3\2\2")
buf.write("\2\u01c9=\3\2\2\2\u01ca\u01cc\5\62\32\2\u01cb\u01cd\5")
buf.write("@!\2\u01cc\u01cb\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01d0")
buf.write("\3\2\2\2\u01ce\u01d0\5@!\2\u01cf\u01ca\3\2\2\2\u01cf\u01ce")
buf.write("\3\2\2\2\u01d0?\3\2\2\2\u01d1\u01d2\7(\2\2\u01d2\u01d3")
buf.write("\5> \2\u01d3\u01d4\7)\2\2\u01d4\u01d7\3\2\2\2\u01d5\u01d7")
buf.write("\5B\"\2\u01d6\u01d1\3\2\2\2\u01d6\u01d5\3\2\2\2\u01d7")
buf.write("\u01db\3\2\2\2\u01d8\u01da\5B\"\2\u01d9\u01d8\3\2\2\2")
buf.write("\u01da\u01dd\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3")
buf.write("\2\2\2\u01dcA\3\2\2\2\u01dd\u01db\3\2\2\2\u01de\u01df")
buf.write("\7*\2\2\u01df\u01eb\7+\2\2\u01e0\u01e1\7*\2\2\u01e1\u01e2")
buf.write("\5^\60\2\u01e2\u01e3\7+\2\2\u01e3\u01eb\3\2\2\2\u01e4")
buf.write("\u01e5\7(\2\2\u01e5\u01eb\7)\2\2\u01e6\u01e7\7(\2\2\u01e7")
buf.write("\u01e8\5\64\33\2\u01e8\u01e9\7)\2\2\u01e9\u01eb\3\2\2")
buf.write("\2\u01ea\u01de\3\2\2\2\u01ea\u01e0\3\2\2\2\u01ea\u01e4")
buf.write("\3\2\2\2\u01ea\u01e6\3\2\2\2\u01ebC\3\2\2\2\u01ec\u01f5")
buf.write("\5`\61\2\u01ed\u01ee\7\3\2\2\u01ee\u01f0\5F$\2\u01ef\u01f1")
buf.write("\7\6\2\2\u01f0\u01ef\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1")
buf.write("\u01f2\3\2\2\2\u01f2\u01f3\7\26\2\2\u01f3\u01f5\3\2\2")
buf.write("\2\u01f4\u01ec\3\2\2\2\u01f4\u01ed\3\2\2\2\u01f5E\3\2")
buf.write("\2\2\u01f6\u01fb\5D#\2\u01f7\u01f8\7\6\2\2\u01f8\u01fa")
buf.write("\5D#\2\u01f9\u01f7\3\2\2\2\u01fa\u01fd\3\2\2\2\u01fb\u01f9")
buf.write("\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fcG\3\2\2\2\u01fd\u01fb")
buf.write("\3\2\2\2\u01fe\u0200\5`\61\2\u01ff\u0201\7\37\2\2\u0200")
buf.write("\u01ff\3\2\2\2\u0200\u0201\3\2\2\2\u0201\u0209\3\2\2\2")
buf.write("\u0202\u0203\7\6\2\2\u0203\u0205\5`\61\2\u0204\u0206\7")
buf.write("\37\2\2\u0205\u0204\3\2\2\2\u0205\u0206\3\2\2\2\u0206")
buf.write("\u0208\3\2\2\2\u0207\u0202\3\2\2\2\u0208\u020b\3\2\2\2")
buf.write("\u0209\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020aI\3\2\2")
buf.write("\2\u020b\u0209\3\2\2\2\u020c\u0213\5L\'\2\u020d\u020e")
buf.write("\7.\2\2\u020e\u0212\5L\'\2\u020f\u0210\7/\2\2\u0210\u0212")
buf.write("\5L\'\2\u0211\u020d\3\2\2\2\u0211\u020f\3\2\2\2\u0212")
buf.write("\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213\u0214\3\2\2\2")
buf.write("\u0214K\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u021f\5N(\2")
buf.write("\u0217\u0218\7,\2\2\u0218\u021e\5N(\2\u0219\u021a\7\60")
buf.write("\2\2\u021a\u021e\5N(\2\u021b\u021c\7\61\2\2\u021c\u021e")
buf.write("\5N(\2\u021d\u0217\3\2\2\2\u021d\u0219\3\2\2\2\u021d\u021b")
buf.write("\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d\3\2\2\2\u021f")
buf.write("\u0220\3\2\2\2\u0220M\3\2\2\2\u0221\u021f\3\2\2\2\u0222")
buf.write("\u0223\7(\2\2\u0223\u0224\5<\37\2\u0224\u0225\7)\2\2\u0225")
buf.write("\u0226\5N(\2\u0226\u0229\3\2\2\2\u0227\u0229\5P)\2\u0228")
buf.write("\u0222\3\2\2\2\u0228\u0227\3\2\2\2\u0229O\3\2\2\2\u022a")
buf.write("\u023a\5R*\2\u022b\u022c\7\62\2\2\u022c\u023a\5P)\2\u022d")
buf.write("\u022e\7\63\2\2\u022e\u023a\5P)\2\u022f\u0230\5V,\2\u0230")
buf.write("\u0231\5N(\2\u0231\u023a\3\2\2\2\u0232\u0233\7\64\2\2")
buf.write("\u0233\u023a\5P)\2\u0234\u0235\7\64\2\2\u0235\u0236\7")
buf.write("(\2\2\u0236\u0237\5<\37\2\u0237\u0238\7)\2\2\u0238\u023a")
buf.write("\3\2\2\2\u0239\u022a\3\2\2\2\u0239\u022b\3\2\2\2\u0239")
buf.write("\u022d\3\2\2\2\u0239\u022f\3\2\2\2\u0239\u0232\3\2\2\2")
buf.write("\u0239\u0234\3\2\2\2\u023aQ\3\2\2\2\u023b\u023c\5X-\2")
buf.write("\u023c\u025a\b*\1\2\u023d\u023e\7*\2\2\u023e\u023f\5\\")
buf.write("/\2\u023f\u0240\7+\2\2\u0240\u0259\3\2\2\2\u0241\u0242")
buf.write("\7(\2\2\u0242\u0243\7)\2\2\u0243\u0259\b*\1\2\u0244\u0245")
buf.write("\7(\2\2\u0245\u0246\5H%\2\u0246\u0247\7)\2\2\u0247\u0248")
buf.write("\b*\1\2\u0248\u0259\3\2\2\2\u0249\u024a\7(\2\2\u024a\u024b")
buf.write("\5T+\2\u024b\u024c\7)\2\2\u024c\u0259\3\2\2\2\u024d\u024e")
buf.write("\7\65\2\2\u024e\u024f\7_\2\2\u024f\u0259\b*\1\2\u0250")
buf.write("\u0251\7,\2\2\u0251\u0252\7_\2\2\u0252\u0259\b*\1\2\u0253")
buf.write("\u0254\7\66\2\2\u0254\u0255\7_\2\2\u0255\u0259\b*\1\2")
buf.write("\u0256\u0259\7\62\2\2\u0257\u0259\7\63\2\2\u0258\u023d")
buf.write("\3\2\2\2\u0258\u0241\3\2\2\2\u0258\u0244\3\2\2\2\u0258")
buf.write("\u0249\3\2\2\2\u0258\u024d\3\2\2\2\u0258\u0250\3\2\2\2")
buf.write("\u0258\u0253\3\2\2\2\u0258\u0256\3\2\2\2\u0258\u0257\3")
buf.write("\2\2\2\u0259\u025c\3\2\2\2\u025a\u0258\3\2\2\2\u025a\u025b")
buf.write("\3\2\2\2\u025bS\3\2\2\2\u025c\u025a\3\2\2\2\u025d\u0262")
buf.write("\58\35\2\u025e\u025f\7\6\2\2\u025f\u0261\58\35\2\u0260")
buf.write("\u025e\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2\2\2")
buf.write("\u0262\u0263\3\2\2\2\u0263U\3\2\2\2\u0264\u0262\3\2\2")
buf.write("\2\u0265\u0266\t\5\2\2\u0266W\3\2\2\2\u0267\u026e\7_\2")
buf.write("\2\u0268\u026e\5Z.\2\u0269\u026a\7(\2\2\u026a\u026b\5")
buf.write("\\/\2\u026b\u026c\7)\2\2\u026c\u026e\3\2\2\2\u026d\u0267")
buf.write("\3\2\2\2\u026d\u0268\3\2\2\2\u026d\u0269\3\2\2\2\u026e")
buf.write("Y\3\2\2\2\u026f\u028a\7b\2\2\u0270\u028a\7d\2\2\u0271")
buf.write("\u028a\7c\2\2\u0272\u028a\7`\2\2\u0273\u0275\7_\2\2\u0274")
buf.write("\u0273\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2\2")
buf.write("\u0276\u0277\3\2\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3")
buf.write("\2\2\2\u0279\u027b\7a\2\2\u027a\u0279\3\2\2\2\u027b\u027c")
buf.write("\3\2\2\2\u027c\u027a\3\2\2\2\u027c\u027d\3\2\2\2\u027d")
buf.write("\u027f\3\2\2\2\u027e\u0276\3\2\2\2\u027f\u0280\3\2\2\2")
buf.write("\u0280\u027e\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0285\3")
buf.write("\2\2\2\u0282\u0284\7_\2\2\u0283\u0282\3\2\2\2\u0284\u0287")
buf.write("\3\2\2\2\u0285\u0283\3\2\2\2\u0285\u0286\3\2\2\2\u0286")
buf.write("\u028a\3\2\2\2\u0287\u0285\3\2\2\2\u0288\u028a\7e\2\2")
buf.write("\u0289\u026f\3\2\2\2\u0289\u0270\3\2\2\2\u0289\u0271\3")
buf.write("\2\2\2\u0289\u0272\3\2\2\2\u0289\u027e\3\2\2\2\u0289\u0288")
buf.write("\3\2\2\2\u028a[\3\2\2\2\u028b\u0290\5`\61\2\u028c\u028d")
buf.write("\7\6\2\2\u028d\u028f\5`\61\2\u028e\u028c\3\2\2\2\u028f")
buf.write("\u0292\3\2\2\2\u0290\u028e\3\2\2\2\u0290\u0291\3\2\2\2")
buf.write("\u0291]\3\2\2\2\u0292\u0290\3\2\2\2\u0293\u0294\5f\64")
buf.write("\2\u0294_\3\2\2\2\u0295\u0296\5b\62\2\u0296\u0297\5d\63")
buf.write("\2\u0297\u0298\5`\61\2\u0298\u029b\3\2\2\2\u0299\u029b")
buf.write("\5f\64\2\u029a\u0295\3\2\2\2\u029a\u0299\3\2\2\2\u029b")
buf.write("a\3\2\2\2\u029c\u029d\5P)\2\u029dc\3\2\2\2\u029e\u029f")
buf.write("\t\6\2\2\u029fe\3\2\2\2\u02a0\u02a7\5h\65\2\u02a1\u02a2")
buf.write("\7D\2\2\u02a2\u02a3\5\\/\2\u02a3\u02a4\7\31\2\2\u02a4")
buf.write("\u02a5\5f\64\2\u02a5\u02a6\b\64\1\2\u02a6\u02a8\3\2\2")
buf.write("\2\u02a7\u02a1\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8g\3\2")
buf.write("\2\2\u02a9\u02ae\5j\66\2\u02aa\u02ab\7E\2\2\u02ab\u02ad")
buf.write("\5j\66\2\u02ac\u02aa\3\2\2\2\u02ad\u02b0\3\2\2\2\u02ae")
buf.write("\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02afi\3\2\2\2\u02b0")
buf.write("\u02ae\3\2\2\2\u02b1\u02b6\5l\67\2\u02b2\u02b3\7F\2\2")
buf.write("\u02b3\u02b5\5l\67\2\u02b4\u02b2\3\2\2\2\u02b5\u02b8\3")
buf.write("\2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7k")
buf.write("\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9\u02be\5n8\2\u02ba\u02bb")
buf.write("\7G\2\2\u02bb\u02bd\5n8\2\u02bc\u02ba\3\2\2\2\u02bd\u02c0")
buf.write("\3\2\2\2\u02be\u02bc\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf")
buf.write("m\3\2\2\2\u02c0\u02be\3\2\2\2\u02c1\u02c6\5p9\2\u02c2")
buf.write("\u02c3\7H\2\2\u02c3\u02c5\5p9\2\u02c4\u02c2\3\2\2\2\u02c5")
buf.write("\u02c8\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c6\u02c7\3\2\2\2")
buf.write("\u02c7o\3\2\2\2\u02c8\u02c6\3\2\2\2\u02c9\u02ce\5r:\2")
buf.write("\u02ca\u02cb\7\67\2\2\u02cb\u02cd\5r:\2\u02cc\u02ca\3")
buf.write("\2\2\2\u02cd\u02d0\3\2\2\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf")
buf.write("\3\2\2\2\u02cfq\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d1\u02d6")
buf.write("\5t;\2\u02d2\u02d3\t\7\2\2\u02d3\u02d5\5t;\2\u02d4\u02d2")
buf.write("\3\2\2\2\u02d5\u02d8\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d6")
buf.write("\u02d7\3\2\2\2\u02d7s\3\2\2\2\u02d8\u02d6\3\2\2\2\u02d9")
buf.write("\u02de\5v<\2\u02da\u02db\t\b\2\2\u02db\u02dd\5v<\2\u02dc")
buf.write("\u02da\3\2\2\2\u02dd\u02e0\3\2\2\2\u02de\u02dc\3\2\2\2")
buf.write("\u02de\u02df\3\2\2\2\u02dfu\3\2\2\2\u02e0\u02de\3\2\2")
buf.write("\2\u02e1\u02e6\5J&\2\u02e2\u02e3\t\t\2\2\u02e3\u02e5\5")
buf.write("J&\2\u02e4\u02e2\3\2\2\2\u02e5\u02e8\3\2\2\2\u02e6\u02e4")
buf.write("\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7w\3\2\2\2\u02e8\u02e6")
buf.write("\3\2\2\2\u02e9\u02f5\5\u0082B\2\u02ea\u02f5\5\u0084C\2")
buf.write("\u02eb\u02f5\5\u0088E\2\u02ec\u02f5\5\u008aF\2\u02ed\u02f5")
buf.write("\5\u008cG\2\u02ee\u02f5\5\u008eH\2\u02ef\u02f5\5\u0080")
buf.write("A\2\u02f0\u02f5\5z>\2\u02f1\u02f5\5|?\2\u02f2\u02f5\5")
buf.write("~@\2\u02f3\u02f5\5\n\6\2\u02f4\u02e9\3\2\2\2\u02f4\u02ea")
buf.write("\3\2\2\2\u02f4\u02eb\3\2\2\2\u02f4\u02ec\3\2\2\2\u02f4")
buf.write("\u02ed\3\2\2\2\u02f4\u02ee\3\2\2\2\u02f4\u02ef\3\2\2\2")
buf.write("\u02f4\u02f0\3\2\2\2\u02f4\u02f1\3\2\2\2\u02f4\u02f2\3")
buf.write("\2\2\2\u02f4\u02f3\3\2\2\2\u02f5y\3\2\2\2\u02f6\u02f8")
buf.write("\7Q\2\2\u02f7\u02f6\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8")
buf.write("\u02f9\3\2\2\2\u02f9\u02fa\7_\2\2\u02fa\u02fe\7(\2\2\u02fb")
buf.write("\u02fd\n\n\2\2\u02fc\u02fb\3\2\2\2\u02fd\u0300\3\2\2\2")
buf.write("\u02fe\u02fc\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0301\3")
buf.write("\2\2\2\u0300\u02fe\3\2\2\2\u0301\u0302\7)\2\2\u0302\u0303")
buf.write("\7\4\2\2\u0303{\3\2\2\2\u0304\u0305\7R\2\2\u0305\u0309")
buf.write("\7\3\2\2\u0306\u0308\n\13\2\2\u0307\u0306\3\2\2\2\u0308")
buf.write("\u030b\3\2\2\2\u0309\u0307\3\2\2\2\u0309\u030a\3\2\2\2")
buf.write("\u030a\u030c\3\2\2\2\u030b\u0309\3\2\2\2\u030c\u030d\7")
buf.write("\26\2\2\u030d}\3\2\2\2\u030e\u030f\7S\2\2\u030f\u0313")
buf.write("\7\3\2\2\u0310\u0312\n\13\2\2\u0311\u0310\3\2\2\2\u0312")
buf.write("\u0315\3\2\2\2\u0313\u0311\3\2\2\2\u0313\u0314\3\2\2\2")
buf.write("\u0314\u0316\3\2\2\2\u0315\u0313\3\2\2\2\u0316\u0317\7")
buf.write("\26\2\2\u0317\177\3\2\2\2\u0318\u0319\7_\2\2\u0319\u031d")
buf.write("\7(\2\2\u031a\u031c\5\n\6\2\u031b\u031a\3\2\2\2\u031c")
buf.write("\u031f\3\2\2\2\u031d\u031b\3\2\2\2\u031d\u031e\3\2\2\2")
buf.write("\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u0320\u0322\5")
buf.write("\u0086D\2\u0321\u0320\3\2\2\2\u0321\u0322\3\2\2\2\u0322")
buf.write("\u0324\3\2\2\2\u0323\u0325\5\\/\2\u0324\u0323\3\2\2\2")
buf.write("\u0324\u0325\3\2\2\2\u0325\u0326\3\2\2\2\u0326\u0327\7")
buf.write(")\2\2\u0327\u0081\3\2\2\2\u0328\u0329\7_\2\2\u0329\u032a")
buf.write("\7\31\2\2\u032a\u0334\5x=\2\u032b\u032c\7T\2\2\u032c\u032d")
buf.write("\5^\60\2\u032d\u032e\7\31\2\2\u032e\u032f\5x=\2\u032f")
buf.write("\u0334\3\2\2\2\u0330\u0331\7U\2\2\u0331\u0332\7\31\2\2")
buf.write("\u0332\u0334\5x=\2\u0333\u0328\3\2\2\2\u0333\u032b\3\2")
buf.write("\2\2\u0333\u0330\3\2\2\2\u0334\u0083\3\2\2\2\u0335\u0339")
buf.write("\7\3\2\2\u0336\u0338\5\n\6\2\u0337\u0336\3\2\2\2\u0338")
buf.write("\u033b\3\2\2\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2")
buf.write("\u033a\u033d\3\2\2\2\u033b\u0339\3\2\2\2\u033c\u033e\5")
buf.write("\u0086D\2\u033d\u033c\3\2\2\2\u033d\u033e\3\2\2\2\u033e")
buf.write("\u033f\3\2\2\2\u033f\u0340\7\26\2\2\u0340\u0085\3\2\2")
buf.write("\2\u0341\u0343\5x=\2\u0342\u0341\3\2\2\2\u0343\u0344\3")
buf.write("\2\2\2\u0344\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345\u0087")
buf.write("\3\2\2\2\u0346\u034b\7\4\2\2\u0347\u0348\5\\/\2\u0348")
buf.write("\u0349\7\4\2\2\u0349\u034b\3\2\2\2\u034a\u0346\3\2\2\2")
buf.write("\u034a\u0347\3\2\2\2\u034b\u0089\3\2\2\2\u034c\u034d\7")
buf.write("V\2\2\u034d\u034e\7(\2\2\u034e\u034f\5\\/\2\u034f\u0350")
buf.write("\7)\2\2\u0350\u0351\bF\1\2\u0351\u0354\5x=\2\u0352\u0353")
buf.write("\7W\2\2\u0353\u0355\5x=\2\u0354\u0352\3\2\2\2\u0354\u0355")
buf.write("\3\2\2\2\u0355\u035d\3\2\2\2\u0356\u0357\7X\2\2\u0357")
buf.write("\u0358\7(\2\2\u0358\u0359\5\\/\2\u0359\u035a\7)\2\2\u035a")
buf.write("\u035b\5x=\2\u035b\u035d\3\2\2\2\u035c\u034c\3\2\2\2\u035c")
buf.write("\u0356\3\2\2\2\u035d\u008b\3\2\2\2\u035e\u035f\7Y\2\2")
buf.write("\u035f\u0360\7(\2\2\u0360\u0361\5\\/\2\u0361\u0362\7)")
buf.write("\2\2\u0362\u0363\5x=\2\u0363\u0364\bG\1\2\u0364\u036f")
buf.write("\3\2\2\2\u0365\u0366\7Z\2\2\u0366\u0367\5x=\2\u0367\u0368")
buf.write("\7Y\2\2\u0368\u0369\7(\2\2\u0369\u036a\5\\/\2\u036a\u036b")
buf.write("\7)\2\2\u036b\u036c\7\4\2\2\u036c\u036d\bG\1\2\u036d\u036f")
buf.write("\3\2\2\2\u036e\u035e\3\2\2\2\u036e\u0365\3\2\2\2\u036f")
buf.write("\u008d\3\2\2\2\u0370\u0371\7[\2\2\u0371\u0372\7_\2\2\u0372")
buf.write("\u037e\7\4\2\2\u0373\u0374\7\\\2\2\u0374\u037e\7\4\2\2")
buf.write("\u0375\u0376\7]\2\2\u0376\u037e\7\4\2\2\u0377\u0378\7")
buf.write("^\2\2\u0378\u037e\7\4\2\2\u0379\u037a\7^\2\2\u037a\u037b")
buf.write("\5\\/\2\u037b\u037c\7\4\2\2\u037c\u037e\3\2\2\2\u037d")
buf.write("\u0370\3\2\2\2\u037d\u0373\3\2\2\2\u037d\u0375\3\2\2\2")
buf.write("\u037d\u0377\3\2\2\2\u037d\u0379\3\2\2\2\u037e\u008f\3")
buf.write("\2\2\2o\u0093\u0097\u009d\u00a6\u00a8\u00ab\u00b1\u00b6")
buf.write("\u00bd\u00bf\u00c3\u00cb\u00d0\u00d7\u00dd\u00f4\u00f9")
buf.write("\u00ff\u0108\u010f\u0117\u0119\u0120\u0126\u012a\u0130")
buf.write("\u0139\u013f\u0146\u014c\u0151\u0154\u0157\u015a\u015e")
buf.write("\u0164\u0169\u0170\u0172\u0184\u018a\u018d\u0192\u0197")
buf.write("\u019a\u019f\u01a4\u01aa\u01ac\u01b0\u01b5\u01b9\u01c0")
buf.write("\u01c5\u01c8\u01cc\u01cf\u01d6\u01db\u01ea\u01f0\u01f4")
buf.write("\u01fb\u0200\u0205\u0209\u0211\u0213\u021d\u021f\u0228")
buf.write("\u0239\u0258\u025a\u0262\u026d\u0276\u027c\u0280\u0285")
buf.write("\u0289\u0290\u029a\u02a7\u02ae\u02b6\u02be\u02c6\u02ce")
buf.write("\u02d6\u02de\u02e6\u02f4\u02f7\u02fe\u0309\u0313\u031d")
buf.write("\u0321\u0324\u0333\u0339\u033d\u0344\u034a\u0354\u035c")
buf.write("\u036e\u037d")
return buf.getvalue()
class CParser ( Parser ):
grammarFileName = "C.g4"
atn = ATNDeserializer().deserialize(serializedATN())
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
sharedContextCache = PredictionContextCache()
literalNames = [ "<INVALID>", "'{'", "';'", "'typedef'", "','", "'='",
"'extern'", "'static'", "'auto'", "'register'", "'STATIC'",
"'void'", "'char'", "'short'", "'int'", "'long'", "'float'",
"'double'", "'signed'", "'unsigned'", "'}'", "'struct'",
"'union'", "':'", "'enum'", "'const'", "'volatile'",
"'IN'", "'OUT'", "'OPTIONAL'", "'CONST'", "'UNALIGNED'",
"'VOLATILE'", "'GLOBAL_REMOVE_IF_UNREFERENCED'", "'EFIAPI'",
"'EFI_BOOTSERVICE'", "'EFI_RUNTIMESERVICE'", "'PACKED'",
"'('", "')'", "'['", "']'", "'*'", "'...'", "'+'",
"'-'", "'/'", "'%'", "'++'", "'--'", "'sizeof'", "'.'",
"'->'", "'&'", "'~'", "'!'", "'*='", "'/='", "'%='",
"'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='",
"'?'", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='",
"'<'", "'>'", "'<='", "'>='", "'<<'", "'>>'", "'__asm__'",
"'_asm'", "'__asm'", "'case'", "'default'", "'if'",
"'else'", "'switch'", "'while'", "'do'", "'goto'",
"'continue'", "'break'", "'return'" ]
symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "IDENTIFIER", "CHARACTER_LITERAL", "STRING_LITERAL",
"HEX_LITERAL", "DECIMAL_LITERAL", "OCTAL_LITERAL",
"FLOATING_POINT_LITERAL", "WS", "BS", "UnicodeVocabulary",
"COMMENT", "LINE_COMMENT", "LINE_COMMAND" ]
RULE_translation_unit = 0
RULE_external_declaration = 1
RULE_function_definition = 2
RULE_declaration_specifiers = 3
RULE_declaration = 4
RULE_init_declarator_list = 5
RULE_init_declarator = 6
RULE_storage_class_specifier = 7
RULE_type_specifier = 8
RULE_type_id = 9
RULE_struct_or_union_specifier = 10
RULE_struct_or_union = 11
RULE_struct_declaration_list = 12
RULE_struct_declaration = 13
RULE_specifier_qualifier_list = 14
RULE_struct_declarator_list = 15
RULE_struct_declarator = 16
RULE_enum_specifier = 17
RULE_enumerator_list = 18
RULE_enumerator = 19
RULE_type_qualifier = 20
RULE_declarator = 21
RULE_direct_declarator = 22
RULE_declarator_suffix = 23
RULE_pointer = 24
RULE_parameter_type_list = 25
RULE_parameter_list = 26
RULE_parameter_declaration = 27
RULE_identifier_list = 28
RULE_type_name = 29
RULE_abstract_declarator = 30
RULE_direct_abstract_declarator = 31
RULE_abstract_declarator_suffix = 32
RULE_initializer = 33
RULE_initializer_list = 34
RULE_argument_expression_list = 35
RULE_additive_expression = 36
RULE_multiplicative_expression = 37
RULE_cast_expression = 38
RULE_unary_expression = 39
RULE_postfix_expression = 40
RULE_macro_parameter_list = 41
RULE_unary_operator = 42
RULE_primary_expression = 43
RULE_constant = 44
RULE_expression = 45
RULE_constant_expression = 46
RULE_assignment_expression = 47
RULE_lvalue = 48
RULE_assignment_operator = 49
RULE_conditional_expression = 50
RULE_logical_or_expression = 51
RULE_logical_and_expression = 52
RULE_inclusive_or_expression = 53
RULE_exclusive_or_expression = 54
RULE_and_expression = 55
RULE_equality_expression = 56
RULE_relational_expression = 57
RULE_shift_expression = 58
RULE_statement = 59
RULE_asm2_statement = 60
RULE_asm1_statement = 61
RULE_asm_statement = 62
RULE_macro_statement = 63
RULE_labeled_statement = 64
RULE_compound_statement = 65
RULE_statement_list = 66
RULE_expression_statement = 67
RULE_selection_statement = 68
RULE_iteration_statement = 69
RULE_jump_statement = 70
ruleNames = [ "translation_unit", "external_declaration", "function_definition",
"declaration_specifiers", "declaration", "init_declarator_list",
"init_declarator", "storage_class_specifier", "type_specifier",
"type_id", "struct_or_union_specifier", "struct_or_union",
"struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
"struct_declarator_list", "struct_declarator", "enum_specifier",
"enumerator_list", "enumerator", "type_qualifier", "declarator",
"direct_declarator", "declarator_suffix", "pointer",
"parameter_type_list", "parameter_list", "parameter_declaration",
"identifier_list", "type_name", "abstract_declarator",
"direct_abstract_declarator", "abstract_declarator_suffix",
"initializer", "initializer_list", "argument_expression_list",
"additive_expression", "multiplicative_expression", "cast_expression",
"unary_expression", "postfix_expression", "macro_parameter_list",
"unary_operator", "primary_expression", "constant", "expression",
"constant_expression", "assignment_expression", "lvalue",
"assignment_operator", "conditional_expression", "logical_or_expression",
"logical_and_expression", "inclusive_or_expression",
"exclusive_or_expression", "and_expression", "equality_expression",
"relational_expression", "shift_expression", "statement",
"asm2_statement", "asm1_statement", "asm_statement",
"macro_statement", "labeled_statement", "compound_statement",
"statement_list", "expression_statement", "selection_statement",
"iteration_statement", "jump_statement" ]
EOF = Token.EOF
T__0=1
T__1=2
T__2=3
T__3=4
T__4=5
T__5=6
T__6=7
T__7=8
T__8=9
T__9=10
T__10=11
T__11=12
T__12=13
T__13=14
T__14=15
T__15=16
T__16=17
T__17=18
T__18=19
T__19=20
T__20=21
T__21=22
T__22=23
T__23=24
T__24=25
T__25=26
T__26=27
T__27=28
T__28=29
T__29=30
T__30=31
T__31=32
T__32=33
T__33=34
T__34=35
T__35=36
T__36=37
T__37=38
T__38=39
T__39=40
T__40=41
T__41=42
T__42=43
T__43=44
T__44=45
T__45=46
T__46=47
T__47=48
T__48=49
T__49=50
T__50=51
T__51=52
T__52=53
T__53=54
T__54=55
T__55=56
T__56=57
T__57=58
T__58=59
T__59=60
T__60=61
T__61=62
T__62=63
T__63=64
T__64=65
T__65=66
T__66=67
T__67=68
T__68=69
T__69=70
T__70=71
T__71=72
T__72=73
T__73=74
T__74=75
T__75=76
T__76=77
T__77=78
T__78=79
T__79=80
T__80=81
T__81=82
T__82=83
T__83=84
T__84=85
T__85=86
T__86=87
T__87=88
T__88=89
T__89=90
T__90=91
T__91=92
IDENTIFIER=93
CHARACTER_LITERAL=94
STRING_LITERAL=95
HEX_LITERAL=96
DECIMAL_LITERAL=97
OCTAL_LITERAL=98
FLOATING_POINT_LITERAL=99
WS=100
BS=101
UnicodeVocabulary=102
COMMENT=103
LINE_COMMENT=104
LINE_COMMAND=105
# @param input Type: TokenStream
# @param output= sys.stdout Type: TextIO
def __init__(self,input,output= sys.stdout):
super().__init__(input, output)
self.checkVersion("4.7.1")
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
self._predicates = None
def printTokenInfo(self,line,offset,tokenText):
print(str(line)+ ',' + str(offset) + ':' + str(tokenText))
def StorePredicateExpression(self,StartLine,StartOffset,EndLine,EndOffset,Text):
PredExp = CodeFragment.PredicateExpression(Text, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.PredicateExpressionList.append(PredExp)
def StoreEnumerationDefinition(self,StartLine,StartOffset,EndLine,EndOffset,Text):
EnumDef = CodeFragment.EnumerationDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.EnumerationDefinitionList.append(EnumDef)
def StoreStructUnionDefinition(self,StartLine,StartOffset,EndLine,EndOffset,Text):
SUDef = CodeFragment.StructUnionDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.StructUnionDefinitionList.append(SUDef)
def StoreTypedefDefinition(self,StartLine,StartOffset,EndLine,EndOffset,FromText,ToText):
Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.TypedefDefinitionList.append(Tdef)
def StoreFunctionDefinition(self,StartLine,StartOffset,EndLine,EndOffset,ModifierText,DeclText,LeftBraceLine,LeftBraceOffset,DeclLine,DeclOffset):
FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))
FileProfile.FunctionDefinitionList.append(FuncDef)
def StoreVariableDeclaration(self,StartLine,StartOffset,EndLine,EndOffset,ModifierText,DeclText):
VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.VariableDeclarationList.append(VarDecl)
def StoreFunctionCalling(self,StartLine,StartOffset,EndLine,EndOffset,FuncName,ParamList):
FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))
FileProfile.FunctionCallingList.append(FuncCall)
class Translation_unitContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def external_declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.External_declarationContext)
else:
return self.getTypedRuleContext(CParser.External_declarationContext,i)
def getRuleIndex(self):
return CParser.RULE_translation_unit
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterTranslation_unit" ):
listener.enterTranslation_unit(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitTranslation_unit" ):
listener.exitTranslation_unit(self)
def translation_unit(self):
localctx = CParser.Translation_unitContext(self, self._ctx, self.state)
self.enterRule(localctx, 0, self.RULE_translation_unit)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 145
self._errHandler.sync(self)
_la = self._input.LA(1)
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:
self.state = 142
self.external_declaration()
self.state = 147
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class External_declarationContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
def declaration_specifiers(self):
return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)
# @param i=None Type: int
def declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.DeclarationContext)
else:
return self.getTypedRuleContext(CParser.DeclarationContext,i)
def function_definition(self):
return self.getTypedRuleContext(CParser.Function_definitionContext,0)
def macro_statement(self):
return self.getTypedRuleContext(CParser.Macro_statementContext,0)
def getRuleIndex(self):
return CParser.RULE_external_declaration
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterExternal_declaration" ):
listener.enterExternal_declaration(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitExternal_declaration" ):
listener.exitExternal_declaration(self)
def external_declaration(self):
localctx = CParser.External_declarationContext(self, self._ctx, self.state)
self.enterRule(localctx, 2, self.RULE_external_declaration)
self._la = 0 # Token type
try:
self.state = 166
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,4,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 149
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,1,self._ctx)
if la_ == 1:
self.state = 148
self.declaration_specifiers()
self.state = 151
self.declarator()
self.state = 155
self._errHandler.sync(self)
_la = self._input.LA(1)
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:
self.state = 152
self.declaration()
self.state = 157
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 158
self.match(CParser.T__0)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 160
self.function_definition()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 161
self.declaration()
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 162
self.macro_statement()
self.state = 164
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__1:
self.state = 163
self.match(CParser.T__1)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Function_definitionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.ModifierText = ''
self.DeclText = ''
self.LBLine = 0
self.LBOffset = 0
self.DeclLine = 0
self.DeclOffset = 0
self.d = None # Declaration_specifiersContext
self._declaration_specifiers = None # Declaration_specifiersContext
self._declarator = None # DeclaratorContext
self.a = None # Compound_statementContext
self.b = None # Compound_statementContext
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
def compound_statement(self):
return self.getTypedRuleContext(CParser.Compound_statementContext,0)
def declaration_specifiers(self):
return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)
# @param i=None Type: int
def declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.DeclarationContext)
else:
return self.getTypedRuleContext(CParser.DeclarationContext,i)
def getRuleIndex(self):
return CParser.RULE_function_definition
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterFunction_definition" ):
listener.enterFunction_definition(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitFunction_definition" ):
listener.exitFunction_definition(self)
def function_definition(self):
localctx = CParser.Function_definitionContext(self, self._ctx, self.state)
self.enterRule(localctx, 4, self.RULE_function_definition)
ModifierText = '';
DeclText = '';
LBLine = 0;
LBOffset = 0;
DeclLine = 0;
DeclOffset = 0;
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 169
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,5,self._ctx)
if la_ == 1:
self.state = 168
localctx.d = localctx._declaration_specifiers = self.declaration_specifiers()
self.state = 171
localctx._declarator = self.declarator()
self.state = 180
self._errHandler.sync(self)
token = self._input.LA(1)
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]:
self.state = 173
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 172
self.declaration()
self.state = 175
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
break
self.state = 177
localctx.a = self.compound_statement()
pass
elif token in [CParser.T__0]:
self.state = 179
localctx.b = self.compound_statement()
pass
else:
raise NoViableAltException(self)
if localctx.d != None:
ModifierText = (None if localctx._declaration_specifiers is None else self._input.getText((localctx._declaration_specifiers.start,localctx._declaration_specifiers.stop)))
else:
ModifierText = ''
DeclText = (None if localctx._declarator is None else self._input.getText((localctx._declarator.start,localctx._declarator.stop)))
DeclLine = (None if localctx._declarator is None else localctx._declarator.start).line
DeclOffset = (None if localctx._declarator is None else localctx._declarator.start).column
if localctx.a != None:
LBLine = (None if localctx.a is None else localctx.a.start).line
LBOffset = (None if localctx.a is None else localctx.a.start).column
else:
LBLine = (None if localctx.b is None else localctx.b.start).line
LBOffset = (None if localctx.b is None else localctx.b.start).column
self._ctx.stop = self._input.LT(-1)
self.StoreFunctionDefinition(localctx.start.line, localctx.start.column, localctx.stop.line, localctx.stop.column, ModifierText, DeclText, LBLine, LBOffset, DeclLine, DeclOffset)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Declaration_specifiersContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def storage_class_specifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Storage_class_specifierContext)
else:
return self.getTypedRuleContext(CParser.Storage_class_specifierContext,i)
# @param i=None Type: int
def type_specifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_specifierContext)
else:
return self.getTypedRuleContext(CParser.Type_specifierContext,i)
# @param i=None Type: int
def type_qualifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_qualifierContext)
else:
return self.getTypedRuleContext(CParser.Type_qualifierContext,i)
def getRuleIndex(self):
return CParser.RULE_declaration_specifiers
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDeclaration_specifiers" ):
listener.enterDeclaration_specifiers(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDeclaration_specifiers" ):
listener.exitDeclaration_specifiers(self)
def declaration_specifiers(self):
localctx = CParser.Declaration_specifiersContext(self, self._ctx, self.state)
self.enterRule(localctx, 6, self.RULE_declaration_specifiers)
try:
self.enterOuterAlt(localctx, 1)
self.state = 187
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 187
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__5, CParser.T__6, CParser.T__7, CParser.T__8, CParser.T__9]:
self.state = 184
self.storage_class_specifier()
pass
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]:
self.state = 185
self.type_specifier()
pass
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]:
self.state = 186
self.type_qualifier()
pass
else:
raise NoViableAltException(self)
else:
raise NoViableAltException(self)
self.state = 189
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,9,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class DeclarationContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.a = None # Token
self.b = None # Declaration_specifiersContext
self.c = None # Init_declarator_listContext
self.d = None # Token
self.s = None # Declaration_specifiersContext
self.t = None # Init_declarator_listContext
self.e = None # Token
def init_declarator_list(self):
return self.getTypedRuleContext(CParser.Init_declarator_listContext,0)
def declaration_specifiers(self):
return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)
def getRuleIndex(self):
return CParser.RULE_declaration
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDeclaration" ):
listener.enterDeclaration(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDeclaration" ):
listener.exitDeclaration(self)
def declaration(self):
localctx = CParser.DeclarationContext(self, self._ctx, self.state)
self.enterRule(localctx, 8, self.RULE_declaration)
self._la = 0 # Token type
try:
self.state = 206
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__2]:
self.enterOuterAlt(localctx, 1)
self.state = 191
localctx.a = self.match(CParser.T__2)
self.state = 193
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,10,self._ctx)
if la_ == 1:
self.state = 192
localctx.b = self.declaration_specifiers()
self.state = 195
localctx.c = self.init_declarator_list()
self.state = 196
localctx.d = self.match(CParser.T__1)
if localctx.b is not None:
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))))
else:
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))))
pass
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]:
self.enterOuterAlt(localctx, 2)
self.state = 199
localctx.s = self.declaration_specifiers()
self.state = 201
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 200
localctx.t = self.init_declarator_list()
self.state = 203
localctx.e = self.match(CParser.T__1)
if localctx.t is not None:
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))))
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Init_declarator_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def init_declarator(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Init_declaratorContext)
else:
return self.getTypedRuleContext(CParser.Init_declaratorContext,i)
def getRuleIndex(self):
return CParser.RULE_init_declarator_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterInit_declarator_list" ):
listener.enterInit_declarator_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitInit_declarator_list" ):
listener.exitInit_declarator_list(self)
def init_declarator_list(self):
localctx = CParser.Init_declarator_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 10, self.RULE_init_declarator_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 208
self.init_declarator()
self.state = 213
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 209
self.match(CParser.T__3)
self.state = 210
self.init_declarator()
self.state = 215
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Init_declaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
def initializer(self):
return self.getTypedRuleContext(CParser.InitializerContext,0)
def getRuleIndex(self):
return CParser.RULE_init_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterInit_declarator" ):
listener.enterInit_declarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitInit_declarator" ):
listener.exitInit_declarator(self)
def init_declarator(self):
localctx = CParser.Init_declaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 12, self.RULE_init_declarator)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 216
self.declarator()
self.state = 219
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__4:
self.state = 217
self.match(CParser.T__4)
self.state = 218
self.initializer()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Storage_class_specifierContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_storage_class_specifier
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStorage_class_specifier" ):
listener.enterStorage_class_specifier(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStorage_class_specifier" ):
listener.exitStorage_class_specifier(self)
def storage_class_specifier(self):
localctx = CParser.Storage_class_specifierContext(self, self._ctx, self.state)
self.enterRule(localctx, 14, self.RULE_storage_class_specifier)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 221
_la = self._input.LA(1)
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)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Type_specifierContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.s = None # Struct_or_union_specifierContext
self.e = None # Enum_specifierContext
def struct_or_union_specifier(self):
return self.getTypedRuleContext(CParser.Struct_or_union_specifierContext,0)
def enum_specifier(self):
return self.getTypedRuleContext(CParser.Enum_specifierContext,0)
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
# @param i=None Type: int
def type_qualifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_qualifierContext)
else:
return self.getTypedRuleContext(CParser.Type_qualifierContext,i)
def type_id(self):
return self.getTypedRuleContext(CParser.Type_idContext,0)
def getRuleIndex(self):
return CParser.RULE_type_specifier
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterType_specifier" ):
listener.enterType_specifier(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitType_specifier" ):
listener.exitType_specifier(self)
def type_specifier(self):
localctx = CParser.Type_specifierContext(self, self._ctx, self.state)
self.enterRule(localctx, 16, self.RULE_type_specifier)
try:
self.state = 247
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,16,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 223
self.match(CParser.T__10)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 224
self.match(CParser.T__11)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 225
self.match(CParser.T__12)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 226
self.match(CParser.T__13)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 227
self.match(CParser.T__14)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 228
self.match(CParser.T__15)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 229
self.match(CParser.T__16)
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 230
self.match(CParser.T__17)
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 231
self.match(CParser.T__18)
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 232
localctx.s = self.struct_or_union_specifier()
if localctx.s.stop is not None:
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))))
pass
elif la_ == 11:
self.enterOuterAlt(localctx, 11)
self.state = 235
localctx.e = self.enum_specifier()
if localctx.e.stop is not None:
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))))
pass
elif la_ == 12:
self.enterOuterAlt(localctx, 12)
self.state = 238
self.match(CParser.IDENTIFIER)
self.state = 242
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,15,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 239
self.type_qualifier()
self.state = 244
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,15,self._ctx)
self.state = 245
self.declarator()
pass
elif la_ == 13:
self.enterOuterAlt(localctx, 13)
self.state = 246
self.type_id()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Type_idContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def getRuleIndex(self):
return CParser.RULE_type_id
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterType_id" ):
listener.enterType_id(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitType_id" ):
listener.exitType_id(self)
def type_id(self):
localctx = CParser.Type_idContext(self, self._ctx, self.state)
self.enterRule(localctx, 18, self.RULE_type_id)
try:
self.enterOuterAlt(localctx, 1)
self.state = 249
self.match(CParser.IDENTIFIER)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_or_union_specifierContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def struct_or_union(self):
return self.getTypedRuleContext(CParser.Struct_or_unionContext,0)
def struct_declaration_list(self):
return self.getTypedRuleContext(CParser.Struct_declaration_listContext,0)
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def getRuleIndex(self):
return CParser.RULE_struct_or_union_specifier
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_or_union_specifier" ):
listener.enterStruct_or_union_specifier(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_or_union_specifier" ):
listener.exitStruct_or_union_specifier(self)
def struct_or_union_specifier(self):
localctx = CParser.Struct_or_union_specifierContext(self, self._ctx, self.state)
self.enterRule(localctx, 20, self.RULE_struct_or_union_specifier)
self._la = 0 # Token type
try:
self.state = 262
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,18,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 251
self.struct_or_union()
self.state = 253
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.IDENTIFIER:
self.state = 252
self.match(CParser.IDENTIFIER)
self.state = 255
self.match(CParser.T__0)
self.state = 256
self.struct_declaration_list()
self.state = 257
self.match(CParser.T__19)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 259
self.struct_or_union()
self.state = 260
self.match(CParser.IDENTIFIER)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_or_unionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_struct_or_union
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_or_union" ):
listener.enterStruct_or_union(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_or_union" ):
listener.exitStruct_or_union(self)
def struct_or_union(self):
localctx = CParser.Struct_or_unionContext(self, self._ctx, self.state)
self.enterRule(localctx, 22, self.RULE_struct_or_union)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 264
_la = self._input.LA(1)
if not(_la==CParser.T__20 or _la==CParser.T__21):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_declaration_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def struct_declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Struct_declarationContext)
else:
return self.getTypedRuleContext(CParser.Struct_declarationContext,i)
def getRuleIndex(self):
return CParser.RULE_struct_declaration_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_declaration_list" ):
listener.enterStruct_declaration_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_declaration_list" ):
listener.exitStruct_declaration_list(self)
def struct_declaration_list(self):
localctx = CParser.Struct_declaration_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 24, self.RULE_struct_declaration_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 267
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 266
self.struct_declaration()
self.state = 269
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
break
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_declarationContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def specifier_qualifier_list(self):
return self.getTypedRuleContext(CParser.Specifier_qualifier_listContext,0)
def struct_declarator_list(self):
return self.getTypedRuleContext(CParser.Struct_declarator_listContext,0)
def getRuleIndex(self):
return CParser.RULE_struct_declaration
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_declaration" ):
listener.enterStruct_declaration(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_declaration" ):
listener.exitStruct_declaration(self)
def struct_declaration(self):
localctx = CParser.Struct_declarationContext(self, self._ctx, self.state)
self.enterRule(localctx, 26, self.RULE_struct_declaration)
try:
self.enterOuterAlt(localctx, 1)
self.state = 271
self.specifier_qualifier_list()
self.state = 272
self.struct_declarator_list()
self.state = 273
self.match(CParser.T__1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Specifier_qualifier_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def type_qualifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_qualifierContext)
else:
return self.getTypedRuleContext(CParser.Type_qualifierContext,i)
# @param i=None Type: int
def type_specifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_specifierContext)
else:
return self.getTypedRuleContext(CParser.Type_specifierContext,i)
def getRuleIndex(self):
return CParser.RULE_specifier_qualifier_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterSpecifier_qualifier_list" ):
listener.enterSpecifier_qualifier_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitSpecifier_qualifier_list" ):
listener.exitSpecifier_qualifier_list(self)
def specifier_qualifier_list(self):
localctx = CParser.Specifier_qualifier_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 28, self.RULE_specifier_qualifier_list)
try:
self.enterOuterAlt(localctx, 1)
self.state = 277
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 277
self._errHandler.sync(self)
token = self._input.LA(1)
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]:
self.state = 275
self.type_qualifier()
pass
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]:
self.state = 276
self.type_specifier()
pass
else:
raise NoViableAltException(self)
else:
raise NoViableAltException(self)
self.state = 279
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,21,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_declarator_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def struct_declarator(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Struct_declaratorContext)
else:
return self.getTypedRuleContext(CParser.Struct_declaratorContext,i)
def getRuleIndex(self):
return CParser.RULE_struct_declarator_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_declarator_list" ):
listener.enterStruct_declarator_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_declarator_list" ):
listener.exitStruct_declarator_list(self)
def struct_declarator_list(self):
localctx = CParser.Struct_declarator_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 30, self.RULE_struct_declarator_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 281
self.struct_declarator()
self.state = 286
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 282
self.match(CParser.T__3)
self.state = 283
self.struct_declarator()
self.state = 288
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Struct_declaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
def constant_expression(self):
return self.getTypedRuleContext(CParser.Constant_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_struct_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStruct_declarator" ):
listener.enterStruct_declarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStruct_declarator" ):
listener.exitStruct_declarator(self)
def struct_declarator(self):
localctx = CParser.Struct_declaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 32, self.RULE_struct_declarator)
self._la = 0 # Token type
try:
self.state = 296
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__33, CParser.T__34, CParser.T__35, CParser.T__37, CParser.T__41, CParser.IDENTIFIER]:
self.enterOuterAlt(localctx, 1)
self.state = 289
self.declarator()
self.state = 292
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__22:
self.state = 290
self.match(CParser.T__22)
self.state = 291
self.constant_expression()
pass
elif token in [CParser.T__22]:
self.enterOuterAlt(localctx, 2)
self.state = 294
self.match(CParser.T__22)
self.state = 295
self.constant_expression()
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Enum_specifierContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def enumerator_list(self):
return self.getTypedRuleContext(CParser.Enumerator_listContext,0)
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def getRuleIndex(self):
return CParser.RULE_enum_specifier
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterEnum_specifier" ):
listener.enterEnum_specifier(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitEnum_specifier" ):
listener.exitEnum_specifier(self)
def enum_specifier(self):
localctx = CParser.Enum_specifierContext(self, self._ctx, self.state)
self.enterRule(localctx, 34, self.RULE_enum_specifier)
self._la = 0 # Token type
try:
self.state = 317
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,27,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 298
self.match(CParser.T__23)
self.state = 299
self.match(CParser.T__0)
self.state = 300
self.enumerator_list()
self.state = 302
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__3:
self.state = 301
self.match(CParser.T__3)
self.state = 304
self.match(CParser.T__19)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 306
self.match(CParser.T__23)
self.state = 307
self.match(CParser.IDENTIFIER)
self.state = 308
self.match(CParser.T__0)
self.state = 309
self.enumerator_list()
self.state = 311
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__3:
self.state = 310
self.match(CParser.T__3)
self.state = 313
self.match(CParser.T__19)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 315
self.match(CParser.T__23)
self.state = 316
self.match(CParser.IDENTIFIER)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Enumerator_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def enumerator(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.EnumeratorContext)
else:
return self.getTypedRuleContext(CParser.EnumeratorContext,i)
def getRuleIndex(self):
return CParser.RULE_enumerator_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterEnumerator_list" ):
listener.enterEnumerator_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitEnumerator_list" ):
listener.exitEnumerator_list(self)
def enumerator_list(self):
localctx = CParser.Enumerator_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 36, self.RULE_enumerator_list)
try:
self.enterOuterAlt(localctx, 1)
self.state = 319
self.enumerator()
self.state = 324
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,28,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 320
self.match(CParser.T__3)
self.state = 321
self.enumerator()
self.state = 326
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,28,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class EnumeratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def constant_expression(self):
return self.getTypedRuleContext(CParser.Constant_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_enumerator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterEnumerator" ):
listener.enterEnumerator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitEnumerator" ):
listener.exitEnumerator(self)
def enumerator(self):
localctx = CParser.EnumeratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 38, self.RULE_enumerator)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 327
self.match(CParser.IDENTIFIER)
self.state = 330
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__4:
self.state = 328
self.match(CParser.T__4)
self.state = 329
self.constant_expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Type_qualifierContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_type_qualifier
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterType_qualifier" ):
listener.enterType_qualifier(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitType_qualifier" ):
listener.exitType_qualifier(self)
def type_qualifier(self):
localctx = CParser.Type_qualifierContext(self, self._ctx, self.state)
self.enterRule(localctx, 40, self.RULE_type_qualifier)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 332
_la = self._input.LA(1)
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)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class DeclaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def direct_declarator(self):
return self.getTypedRuleContext(CParser.Direct_declaratorContext,0)
def pointer(self):
return self.getTypedRuleContext(CParser.PointerContext,0)
def getRuleIndex(self):
return CParser.RULE_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDeclarator" ):
listener.enterDeclarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDeclarator" ):
listener.exitDeclarator(self)
def declarator(self):
localctx = CParser.DeclaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 42, self.RULE_declarator)
self._la = 0 # Token type
try:
self.state = 348
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,34,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 335
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__41:
self.state = 334
self.pointer()
self.state = 338
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__33:
self.state = 337
self.match(CParser.T__33)
self.state = 341
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__34:
self.state = 340
self.match(CParser.T__34)
self.state = 344
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__35:
self.state = 343
self.match(CParser.T__35)
self.state = 346
self.direct_declarator()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 347
self.pointer()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Direct_declaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
# @param i=None Type: int
def declarator_suffix(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Declarator_suffixContext)
else:
return self.getTypedRuleContext(CParser.Declarator_suffixContext,i)
def declarator(self):
return self.getTypedRuleContext(CParser.DeclaratorContext,0)
def getRuleIndex(self):
return CParser.RULE_direct_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDirect_declarator" ):
listener.enterDirect_declarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDirect_declarator" ):
listener.exitDirect_declarator(self)
def direct_declarator(self):
localctx = CParser.Direct_declaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 44, self.RULE_direct_declarator)
try:
self.state = 368
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.IDENTIFIER]:
self.enterOuterAlt(localctx, 1)
self.state = 350
self.match(CParser.IDENTIFIER)
self.state = 354
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,35,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 351
self.declarator_suffix()
self.state = 356
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,35,self._ctx)
pass
elif token in [CParser.T__37]:
self.enterOuterAlt(localctx, 2)
self.state = 357
self.match(CParser.T__37)
self.state = 359
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,36,self._ctx)
if la_ == 1:
self.state = 358
self.match(CParser.T__33)
self.state = 361
self.declarator()
self.state = 362
self.match(CParser.T__38)
self.state = 364
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 363
self.declarator_suffix()
else:
raise NoViableAltException(self)
self.state = 366
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,37,self._ctx)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Declarator_suffixContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def constant_expression(self):
return self.getTypedRuleContext(CParser.Constant_expressionContext,0)
def parameter_type_list(self):
return self.getTypedRuleContext(CParser.Parameter_type_listContext,0)
def identifier_list(self):
return self.getTypedRuleContext(CParser.Identifier_listContext,0)
def getRuleIndex(self):
return CParser.RULE_declarator_suffix
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDeclarator_suffix" ):
listener.enterDeclarator_suffix(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDeclarator_suffix" ):
listener.exitDeclarator_suffix(self)
def declarator_suffix(self):
localctx = CParser.Declarator_suffixContext(self, self._ctx, self.state)
self.enterRule(localctx, 46, self.RULE_declarator_suffix)
try:
self.state = 386
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,39,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 370
self.match(CParser.T__39)
self.state = 371
self.constant_expression()
self.state = 372
self.match(CParser.T__40)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 374
self.match(CParser.T__39)
self.state = 375
self.match(CParser.T__40)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 376
self.match(CParser.T__37)
self.state = 377
self.parameter_type_list()
self.state = 378
self.match(CParser.T__38)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 380
self.match(CParser.T__37)
self.state = 381
self.identifier_list()
self.state = 382
self.match(CParser.T__38)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 384
self.match(CParser.T__37)
self.state = 385
self.match(CParser.T__38)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class PointerContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def type_qualifier(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Type_qualifierContext)
else:
return self.getTypedRuleContext(CParser.Type_qualifierContext,i)
def pointer(self):
return self.getTypedRuleContext(CParser.PointerContext,0)
def getRuleIndex(self):
return CParser.RULE_pointer
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterPointer" ):
listener.enterPointer(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitPointer" ):
listener.exitPointer(self)
def pointer(self):
localctx = CParser.PointerContext(self, self._ctx, self.state)
self.enterRule(localctx, 48, self.RULE_pointer)
try:
self.state = 400
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,42,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 388
self.match(CParser.T__41)
self.state = 390
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 389
self.type_qualifier()
else:
raise NoViableAltException(self)
self.state = 392
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,40,self._ctx)
self.state = 395
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,41,self._ctx)
if la_ == 1:
self.state = 394
self.pointer()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 397
self.match(CParser.T__41)
self.state = 398
self.pointer()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 399
self.match(CParser.T__41)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Parameter_type_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def parameter_list(self):
return self.getTypedRuleContext(CParser.Parameter_listContext,0)
def getRuleIndex(self):
return CParser.RULE_parameter_type_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterParameter_type_list" ):
listener.enterParameter_type_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitParameter_type_list" ):
listener.exitParameter_type_list(self)
def parameter_type_list(self):
localctx = CParser.Parameter_type_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 50, self.RULE_parameter_type_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 402
self.parameter_list()
self.state = 408
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__3:
self.state = 403
self.match(CParser.T__3)
self.state = 405
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__28:
self.state = 404
self.match(CParser.T__28)
self.state = 407
self.match(CParser.T__42)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Parameter_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def parameter_declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Parameter_declarationContext)
else:
return self.getTypedRuleContext(CParser.Parameter_declarationContext,i)
def getRuleIndex(self):
return CParser.RULE_parameter_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterParameter_list" ):
listener.enterParameter_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitParameter_list" ):
listener.exitParameter_list(self)
def parameter_list(self):
localctx = CParser.Parameter_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 52, self.RULE_parameter_list)
try:
self.enterOuterAlt(localctx, 1)
self.state = 410
self.parameter_declaration()
self.state = 418
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,46,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 411
self.match(CParser.T__3)
self.state = 413
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,45,self._ctx)
if la_ == 1:
self.state = 412
self.match(CParser.T__28)
self.state = 415
self.parameter_declaration()
self.state = 420
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,46,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Parameter_declarationContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def declaration_specifiers(self):
return self.getTypedRuleContext(CParser.Declaration_specifiersContext,0)
# @param i=None Type: int
def declarator(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.DeclaratorContext)
else:
return self.getTypedRuleContext(CParser.DeclaratorContext,i)
# @param i=None Type: int
def abstract_declarator(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Abstract_declaratorContext)
else:
return self.getTypedRuleContext(CParser.Abstract_declaratorContext,i)
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
# @param i=None Type: int
def pointer(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.PointerContext)
else:
return self.getTypedRuleContext(CParser.PointerContext,i)
def getRuleIndex(self):
return CParser.RULE_parameter_declaration
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterParameter_declaration" ):
listener.enterParameter_declaration(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitParameter_declaration" ):
listener.exitParameter_declaration(self)
def parameter_declaration(self):
localctx = CParser.Parameter_declarationContext(self, self._ctx, self.state)
self.enterRule(localctx, 54, self.RULE_parameter_declaration)
self._la = 0 # Token type
try:
self.state = 439
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,51,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 421
self.declaration_specifiers()
self.state = 426
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 424
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,47,self._ctx)
if la_ == 1:
self.state = 422
self.declarator()
pass
elif la_ == 2:
self.state = 423
self.abstract_declarator()
pass
self.state = 428
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 430
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__28:
self.state = 429
self.match(CParser.T__28)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 435
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__41:
self.state = 432
self.pointer()
self.state = 437
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 438
self.match(CParser.IDENTIFIER)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Identifier_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def IDENTIFIER(self,i=None):
if i is None:
return self.getTokens(CParser.IDENTIFIER)
else:
return self.getToken(CParser.IDENTIFIER, i)
def getRuleIndex(self):
return CParser.RULE_identifier_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterIdentifier_list" ):
listener.enterIdentifier_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitIdentifier_list" ):
listener.exitIdentifier_list(self)
def identifier_list(self):
localctx = CParser.Identifier_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 56, self.RULE_identifier_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 441
self.match(CParser.IDENTIFIER)
self.state = 446
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 442
self.match(CParser.T__3)
self.state = 443
self.match(CParser.IDENTIFIER)
self.state = 448
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Type_nameContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def specifier_qualifier_list(self):
return self.getTypedRuleContext(CParser.Specifier_qualifier_listContext,0)
def abstract_declarator(self):
return self.getTypedRuleContext(CParser.Abstract_declaratorContext,0)
def type_id(self):
return self.getTypedRuleContext(CParser.Type_idContext,0)
def getRuleIndex(self):
return CParser.RULE_type_name
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterType_name" ):
listener.enterType_name(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitType_name" ):
listener.exitType_name(self)
def type_name(self):
localctx = CParser.Type_nameContext(self, self._ctx, self.state)
self.enterRule(localctx, 58, self.RULE_type_name)
self._la = 0 # Token type
try:
self.state = 454
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,54,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 449
self.specifier_qualifier_list()
self.state = 451
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__37) | (1 << CParser.T__39) | (1 << CParser.T__41))) != 0):
self.state = 450
self.abstract_declarator()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 453
self.type_id()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Abstract_declaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def pointer(self):
return self.getTypedRuleContext(CParser.PointerContext,0)
def direct_abstract_declarator(self):
return self.getTypedRuleContext(CParser.Direct_abstract_declaratorContext,0)
def getRuleIndex(self):
return CParser.RULE_abstract_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAbstract_declarator" ):
listener.enterAbstract_declarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAbstract_declarator" ):
listener.exitAbstract_declarator(self)
def abstract_declarator(self):
localctx = CParser.Abstract_declaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 60, self.RULE_abstract_declarator)
try:
self.state = 461
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__41]:
self.enterOuterAlt(localctx, 1)
self.state = 456
self.pointer()
self.state = 458
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,55,self._ctx)
if la_ == 1:
self.state = 457
self.direct_abstract_declarator()
pass
elif token in [CParser.T__37, CParser.T__39]:
self.enterOuterAlt(localctx, 2)
self.state = 460
self.direct_abstract_declarator()
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Direct_abstract_declaratorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def abstract_declarator(self):
return self.getTypedRuleContext(CParser.Abstract_declaratorContext,0)
# @param i=None Type: int
def abstract_declarator_suffix(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Abstract_declarator_suffixContext)
else:
return self.getTypedRuleContext(CParser.Abstract_declarator_suffixContext,i)
def getRuleIndex(self):
return CParser.RULE_direct_abstract_declarator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterDirect_abstract_declarator" ):
listener.enterDirect_abstract_declarator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitDirect_abstract_declarator" ):
listener.exitDirect_abstract_declarator(self)
def direct_abstract_declarator(self):
localctx = CParser.Direct_abstract_declaratorContext(self, self._ctx, self.state)
self.enterRule(localctx, 62, self.RULE_direct_abstract_declarator)
try:
self.enterOuterAlt(localctx, 1)
self.state = 468
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,57,self._ctx)
if la_ == 1:
self.state = 463
self.match(CParser.T__37)
self.state = 464
self.abstract_declarator()
self.state = 465
self.match(CParser.T__38)
pass
elif la_ == 2:
self.state = 467
self.abstract_declarator_suffix()
pass
self.state = 473
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,58,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 470
self.abstract_declarator_suffix()
self.state = 475
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,58,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Abstract_declarator_suffixContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def constant_expression(self):
return self.getTypedRuleContext(CParser.Constant_expressionContext,0)
def parameter_type_list(self):
return self.getTypedRuleContext(CParser.Parameter_type_listContext,0)
def getRuleIndex(self):
return CParser.RULE_abstract_declarator_suffix
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAbstract_declarator_suffix" ):
listener.enterAbstract_declarator_suffix(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAbstract_declarator_suffix" ):
listener.exitAbstract_declarator_suffix(self)
def abstract_declarator_suffix(self):
localctx = CParser.Abstract_declarator_suffixContext(self, self._ctx, self.state)
self.enterRule(localctx, 64, self.RULE_abstract_declarator_suffix)
try:
self.state = 488
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,59,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 476
self.match(CParser.T__39)
self.state = 477
self.match(CParser.T__40)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 478
self.match(CParser.T__39)
self.state = 479
self.constant_expression()
self.state = 480
self.match(CParser.T__40)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 482
self.match(CParser.T__37)
self.state = 483
self.match(CParser.T__38)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 484
self.match(CParser.T__37)
self.state = 485
self.parameter_type_list()
self.state = 486
self.match(CParser.T__38)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class InitializerContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def assignment_expression(self):
return self.getTypedRuleContext(CParser.Assignment_expressionContext,0)
def initializer_list(self):
return self.getTypedRuleContext(CParser.Initializer_listContext,0)
def getRuleIndex(self):
return CParser.RULE_initializer
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterInitializer" ):
listener.enterInitializer(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitInitializer" ):
listener.exitInitializer(self)
def initializer(self):
localctx = CParser.InitializerContext(self, self._ctx, self.state)
self.enterRule(localctx, 66, self.RULE_initializer)
self._la = 0 # Token type
try:
self.state = 498
self._errHandler.sync(self)
token = self._input.LA(1)
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]:
self.enterOuterAlt(localctx, 1)
self.state = 490
self.assignment_expression()
pass
elif token in [CParser.T__0]:
self.enterOuterAlt(localctx, 2)
self.state = 491
self.match(CParser.T__0)
self.state = 492
self.initializer_list()
self.state = 494
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__3:
self.state = 493
self.match(CParser.T__3)
self.state = 496
self.match(CParser.T__19)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Initializer_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def initializer(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.InitializerContext)
else:
return self.getTypedRuleContext(CParser.InitializerContext,i)
def getRuleIndex(self):
return CParser.RULE_initializer_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterInitializer_list" ):
listener.enterInitializer_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitInitializer_list" ):
listener.exitInitializer_list(self)
def initializer_list(self):
localctx = CParser.Initializer_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 68, self.RULE_initializer_list)
try:
self.enterOuterAlt(localctx, 1)
self.state = 500
self.initializer()
self.state = 505
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,62,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 501
self.match(CParser.T__3)
self.state = 502
self.initializer()
self.state = 507
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,62,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Argument_expression_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def assignment_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Assignment_expressionContext)
else:
return self.getTypedRuleContext(CParser.Assignment_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_argument_expression_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterArgument_expression_list" ):
listener.enterArgument_expression_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitArgument_expression_list" ):
listener.exitArgument_expression_list(self)
def argument_expression_list(self):
localctx = CParser.Argument_expression_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 70, self.RULE_argument_expression_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 508
self.assignment_expression()
self.state = 510
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__28:
self.state = 509
self.match(CParser.T__28)
self.state = 519
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 512
self.match(CParser.T__3)
self.state = 513
self.assignment_expression()
self.state = 515
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__28:
self.state = 514
self.match(CParser.T__28)
self.state = 521
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Additive_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def multiplicative_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Multiplicative_expressionContext)
else:
return self.getTypedRuleContext(CParser.Multiplicative_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_additive_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAdditive_expression" ):
listener.enterAdditive_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAdditive_expression" ):
listener.exitAdditive_expression(self)
def additive_expression(self):
localctx = CParser.Additive_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 72, self.RULE_additive_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 522
self.multiplicative_expression()
self.state = 529
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__43 or _la==CParser.T__44:
self.state = 527
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__43]:
self.state = 523
self.match(CParser.T__43)
self.state = 524
self.multiplicative_expression()
pass
elif token in [CParser.T__44]:
self.state = 525
self.match(CParser.T__44)
self.state = 526
self.multiplicative_expression()
pass
else:
raise NoViableAltException(self)
self.state = 531
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Multiplicative_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def cast_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Cast_expressionContext)
else:
return self.getTypedRuleContext(CParser.Cast_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_multiplicative_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterMultiplicative_expression" ):
listener.enterMultiplicative_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitMultiplicative_expression" ):
listener.exitMultiplicative_expression(self)
def multiplicative_expression(self):
localctx = CParser.Multiplicative_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 74, self.RULE_multiplicative_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 532
self.cast_expression()
self.state = 541
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CParser.T__41) | (1 << CParser.T__45) | (1 << CParser.T__46))) != 0):
self.state = 539
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__41]:
self.state = 533
self.match(CParser.T__41)
self.state = 534
self.cast_expression()
pass
elif token in [CParser.T__45]:
self.state = 535
self.match(CParser.T__45)
self.state = 536
self.cast_expression()
pass
elif token in [CParser.T__46]:
self.state = 537
self.match(CParser.T__46)
self.state = 538
self.cast_expression()
pass
else:
raise NoViableAltException(self)
self.state = 543
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Cast_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def type_name(self):
return self.getTypedRuleContext(CParser.Type_nameContext,0)
def cast_expression(self):
return self.getTypedRuleContext(CParser.Cast_expressionContext,0)
def unary_expression(self):
return self.getTypedRuleContext(CParser.Unary_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_cast_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterCast_expression" ):
listener.enterCast_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitCast_expression" ):
listener.exitCast_expression(self)
def cast_expression(self):
localctx = CParser.Cast_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 76, self.RULE_cast_expression)
try:
self.state = 550
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,70,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 544
self.match(CParser.T__37)
self.state = 545
self.type_name()
self.state = 546
self.match(CParser.T__38)
self.state = 547
self.cast_expression()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 549
self.unary_expression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Unary_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def postfix_expression(self):
return self.getTypedRuleContext(CParser.Postfix_expressionContext,0)
def unary_expression(self):
return self.getTypedRuleContext(CParser.Unary_expressionContext,0)
def unary_operator(self):
return self.getTypedRuleContext(CParser.Unary_operatorContext,0)
def cast_expression(self):
return self.getTypedRuleContext(CParser.Cast_expressionContext,0)
def type_name(self):
return self.getTypedRuleContext(CParser.Type_nameContext,0)
def getRuleIndex(self):
return CParser.RULE_unary_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterUnary_expression" ):
listener.enterUnary_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitUnary_expression" ):
listener.exitUnary_expression(self)
def unary_expression(self):
localctx = CParser.Unary_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 78, self.RULE_unary_expression)
try:
self.state = 567
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,71,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 552
self.postfix_expression()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 553
self.match(CParser.T__47)
self.state = 554
self.unary_expression()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 555
self.match(CParser.T__48)
self.state = 556
self.unary_expression()
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 557
self.unary_operator()
self.state = 558
self.cast_expression()
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 560
self.match(CParser.T__49)
self.state = 561
self.unary_expression()
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 562
self.match(CParser.T__49)
self.state = 563
self.match(CParser.T__37)
self.state = 564
self.type_name()
self.state = 565
self.match(CParser.T__38)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Postfix_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.FuncCallText = ''
self.p = None # Primary_expressionContext
self.a = None # Token
self.c = None # Argument_expression_listContext
self.b = None # Token
self.x = None # Token
self.y = None # Token
self.z = None # Token
def primary_expression(self):
return self.getTypedRuleContext(CParser.Primary_expressionContext,0)
# @param i=None Type: int
def expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.ExpressionContext)
else:
return self.getTypedRuleContext(CParser.ExpressionContext,i)
# @param i=None Type: int
def macro_parameter_list(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Macro_parameter_listContext)
else:
return self.getTypedRuleContext(CParser.Macro_parameter_listContext,i)
# @param i=None Type: int
def argument_expression_list(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Argument_expression_listContext)
else:
return self.getTypedRuleContext(CParser.Argument_expression_listContext,i)
# @param i=None Type: int
def IDENTIFIER(self,i=None):
if i is None:
return self.getTokens(CParser.IDENTIFIER)
else:
return self.getToken(CParser.IDENTIFIER, i)
def getRuleIndex(self):
return CParser.RULE_postfix_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterPostfix_expression" ):
listener.enterPostfix_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitPostfix_expression" ):
listener.exitPostfix_expression(self)
def postfix_expression(self):
localctx = CParser.Postfix_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 80, self.RULE_postfix_expression)
self.FuncCallText=''
try:
self.enterOuterAlt(localctx, 1)
self.state = 569
localctx.p = self.primary_expression()
self.FuncCallText += (None if localctx.p is None else self._input.getText((localctx.p.start,localctx.p.stop)))
self.state = 600
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,73,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 598
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,72,self._ctx)
if la_ == 1:
self.state = 571
self.match(CParser.T__39)
self.state = 572
self.expression()
self.state = 573
self.match(CParser.T__40)
pass
elif la_ == 2:
self.state = 575
self.match(CParser.T__37)
self.state = 576
localctx.a = self.match(CParser.T__38)
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, '')
pass
elif la_ == 3:
self.state = 578
self.match(CParser.T__37)
self.state = 579
localctx.c = self.argument_expression_list()
self.state = 580
localctx.b = self.match(CParser.T__38)
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))))
pass
elif la_ == 4:
self.state = 583
self.match(CParser.T__37)
self.state = 584
self.macro_parameter_list()
self.state = 585
self.match(CParser.T__38)
pass
elif la_ == 5:
self.state = 587
self.match(CParser.T__50)
self.state = 588
localctx.x = self.match(CParser.IDENTIFIER)
self.FuncCallText += '.' + (None if localctx.x is None else localctx.x.text)
pass
elif la_ == 6:
self.state = 590
self.match(CParser.T__41)
self.state = 591
localctx.y = self.match(CParser.IDENTIFIER)
self.FuncCallText = (None if localctx.y is None else localctx.y.text)
pass
elif la_ == 7:
self.state = 593
self.match(CParser.T__51)
self.state = 594
localctx.z = self.match(CParser.IDENTIFIER)
self.FuncCallText += '->' + (None if localctx.z is None else localctx.z.text)
pass
elif la_ == 8:
self.state = 596
self.match(CParser.T__47)
pass
elif la_ == 9:
self.state = 597
self.match(CParser.T__48)
pass
self.state = 602
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,73,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Macro_parameter_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def parameter_declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Parameter_declarationContext)
else:
return self.getTypedRuleContext(CParser.Parameter_declarationContext,i)
def getRuleIndex(self):
return CParser.RULE_macro_parameter_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterMacro_parameter_list" ):
listener.enterMacro_parameter_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitMacro_parameter_list" ):
listener.exitMacro_parameter_list(self)
def macro_parameter_list(self):
localctx = CParser.Macro_parameter_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 82, self.RULE_macro_parameter_list)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 603
self.parameter_declaration()
self.state = 608
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 604
self.match(CParser.T__3)
self.state = 605
self.parameter_declaration()
self.state = 610
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Unary_operatorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_unary_operator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterUnary_operator" ):
listener.enterUnary_operator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitUnary_operator" ):
listener.exitUnary_operator(self)
def unary_operator(self):
localctx = CParser.Unary_operatorContext(self, self._ctx, self.state)
self.enterRule(localctx, 84, self.RULE_unary_operator)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 611
_la = self._input.LA(1)
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)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Primary_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def constant(self):
return self.getTypedRuleContext(CParser.ConstantContext,0)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_primary_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterPrimary_expression" ):
listener.enterPrimary_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitPrimary_expression" ):
listener.exitPrimary_expression(self)
def primary_expression(self):
localctx = CParser.Primary_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 86, self.RULE_primary_expression)
try:
self.state = 619
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,75,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 613
self.match(CParser.IDENTIFIER)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 614
self.constant()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 615
self.match(CParser.T__37)
self.state = 616
self.expression()
self.state = 617
self.match(CParser.T__38)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ConstantContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def HEX_LITERAL(self):
return self.getToken(CParser.HEX_LITERAL, 0)
def OCTAL_LITERAL(self):
return self.getToken(CParser.OCTAL_LITERAL, 0)
def DECIMAL_LITERAL(self):
return self.getToken(CParser.DECIMAL_LITERAL, 0)
def CHARACTER_LITERAL(self):
return self.getToken(CParser.CHARACTER_LITERAL, 0)
# @param i=None Type: int
def IDENTIFIER(self,i=None):
if i is None:
return self.getTokens(CParser.IDENTIFIER)
else:
return self.getToken(CParser.IDENTIFIER, i)
# @param i=None Type: int
def STRING_LITERAL(self,i=None):
if i is None:
return self.getTokens(CParser.STRING_LITERAL)
else:
return self.getToken(CParser.STRING_LITERAL, i)
def FLOATING_POINT_LITERAL(self):
return self.getToken(CParser.FLOATING_POINT_LITERAL, 0)
def getRuleIndex(self):
return CParser.RULE_constant
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterConstant" ):
listener.enterConstant(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitConstant" ):
listener.exitConstant(self)
def constant(self):
localctx = CParser.ConstantContext(self, self._ctx, self.state)
self.enterRule(localctx, 88, self.RULE_constant)
self._la = 0 # Token type
try:
self.state = 647
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.HEX_LITERAL]:
self.enterOuterAlt(localctx, 1)
self.state = 621
self.match(CParser.HEX_LITERAL)
pass
elif token in [CParser.OCTAL_LITERAL]:
self.enterOuterAlt(localctx, 2)
self.state = 622
self.match(CParser.OCTAL_LITERAL)
pass
elif token in [CParser.DECIMAL_LITERAL]:
self.enterOuterAlt(localctx, 3)
self.state = 623
self.match(CParser.DECIMAL_LITERAL)
pass
elif token in [CParser.CHARACTER_LITERAL]:
self.enterOuterAlt(localctx, 4)
self.state = 624
self.match(CParser.CHARACTER_LITERAL)
pass
elif token in [CParser.IDENTIFIER, CParser.STRING_LITERAL]:
self.enterOuterAlt(localctx, 5)
self.state = 636
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 628
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.IDENTIFIER:
self.state = 625
self.match(CParser.IDENTIFIER)
self.state = 630
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 632
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 631
self.match(CParser.STRING_LITERAL)
else:
raise NoViableAltException(self)
self.state = 634
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,77,self._ctx)
else:
raise NoViableAltException(self)
self.state = 638
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,78,self._ctx)
self.state = 643
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.IDENTIFIER:
self.state = 640
self.match(CParser.IDENTIFIER)
self.state = 645
self._errHandler.sync(self)
_la = self._input.LA(1)
pass
elif token in [CParser.FLOATING_POINT_LITERAL]:
self.enterOuterAlt(localctx, 6)
self.state = 646
self.match(CParser.FLOATING_POINT_LITERAL)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ExpressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def assignment_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Assignment_expressionContext)
else:
return self.getTypedRuleContext(CParser.Assignment_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterExpression" ):
listener.enterExpression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitExpression" ):
listener.exitExpression(self)
def expression(self):
localctx = CParser.ExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 90, self.RULE_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 649
self.assignment_expression()
self.state = 654
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__3:
self.state = 650
self.match(CParser.T__3)
self.state = 651
self.assignment_expression()
self.state = 656
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Constant_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def conditional_expression(self):
return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_constant_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterConstant_expression" ):
listener.enterConstant_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitConstant_expression" ):
listener.exitConstant_expression(self)
def constant_expression(self):
localctx = CParser.Constant_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 92, self.RULE_constant_expression)
try:
self.enterOuterAlt(localctx, 1)
self.state = 657
self.conditional_expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Assignment_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def lvalue(self):
return self.getTypedRuleContext(CParser.LvalueContext,0)
def assignment_operator(self):
return self.getTypedRuleContext(CParser.Assignment_operatorContext,0)
def assignment_expression(self):
return self.getTypedRuleContext(CParser.Assignment_expressionContext,0)
def conditional_expression(self):
return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_assignment_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAssignment_expression" ):
listener.enterAssignment_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAssignment_expression" ):
listener.exitAssignment_expression(self)
def assignment_expression(self):
localctx = CParser.Assignment_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 94, self.RULE_assignment_expression)
try:
self.state = 664
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,82,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 659
self.lvalue()
self.state = 660
self.assignment_operator()
self.state = 661
self.assignment_expression()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 663
self.conditional_expression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class LvalueContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def unary_expression(self):
return self.getTypedRuleContext(CParser.Unary_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_lvalue
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterLvalue" ):
listener.enterLvalue(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitLvalue" ):
listener.exitLvalue(self)
def lvalue(self):
localctx = CParser.LvalueContext(self, self._ctx, self.state)
self.enterRule(localctx, 96, self.RULE_lvalue)
try:
self.enterOuterAlt(localctx, 1)
self.state = 666
self.unary_expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Assignment_operatorContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_assignment_operator
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAssignment_operator" ):
listener.enterAssignment_operator(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAssignment_operator" ):
listener.exitAssignment_operator(self)
def assignment_operator(self):
localctx = CParser.Assignment_operatorContext(self, self._ctx, self.state)
self.enterRule(localctx, 98, self.RULE_assignment_operator)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 668
_la = self._input.LA(1)
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)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Conditional_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.e = None # Logical_or_expressionContext
def logical_or_expression(self):
return self.getTypedRuleContext(CParser.Logical_or_expressionContext,0)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def conditional_expression(self):
return self.getTypedRuleContext(CParser.Conditional_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_conditional_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterConditional_expression" ):
listener.enterConditional_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitConditional_expression" ):
listener.exitConditional_expression(self)
def conditional_expression(self):
localctx = CParser.Conditional_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 100, self.RULE_conditional_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 670
localctx.e = self.logical_or_expression()
self.state = 677
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__65:
self.state = 671
self.match(CParser.T__65)
self.state = 672
self.expression()
self.state = 673
self.match(CParser.T__22)
self.state = 674
self.conditional_expression()
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))))
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Logical_or_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def logical_and_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Logical_and_expressionContext)
else:
return self.getTypedRuleContext(CParser.Logical_and_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_logical_or_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterLogical_or_expression" ):
listener.enterLogical_or_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitLogical_or_expression" ):
listener.exitLogical_or_expression(self)
def logical_or_expression(self):
localctx = CParser.Logical_or_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 102, self.RULE_logical_or_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 679
self.logical_and_expression()
self.state = 684
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__66:
self.state = 680
self.match(CParser.T__66)
self.state = 681
self.logical_and_expression()
self.state = 686
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Logical_and_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def inclusive_or_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Inclusive_or_expressionContext)
else:
return self.getTypedRuleContext(CParser.Inclusive_or_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_logical_and_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterLogical_and_expression" ):
listener.enterLogical_and_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitLogical_and_expression" ):
listener.exitLogical_and_expression(self)
def logical_and_expression(self):
localctx = CParser.Logical_and_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 104, self.RULE_logical_and_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 687
self.inclusive_or_expression()
self.state = 692
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__67:
self.state = 688
self.match(CParser.T__67)
self.state = 689
self.inclusive_or_expression()
self.state = 694
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Inclusive_or_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def exclusive_or_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Exclusive_or_expressionContext)
else:
return self.getTypedRuleContext(CParser.Exclusive_or_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_inclusive_or_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterInclusive_or_expression" ):
listener.enterInclusive_or_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitInclusive_or_expression" ):
listener.exitInclusive_or_expression(self)
def inclusive_or_expression(self):
localctx = CParser.Inclusive_or_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 106, self.RULE_inclusive_or_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 695
self.exclusive_or_expression()
self.state = 700
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__68:
self.state = 696
self.match(CParser.T__68)
self.state = 697
self.exclusive_or_expression()
self.state = 702
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Exclusive_or_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def and_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.And_expressionContext)
else:
return self.getTypedRuleContext(CParser.And_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_exclusive_or_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterExclusive_or_expression" ):
listener.enterExclusive_or_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitExclusive_or_expression" ):
listener.exitExclusive_or_expression(self)
def exclusive_or_expression(self):
localctx = CParser.Exclusive_or_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 108, self.RULE_exclusive_or_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 703
self.and_expression()
self.state = 708
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__69:
self.state = 704
self.match(CParser.T__69)
self.state = 705
self.and_expression()
self.state = 710
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class And_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def equality_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Equality_expressionContext)
else:
return self.getTypedRuleContext(CParser.Equality_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_and_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAnd_expression" ):
listener.enterAnd_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAnd_expression" ):
listener.exitAnd_expression(self)
def and_expression(self):
localctx = CParser.And_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 110, self.RULE_and_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 711
self.equality_expression()
self.state = 716
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__52:
self.state = 712
self.match(CParser.T__52)
self.state = 713
self.equality_expression()
self.state = 718
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Equality_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def relational_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Relational_expressionContext)
else:
return self.getTypedRuleContext(CParser.Relational_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_equality_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterEquality_expression" ):
listener.enterEquality_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitEquality_expression" ):
listener.exitEquality_expression(self)
def equality_expression(self):
localctx = CParser.Equality_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 112, self.RULE_equality_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 719
self.relational_expression()
self.state = 724
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__70 or _la==CParser.T__71:
self.state = 720
_la = self._input.LA(1)
if not(_la==CParser.T__70 or _la==CParser.T__71):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 721
self.relational_expression()
self.state = 726
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Relational_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def shift_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Shift_expressionContext)
else:
return self.getTypedRuleContext(CParser.Shift_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_relational_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterRelational_expression" ):
listener.enterRelational_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitRelational_expression" ):
listener.exitRelational_expression(self)
def relational_expression(self):
localctx = CParser.Relational_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 114, self.RULE_relational_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 727
self.shift_expression()
self.state = 732
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 728
_la = self._input.LA(1)
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)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 729
self.shift_expression()
self.state = 734
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Shift_expressionContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def additive_expression(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.Additive_expressionContext)
else:
return self.getTypedRuleContext(CParser.Additive_expressionContext,i)
def getRuleIndex(self):
return CParser.RULE_shift_expression
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterShift_expression" ):
listener.enterShift_expression(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitShift_expression" ):
listener.exitShift_expression(self)
def shift_expression(self):
localctx = CParser.Shift_expressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 116, self.RULE_shift_expression)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 735
self.additive_expression()
self.state = 740
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==CParser.T__76 or _la==CParser.T__77:
self.state = 736
_la = self._input.LA(1)
if not(_la==CParser.T__76 or _la==CParser.T__77):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 737
self.additive_expression()
self.state = 742
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class StatementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def labeled_statement(self):
return self.getTypedRuleContext(CParser.Labeled_statementContext,0)
def compound_statement(self):
return self.getTypedRuleContext(CParser.Compound_statementContext,0)
def expression_statement(self):
return self.getTypedRuleContext(CParser.Expression_statementContext,0)
def selection_statement(self):
return self.getTypedRuleContext(CParser.Selection_statementContext,0)
def iteration_statement(self):
return self.getTypedRuleContext(CParser.Iteration_statementContext,0)
def jump_statement(self):
return self.getTypedRuleContext(CParser.Jump_statementContext,0)
def macro_statement(self):
return self.getTypedRuleContext(CParser.Macro_statementContext,0)
def asm2_statement(self):
return self.getTypedRuleContext(CParser.Asm2_statementContext,0)
def asm1_statement(self):
return self.getTypedRuleContext(CParser.Asm1_statementContext,0)
def asm_statement(self):
return self.getTypedRuleContext(CParser.Asm_statementContext,0)
def declaration(self):
return self.getTypedRuleContext(CParser.DeclarationContext,0)
def getRuleIndex(self):
return CParser.RULE_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStatement" ):
listener.enterStatement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStatement" ):
listener.exitStatement(self)
def statement(self):
localctx = CParser.StatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 118, self.RULE_statement)
try:
self.state = 754
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,92,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 743
self.labeled_statement()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 744
self.compound_statement()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 745
self.expression_statement()
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 746
self.selection_statement()
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 747
self.iteration_statement()
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 748
self.jump_statement()
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 749
self.macro_statement()
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 750
self.asm2_statement()
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 751
self.asm1_statement()
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 752
self.asm_statement()
pass
elif la_ == 11:
self.enterOuterAlt(localctx, 11)
self.state = 753
self.declaration()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Asm2_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def getRuleIndex(self):
return CParser.RULE_asm2_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAsm2_statement" ):
listener.enterAsm2_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAsm2_statement" ):
listener.exitAsm2_statement(self)
def asm2_statement(self):
localctx = CParser.Asm2_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 120, self.RULE_asm2_statement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 757
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==CParser.T__78:
self.state = 756
self.match(CParser.T__78)
self.state = 759
self.match(CParser.IDENTIFIER)
self.state = 760
self.match(CParser.T__37)
self.state = 764
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,94,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 761
_la = self._input.LA(1)
if _la <= 0 or _la==CParser.T__1:
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 766
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,94,self._ctx)
self.state = 767
self.match(CParser.T__38)
self.state = 768
self.match(CParser.T__1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Asm1_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_asm1_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAsm1_statement" ):
listener.enterAsm1_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAsm1_statement" ):
listener.exitAsm1_statement(self)
def asm1_statement(self):
localctx = CParser.Asm1_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 122, self.RULE_asm1_statement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 770
self.match(CParser.T__79)
self.state = 771
self.match(CParser.T__0)
self.state = 775
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 772
_la = self._input.LA(1)
if _la <= 0 or _la==CParser.T__19:
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 777
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 778
self.match(CParser.T__19)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Asm_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return CParser.RULE_asm_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterAsm_statement" ):
listener.enterAsm_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitAsm_statement" ):
listener.exitAsm_statement(self)
def asm_statement(self):
localctx = CParser.Asm_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 124, self.RULE_asm_statement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 780
self.match(CParser.T__80)
self.state = 781
self.match(CParser.T__0)
self.state = 785
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 782
_la = self._input.LA(1)
if _la <= 0 or _la==CParser.T__19:
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 787
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 788
self.match(CParser.T__19)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Macro_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
# @param i=None Type: int
def declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.DeclarationContext)
else:
return self.getTypedRuleContext(CParser.DeclarationContext,i)
def statement_list(self):
return self.getTypedRuleContext(CParser.Statement_listContext,0)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_macro_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterMacro_statement" ):
listener.enterMacro_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitMacro_statement" ):
listener.exitMacro_statement(self)
def macro_statement(self):
localctx = CParser.Macro_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 126, self.RULE_macro_statement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 790
self.match(CParser.IDENTIFIER)
self.state = 791
self.match(CParser.T__37)
self.state = 795
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,97,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 792
self.declaration()
self.state = 797
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,97,self._ctx)
self.state = 799
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,98,self._ctx)
if la_ == 1:
self.state = 798
self.statement_list()
self.state = 802
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 801
self.expression()
self.state = 804
self.match(CParser.T__38)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Labeled_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def statement(self):
return self.getTypedRuleContext(CParser.StatementContext,0)
def constant_expression(self):
return self.getTypedRuleContext(CParser.Constant_expressionContext,0)
def getRuleIndex(self):
return CParser.RULE_labeled_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterLabeled_statement" ):
listener.enterLabeled_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitLabeled_statement" ):
listener.exitLabeled_statement(self)
def labeled_statement(self):
localctx = CParser.Labeled_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 128, self.RULE_labeled_statement)
try:
self.state = 817
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.IDENTIFIER]:
self.enterOuterAlt(localctx, 1)
self.state = 806
self.match(CParser.IDENTIFIER)
self.state = 807
self.match(CParser.T__22)
self.state = 808
self.statement()
pass
elif token in [CParser.T__81]:
self.enterOuterAlt(localctx, 2)
self.state = 809
self.match(CParser.T__81)
self.state = 810
self.constant_expression()
self.state = 811
self.match(CParser.T__22)
self.state = 812
self.statement()
pass
elif token in [CParser.T__82]:
self.enterOuterAlt(localctx, 3)
self.state = 814
self.match(CParser.T__82)
self.state = 815
self.match(CParser.T__22)
self.state = 816
self.statement()
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Compound_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def declaration(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.DeclarationContext)
else:
return self.getTypedRuleContext(CParser.DeclarationContext,i)
def statement_list(self):
return self.getTypedRuleContext(CParser.Statement_listContext,0)
def getRuleIndex(self):
return CParser.RULE_compound_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterCompound_statement" ):
listener.enterCompound_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitCompound_statement" ):
listener.exitCompound_statement(self)
def compound_statement(self):
localctx = CParser.Compound_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 130, self.RULE_compound_statement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 819
self.match(CParser.T__0)
self.state = 823
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,101,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 820
self.declaration()
self.state = 825
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,101,self._ctx)
self.state = 827
self._errHandler.sync(self)
_la = self._input.LA(1)
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):
self.state = 826
self.statement_list()
self.state = 829
self.match(CParser.T__19)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Statement_listContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
# @param i=None Type: int
def statement(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.StatementContext)
else:
return self.getTypedRuleContext(CParser.StatementContext,i)
def getRuleIndex(self):
return CParser.RULE_statement_list
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterStatement_list" ):
listener.enterStatement_list(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitStatement_list" ):
listener.exitStatement_list(self)
def statement_list(self):
localctx = CParser.Statement_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 132, self.RULE_statement_list)
try:
self.enterOuterAlt(localctx, 1)
self.state = 832
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 831
self.statement()
else:
raise NoViableAltException(self)
self.state = 834
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,103,self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Expression_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_expression_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterExpression_statement" ):
listener.enterExpression_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitExpression_statement" ):
listener.exitExpression_statement(self)
def expression_statement(self):
localctx = CParser.Expression_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 134, self.RULE_expression_statement)
try:
self.state = 840
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__1]:
self.enterOuterAlt(localctx, 1)
self.state = 836
self.match(CParser.T__1)
pass
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]:
self.enterOuterAlt(localctx, 2)
self.state = 837
self.expression()
self.state = 838
self.match(CParser.T__1)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Selection_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.e = None # ExpressionContext
# @param i=None Type: int
def statement(self,i=None):
if i is None:
return self.getTypedRuleContexts(CParser.StatementContext)
else:
return self.getTypedRuleContext(CParser.StatementContext,i)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_selection_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterSelection_statement" ):
listener.enterSelection_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitSelection_statement" ):
listener.exitSelection_statement(self)
def selection_statement(self):
localctx = CParser.Selection_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 136, self.RULE_selection_statement)
try:
self.state = 858
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__83]:
self.enterOuterAlt(localctx, 1)
self.state = 842
self.match(CParser.T__83)
self.state = 843
self.match(CParser.T__37)
self.state = 844
localctx.e = self.expression()
self.state = 845
self.match(CParser.T__38)
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))))
self.state = 847
self.statement()
self.state = 850
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,105,self._ctx)
if la_ == 1:
self.state = 848
self.match(CParser.T__84)
self.state = 849
self.statement()
pass
elif token in [CParser.T__85]:
self.enterOuterAlt(localctx, 2)
self.state = 852
self.match(CParser.T__85)
self.state = 853
self.match(CParser.T__37)
self.state = 854
self.expression()
self.state = 855
self.match(CParser.T__38)
self.state = 856
self.statement()
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Iteration_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
self.e = None # ExpressionContext
def statement(self):
return self.getTypedRuleContext(CParser.StatementContext,0)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_iteration_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterIteration_statement" ):
listener.enterIteration_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitIteration_statement" ):
listener.exitIteration_statement(self)
def iteration_statement(self):
localctx = CParser.Iteration_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 138, self.RULE_iteration_statement)
try:
self.state = 876
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [CParser.T__86]:
self.enterOuterAlt(localctx, 1)
self.state = 860
self.match(CParser.T__86)
self.state = 861
self.match(CParser.T__37)
self.state = 862
localctx.e = self.expression()
self.state = 863
self.match(CParser.T__38)
self.state = 864
self.statement()
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))))
pass
elif token in [CParser.T__87]:
self.enterOuterAlt(localctx, 2)
self.state = 867
self.match(CParser.T__87)
self.state = 868
self.statement()
self.state = 869
self.match(CParser.T__86)
self.state = 870
self.match(CParser.T__37)
self.state = 871
localctx.e = self.expression()
self.state = 872
self.match(CParser.T__38)
self.state = 873
self.match(CParser.T__1)
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))))
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Jump_statementContext(ParserRuleContext):
# @param parent=None Type: ParserRuleContext
# @param invokingState=-1 Type: int
def __init__(self,parser,parent=None,invokingState=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IDENTIFIER(self):
return self.getToken(CParser.IDENTIFIER, 0)
def expression(self):
return self.getTypedRuleContext(CParser.ExpressionContext,0)
def getRuleIndex(self):
return CParser.RULE_jump_statement
# @param listener Type: ParseTreeListener
def enterRule(self,listener):
if hasattr( listener, "enterJump_statement" ):
listener.enterJump_statement(self)
# @param listener Type: ParseTreeListener
def exitRule(self,listener):
if hasattr( listener, "exitJump_statement" ):
listener.exitJump_statement(self)
def jump_statement(self):
localctx = CParser.Jump_statementContext(self, self._ctx, self.state)
self.enterRule(localctx, 140, self.RULE_jump_statement)
try:
self.state = 891
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,108,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 878
self.match(CParser.T__88)
self.state = 879
self.match(CParser.IDENTIFIER)
self.state = 880
self.match(CParser.T__1)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 881
self.match(CParser.T__89)
self.state = 882
self.match(CParser.T__1)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 883
self.match(CParser.T__90)
self.state = 884
self.match(CParser.T__1)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 885
self.match(CParser.T__91)
self.state = 886
self.match(CParser.T__1)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 887
self.match(CParser.T__91)
self.state = 888
self.expression()
self.state = 889
self.match(CParser.T__1)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx