You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2023/01/15 22:04:09 UTC
[netbeans] branch master updated: Added ANTLR based Go Parser module
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 3deb9cd993 Added ANTLR based Go Parser module
new c1714159bb Merge pull request #5287 from lkishalmi/go.lang
3deb9cd993 is described below
commit 3deb9cd993a54a690d2e1727fe08914461b54ecc
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Thu Jan 12 12:15:40 2023 -0800
Added ANTLR based Go Parser module
---
ide/go.lang/build.xml | 104 +
ide/go.lang/licenseinfo.xml | 29 +
ide/go.lang/manifest.mf | 5 +
ide/go.lang/nbproject/project.properties | 22 +
ide/go.lang/nbproject/project.xml | 43 +
ide/go.lang/src/org/antlr/parser/golang/GoLexer.g4 | 550 ++
.../src/org/antlr/parser/golang/GoLexer.java | 899 +++
.../src/org/antlr/parser/golang/GoParser.g4 | 409 +
.../src/org/antlr/parser/golang/GoParser.java | 8244 ++++++++++++++++++++
.../src/org/antlr/parser/golang/GoParserBase.java | 26 +
.../antlr/parser/golang/GoParserBaseListener.java | 1255 +++
.../antlr/parser/golang/GoParserBaseVisitor.java | 735 ++
.../org/antlr/parser/golang/GoParserListener.java | 1027 +++
.../org/antlr/parser/golang/GoParserVisitor.java | 634 ++
.../org/netbeans/modules/go/lang/Bundle.properties | 21 +
nbbuild/cluster.properties | 1 +
nbbuild/licenses/BSD-antlr-go-grammar | 29 +
17 files changed, 14033 insertions(+)
diff --git a/ide/go.lang/build.xml b/ide/go.lang/build.xml
new file mode 100644
index 0000000000..6f6bcdbddf
--- /dev/null
+++ b/ide/go.lang/build.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
+<!-- for some information on what you could do (e.g. targets to override). -->
+<!-- If you delete this file and reopen the project it will be recreated. -->
+<project name="ide/go.lang" default="build" basedir=".">
+ <description>Builds, tests, and runs the project org.netbeans.modules.languages.golang</description>
+ <import file="../../nbbuild/templates/projectized.xml"/>
+
+ <target name="download-golang-grammar" depends="init">
+ <property name="apache.license.header">
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// DO NOT EDIT THIS FILE MANUALLY!
+// SEE build.xml FOR INSTRUCTIONS
+
+</property>
+ <property name="golang.additionalheader">
+
+@header{
+${apache.license.header}
+package org.antlr.parser.golang;
+
+}
+
+</property>
+
+ <property name="golang.outdir" location="${src.dir}/org/antlr/parser/golang"/>
+ <mkdir dir="${golang.outdir}"/>
+
+ <get src="https://raw.githubusercontent.com/antlr/grammars-v4/${golang.grammar.version}/golang/GoLexer.g4" dest="${golang.outdir}"/>
+ <get src="https://raw.githubusercontent.com/antlr/grammars-v4/${golang.grammar.version}/golang/GoParser.g4" dest="${golang.outdir}"/>
+ <get src="https://raw.githubusercontent.com/antlr/grammars-v4/${golang.grammar.version}/golang/Java/GoParserBase.java" dest="${golang.outdir}"/>
+
+ <replace file="${golang.outdir}/GoParserBase.java">
+ <replacetoken><![CDATA[import java.util.List;]]></replacetoken>
+ <replacevalue><![CDATA[package org.antlr.parser.golang;
+import java.util.List;]]></replacevalue>
+ </replace>
+
+ <replaceregexp match="(parser|lexer) grammar ([^;]+);([\n\r]*)"
+ replace="\1 grammar \2;${golang.additionalheader}"
+ flags="g"
+ >
+ <fileset dir="${golang.outdir}" includes="GoParser.g4 GoLexer.g4" />
+ </replaceregexp>
+ </target>
+
+ <target name="generate-golang-parser" description="Regenerate the Go parser" depends="init">
+ <property name="golang.outdir" location="${src.dir}/org/antlr/parser/golang"/>
+ <path id="antlr4.tool">
+ <fileset dir="../../ide/libs.antlr4.runtime/external" includes="*.jar"/>
+ <fileset dir="../../ide/libs.antlr3.runtime/external" includes="antlr-runtime-*.jar"/>
+ </path>
+
+ <java classname="org.antlr.v4.Tool" classpathref="antlr4.tool" fork="true" dir="${golang.outdir}">
+ <arg value="-o"/>
+ <arg value="${golang.outdir}"/>
+ <arg value="-visitor"/>
+ <arg value="GoLexer.g4"/>
+ <arg value="GoParser.g4"/>
+ </java>
+
+ <delete dir="${golang.outdir}" includes="*.tokens"/>
+ <delete dir="${golang.outdir}" includes="*.interp"/>
+
+ </target>
+</project>
diff --git a/ide/go.lang/licenseinfo.xml b/ide/go.lang/licenseinfo.xml
new file mode 100644
index 0000000000..0db674a3fc
--- /dev/null
+++ b/ide/go.lang/licenseinfo.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<licenseinfo>
+ <fileset>
+ <file>src/org/antlr/parser/golang/GoLexer.g4</file>
+ <file>src/org/antlr/parser/golang/GoParser.g4</file>
+ <file>src/org/antlr/parser/golang/GoParserBase.java</file>
+ <license ref="BSD-antlr-go-grammar" />
+ </fileset>
+</licenseinfo>
diff --git a/ide/go.lang/manifest.mf b/ide/go.lang/manifest.mf
new file mode 100644
index 0000000000..57d2f853d3
--- /dev/null
+++ b/ide/go.lang/manifest.mf
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.netbeans.modules.go.lang
+OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/go/lang/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.0
+AutoUpdate-Show-In-Client: true
diff --git a/ide/go.lang/nbproject/project.properties b/ide/go.lang/nbproject/project.properties
new file mode 100644
index 0000000000..471cf8bb1d
--- /dev/null
+++ b/ide/go.lang/nbproject/project.properties
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+javac.source=1.8
+
+# As of 2nd Jan 2023, we use the Grammar from:
+# https://github.com/antlr/grammars-v4/tree/4794c0c5371ce6b0711a306256f8f7706394ec6d/golang
+#
+golang.grammar.version=4794c0c5371ce6b0711a306256f8f7706394ec6d
diff --git a/ide/go.lang/nbproject/project.xml b/ide/go.lang/nbproject/project.xml
new file mode 100644
index 0000000000..040da00a4e
--- /dev/null
+++ b/ide/go.lang/nbproject/project.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.apisupport.project</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+ <code-name-base>org.netbeans.modules.go.lang</code-name-base>
+ <module-dependencies>
+ <dependency>
+ <code-name-base>org.netbeans.libs.antlr4.runtime</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>2</release-version>
+ <specification-version>1.20</specification-version>
+ </run-dependency>
+ </dependency>
+ </module-dependencies>
+ <public-packages>
+ <package>org.antlr.parser.golang</package>
+ </public-packages>
+ </data>
+ </configuration>
+</project>
diff --git a/ide/go.lang/src/org/antlr/parser/golang/GoLexer.g4 b/ide/go.lang/src/org/antlr/parser/golang/GoLexer.g4
new file mode 100644
index 0000000000..eca61efeb7
--- /dev/null
+++ b/ide/go.lang/src/org/antlr/parser/golang/GoLexer.g4
@@ -0,0 +1,550 @@
+/*
+ [The "BSD licence"]
+ Copyright (c) 2017 Sasa Coh, Michał Błotniak
+ Copyright (c) 2019 Ivan Kochurkin, kvanttt@gmail.com, Positive Technologies
+ Copyright (c) 2019 Dmitry Rassadin, flipparassa@gmail.com, Positive Technologies
+ Copyright (c) 2021 Martin Mirchev, mirchevmartin2203@gmail.com
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * A Go grammar for ANTLR 4 derived from the Go Language Specification
+ * https://golang.org/ref/spec
+ */
+
+lexer grammar GoLexer;
+
+@header{
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// DO NOT EDIT THIS FILE MANUALLY!
+// SEE build.xml FOR INSTRUCTIONS
+
+
+package org.antlr.parser.golang;
+
+}
+
+// Keywords
+
+BREAK : 'break' -> mode(NLSEMI);
+DEFAULT : 'default';
+FUNC : 'func';
+INTERFACE : 'interface';
+SELECT : 'select';
+CASE : 'case';
+DEFER : 'defer';
+GO : 'go';
+MAP : 'map';
+STRUCT : 'struct';
+CHAN : 'chan';
+ELSE : 'else';
+GOTO : 'goto';
+PACKAGE : 'package';
+SWITCH : 'switch';
+CONST : 'const';
+FALLTHROUGH : 'fallthrough' -> mode(NLSEMI);
+IF : 'if';
+RANGE : 'range';
+TYPE : 'type';
+CONTINUE : 'continue' -> mode(NLSEMI);
+FOR : 'for';
+IMPORT : 'import';
+RETURN : 'return' -> mode(NLSEMI);
+VAR : 'var';
+
+NIL_LIT : 'nil' -> mode(NLSEMI);
+
+IDENTIFIER : LETTER (LETTER | UNICODE_DIGIT)* -> mode(NLSEMI);
+
+// Punctuation
+
+L_PAREN : '(';
+R_PAREN : ')' -> mode(NLSEMI);
+L_CURLY : '{';
+R_CURLY : '}' -> mode(NLSEMI);
+L_BRACKET : '[';
+R_BRACKET : ']' -> mode(NLSEMI);
+ASSIGN : '=';
+COMMA : ',';
+SEMI : ';';
+COLON : ':';
+DOT : '.';
+PLUS_PLUS : '++' -> mode(NLSEMI);
+MINUS_MINUS : '--' -> mode(NLSEMI);
+DECLARE_ASSIGN : ':=';
+ELLIPSIS : '...';
+
+// Logical
+
+LOGICAL_OR : '||';
+LOGICAL_AND : '&&';
+
+// Relation operators
+
+EQUALS : '==';
+NOT_EQUALS : '!=';
+LESS : '<';
+LESS_OR_EQUALS : '<=';
+GREATER : '>';
+GREATER_OR_EQUALS : '>=';
+
+// Arithmetic operators
+
+OR : '|';
+DIV : '/';
+MOD : '%';
+LSHIFT : '<<';
+RSHIFT : '>>';
+BIT_CLEAR : '&^';
+
+// Unary operators
+
+EXCLAMATION : '!';
+
+// Mixed operators
+
+PLUS : '+';
+MINUS : '-';
+CARET : '^';
+STAR : '*';
+AMPERSAND : '&';
+RECEIVE : '<-';
+
+// Number literals
+
+DECIMAL_LIT : ('0' | [1-9] ('_'? [0-9])*) -> mode(NLSEMI);
+BINARY_LIT : '0' [bB] ('_'? BIN_DIGIT)+ -> mode(NLSEMI);
+OCTAL_LIT : '0' [oO]? ('_'? OCTAL_DIGIT)+ -> mode(NLSEMI);
+HEX_LIT : '0' [xX] ('_'? HEX_DIGIT)+ -> mode(NLSEMI);
+
+
+FLOAT_LIT : (DECIMAL_FLOAT_LIT | HEX_FLOAT_LIT) -> mode(NLSEMI);
+
+DECIMAL_FLOAT_LIT : DECIMALS ('.' DECIMALS? EXPONENT? | EXPONENT)
+ | '.' DECIMALS EXPONENT?
+ ;
+
+HEX_FLOAT_LIT : '0' [xX] HEX_MANTISSA HEX_EXPONENT
+ ;
+
+fragment HEX_MANTISSA : ('_'? HEX_DIGIT)+ ('.' ( '_'? HEX_DIGIT )*)?
+ | '.' HEX_DIGIT ('_'? HEX_DIGIT)*;
+
+fragment HEX_EXPONENT : [pP] [+-]? DECIMALS;
+
+
+IMAGINARY_LIT : (DECIMAL_LIT | BINARY_LIT | OCTAL_LIT | HEX_LIT | FLOAT_LIT) 'i' -> mode(NLSEMI);
+
+// Rune literals
+
+fragment RUNE : '\'' (UNICODE_VALUE | BYTE_VALUE) '\'';//: '\'' (~[\n\\] | ESCAPED_VALUE) '\'';
+
+RUNE_LIT : RUNE -> mode(NLSEMI);
+
+
+
+BYTE_VALUE : OCTAL_BYTE_VALUE | HEX_BYTE_VALUE;
+
+OCTAL_BYTE_VALUE: '\\' OCTAL_DIGIT OCTAL_DIGIT OCTAL_DIGIT;
+
+HEX_BYTE_VALUE: '\\' 'x' HEX_DIGIT HEX_DIGIT;
+
+LITTLE_U_VALUE: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT;
+
+BIG_U_VALUE: '\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT;
+
+// String literals
+
+RAW_STRING_LIT : '`' ~'`'* '`' -> mode(NLSEMI);
+INTERPRETED_STRING_LIT : '"' (~["\\] | ESCAPED_VALUE)* '"' -> mode(NLSEMI);
+
+// Hidden tokens
+
+WS : [ \t]+ -> channel(HIDDEN);
+COMMENT : '/*' .*? '*/' -> channel(HIDDEN);
+TERMINATOR : [\r\n]+ -> channel(HIDDEN);
+LINE_COMMENT : '//' ~[\r\n]* -> channel(HIDDEN);
+
+fragment UNICODE_VALUE: ~[\r\n'] | LITTLE_U_VALUE | BIG_U_VALUE | ESCAPED_VALUE;
+
+// Fragments
+
+fragment ESCAPED_VALUE
+ : '\\' ('u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
+ | 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
+ | [abfnrtv\\'"]
+ | OCTAL_DIGIT OCTAL_DIGIT OCTAL_DIGIT
+ | 'x' HEX_DIGIT HEX_DIGIT)
+ ;
+
+fragment DECIMALS
+ : [0-9] ('_'? [0-9])*
+ ;
+
+fragment OCTAL_DIGIT
+ : [0-7]
+ ;
+
+fragment HEX_DIGIT
+ : [0-9a-fA-F]
+ ;
+
+fragment BIN_DIGIT
+ : [01]
+ ;
+
+fragment EXPONENT
+ : [eE] [+-]? DECIMALS
+ ;
+
+fragment LETTER
+ : UNICODE_LETTER
+ | '_'
+ ;
+
+fragment UNICODE_DIGIT
+ : [\p{Nd}]
+
+ /* [\u0030-\u0039]
+ | [\u0660-\u0669]
+ | [\u06F0-\u06F9]
+ | [\u0966-\u096F]
+ | [\u09E6-\u09EF]
+ | [\u0A66-\u0A6F]
+ | [\u0AE6-\u0AEF]
+ | [\u0B66-\u0B6F]
+ | [\u0BE7-\u0BEF]
+ | [\u0C66-\u0C6F]
+ | [\u0CE6-\u0CEF]
+ | [\u0D66-\u0D6F]
+ | [\u0E50-\u0E59]
+ | [\u0ED0-\u0ED9]
+ | [\u0F20-\u0F29]
+ | [\u1040-\u1049]
+ | [\u1369-\u1371]
+ | [\u17E0-\u17E9]
+ | [\u1810-\u1819]
+ | [\uFF10-\uFF19]*/
+ ;
+
+fragment UNICODE_LETTER
+ : [\p{L}]
+ /* [\u0041-\u005A]
+ | [\u0061-\u007A]
+ | [\u00AA]
+ | [\u00B5]
+ | [\u00BA]
+ | [\u00C0-\u00D6]
+ | [\u00D8-\u00F6]
+ | [\u00F8-\u021F]
+ | [\u0222-\u0233]
+ | [\u0250-\u02AD]
+ | [\u02B0-\u02B8]
+ | [\u02BB-\u02C1]
+ | [\u02D0-\u02D1]
+ | [\u02E0-\u02E4]
+ | [\u02EE]
+ | [\u037A]
+ | [\u0386]
+ | [\u0388-\u038A]
+ | [\u038C]
+ | [\u038E-\u03A1]
+ | [\u03A3-\u03CE]
+ | [\u03D0-\u03D7]
+ | [\u03DA-\u03F3]
+ | [\u0400-\u0481]
+ | [\u048C-\u04C4]
+ | [\u04C7-\u04C8]
+ | [\u04CB-\u04CC]
+ | [\u04D0-\u04F5]
+ | [\u04F8-\u04F9]
+ | [\u0531-\u0556]
+ | [\u0559]
+ | [\u0561-\u0587]
+ | [\u05D0-\u05EA]
+ | [\u05F0-\u05F2]
+ | [\u0621-\u063A]
+ | [\u0640-\u064A]
+ | [\u0671-\u06D3]
+ | [\u06D5]
+ | [\u06E5-\u06E6]
+ | [\u06FA-\u06FC]
+ | [\u0710]
+ | [\u0712-\u072C]
+ | [\u0780-\u07A5]
+ | [\u0905-\u0939]
+ | [\u093D]
+ | [\u0950]
+ | [\u0958-\u0961]
+ | [\u0985-\u098C]
+ | [\u098F-\u0990]
+ | [\u0993-\u09A8]
+ | [\u09AA-\u09B0]
+ | [\u09B2]
+ | [\u09B6-\u09B9]
+ | [\u09DC-\u09DD]
+ | [\u09DF-\u09E1]
+ | [\u09F0-\u09F1]
+ | [\u0A05-\u0A0A]
+ | [\u0A0F-\u0A10]
+ | [\u0A13-\u0A28]
+ | [\u0A2A-\u0A30]
+ | [\u0A32-\u0A33]
+ | [\u0A35-\u0A36]
+ | [\u0A38-\u0A39]
+ | [\u0A59-\u0A5C]
+ | [\u0A5E]
+ | [\u0A72-\u0A74]
+ | [\u0A85-\u0A8B]
+ | [\u0A8D]
+ | [\u0A8F-\u0A91]
+ | [\u0A93-\u0AA8]
+ | [\u0AAA-\u0AB0]
+ | [\u0AB2-\u0AB3]
+ | [\u0AB5-\u0AB9]
+ | [\u0ABD]
+ | [\u0AD0]
+ | [\u0AE0]
+ | [\u0B05-\u0B0C]
+ | [\u0B0F-\u0B10]
+ | [\u0B13-\u0B28]
+ | [\u0B2A-\u0B30]
+ | [\u0B32-\u0B33]
+ | [\u0B36-\u0B39]
+ | [\u0B3D]
+ | [\u0B5C-\u0B5D]
+ | [\u0B5F-\u0B61]
+ | [\u0B85-\u0B8A]
+ | [\u0B8E-\u0B90]
+ | [\u0B92-\u0B95]
+ | [\u0B99-\u0B9A]
+ | [\u0B9C]
+ | [\u0B9E-\u0B9F]
+ | [\u0BA3-\u0BA4]
+ | [\u0BA8-\u0BAA]
+ | [\u0BAE-\u0BB5]
+ | [\u0BB7-\u0BB9]
+ | [\u0C05-\u0C0C]
+ | [\u0C0E-\u0C10]
+ | [\u0C12-\u0C28]
+ | [\u0C2A-\u0C33]
+ | [\u0C35-\u0C39]
+ | [\u0C60-\u0C61]
+ | [\u0C85-\u0C8C]
+ | [\u0C8E-\u0C90]
+ | [\u0C92-\u0CA8]
+ | [\u0CAA-\u0CB3]
+ | [\u0CB5-\u0CB9]
+ | [\u0CDE]
+ | [\u0CE0-\u0CE1]
+ | [\u0D05-\u0D0C]
+ | [\u0D0E-\u0D10]
+ | [\u0D12-\u0D28]
+ | [\u0D2A-\u0D39]
+ | [\u0D60-\u0D61]
+ | [\u0D85-\u0D96]
+ | [\u0D9A-\u0DB1]
+ | [\u0DB3-\u0DBB]
+ | [\u0DBD]
+ | [\u0DC0-\u0DC6]
+ | [\u0E01-\u0E30]
+ | [\u0E32-\u0E33]
+ | [\u0E40-\u0E46]
+ | [\u0E81-\u0E82]
+ | [\u0E84]
+ | [\u0E87-\u0E88]
+ | [\u0E8A]
+ | [\u0E8D]
+ | [\u0E94-\u0E97]
+ | [\u0E99-\u0E9F]
+ | [\u0EA1-\u0EA3]
+ | [\u0EA5]
+ | [\u0EA7]
+ | [\u0EAA-\u0EAB]
+ | [\u0EAD-\u0EB0]
+ | [\u0EB2-\u0EB3]
+ | [\u0EBD-\u0EC4]
+ | [\u0EC6]
+ | [\u0EDC-\u0EDD]
+ | [\u0F00]
+ | [\u0F40-\u0F6A]
+ | [\u0F88-\u0F8B]
+ | [\u1000-\u1021]
+ | [\u1023-\u1027]
+ | [\u1029-\u102A]
+ | [\u1050-\u1055]
+ | [\u10A0-\u10C5]
+ | [\u10D0-\u10F6]
+ | [\u1100-\u1159]
+ | [\u115F-\u11A2]
+ | [\u11A8-\u11F9]
+ | [\u1200-\u1206]
+ | [\u1208-\u1246]
+ | [\u1248]
+ | [\u124A-\u124D]
+ | [\u1250-\u1256]
+ | [\u1258]
+ | [\u125A-\u125D]
+ | [\u1260-\u1286]
+ | [\u1288]
+ | [\u128A-\u128D]
+ | [\u1290-\u12AE]
+ | [\u12B0]
+ | [\u12B2-\u12B5]
+ | [\u12B8-\u12BE]
+ | [\u12C0]
+ | [\u12C2-\u12C5]
+ | [\u12C8-\u12CE]
+ | [\u12D0-\u12D6]
+ | [\u12D8-\u12EE]
+ | [\u12F0-\u130E]
+ | [\u1310]
+ | [\u1312-\u1315]
+ | [\u1318-\u131E]
+ | [\u1320-\u1346]
+ | [\u1348-\u135A]
+ | [\u13A0-\u13B0]
+ | [\u13B1-\u13F4]
+ | [\u1401-\u1676]
+ | [\u1681-\u169A]
+ | [\u16A0-\u16EA]
+ | [\u1780-\u17B3]
+ | [\u1820-\u1877]
+ | [\u1880-\u18A8]
+ | [\u1E00-\u1E9B]
+ | [\u1EA0-\u1EE0]
+ | [\u1EE1-\u1EF9]
+ | [\u1F00-\u1F15]
+ | [\u1F18-\u1F1D]
+ | [\u1F20-\u1F39]
+ | [\u1F3A-\u1F45]
+ | [\u1F48-\u1F4D]
+ | [\u1F50-\u1F57]
+ | [\u1F59]
+ | [\u1F5B]
+ | [\u1F5D]
+ | [\u1F5F-\u1F7D]
+ | [\u1F80-\u1FB4]
+ | [\u1FB6-\u1FBC]
+ | [\u1FBE]
+ | [\u1FC2-\u1FC4]
+ | [\u1FC6-\u1FCC]
+ | [\u1FD0-\u1FD3]
+ | [\u1FD6-\u1FDB]
+ | [\u1FE0-\u1FEC]
+ | [\u1FF2-\u1FF4]
+ | [\u1FF6-\u1FFC]
+ | [\u207F]
+ | [\u2102]
+ | [\u2107]
+ | [\u210A-\u2113]
+ | [\u2115]
+ | [\u2119-\u211D]
+ | [\u2124]
+ | [\u2126]
+ | [\u2128]
+ | [\u212A-\u212D]
+ | [\u212F-\u2131]
+ | [\u2133-\u2139]
+ | [\u2160-\u2183]
+ | [\u3005-\u3007]
+ | [\u3021-\u3029]
+ | [\u3031-\u3035]
+ | [\u3038-\u303A]
+ | [\u3041-\u3094]
+ | [\u309D-\u309E]
+ | [\u30A1-\u30FA]
+ | [\u30FC-\u30FE]
+ | [\u3105-\u312C]
+ | [\u3131-\u318E]
+ | [\u31A0-\u31B7]
+ | [\u3400]
+ | [\u4DB5]
+ | [\u4E00]
+ | [\u9FA5]
+ | [\uA000-\uA48C]
+ | [\uAC00]
+ | [\uD7A3]
+ | [\uF900-\uFA2D]
+ | [\uFB00-\uFB06]
+ | [\uFB13-\uFB17]
+ | [\uFB1D]
+ | [\uFB1F-\uFB28]
+ | [\uFB2A-\uFB36]
+ | [\uFB38-\uFB3C]
+ | [\uFB3E]
+ | [\uFB40-\uFB41]
+ | [\uFB43-\uFB44]
+ | [\uFB46-\uFBB1]
+ | [\uFBD3-\uFD3D]
+ | [\uFD50-\uFD8F]
+ | [\uFD92-\uFDC7]
+ | [\uFDF0-\uFDFB]
+ | [\uFE70-\uFE72]
+ | [\uFE74]
+ | [\uFE76-\uFEFC]
+ | [\uFF21-\uFF3A]
+ | [\uFF41-\uFF5A]
+ | [\uFF66-\uFFBE]
+ | [\uFFC2-\uFFC7]
+ | [\uFFCA-\uFFCF]
+ | [\uFFD2-\uFFD7]
+ | [\uFFDA-\uFFDC]
+ */
+ ;
+
+
+mode NLSEMI;
+
+
+// Treat whitespace as normal
+WS_NLSEMI : [ \t]+ -> channel(HIDDEN);
+// Ignore any comments that only span one line
+COMMENT_NLSEMI : '/*' ~[\r\n]*? '*/' -> channel(HIDDEN);
+LINE_COMMENT_NLSEMI : '//' ~[\r\n]* -> channel(HIDDEN);
+// Emit an EOS token for any newlines, semicolon, multiline comments or the EOF and
+//return to normal lexing
+EOS: ([\r\n]+ | ';' | '/*' .*? '*/' | EOF) -> mode(DEFAULT_MODE);
+// Did not find an EOS, so go back to normal lexing
+OTHER: -> mode(DEFAULT_MODE), channel(HIDDEN);
diff --git a/ide/go.lang/src/org/antlr/parser/golang/GoLexer.java b/ide/go.lang/src/org/antlr/parser/golang/GoLexer.java
new file mode 100644
index 0000000000..080b6b8ffa
--- /dev/null
+++ b/ide/go.lang/src/org/antlr/parser/golang/GoLexer.java
@@ -0,0 +1,899 @@
+// Generated from java-escape by ANTLR 4.11.1
+
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// DO NOT EDIT THIS FILE MANUALLY!
+// SEE build.xml FOR INSTRUCTIONS
+
+
+package org.antlr.parser.golang;
+
+
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class GoLexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.11.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ BREAK=1, DEFAULT=2, FUNC=3, INTERFACE=4, SELECT=5, CASE=6, DEFER=7, GO=8,
+ MAP=9, STRUCT=10, CHAN=11, ELSE=12, GOTO=13, PACKAGE=14, SWITCH=15, CONST=16,
+ FALLTHROUGH=17, IF=18, RANGE=19, TYPE=20, CONTINUE=21, FOR=22, IMPORT=23,
+ RETURN=24, VAR=25, NIL_LIT=26, IDENTIFIER=27, L_PAREN=28, R_PAREN=29,
+ L_CURLY=30, R_CURLY=31, L_BRACKET=32, R_BRACKET=33, ASSIGN=34, COMMA=35,
+ SEMI=36, COLON=37, DOT=38, PLUS_PLUS=39, MINUS_MINUS=40, DECLARE_ASSIGN=41,
+ ELLIPSIS=42, LOGICAL_OR=43, LOGICAL_AND=44, EQUALS=45, NOT_EQUALS=46,
+ LESS=47, LESS_OR_EQUALS=48, GREATER=49, GREATER_OR_EQUALS=50, OR=51, DIV=52,
+ MOD=53, LSHIFT=54, RSHIFT=55, BIT_CLEAR=56, EXCLAMATION=57, PLUS=58, MINUS=59,
+ CARET=60, STAR=61, AMPERSAND=62, RECEIVE=63, DECIMAL_LIT=64, BINARY_LIT=65,
+ OCTAL_LIT=66, HEX_LIT=67, FLOAT_LIT=68, DECIMAL_FLOAT_LIT=69, HEX_FLOAT_LIT=70,
+ IMAGINARY_LIT=71, RUNE_LIT=72, BYTE_VALUE=73, OCTAL_BYTE_VALUE=74, HEX_BYTE_VALUE=75,
+ LITTLE_U_VALUE=76, BIG_U_VALUE=77, RAW_STRING_LIT=78, INTERPRETED_STRING_LIT=79,
+ WS=80, COMMENT=81, TERMINATOR=82, LINE_COMMENT=83, WS_NLSEMI=84, COMMENT_NLSEMI=85,
+ LINE_COMMENT_NLSEMI=86, EOS=87, OTHER=88;
+ public static final int
+ NLSEMI=1;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE", "NLSEMI"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO",
+ "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST",
+ "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN",
+ "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY",
+ "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT",
+ "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR",
+ "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER",
+ "GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR",
+ "EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE",
+ "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT",
+ "HEX_FLOAT_LIT", "HEX_MANTISSA", "HEX_EXPONENT", "IMAGINARY_LIT", "RUNE",
+ "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE",
+ "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT",
+ "TERMINATOR", "LINE_COMMENT", "UNICODE_VALUE", "ESCAPED_VALUE", "DECIMALS",
+ "OCTAL_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "EXPONENT", "LETTER", "UNICODE_DIGIT",
+ "UNICODE_LETTER", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI",
+ "EOS", "OTHER"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'",
+ "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'",
+ "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'",
+ "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'",
+ null, "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'",
+ "':'", "'.'", "'++'", "'--'", "':='", "'...'", "'||'", "'&&'", "'=='",
+ "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'",
+ "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER",
+ "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST",
+ "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN",
+ "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY",
+ "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT",
+ "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR",
+ "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER",
+ "GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR",
+ "EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE",
+ "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT",
+ "HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE",
+ "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT",
+ "INTERPRETED_STRING_LIT", "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT",
+ "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", "EOS", "OTHER"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "<INVALID>";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+
+ public GoLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "GoLexer.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\u0004\u0000X\u0347\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007"+
+ "\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007"+
+ "\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007"+
+ "\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n"+
+ "\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+
+ "\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+
+ "\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+
+ "\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+
+ "\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+
+ "\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+
+ "\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+
+ " \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+
+ "%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+
+ "*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+
+ "/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+
+ "4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+
+ "9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+
+ ">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+
+ "C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+
+ "H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+
+ "M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+
+ "R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+
+ "W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+
+ "\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+
+ "a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
+ "\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004"+
+ "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
+ "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006"+
+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
+ "\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001"+
+ "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001"+
+ "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
+ "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e"+
+ "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
+ "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+
+ "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
+ "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
+ "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012"+
+ "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
+ "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
+ "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016"+
+ "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
+ "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
+ "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018"+
+ "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
+ "\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u0178\b\u001a"+
+ "\n\u001a\f\u001a\u017b\t\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
+ "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001"+
+ "\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
+ "\u001f\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001"+
+ "#\u0001#\u0001$\u0001$\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+
+ "&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001)"+
+ "\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001"+
+ ",\u0001,\u0001,\u0001-\u0001-\u0001-\u0001.\u0001.\u0001/\u0001/\u0001"+
+ "/\u00010\u00010\u00011\u00011\u00011\u00012\u00012\u00013\u00013\u0001"+
+ "4\u00014\u00015\u00015\u00015\u00016\u00016\u00016\u00017\u00017\u0001"+
+ "7\u00018\u00018\u00019\u00019\u0001:\u0001:\u0001;\u0001;\u0001<\u0001"+
+ "<\u0001=\u0001=\u0001>\u0001>\u0001>\u0001?\u0001?\u0001?\u0003?\u01e3"+
+ "\b?\u0001?\u0005?\u01e6\b?\n?\f?\u01e9\t?\u0003?\u01eb\b?\u0001?\u0001"+
+ "?\u0001@\u0001@\u0001@\u0003@\u01f2\b@\u0001@\u0004@\u01f5\b@\u000b@\f"+
+ "@\u01f6\u0001@\u0001@\u0001A\u0001A\u0003A\u01fd\bA\u0001A\u0003A\u0200"+
+ "\bA\u0001A\u0004A\u0203\bA\u000bA\fA\u0204\u0001A\u0001A\u0001B\u0001"+
+ "B\u0001B\u0003B\u020c\bB\u0001B\u0004B\u020f\bB\u000bB\fB\u0210\u0001"+
+ "B\u0001B\u0001C\u0001C\u0003C\u0217\bC\u0001C\u0001C\u0001D\u0001D\u0001"+
+ "D\u0003D\u021e\bD\u0001D\u0003D\u0221\bD\u0001D\u0003D\u0224\bD\u0001"+
+ "D\u0001D\u0001D\u0003D\u0229\bD\u0003D\u022b\bD\u0001E\u0001E\u0001E\u0001"+
+ "E\u0001E\u0001F\u0003F\u0233\bF\u0001F\u0004F\u0236\bF\u000bF\fF\u0237"+
+ "\u0001F\u0001F\u0003F\u023c\bF\u0001F\u0005F\u023f\bF\nF\fF\u0242\tF\u0003"+
+ "F\u0244\bF\u0001F\u0001F\u0001F\u0003F\u0249\bF\u0001F\u0005F\u024c\b"+
+ "F\nF\fF\u024f\tF\u0003F\u0251\bF\u0001G\u0001G\u0003G\u0255\bG\u0001G"+
+ "\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0003H\u025e\bH\u0001H\u0001"+
+ "H\u0001H\u0001H\u0001I\u0001I\u0001I\u0003I\u0267\bI\u0001I\u0001I\u0001"+
+ "J\u0001J\u0001J\u0001J\u0001K\u0001K\u0003K\u0271\bK\u0001L\u0001L\u0001"+
+ "L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001"+
+ "N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+
+ "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0005P\u0291\bP\nP"+
+ "\fP\u0294\tP\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0005Q\u029d"+
+ "\bQ\nQ\fQ\u02a0\tQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0004R\u02a7\bR"+
+ "\u000bR\fR\u02a8\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0005S\u02b1"+
+ "\bS\nS\fS\u02b4\tS\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0004T\u02bc"+
+ "\bT\u000bT\fT\u02bd\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0005U\u02c6"+
+ "\bU\nU\fU\u02c9\tU\u0001U\u0001U\u0001V\u0001V\u0001V\u0001V\u0003V\u02d1"+
+ "\bV\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+
+ "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+
+ "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0003W\u02ed\bW\u0001X\u0001"+
+ "X\u0003X\u02f1\bX\u0001X\u0005X\u02f4\bX\nX\fX\u02f7\tX\u0001Y\u0001Y"+
+ "\u0001Z\u0001Z\u0001[\u0001[\u0001\\\u0001\\\u0003\\\u0301\b\\\u0001\\"+
+ "\u0001\\\u0001]\u0001]\u0003]\u0307\b]\u0001^\u0001^\u0001_\u0001_\u0001"+
+ "`\u0004`\u030e\b`\u000b`\f`\u030f\u0001`\u0001`\u0001a\u0001a\u0001a\u0001"+
+ "a\u0005a\u0318\ba\na\fa\u031b\ta\u0001a\u0001a\u0001a\u0001a\u0001a\u0001"+
+ "b\u0001b\u0001b\u0001b\u0005b\u0326\bb\nb\fb\u0329\tb\u0001b\u0001b\u0001"+
+ "c\u0004c\u032e\bc\u000bc\fc\u032f\u0001c\u0001c\u0001c\u0001c\u0001c\u0005"+
+ "c\u0337\bc\nc\fc\u033a\tc\u0001c\u0001c\u0001c\u0003c\u033f\bc\u0001c"+
+ "\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0003\u02b2\u0319\u0338\u0000"+
+ "e\u0002\u0001\u0004\u0002\u0006\u0003\b\u0004\n\u0005\f\u0006\u000e\u0007"+
+ "\u0010\b\u0012\t\u0014\n\u0016\u000b\u0018\f\u001a\r\u001c\u000e\u001e"+
+ "\u000f \u0010\"\u0011$\u0012&\u0013(\u0014*\u0015,\u0016.\u00170\u0018"+
+ "2\u00194\u001a6\u001b8\u001c:\u001d<\u001e>\u001f@ B!D\"F#H$J%L&N\'P("+
+ "R)T*V+X,Z-\\.^/`0b1d2f3h4j5l6n7p8r9t:v;x<z=|>~?\u0080@\u0082A\u0084B\u0086"+
+ "C\u0088D\u008aE\u008cF\u008e\u0000\u0090\u0000\u0092G\u0094\u0000\u0096"+
+ "H\u0098I\u009aJ\u009cK\u009eL\u00a0M\u00a2N\u00a4O\u00a6P\u00a8Q\u00aa"+
+ "R\u00acS\u00ae\u0000\u00b0\u0000\u00b2\u0000\u00b4\u0000\u00b6\u0000\u00b8"+
+ "\u0000\u00ba\u0000\u00bc\u0000\u00be\u0000\u00c0\u0000\u00c2T\u00c4U\u00c6"+
+ "V\u00c8W\u00caX\u0002\u0000\u0001\u0013\u0001\u000019\u0001\u000009\u0002"+
+ "\u0000BBbb\u0002\u0000OOoo\u0002\u0000XXxx\u0002\u0000PPpp\u0002\u0000"+
+ "++--\u0001\u0000``\u0002\u0000\"\"\\\\\u0002\u0000\t\t \u0002\u0000\n"+
+ "\n\r\r\u0003\u0000\n\n\r\r\'\'\t\u0000\"\"\'\'\\\\abffnnrrttvv\u0001\u0000"+
+ "07\u0003\u000009AFaf\u0001\u000001\u0002\u0000EEee>\u000009\u0660\u0669"+
+ "\u06f0\u06f9\u07c0\u07c9\u0966\u096f\u09e6\u09ef\u0a66\u0a6f\u0ae6\u0aef"+
+ "\u0b66\u0b6f\u0be6\u0bef\u0c66\u0c6f\u0ce6\u0cef\u0d66\u0d6f\u0de6\u0def"+
+ "\u0e50\u0e59\u0ed0\u0ed9\u0f20\u0f29\u1040\u1049\u1090\u1099\u17e0\u17e9"+
+ "\u1810\u1819\u1946\u194f\u19d0\u19d9\u1a80\u1a89\u1a90\u1a99\u1b50\u1b59"+
+ "\u1bb0\u1bb9\u1c40\u1c49\u1c50\u1c59\u8000\ua620\u8000\ua629\u8000\ua8d0"+
+ "\u8000\ua8d9\u8000\ua900\u8000\ua909\u8000\ua9d0\u8000\ua9d9\u8000\ua9f0"+
+ "\u8000\ua9f9\u8000\uaa50\u8000\uaa59\u8000\uabf0\u8000\uabf9\u8000\uff10"+
+ "\u8000\uff19\u8001\u04a0\u8001\u04a9\u8001\u0d30\u8001\u0d39\u8001\u1066"+
+ "\u8001\u106f\u8001\u10f0\u8001\u10f9\u8001\u1136\u8001\u113f\u8001\u11d0"+
+ "\u8001\u11d9\u8001\u12f0\u8001\u12f9\u8001\u1450\u8001\u1459\u8001\u14d0"+
+ "\u8001\u14d9\u8001\u1650\u8001\u1659\u8001\u16c0\u8001\u16c9\u8001\u1730"+
+ "\u8001\u1739\u8001\u18e0\u8001\u18e9\u8001\u1950\u8001\u1959\u8001\u1c50"+
+ "\u8001\u1c59\u8001\u1d50\u8001\u1d59\u8001\u1da0\u8001\u1da9\u8001\u6a60"+
+ "\u8001\u6a69\u8001\u6ac0\u8001\u6ac9\u8001\u6b50\u8001\u6b59\u8001\ud7ce"+
+ "\u8001\ud7ff\u8001\ue140\u8001\ue149\u8001\ue2f0\u8001\ue2f9\u8001\ue950"+
+ "\u8001\ue959\u8001\ufbf0\u8001\ufbf9\u0288\u0000AZaz\u00aa\u00aa\u00b5"+
+ "\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02c1\u02c6\u02d1\u02e0"+
+ "\u02e4\u02ec\u02ec\u02ee\u02ee\u0370\u0374\u0376\u0377\u037a\u037d\u037f"+
+ "\u037f\u0386\u0386\u0388\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5\u03f7"+
+ "\u0481\u048a\u052f\u0531\u0556\u0559\u0559\u0560\u0588\u05d0\u05ea\u05ef"+
+ "\u05f2\u0620\u064a\u066e\u066f\u0671\u06d3\u06d5\u06d5\u06e5\u06e6\u06ee"+
+ "\u06ef\u06fa\u06fc\u06ff\u06ff\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1"+
+ "\u07b1\u07ca\u07ea\u07f4\u07f5\u07fa\u07fa\u0800\u0815\u081a\u081a\u0824"+
+ "\u0824\u0828\u0828\u0840\u0858\u0860\u086a\u0870\u0887\u0889\u088e\u08a0"+
+ "\u08c9\u0904\u0939\u093d\u093d\u0950\u0950\u0958\u0961\u0971\u0980\u0985"+
+ "\u098c\u098f\u0990\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd"+
+ "\u09bd\u09ce\u09ce\u09dc\u09dd\u09df\u09e1\u09f0\u09f1\u09fc\u09fc\u0a05"+
+ "\u0a0a\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38"+
+ "\u0a39\u0a59\u0a5c\u0a5e\u0a5e\u0a72\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93"+
+ "\u0aa8\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0"+
+ "\u0ae1\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32"+
+ "\u0b33\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83"+
+ "\u0b83\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e"+
+ "\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0\u0bd0\u0c05\u0c0c\u0c0e"+
+ "\u0c10\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58\u0c5a\u0c5d\u0c5d\u0c60"+
+ "\u0c61\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8\u0caa\u0cb3\u0cb5"+
+ "\u0cb9\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04\u0d0c\u0d0e"+
+ "\u0d10\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54\u0d56\u0d5f\u0d61\u0d7a"+
+ "\u0d7f\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd\u0dc0\u0dc6\u0e01"+
+ "\u0e30\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84\u0e84\u0e86\u0e8a\u0e8c"+
+ "\u0ea3\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd\u0ebd\u0ec0\u0ec4\u0ec6"+
+ "\u0ec6\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49\u0f6c\u0f88\u0f8c\u1000"+
+ "\u102a\u103f\u103f\u1050\u1055\u105a\u105d\u1061\u1061\u1065\u1066\u106e"+
+ "\u1070\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7\u10c7\u10cd\u10cd\u10d0"+
+ "\u10fa\u10fc\u1248\u124a\u124d\u1250\u1256\u1258\u1258\u125a\u125d\u1260"+
+ "\u1288\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8\u12be\u12c0\u12c0\u12c2"+
+ "\u12c5\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318\u135a\u1380\u138f\u13a0"+
+ "\u13f5\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16f1"+
+ "\u16f8\u1700\u1711\u171f\u1731\u1740\u1751\u1760\u176c\u176e\u1770\u1780"+
+ "\u17b3\u17d7\u17d7\u17dc\u17dc\u1820\u1878\u1880\u1884\u1887\u18a8\u18aa"+
+ "\u18aa\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980\u19ab\u19b0"+
+ "\u19c9\u1a00\u1a16\u1a20\u1a54\u1aa7\u1aa7\u1b05\u1b33\u1b45\u1b4c\u1b83"+
+ "\u1ba0\u1bae\u1baf\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a\u1c7d\u1c80"+
+ "\u1c88\u1c90\u1cba\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa"+
+ "\u1cfa\u1d00\u1dbf\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50"+
+ "\u1f57\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6"+
+ "\u1fbc\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0"+
+ "\u1fec\u1ff2\u1ff4\u1ff6\u1ffc\u2071\u2071\u207f\u207f\u2090\u209c\u2102"+
+ "\u2102\u2107\u2107\u210a\u2113\u2115\u2115\u2119\u211d\u2124\u2124\u2126"+
+ "\u2126\u2128\u2128\u212a\u212d\u212f\u2139\u213c\u213f\u2145\u2149\u214e"+
+ "\u214e\u2183\u2184\u2c00\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27"+
+ "\u2d27\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8"+
+ "\u2dae\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8"+
+ "\u2dde\u2e2f\u2e2f\u3005\u3006\u3031\u3035\u303b\u303c\u3041\u3096\u309d"+
+ "\u309f\u30a1\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0"+
+ "\u31ff\u3400\u4dbf\u4e00\u8000\ua48c\u8000\ua4d0\u8000\ua4fd\u8000\ua500"+
+ "\u8000\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b\u8000\ua640"+
+ "\u8000\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6e5\u8000\ua717"+
+ "\u8000\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000\ua7d0"+
+ "\u8000\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000\ua7f2"+
+ "\u8000\ua801\u8000\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c"+
+ "\u8000\ua822\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000\ua8f2"+
+ "\u8000\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000\ua90a"+
+ "\u8000\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000\ua984"+
+ "\u8000\ua9b2\u8000\ua9cf\u8000\ua9cf\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6"+
+ "\u8000\ua9ef\u8000\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40"+
+ "\u8000\uaa42\u8000\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa76\u8000\uaa7a"+
+ "\u8000\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000\uaab5"+
+ "\u8000\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000\uaac2"+
+ "\u8000\uaac2\u8000\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaea\u8000\uaaf2"+
+ "\u8000\uaaf4\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11"+
+ "\u8000\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30"+
+ "\u8000\uab5a\u8000\uab5c\u8000\uab69\u8000\uab70\u8000\uabe2\u8000\uac00"+
+ "\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000\uf900"+
+ "\u8000\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000\ufb13"+
+ "\u8000\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000\ufb2a"+
+ "\u8000\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000\ufb40"+
+ "\u8000\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000\ufbd3"+
+ "\u8000\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000\ufdf0"+
+ "\u8000\ufdfb\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000\uff21"+
+ "\u8000\uff3a\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000\uffc2"+
+ "\u8000\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000\uffda"+
+ "\u8000\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001:\u8001"+
+ "<\u8001=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001\u0280"+
+ "\u8001\u029c\u8001\u02a0\u8001\u02d0\u8001\u0300\u8001\u031f\u8001\u032d"+
+ "\u8001\u0340\u8001\u0342\u8001\u0349\u8001\u0350\u8001\u0375\u8001\u0380"+
+ "\u8001\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u0400"+
+ "\u8001\u049d\u8001\u04b0\u8001\u04d3\u8001\u04d8\u8001\u04fb\u8001\u0500"+
+ "\u8001\u0527\u8001\u0530\u8001\u0563\u8001\u0570\u8001\u057a\u8001\u057c"+
+ "\u8001\u058a\u8001\u058c\u8001\u0592\u8001\u0594\u8001\u0595\u8001\u0597"+
+ "\u8001\u05a1\u8001\u05a3\u8001\u05b1\u8001\u05b3\u8001\u05b9\u8001\u05bb"+
+ "\u8001\u05bc\u8001\u0600\u8001\u0736\u8001\u0740\u8001\u0755\u8001\u0760"+
+ "\u8001\u0767\u8001\u0780\u8001\u0785\u8001\u0787\u8001\u07b0\u8001\u07b2"+
+ "\u8001\u07ba\u8001\u0800\u8001\u0805\u8001\u0808\u8001\u0808\u8001\u080a"+
+ "\u8001\u0835\u8001\u0837\u8001\u0838\u8001\u083c\u8001\u083c\u8001\u083f"+
+ "\u8001\u0855\u8001\u0860\u8001\u0876\u8001\u0880\u8001\u089e\u8001\u08e0"+
+ "\u8001\u08f2\u8001\u08f4\u8001\u08f5\u8001\u0900\u8001\u0915\u8001\u0920"+
+ "\u8001\u0939\u8001\u0980\u8001\u09b7\u8001\u09be\u8001\u09bf\u8001\u0a00"+
+ "\u8001\u0a00\u8001\u0a10\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19"+
+ "\u8001\u0a35\u8001\u0a60\u8001\u0a7c\u8001\u0a80\u8001\u0a9c\u8001\u0ac0"+
+ "\u8001\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001\u0b00\u8001\u0b35\u8001\u0b40"+
+ "\u8001\u0b55\u8001\u0b60\u8001\u0b72\u8001\u0b80\u8001\u0b91\u8001\u0c00"+
+ "\u8001\u0c48\u8001\u0c80\u8001\u0cb2\u8001\u0cc0\u8001\u0cf2\u8001\u0d00"+
+ "\u8001\u0d23\u8001\u0e80\u8001\u0ea9\u8001\u0eb0\u8001\u0eb1\u8001\u0f00"+
+ "\u8001\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f45\u8001\u0f70"+
+ "\u8001\u0f81\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0\u8001\u0ff6\u8001\u1003"+
+ "\u8001\u1037\u8001\u1071\u8001\u1072\u8001\u1075\u8001\u1075\u8001\u1083"+
+ "\u8001\u10af\u8001\u10d0\u8001\u10e8\u8001\u1103\u8001\u1126\u8001\u1144"+
+ "\u8001\u1144\u8001\u1147\u8001\u1147\u8001\u1150\u8001\u1172\u8001\u1176"+
+ "\u8001\u1176\u8001\u1183\u8001\u11b2\u8001\u11c1\u8001\u11c4\u8001\u11da"+
+ "\u8001\u11da\u8001\u11dc\u8001\u11dc\u8001\u1200\u8001\u1211\u8001\u1213"+
+ "\u8001\u122b\u8001\u1280\u8001\u1286\u8001\u1288\u8001\u1288\u8001\u128a"+
+ "\u8001\u128d\u8001\u128f\u8001\u129d\u8001\u129f\u8001\u12a8\u8001\u12b0"+
+ "\u8001\u12de\u8001\u1305\u8001\u130c\u8001\u130f\u8001\u1310\u8001\u1313"+
+ "\u8001\u1328\u8001\u132a\u8001\u1330\u8001\u1332\u8001\u1333\u8001\u1335"+
+ "\u8001\u1339\u8001\u133d\u8001\u133d\u8001\u1350\u8001\u1350\u8001\u135d"+
+ "\u8001\u1361\u8001\u1400\u8001\u1434\u8001\u1447\u8001\u144a\u8001\u145f"+
+ "\u8001\u1461\u8001\u1480\u8001\u14af\u8001\u14c4\u8001\u14c5\u8001\u14c7"+
+ "\u8001\u14c7\u8001\u1580\u8001\u15ae\u8001\u15d8\u8001\u15db\u8001\u1600"+
+ "\u8001\u162f\u8001\u1644\u8001\u1644\u8001\u1680\u8001\u16aa\u8001\u16b8"+
+ "\u8001\u16b8\u8001\u1700\u8001\u171a\u8001\u1740\u8001\u1746\u8001\u1800"+
+ "\u8001\u182b\u8001\u18a0\u8001\u18df\u8001\u18ff\u8001\u1906\u8001\u1909"+
+ "\u8001\u1909\u8001\u190c\u8001\u1913\u8001\u1915\u8001\u1916\u8001\u1918"+
+ "\u8001\u192f\u8001\u193f\u8001\u193f\u8001\u1941\u8001\u1941\u8001\u19a0"+
+ "\u8001\u19a7\u8001\u19aa\u8001\u19d0\u8001\u19e1\u8001\u19e1\u8001\u19e3"+
+ "\u8001\u19e3\u8001\u1a00\u8001\u1a00\u8001\u1a0b\u8001\u1a32\u8001\u1a3a"+
+ "\u8001\u1a3a\u8001\u1a50\u8001\u1a50\u8001\u1a5c\u8001\u1a89\u8001\u1a9d"+
+ "\u8001\u1a9d\u8001\u1ab0\u8001\u1af8\u8001\u1c00\u8001\u1c08\u8001\u1c0a"+
+ "\u8001\u1c2e\u8001\u1c40\u8001\u1c40\u8001\u1c72\u8001\u1c8f\u8001\u1d00"+
+ "\u8001\u1d06\u8001\u1d08\u8001\u1d09\u8001\u1d0b\u8001\u1d30\u8001\u1d46"+
+ "\u8001\u1d46\u8001\u1d60\u8001\u1d65\u8001\u1d67\u8001\u1d68\u8001\u1d6a"+
+ "\u8001\u1d89\u8001\u1d98\u8001\u1d98\u8001\u1ee0\u8001\u1ef2\u8001\u1fb0"+
+ "\u8001\u1fb0\u8001\u2000\u8001\u2399\u8001\u2480\u8001\u2543\u8001\u2f90"+
+ "\u8001\u2ff0\u8001\u3000\u8001\u342e\u8001\u4400\u8001\u4646\u8001\u6800"+
+ "\u8001\u6a38\u8001\u6a40\u8001\u6a5e\u8001\u6a70\u8001\u6abe\u8001\u6ad0"+
+ "\u8001\u6aed\u8001\u6b00\u8001\u6b2f\u8001\u6b40\u8001\u6b43\u8001\u6b63"+
+ "\u8001\u6b77\u8001\u6b7d\u8001\u6b8f\u8001\u6e40\u8001\u6e7f\u8001\u6f00"+
+ "\u8001\u6f4a\u8001\u6f50\u8001\u6f50\u8001\u6f93\u8001\u6f9f\u8001\u6fe0"+
+ "\u8001\u6fe1\u8001\u6fe3\u8001\u6fe3\u8001\u7000\u8001\u87f7\u8001\u8800"+
+ "\u8001\u8cd5\u8001\u8d00\u8001\u8d08\u8001\uaff0\u8001\uaff3\u8001\uaff5"+
+ "\u8001\uaffb\u8001\uaffd\u8001\uaffe\u8001\ub000\u8001\ub122\u8001\ub150"+
+ "\u8001\ub152\u8001\ub164\u8001\ub167\u8001\ub170\u8001\ub2fb\u8001\ubc00"+
+ "\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001\ubc88\u8001\ubc90"+
+ "\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456\u8001\ud49c\u8001\ud49e"+
+ "\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001\ud4a6\u8001\ud4a9"+
+ "\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001\ud4bb\u8001\ud4bd"+
+ "\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001\ud50a\u8001\ud50d"+
+ "\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001\ud539\u8001\ud53b"+
+ "\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001\ud546\u8001\ud54a"+
+ "\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001\ud6c0\u8001\ud6c2"+
+ "\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001\ud714\u8001\ud716"+
+ "\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001\ud76e\u8001\ud770"+
+ "\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001\ud7c2\u8001\ud7c4"+
+ "\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\ue100\u8001\ue12c\u8001\ue137"+
+ "\u8001\ue13d\u8001\ue14e\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001\ue2c0"+
+ "\u8001\ue2eb\u8001\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001\ue7eb\u8001\ue7ed"+
+ "\u8001\ue7ee\u8001\ue7f0\u8001\ue7fe\u8001\ue800\u8001\ue8c4\u8001\ue900"+
+ "\u8001\ue943\u8001\ue94b\u8001\ue94b\u8001\uee00\u8001\uee03\u8001\uee05"+
+ "\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24\u8001\uee24\u8001\uee27"+
+ "\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34\u8001\uee37\u8001\uee39"+
+ "\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001\uee42\u8001\uee47"+
+ "\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b\u8001\uee4b\u8001\uee4d"+
+ "\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54\u8001\uee54\u8001\uee57"+
+ "\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b\u8001\uee5b\u8001\uee5d"+
+ "\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001\uee62\u8001\uee64"+
+ "\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001\uee72\u8001\uee74"+
+ "\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001\uee7e\u8001\uee80"+
+ "\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001\ueea3\u8001\ueea5"+
+ "\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8002\u0000\u8002\ua6df\u8002\ua700"+
+ "\u8002\ub738\u8002\ub740\u8002\ub81d\u8002\ub820\u8002\ucea1\u8002\uceb0"+
+ "\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003\u0000\u8003\u134a\u0373\u0000"+
+ "\u0002\u0001\u0000\u0000\u0000\u0000\u0004\u0001\u0000\u0000\u0000\u0000"+
+ "\u0006\u0001\u0000\u0000\u0000\u0000\b\u0001\u0000\u0000\u0000\u0000\n"+
+ "\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000\u000e\u0001"+
+ "\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000\u0012\u0001"+
+ "\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000\u0016\u0001"+
+ "\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000\u001a\u0001"+
+ "\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000\u001e\u0001"+
+ "\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0000\"\u0001\u0000"+
+ "\u0000\u0000\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001\u0000\u0000\u0000"+
+ "\u0000(\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000\u0000\u0000,"+
+ "\u0001\u0000\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u00000\u0001\u0000"+
+ "\u0000\u0000\u00002\u0001\u0000\u0000\u0000\u00004\u0001\u0000\u0000\u0000"+
+ "\u00006\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000\u0000\u0000:"+
+ "\u0001\u0000\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000>\u0001\u0000"+
+ "\u0000\u0000\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001\u0000\u0000\u0000"+
+ "\u0000D\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000\u0000\u0000H"+
+ "\u0001\u0000\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000L\u0001\u0000"+
+ "\u0000\u0000\u0000N\u0001\u0000\u0000\u0000\u0000P\u0001\u0000\u0000\u0000"+
+ "\u0000R\u0001\u0000\u0000\u0000\u0000T\u0001\u0000\u0000\u0000\u0000V"+
+ "\u0001\u0000\u0000\u0000\u0000X\u0001\u0000\u0000\u0000\u0000Z\u0001\u0000"+
+ "\u0000\u0000\u0000\\\u0001\u0000\u0000\u0000\u0000^\u0001\u0000\u0000"+
+ "\u0000\u0000`\u0001\u0000\u0000\u0000\u0000b\u0001\u0000\u0000\u0000\u0000"+
+ "d\u0001\u0000\u0000\u0000\u0000f\u0001\u0000\u0000\u0000\u0000h\u0001"+
+ "\u0000\u0000\u0000\u0000j\u0001\u0000\u0000\u0000\u0000l\u0001\u0000\u0000"+
+ "\u0000\u0000n\u0001\u0000\u0000\u0000\u0000p\u0001\u0000\u0000\u0000\u0000"+
+ "r\u0001\u0000\u0000\u0000\u0000t\u0001\u0000\u0000\u0000\u0000v\u0001"+
+ "\u0000\u0000\u0000\u0000x\u0001\u0000\u0000\u0000\u0000z\u0001\u0000\u0000"+
+ "\u0000\u0000|\u0001\u0000\u0000\u0000\u0000~\u0001\u0000\u0000\u0000\u0000"+
+ "\u0080\u0001\u0000\u0000\u0000\u0000\u0082\u0001\u0000\u0000\u0000\u0000"+
+ "\u0084\u0001\u0000\u0000\u0000\u0000\u0086\u0001\u0000\u0000\u0000\u0000"+
+ "\u0088\u0001\u0000\u0000\u0000\u0000\u008a\u0001\u0000\u0000\u0000\u0000"+
+ "\u008c\u0001\u0000\u0000\u0000\u0000\u0092\u0001\u0000\u0000\u0000\u0000"+
+ "\u0096\u0001\u0000\u0000\u0000\u0000\u0098\u0001\u0000\u0000\u0000\u0000"+
+ "\u009a\u0001\u0000\u0000\u0000\u0000\u009c\u0001\u0000\u0000\u0000\u0000"+
+ "\u009e\u0001\u0000\u0000\u0000\u0000\u00a0\u0001\u0000\u0000\u0000\u0000"+
+ "\u00a2\u0001\u0000\u0000\u0000\u0000\u00a4\u0001\u0000\u0000\u0000\u0000"+
+ "\u00a6\u0001\u0000\u0000\u0000\u0000\u00a8\u0001\u0000\u0000\u0000\u0000"+
+ "\u00aa\u0001\u0000\u0000\u0000\u0000\u00ac\u0001\u0000\u0000\u0000\u0001"+
+ "\u00c2\u0001\u0000\u0000\u0000\u0001\u00c4\u0001\u0000\u0000\u0000\u0001"+
+ "\u00c6\u0001\u0000\u0000\u0000\u0001\u00c8\u0001\u0000\u0000\u0000\u0001"+
+ "\u00ca\u0001\u0000\u0000\u0000\u0002\u00cc\u0001\u0000\u0000\u0000\u0004"+
+ "\u00d4\u0001\u0000\u0000\u0000\u0006\u00dc\u0001\u0000\u0000\u0000\b\u00e1"+
+ "\u0001\u0000\u0000\u0000\n\u00eb\u0001\u0000\u0000\u0000\f\u00f2\u0001"+
+ "\u0000\u0000\u0000\u000e\u00f7\u0001\u0000\u0000\u0000\u0010\u00fd\u0001"+
+ "\u0000\u0000\u0000\u0012\u0100\u0001\u0000\u0000\u0000\u0014\u0104\u0001"+
+ "\u0000\u0000\u0000\u0016\u010b\u0001\u0000\u0000\u0000\u0018\u0110\u0001"+
+ "\u0000\u0000\u0000\u001a\u0115\u0001\u0000\u0000\u0000\u001c\u011a\u0001"+
+ "\u0000\u0000\u0000\u001e\u0122\u0001\u0000\u0000\u0000 \u0129\u0001\u0000"+
+ "\u0000\u0000\"\u012f\u0001\u0000\u0000\u0000$\u013d\u0001\u0000\u0000"+
+ "\u0000&\u0140\u0001\u0000\u0000\u0000(\u0146\u0001\u0000\u0000\u0000*"+
+ "\u014b\u0001\u0000\u0000\u0000,\u0156\u0001\u0000\u0000\u0000.\u015a\u0001"+
+ "\u0000\u0000\u00000\u0161\u0001\u0000\u0000\u00002\u016a\u0001\u0000\u0000"+
+ "\u00004\u016e\u0001\u0000\u0000\u00006\u0174\u0001\u0000\u0000\u00008"+
+ "\u017e\u0001\u0000\u0000\u0000:\u0180\u0001\u0000\u0000\u0000<\u0184\u0001"+
+ "\u0000\u0000\u0000>\u0186\u0001\u0000\u0000\u0000@\u018a\u0001\u0000\u0000"+
+ "\u0000B\u018c\u0001\u0000\u0000\u0000D\u0190\u0001\u0000\u0000\u0000F"+
+ "\u0192\u0001\u0000\u0000\u0000H\u0194\u0001\u0000\u0000\u0000J\u0196\u0001"+
+ "\u0000\u0000\u0000L\u0198\u0001\u0000\u0000\u0000N\u019a\u0001\u0000\u0000"+
+ "\u0000P\u019f\u0001\u0000\u0000\u0000R\u01a4\u0001\u0000\u0000\u0000T"+
+ "\u01a7\u0001\u0000\u0000\u0000V\u01ab\u0001\u0000\u0000\u0000X\u01ae\u0001"+
+ "\u0000\u0000\u0000Z\u01b1\u0001\u0000\u0000\u0000\\\u01b4\u0001\u0000"+
+ "\u0000\u0000^\u01b7\u0001\u0000\u0000\u0000`\u01b9\u0001\u0000\u0000\u0000"+
+ "b\u01bc\u0001\u0000\u0000\u0000d\u01be\u0001\u0000\u0000\u0000f\u01c1"+
+ "\u0001\u0000\u0000\u0000h\u01c3\u0001\u0000\u0000\u0000j\u01c5\u0001\u0000"+
+ "\u0000\u0000l\u01c7\u0001\u0000\u0000\u0000n\u01ca\u0001\u0000\u0000\u0000"+
+ "p\u01cd\u0001\u0000\u0000\u0000r\u01d0\u0001\u0000\u0000\u0000t\u01d2"+
+ "\u0001\u0000\u0000\u0000v\u01d4\u0001\u0000\u0000\u0000x\u01d6\u0001\u0000"+
+ "\u0000\u0000z\u01d8\u0001\u0000\u0000\u0000|\u01da\u0001\u0000\u0000\u0000"+
+ "~\u01dc\u0001\u0000\u0000\u0000\u0080\u01ea\u0001\u0000\u0000\u0000\u0082"+
+ "\u01ee\u0001\u0000\u0000\u0000\u0084\u01fa\u0001\u0000\u0000\u0000\u0086"+
+ "\u0208\u0001\u0000\u0000\u0000\u0088\u0216\u0001\u0000\u0000\u0000\u008a"+
+ "\u022a\u0001\u0000\u0000\u0000\u008c\u022c\u0001\u0000\u0000\u0000\u008e"+
+ "\u0250\u0001\u0000\u0000\u0000\u0090\u0252\u0001\u0000\u0000\u0000\u0092"+
+ "\u025d\u0001\u0000\u0000\u0000\u0094\u0263\u0001\u0000\u0000\u0000\u0096"+
+ "\u026a\u0001\u0000\u0000\u0000\u0098\u0270\u0001\u0000\u0000\u0000\u009a"+
+ "\u0272\u0001\u0000\u0000\u0000\u009c\u0277\u0001\u0000\u0000\u0000\u009e"+
+ "\u027c\u0001\u0000\u0000\u0000\u00a0\u0283\u0001\u0000\u0000\u0000\u00a2"+
+ "\u028e\u0001\u0000\u0000\u0000\u00a4\u0299\u0001\u0000\u0000\u0000\u00a6"+
+ "\u02a6\u0001\u0000\u0000\u0000\u00a8\u02ac\u0001\u0000\u0000\u0000\u00aa"+
+ "\u02bb\u0001\u0000\u0000\u0000\u00ac\u02c1\u0001\u0000\u0000\u0000\u00ae"+
+ "\u02d0\u0001\u0000\u0000\u0000\u00b0\u02d2\u0001\u0000\u0000\u0000\u00b2"+
+ "\u02ee\u0001\u0000\u0000\u0000\u00b4\u02f8\u0001\u0000\u0000\u0000\u00b6"+
+ "\u02fa\u0001\u0000\u0000\u0000\u00b8\u02fc\u0001\u0000\u0000\u0000\u00ba"+
+ "\u02fe\u0001\u0000\u0000\u0000\u00bc\u0306\u0001\u0000\u0000\u0000\u00be"+
+ "\u0308\u0001\u0000\u0000\u0000\u00c0\u030a\u0001\u0000\u0000\u0000\u00c2"+
+ "\u030d\u0001\u0000\u0000\u0000\u00c4\u0313\u0001\u0000\u0000\u0000\u00c6"+
+ "\u0321\u0001\u0000\u0000\u0000\u00c8\u033e\u0001\u0000\u0000\u0000\u00ca"+
+ "\u0342\u0001\u0000\u0000\u0000\u00cc\u00cd\u0005b\u0000\u0000\u00cd\u00ce"+
+ "\u0005r\u0000\u0000\u00ce\u00cf\u0005e\u0000\u0000\u00cf\u00d0\u0005a"+
+ "\u0000\u0000\u00d0\u00d1\u0005k\u0000\u0000\u00d1\u00d2\u0001\u0000\u0000"+
+ "\u0000\u00d2\u00d3\u0006\u0000\u0000\u0000\u00d3\u0003\u0001\u0000\u0000"+
+ "\u0000\u00d4\u00d5\u0005d\u0000\u0000\u00d5\u00d6\u0005e\u0000\u0000\u00d6"+
+ "\u00d7\u0005f\u0000\u0000\u00d7\u00d8\u0005a\u0000\u0000\u00d8\u00d9\u0005"+
+ "u\u0000\u0000\u00d9\u00da\u0005l\u0000\u0000\u00da\u00db\u0005t\u0000"+
+ "\u0000\u00db\u0005\u0001\u0000\u0000\u0000\u00dc\u00dd\u0005f\u0000\u0000"+
+ "\u00dd\u00de\u0005u\u0000\u0000\u00de\u00df\u0005n\u0000\u0000\u00df\u00e0"+
+ "\u0005c\u0000\u0000\u00e0\u0007\u0001\u0000\u0000\u0000\u00e1\u00e2\u0005"+
+ "i\u0000\u0000\u00e2\u00e3\u0005n\u0000\u0000\u00e3\u00e4\u0005t\u0000"+
+ "\u0000\u00e4\u00e5\u0005e\u0000\u0000\u00e5\u00e6\u0005r\u0000\u0000\u00e6"+
+ "\u00e7\u0005f\u0000\u0000\u00e7\u00e8\u0005a\u0000\u0000\u00e8\u00e9\u0005"+
+ "c\u0000\u0000\u00e9\u00ea\u0005e\u0000\u0000\u00ea\t\u0001\u0000\u0000"+
+ "\u0000\u00eb\u00ec\u0005s\u0000\u0000\u00ec\u00ed\u0005e\u0000\u0000\u00ed"+
+ "\u00ee\u0005l\u0000\u0000\u00ee\u00ef\u0005e\u0000\u0000\u00ef\u00f0\u0005"+
+ "c\u0000\u0000\u00f0\u00f1\u0005t\u0000\u0000\u00f1\u000b\u0001\u0000\u0000"+
+ "\u0000\u00f2\u00f3\u0005c\u0000\u0000\u00f3\u00f4\u0005a\u0000\u0000\u00f4"+
+ "\u00f5\u0005s\u0000\u0000\u00f5\u00f6\u0005e\u0000\u0000\u00f6\r\u0001"+
+ "\u0000\u0000\u0000\u00f7\u00f8\u0005d\u0000\u0000\u00f8\u00f9\u0005e\u0000"+
+ "\u0000\u00f9\u00fa\u0005f\u0000\u0000\u00fa\u00fb\u0005e\u0000\u0000\u00fb"+
+ "\u00fc\u0005r\u0000\u0000\u00fc\u000f\u0001\u0000\u0000\u0000\u00fd\u00fe"+
+ "\u0005g\u0000\u0000\u00fe\u00ff\u0005o\u0000\u0000\u00ff\u0011\u0001\u0000"+
+ "\u0000\u0000\u0100\u0101\u0005m\u0000\u0000\u0101\u0102\u0005a\u0000\u0000"+
+ "\u0102\u0103\u0005p\u0000\u0000\u0103\u0013\u0001\u0000\u0000\u0000\u0104"+
+ "\u0105\u0005s\u0000\u0000\u0105\u0106\u0005t\u0000\u0000\u0106\u0107\u0005"+
+ "r\u0000\u0000\u0107\u0108\u0005u\u0000\u0000\u0108\u0109\u0005c\u0000"+
+ "\u0000\u0109\u010a\u0005t\u0000\u0000\u010a\u0015\u0001\u0000\u0000\u0000"+
+ "\u010b\u010c\u0005c\u0000\u0000\u010c\u010d\u0005h\u0000\u0000\u010d\u010e"+
+ "\u0005a\u0000\u0000\u010e\u010f\u0005n\u0000\u0000\u010f\u0017\u0001\u0000"+
+ "\u0000\u0000\u0110\u0111\u0005e\u0000\u0000\u0111\u0112\u0005l\u0000\u0000"+
+ "\u0112\u0113\u0005s\u0000\u0000\u0113\u0114\u0005e\u0000\u0000\u0114\u0019"+
+ "\u0001\u0000\u0000\u0000\u0115\u0116\u0005g\u0000\u0000\u0116\u0117\u0005"+
+ "o\u0000\u0000\u0117\u0118\u0005t\u0000\u0000\u0118\u0119\u0005o\u0000"+
+ "\u0000\u0119\u001b\u0001\u0000\u0000\u0000\u011a\u011b\u0005p\u0000\u0000"+
+ "\u011b\u011c\u0005a\u0000\u0000\u011c\u011d\u0005c\u0000\u0000\u011d\u011e"+
+ "\u0005k\u0000\u0000\u011e\u011f\u0005a\u0000\u0000\u011f\u0120\u0005g"+
+ "\u0000\u0000\u0120\u0121\u0005e\u0000\u0000\u0121\u001d\u0001\u0000\u0000"+
+ "\u0000\u0122\u0123\u0005s\u0000\u0000\u0123\u0124\u0005w\u0000\u0000\u0124"+
+ "\u0125\u0005i\u0000\u0000\u0125\u0126\u0005t\u0000\u0000\u0126\u0127\u0005"+
+ "c\u0000\u0000\u0127\u0128\u0005h\u0000\u0000\u0128\u001f\u0001\u0000\u0000"+
+ "\u0000\u0129\u012a\u0005c\u0000\u0000\u012a\u012b\u0005o\u0000\u0000\u012b"+
+ "\u012c\u0005n\u0000\u0000\u012c\u012d\u0005s\u0000\u0000\u012d\u012e\u0005"+
+ "t\u0000\u0000\u012e!\u0001\u0000\u0000\u0000\u012f\u0130\u0005f\u0000"+
+ "\u0000\u0130\u0131\u0005a\u0000\u0000\u0131\u0132\u0005l\u0000\u0000\u0132"+
+ "\u0133\u0005l\u0000\u0000\u0133\u0134\u0005t\u0000\u0000\u0134\u0135\u0005"+
+ "h\u0000\u0000\u0135\u0136\u0005r\u0000\u0000\u0136\u0137\u0005o\u0000"+
+ "\u0000\u0137\u0138\u0005u\u0000\u0000\u0138\u0139\u0005g\u0000\u0000\u0139"+
+ "\u013a\u0005h\u0000\u0000\u013a\u013b\u0001\u0000\u0000\u0000\u013b\u013c"+
+ "\u0006\u0010\u0000\u0000\u013c#\u0001\u0000\u0000\u0000\u013d\u013e\u0005"+
+ "i\u0000\u0000\u013e\u013f\u0005f\u0000\u0000\u013f%\u0001\u0000\u0000"+
+ "\u0000\u0140\u0141\u0005r\u0000\u0000\u0141\u0142\u0005a\u0000\u0000\u0142"+
+ "\u0143\u0005n\u0000\u0000\u0143\u0144\u0005g\u0000\u0000\u0144\u0145\u0005"+
+ "e\u0000\u0000\u0145\'\u0001\u0000\u0000\u0000\u0146\u0147\u0005t\u0000"+
+ "\u0000\u0147\u0148\u0005y\u0000\u0000\u0148\u0149\u0005p\u0000\u0000\u0149"+
+ "\u014a\u0005e\u0000\u0000\u014a)\u0001\u0000\u0000\u0000\u014b\u014c\u0005"+
+ "c\u0000\u0000\u014c\u014d\u0005o\u0000\u0000\u014d\u014e\u0005n\u0000"+
+ "\u0000\u014e\u014f\u0005t\u0000\u0000\u014f\u0150\u0005i\u0000\u0000\u0150"+
+ "\u0151\u0005n\u0000\u0000\u0151\u0152\u0005u\u0000\u0000\u0152\u0153\u0005"+
+ "e\u0000\u0000\u0153\u0154\u0001\u0000\u0000\u0000\u0154\u0155\u0006\u0014"+
+ "\u0000\u0000\u0155+\u0001\u0000\u0000\u0000\u0156\u0157\u0005f\u0000\u0000"+
+ "\u0157\u0158\u0005o\u0000\u0000\u0158\u0159\u0005r\u0000\u0000\u0159-"+
+ "\u0001\u0000\u0000\u0000\u015a\u015b\u0005i\u0000\u0000\u015b\u015c\u0005"+
+ "m\u0000\u0000\u015c\u015d\u0005p\u0000\u0000\u015d\u015e\u0005o\u0000"+
+ "\u0000\u015e\u015f\u0005r\u0000\u0000\u015f\u0160\u0005t\u0000\u0000\u0160"+
+ "/\u0001\u0000\u0000\u0000\u0161\u0162\u0005r\u0000\u0000\u0162\u0163\u0005"+
+ "e\u0000\u0000\u0163\u0164\u0005t\u0000\u0000\u0164\u0165\u0005u\u0000"+
+ "\u0000\u0165\u0166\u0005r\u0000\u0000\u0166\u0167\u0005n\u0000\u0000\u0167"+
+ "\u0168\u0001\u0000\u0000\u0000\u0168\u0169\u0006\u0017\u0000\u0000\u0169"+
+ "1\u0001\u0000\u0000\u0000\u016a\u016b\u0005v\u0000\u0000\u016b\u016c\u0005"+
+ "a\u0000\u0000\u016c\u016d\u0005r\u0000\u0000\u016d3\u0001\u0000\u0000"+
+ "\u0000\u016e\u016f\u0005n\u0000\u0000\u016f\u0170\u0005i\u0000\u0000\u0170"+
+ "\u0171\u0005l\u0000\u0000\u0171\u0172\u0001\u0000\u0000\u0000\u0172\u0173"+
+ "\u0006\u0019\u0000\u0000\u01735\u0001\u0000\u0000\u0000\u0174\u0179\u0003"+
+ "\u00bc]\u0000\u0175\u0178\u0003\u00bc]\u0000\u0176\u0178\u0003\u00be^"+
+ "\u0000\u0177\u0175\u0001\u0000\u0000\u0000\u0177\u0176\u0001\u0000\u0000"+
+ "\u0000\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000\u0000"+
+ "\u0000\u0179\u017a\u0001\u0000\u0000\u0000\u017a\u017c\u0001\u0000\u0000"+
+ "\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017d\u0006\u001a\u0000"+
+ "\u0000\u017d7\u0001\u0000\u0000\u0000\u017e\u017f\u0005(\u0000\u0000\u017f"+
+ "9\u0001\u0000\u0000\u0000\u0180\u0181\u0005)\u0000\u0000\u0181\u0182\u0001"+
+ "\u0000\u0000\u0000\u0182\u0183\u0006\u001c\u0000\u0000\u0183;\u0001\u0000"+
+ "\u0000\u0000\u0184\u0185\u0005{\u0000\u0000\u0185=\u0001\u0000\u0000\u0000"+
+ "\u0186\u0187\u0005}\u0000\u0000\u0187\u0188\u0001\u0000\u0000\u0000\u0188"+
+ "\u0189\u0006\u001e\u0000\u0000\u0189?\u0001\u0000\u0000\u0000\u018a\u018b"+
+ "\u0005[\u0000\u0000\u018bA\u0001\u0000\u0000\u0000\u018c\u018d\u0005]"+
+ "\u0000\u0000\u018d\u018e\u0001\u0000\u0000\u0000\u018e\u018f\u0006 \u0000"+
+ "\u0000\u018fC\u0001\u0000\u0000\u0000\u0190\u0191\u0005=\u0000\u0000\u0191"+
+ "E\u0001\u0000\u0000\u0000\u0192\u0193\u0005,\u0000\u0000\u0193G\u0001"+
+ "\u0000\u0000\u0000\u0194\u0195\u0005;\u0000\u0000\u0195I\u0001\u0000\u0000"+
+ "\u0000\u0196\u0197\u0005:\u0000\u0000\u0197K\u0001\u0000\u0000\u0000\u0198"+
+ "\u0199\u0005.\u0000\u0000\u0199M\u0001\u0000\u0000\u0000\u019a\u019b\u0005"+
+ "+\u0000\u0000\u019b\u019c\u0005+\u0000\u0000\u019c\u019d\u0001\u0000\u0000"+
+ "\u0000\u019d\u019e\u0006&\u0000\u0000\u019eO\u0001\u0000\u0000\u0000\u019f"+
+ "\u01a0\u0005-\u0000\u0000\u01a0\u01a1\u0005-\u0000\u0000\u01a1\u01a2\u0001"+
+ "\u0000\u0000\u0000\u01a2\u01a3\u0006\'\u0000\u0000\u01a3Q\u0001\u0000"+
+ "\u0000\u0000\u01a4\u01a5\u0005:\u0000\u0000\u01a5\u01a6\u0005=\u0000\u0000"+
+ "\u01a6S\u0001\u0000\u0000\u0000\u01a7\u01a8\u0005.\u0000\u0000\u01a8\u01a9"+
+ "\u0005.\u0000\u0000\u01a9\u01aa\u0005.\u0000\u0000\u01aaU\u0001\u0000"+
+ "\u0000\u0000\u01ab\u01ac\u0005|\u0000\u0000\u01ac\u01ad\u0005|\u0000\u0000"+
+ "\u01adW\u0001\u0000\u0000\u0000\u01ae\u01af\u0005&\u0000\u0000\u01af\u01b0"+
+ "\u0005&\u0000\u0000\u01b0Y\u0001\u0000\u0000\u0000\u01b1\u01b2\u0005="+
+ "\u0000\u0000\u01b2\u01b3\u0005=\u0000\u0000\u01b3[\u0001\u0000\u0000\u0000"+
+ "\u01b4\u01b5\u0005!\u0000\u0000\u01b5\u01b6\u0005=\u0000\u0000\u01b6]"+
+ "\u0001\u0000\u0000\u0000\u01b7\u01b8\u0005<\u0000\u0000\u01b8_\u0001\u0000"+
+ "\u0000\u0000\u01b9\u01ba\u0005<\u0000\u0000\u01ba\u01bb\u0005=\u0000\u0000"+
+ "\u01bba\u0001\u0000\u0000\u0000\u01bc\u01bd\u0005>\u0000\u0000\u01bdc"+
+ "\u0001\u0000\u0000\u0000\u01be\u01bf\u0005>\u0000\u0000\u01bf\u01c0\u0005"+
+ "=\u0000\u0000\u01c0e\u0001\u0000\u0000\u0000\u01c1\u01c2\u0005|\u0000"+
+ "\u0000\u01c2g\u0001\u0000\u0000\u0000\u01c3\u01c4\u0005/\u0000\u0000\u01c4"+
+ "i\u0001\u0000\u0000\u0000\u01c5\u01c6\u0005%\u0000\u0000\u01c6k\u0001"+
+ "\u0000\u0000\u0000\u01c7\u01c8\u0005<\u0000\u0000\u01c8\u01c9\u0005<\u0000"+
+ "\u0000\u01c9m\u0001\u0000\u0000\u0000\u01ca\u01cb\u0005>\u0000\u0000\u01cb"+
+ "\u01cc\u0005>\u0000\u0000\u01cco\u0001\u0000\u0000\u0000\u01cd\u01ce\u0005"+
+ "&\u0000\u0000\u01ce\u01cf\u0005^\u0000\u0000\u01cfq\u0001\u0000\u0000"+
+ "\u0000\u01d0\u01d1\u0005!\u0000\u0000\u01d1s\u0001\u0000\u0000\u0000\u01d2"+
+ "\u01d3\u0005+\u0000\u0000\u01d3u\u0001\u0000\u0000\u0000\u01d4\u01d5\u0005"+
+ "-\u0000\u0000\u01d5w\u0001\u0000\u0000\u0000\u01d6\u01d7\u0005^\u0000"+
+ "\u0000\u01d7y\u0001\u0000\u0000\u0000\u01d8\u01d9\u0005*\u0000\u0000\u01d9"+
+ "{\u0001\u0000\u0000\u0000\u01da\u01db\u0005&\u0000\u0000\u01db}\u0001"+
+ "\u0000\u0000\u0000\u01dc\u01dd\u0005<\u0000\u0000\u01dd\u01de\u0005-\u0000"+
+ "\u0000\u01de\u007f\u0001\u0000\u0000\u0000\u01df\u01eb\u00050\u0000\u0000"+
+ "\u01e0\u01e7\u0007\u0000\u0000\u0000\u01e1\u01e3\u0005_\u0000\u0000\u01e2"+
+ "\u01e1\u0001\u0000\u0000\u0000\u01e2\u01e3\u0001\u0000\u0000\u0000\u01e3"+
+ "\u01e4\u0001\u0000\u0000\u0000\u01e4\u01e6\u0007\u0001\u0000\u0000\u01e5"+
+ "\u01e2\u0001\u0000\u0000\u0000\u01e6\u01e9\u0001\u0000\u0000\u0000\u01e7"+
+ "\u01e5\u0001\u0000\u0000\u0000\u01e7\u01e8\u0001\u0000\u0000\u0000\u01e8"+
+ "\u01eb\u0001\u0000\u0000\u0000\u01e9\u01e7\u0001\u0000\u0000\u0000\u01ea"+
+ "\u01df\u0001\u0000\u0000\u0000\u01ea\u01e0\u0001\u0000\u0000\u0000\u01eb"+
+ "\u01ec\u0001\u0000\u0000\u0000\u01ec\u01ed\u0006?\u0000\u0000\u01ed\u0081"+
+ "\u0001\u0000\u0000\u0000\u01ee\u01ef\u00050\u0000\u0000\u01ef\u01f4\u0007"+
+ "\u0002\u0000\u0000\u01f0\u01f2\u0005_\u0000\u0000\u01f1\u01f0\u0001\u0000"+
+ "\u0000\u0000\u01f1\u01f2\u0001\u0000\u0000\u0000\u01f2\u01f3\u0001\u0000"+
+ "\u0000\u0000\u01f3\u01f5\u0003\u00b8[\u0000\u01f4\u01f1\u0001\u0000\u0000"+
+ "\u0000\u01f5\u01f6\u0001\u0000\u0000\u0000\u01f6\u01f4\u0001\u0000\u0000"+
+ "\u0000\u01f6\u01f7\u0001\u0000\u0000\u0000\u01f7\u01f8\u0001\u0000\u0000"+
+ "\u0000\u01f8\u01f9\u0006@\u0000\u0000\u01f9\u0083\u0001\u0000\u0000\u0000"+
+ "\u01fa\u01fc\u00050\u0000\u0000\u01fb\u01fd\u0007\u0003\u0000\u0000\u01fc"+
+ "\u01fb\u0001\u0000\u0000\u0000\u01fc\u01fd\u0001\u0000\u0000\u0000\u01fd"+
+ "\u0202\u0001\u0000\u0000\u0000\u01fe\u0200\u0005_\u0000\u0000\u01ff\u01fe"+
+ "\u0001\u0000\u0000\u0000\u01ff\u0200\u0001\u0000\u0000\u0000\u0200\u0201"+
+ "\u0001\u0000\u0000\u0000\u0201\u0203\u0003\u00b4Y\u0000\u0202\u01ff\u0001"+
+ "\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000\u0000\u0204\u0202\u0001"+
+ "\u0000\u0000\u0000\u0204\u0205\u0001\u0000\u0000\u0000\u0205\u0206\u0001"+
+ "\u0000\u0000\u0000\u0206\u0207\u0006A\u0000\u0000\u0207\u0085\u0001\u0000"+
+ "\u0000\u0000\u0208\u0209\u00050\u0000\u0000\u0209\u020e\u0007\u0004\u0000"+
+ "\u0000\u020a\u020c\u0005_\u0000\u0000\u020b\u020a\u0001\u0000\u0000\u0000"+
+ "\u020b\u020c\u0001\u0000\u0000\u0000\u020c\u020d\u0001\u0000\u0000\u0000"+
+ "\u020d\u020f\u0003\u00b6Z\u0000\u020e\u020b\u0001\u0000\u0000\u0000\u020f"+
+ "\u0210\u0001\u0000\u0000\u0000\u0210\u020e\u0001\u0000\u0000\u0000\u0210"+
+ "\u0211\u0001\u0000\u0000\u0000\u0211\u0212\u0001\u0000\u0000\u0000\u0212"+
+ "\u0213\u0006B\u0000\u0000\u0213\u0087\u0001\u0000\u0000\u0000\u0214\u0217"+
+ "\u0003\u008aD\u0000\u0215\u0217\u0003\u008cE\u0000\u0216\u0214\u0001\u0000"+
+ "\u0000\u0000\u0216\u0215\u0001\u0000\u0000\u0000\u0217\u0218\u0001\u0000"+
+ "\u0000\u0000\u0218\u0219\u0006C\u0000\u0000\u0219\u0089\u0001\u0000\u0000"+
+ "\u0000\u021a\u0223\u0003\u00b2X\u0000\u021b\u021d\u0005.\u0000\u0000\u021c"+
+ "\u021e\u0003\u00b2X\u0000\u021d\u021c\u0001\u0000\u0000\u0000\u021d\u021e"+
+ "\u0001\u0000\u0000\u0000\u021e\u0220\u0001\u0000\u0000\u0000\u021f\u0221"+
+ "\u0003\u00ba\\\u0000\u0220\u021f\u0001\u0000\u0000\u0000\u0220\u0221\u0001"+
+ "\u0000\u0000\u0000\u0221\u0224\u0001\u0000\u0000\u0000\u0222\u0224\u0003"+
+ "\u00ba\\\u0000\u0223\u021b\u0001\u0000\u0000\u0000\u0223\u0222\u0001\u0000"+
+ "\u0000\u0000\u0224\u022b\u0001\u0000\u0000\u0000\u0225\u0226\u0005.\u0000"+
+ "\u0000\u0226\u0228\u0003\u00b2X\u0000\u0227\u0229\u0003\u00ba\\\u0000"+
+ "\u0228\u0227\u0001\u0000\u0000\u0000\u0228\u0229\u0001\u0000\u0000\u0000"+
+ "\u0229\u022b\u0001\u0000\u0000\u0000\u022a\u021a\u0001\u0000\u0000\u0000"+
+ "\u022a\u0225\u0001\u0000\u0000\u0000\u022b\u008b\u0001\u0000\u0000\u0000"+
+ "\u022c\u022d\u00050\u0000\u0000\u022d\u022e\u0007\u0004\u0000\u0000\u022e"+
+ "\u022f\u0003\u008eF\u0000\u022f\u0230\u0003\u0090G\u0000\u0230\u008d\u0001"+
+ "\u0000\u0000\u0000\u0231\u0233\u0005_\u0000\u0000\u0232\u0231\u0001\u0000"+
+ "\u0000\u0000\u0232\u0233\u0001\u0000\u0000\u0000\u0233\u0234\u0001\u0000"+
+ "\u0000\u0000\u0234\u0236\u0003\u00b6Z\u0000\u0235\u0232\u0001\u0000\u0000"+
+ "\u0000\u0236\u0237\u0001\u0000\u0000\u0000\u0237\u0235\u0001\u0000\u0000"+
+ "\u0000\u0237\u0238\u0001\u0000\u0000\u0000\u0238\u0243\u0001\u0000\u0000"+
+ "\u0000\u0239\u0240\u0005.\u0000\u0000\u023a\u023c\u0005_\u0000\u0000\u023b"+
+ "\u023a\u0001\u0000\u0000\u0000\u023b\u023c\u0001\u0000\u0000\u0000\u023c"+
+ "\u023d\u0001\u0000\u0000\u0000\u023d\u023f\u0003\u00b6Z\u0000\u023e\u023b"+
+ "\u0001\u0000\u0000\u0000\u023f\u0242\u0001\u0000\u0000\u0000\u0240\u023e"+
+ "\u0001\u0000\u0000\u0000\u0240\u0241\u0001\u0000\u0000\u0000\u0241\u0244"+
+ "\u0001\u0000\u0000\u0000\u0242\u0240\u0001\u0000\u0000\u0000\u0243\u0239"+
+ "\u0001\u0000\u0000\u0000\u0243\u0244\u0001\u0000\u0000\u0000\u0244\u0251"+
+ "\u0001\u0000\u0000\u0000\u0245\u0246\u0005.\u0000\u0000\u0246\u024d\u0003"+
+ "\u00b6Z\u0000\u0247\u0249\u0005_\u0000\u0000\u0248\u0247\u0001\u0000\u0000"+
+ "\u0000\u0248\u0249\u0001\u0000\u0000\u0000\u0249\u024a\u0001\u0000\u0000"+
+ "\u0000\u024a\u024c\u0003\u00b6Z\u0000\u024b\u0248\u0001\u0000\u0000\u0000"+
+ "\u024c\u024f\u0001\u0000\u0000\u0000\u024d\u024b\u0001\u0000\u0000\u0000"+
+ "\u024d\u024e\u0001\u0000\u0000\u0000\u024e\u0251\u0001\u0000\u0000\u0000"+
+ "\u024f\u024d\u0001\u0000\u0000\u0000\u0250\u0235\u0001\u0000\u0000\u0000"+
+ "\u0250\u0245\u0001\u0000\u0000\u0000\u0251\u008f\u0001\u0000\u0000\u0000"+
+ "\u0252\u0254\u0007\u0005\u0000\u0000\u0253\u0255\u0007\u0006\u0000\u0000"+
+ "\u0254\u0253\u0001\u0000\u0000\u0000\u0254\u0255\u0001\u0000\u0000\u0000"+
+ "\u0255\u0256\u0001\u0000\u0000\u0000\u0256\u0257\u0003\u00b2X\u0000\u0257"+
+ "\u0091\u0001\u0000\u0000\u0000\u0258\u025e\u0003\u0080?\u0000\u0259\u025e"+
+ "\u0003\u0082@\u0000\u025a\u025e\u0003\u0084A\u0000\u025b\u025e\u0003\u0086"+
+ "B\u0000\u025c\u025e\u0003\u0088C\u0000\u025d\u0258\u0001\u0000\u0000\u0000"+
+ "\u025d\u0259\u0001\u0000\u0000\u0000\u025d\u025a\u0001\u0000\u0000\u0000"+
+ "\u025d\u025b\u0001\u0000\u0000\u0000\u025d\u025c\u0001\u0000\u0000\u0000"+
+ "\u025e\u025f\u0001\u0000\u0000\u0000\u025f\u0260\u0005i\u0000\u0000\u0260"+
+ "\u0261\u0001\u0000\u0000\u0000\u0261\u0262\u0006H\u0000\u0000\u0262\u0093"+
+ "\u0001\u0000\u0000\u0000\u0263\u0266\u0005\'\u0000\u0000\u0264\u0267\u0003"+
+ "\u00aeV\u0000\u0265\u0267\u0003\u0098K\u0000\u0266\u0264\u0001\u0000\u0000"+
+ "\u0000\u0266\u0265\u0001\u0000\u0000\u0000\u0267\u0268\u0001\u0000\u0000"+
+ "\u0000\u0268\u0269\u0005\'\u0000\u0000\u0269\u0095\u0001\u0000\u0000\u0000"+
+ "\u026a\u026b\u0003\u0094I\u0000\u026b\u026c\u0001\u0000\u0000\u0000\u026c"+
+ "\u026d\u0006J\u0000\u0000\u026d\u0097\u0001\u0000\u0000\u0000\u026e\u0271"+
+ "\u0003\u009aL\u0000\u026f\u0271\u0003\u009cM\u0000\u0270\u026e\u0001\u0000"+
+ "\u0000\u0000\u0270\u026f\u0001\u0000\u0000\u0000\u0271\u0099\u0001\u0000"+
+ "\u0000\u0000\u0272\u0273\u0005\\\u0000\u0000\u0273\u0274\u0003\u00b4Y"+
+ "\u0000\u0274\u0275\u0003\u00b4Y\u0000\u0275\u0276\u0003\u00b4Y\u0000\u0276"+
+ "\u009b\u0001\u0000\u0000\u0000\u0277\u0278\u0005\\\u0000\u0000\u0278\u0279"+
+ "\u0005x\u0000\u0000\u0279\u027a\u0003\u00b6Z\u0000\u027a\u027b\u0003\u00b6"+
+ "Z\u0000\u027b\u009d\u0001\u0000\u0000\u0000\u027c\u027d\u0005\\\u0000"+
+ "\u0000\u027d\u027e\u0005u\u0000\u0000\u027e\u027f\u0003\u00b6Z\u0000\u027f"+
+ "\u0280\u0003\u00b6Z\u0000\u0280\u0281\u0003\u00b6Z\u0000\u0281\u0282\u0003"+
+ "\u00b6Z\u0000\u0282\u009f\u0001\u0000\u0000\u0000\u0283\u0284\u0005\\"+
+ "\u0000\u0000\u0284\u0285\u0005U\u0000\u0000\u0285\u0286\u0003\u00b6Z\u0000"+
+ "\u0286\u0287\u0003\u00b6Z\u0000\u0287\u0288\u0003\u00b6Z\u0000\u0288\u0289"+
+ "\u0003\u00b6Z\u0000\u0289\u028a\u0003\u00b6Z\u0000\u028a\u028b\u0003\u00b6"+
+ "Z\u0000\u028b\u028c\u0003\u00b6Z\u0000\u028c\u028d\u0003\u00b6Z\u0000"+
+ "\u028d\u00a1\u0001\u0000\u0000\u0000\u028e\u0292\u0005`\u0000\u0000\u028f"+
+ "\u0291\b\u0007\u0000\u0000\u0290\u028f\u0001\u0000\u0000\u0000\u0291\u0294"+
+ "\u0001\u0000\u0000\u0000\u0292\u0290\u0001\u0000\u0000\u0000\u0292\u0293"+
+ "\u0001\u0000\u0000\u0000\u0293\u0295\u0001\u0000\u0000\u0000\u0294\u0292"+
+ "\u0001\u0000\u0000\u0000\u0295\u0296\u0005`\u0000\u0000\u0296\u0297\u0001"+
+ "\u0000\u0000\u0000\u0297\u0298\u0006P\u0000\u0000\u0298\u00a3\u0001\u0000"+
+ "\u0000\u0000\u0299\u029e\u0005\"\u0000\u0000\u029a\u029d\b\b\u0000\u0000"+
+ "\u029b\u029d\u0003\u00b0W\u0000\u029c\u029a\u0001\u0000\u0000\u0000\u029c"+
+ "\u029b\u0001\u0000\u0000\u0000\u029d\u02a0\u0001\u0000\u0000\u0000\u029e"+
+ "\u029c\u0001\u0000\u0000\u0000\u029e\u029f\u0001\u0000\u0000\u0000\u029f"+
+ "\u02a1\u0001\u0000\u0000\u0000\u02a0\u029e\u0001\u0000\u0000\u0000\u02a1"+
+ "\u02a2\u0005\"\u0000\u0000\u02a2\u02a3\u0001\u0000\u0000\u0000\u02a3\u02a4"+
+ "\u0006Q\u0000\u0000\u02a4\u00a5\u0001\u0000\u0000\u0000\u02a5\u02a7\u0007"+
+ "\t\u0000\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a7\u02a8\u0001\u0000"+
+ "\u0000\u0000\u02a8\u02a6\u0001\u0000\u0000\u0000\u02a8\u02a9\u0001\u0000"+
+ "\u0000\u0000\u02a9\u02aa\u0001\u0000\u0000\u0000\u02aa\u02ab\u0006R\u0001"+
+ "\u0000\u02ab\u00a7\u0001\u0000\u0000\u0000\u02ac\u02ad\u0005/\u0000\u0000"+
+ "\u02ad\u02ae\u0005*\u0000\u0000\u02ae\u02b2\u0001\u0000\u0000\u0000\u02af"+
+ "\u02b1\t\u0000\u0000\u0000\u02b0\u02af\u0001\u0000\u0000\u0000\u02b1\u02b4"+
+ "\u0001\u0000\u0000\u0000\u02b2\u02b3\u0001\u0000\u0000\u0000\u02b2\u02b0"+
+ "\u0001\u0000\u0000\u0000\u02b3\u02b5\u0001\u0000\u0000\u0000\u02b4\u02b2"+
+ "\u0001\u0000\u0000\u0000\u02b5\u02b6\u0005*\u0000\u0000\u02b6\u02b7\u0005"+
+ "/\u0000\u0000\u02b7\u02b8\u0001\u0000\u0000\u0000\u02b8\u02b9\u0006S\u0001"+
+ "\u0000\u02b9\u00a9\u0001\u0000\u0000\u0000\u02ba\u02bc\u0007\n\u0000\u0000"+
+ "\u02bb\u02ba\u0001\u0000\u0000\u0000\u02bc\u02bd\u0001\u0000\u0000\u0000"+
+ "\u02bd\u02bb\u0001\u0000\u0000\u0000\u02bd\u02be\u0001\u0000\u0000\u0000"+
+ "\u02be\u02bf\u0001\u0000\u0000\u0000\u02bf\u02c0\u0006T\u0001\u0000\u02c0"+
+ "\u00ab\u0001\u0000\u0000\u0000\u02c1\u02c2\u0005/\u0000\u0000\u02c2\u02c3"+
+ "\u0005/\u0000\u0000\u02c3\u02c7\u0001\u0000\u0000\u0000\u02c4\u02c6\b"+
+ "\n\u0000\u0000\u02c5\u02c4\u0001\u0000\u0000\u0000\u02c6\u02c9\u0001\u0000"+
+ "\u0000\u0000\u02c7\u02c5\u0001\u0000\u0000\u0000\u02c7\u02c8\u0001\u0000"+
+ "\u0000\u0000\u02c8\u02ca\u0001\u0000\u0000\u0000\u02c9\u02c7\u0001\u0000"+
+ "\u0000\u0000\u02ca\u02cb\u0006U\u0001\u0000\u02cb\u00ad\u0001\u0000\u0000"+
+ "\u0000\u02cc\u02d1\b\u000b\u0000\u0000\u02cd\u02d1\u0003\u009eN\u0000"+
+ "\u02ce\u02d1\u0003\u00a0O\u0000\u02cf\u02d1\u0003\u00b0W\u0000\u02d0\u02cc"+
+ "\u0001\u0000\u0000\u0000\u02d0\u02cd\u0001\u0000\u0000\u0000\u02d0\u02ce"+
+ "\u0001\u0000\u0000\u0000\u02d0\u02cf\u0001\u0000\u0000\u0000\u02d1\u00af"+
+ "\u0001\u0000\u0000\u0000\u02d2\u02ec\u0005\\\u0000\u0000\u02d3\u02d4\u0005"+
+ "u\u0000\u0000\u02d4\u02d5\u0003\u00b6Z\u0000\u02d5\u02d6\u0003\u00b6Z"+
+ "\u0000\u02d6\u02d7\u0003\u00b6Z\u0000\u02d7\u02d8\u0003\u00b6Z\u0000\u02d8"+
+ "\u02ed\u0001\u0000\u0000\u0000\u02d9\u02da\u0005U\u0000\u0000\u02da\u02db"+
+ "\u0003\u00b6Z\u0000\u02db\u02dc\u0003\u00b6Z\u0000\u02dc\u02dd\u0003\u00b6"+
+ "Z\u0000\u02dd\u02de\u0003\u00b6Z\u0000\u02de\u02df\u0003\u00b6Z\u0000"+
+ "\u02df\u02e0\u0003\u00b6Z\u0000\u02e0\u02e1\u0003\u00b6Z\u0000\u02e1\u02e2"+
+ "\u0003\u00b6Z\u0000\u02e2\u02ed\u0001\u0000\u0000\u0000\u02e3\u02ed\u0007"+
+ "\f\u0000\u0000\u02e4\u02e5\u0003\u00b4Y\u0000\u02e5\u02e6\u0003\u00b4"+
+ "Y\u0000\u02e6\u02e7\u0003\u00b4Y\u0000\u02e7\u02ed\u0001\u0000\u0000\u0000"+
+ "\u02e8\u02e9\u0005x\u0000\u0000\u02e9\u02ea\u0003\u00b6Z\u0000\u02ea\u02eb"+
+ "\u0003\u00b6Z\u0000\u02eb\u02ed\u0001\u0000\u0000\u0000\u02ec\u02d3\u0001"+
+ "\u0000\u0000\u0000\u02ec\u02d9\u0001\u0000\u0000\u0000\u02ec\u02e3\u0001"+
+ "\u0000\u0000\u0000\u02ec\u02e4\u0001\u0000\u0000\u0000\u02ec\u02e8\u0001"+
+ "\u0000\u0000\u0000\u02ed\u00b1\u0001\u0000\u0000\u0000\u02ee\u02f5\u0007"+
+ "\u0001\u0000\u0000\u02ef\u02f1\u0005_\u0000\u0000\u02f0\u02ef\u0001\u0000"+
+ "\u0000\u0000\u02f0\u02f1\u0001\u0000\u0000\u0000\u02f1\u02f2\u0001\u0000"+
+ "\u0000\u0000\u02f2\u02f4\u0007\u0001\u0000\u0000\u02f3\u02f0\u0001\u0000"+
+ "\u0000\u0000\u02f4\u02f7\u0001\u0000\u0000\u0000\u02f5\u02f3\u0001\u0000"+
+ "\u0000\u0000\u02f5\u02f6\u0001\u0000\u0000\u0000\u02f6\u00b3\u0001\u0000"+
+ "\u0000\u0000\u02f7\u02f5\u0001\u0000\u0000\u0000\u02f8\u02f9\u0007\r\u0000"+
+ "\u0000\u02f9\u00b5\u0001\u0000\u0000\u0000\u02fa\u02fb\u0007\u000e\u0000"+
+ "\u0000\u02fb\u00b7\u0001\u0000\u0000\u0000\u02fc\u02fd\u0007\u000f\u0000"+
+ "\u0000\u02fd\u00b9\u0001\u0000\u0000\u0000\u02fe\u0300\u0007\u0010\u0000"+
+ "\u0000\u02ff\u0301\u0007\u0006\u0000\u0000\u0300\u02ff\u0001\u0000\u0000"+
+ "\u0000\u0300\u0301\u0001\u0000\u0000\u0000\u0301\u0302\u0001\u0000\u0000"+
+ "\u0000\u0302\u0303\u0003\u00b2X\u0000\u0303\u00bb\u0001\u0000\u0000\u0000"+
+ "\u0304\u0307\u0003\u00c0_\u0000\u0305\u0307\u0005_\u0000\u0000\u0306\u0304"+
+ "\u0001\u0000\u0000\u0000\u0306\u0305\u0001\u0000\u0000\u0000\u0307\u00bd"+
+ "\u0001\u0000\u0000\u0000\u0308\u0309\u0007\u0011\u0000\u0000\u0309\u00bf"+
+ "\u0001\u0000\u0000\u0000\u030a\u030b\u0007\u0012\u0000\u0000\u030b\u00c1"+
+ "\u0001\u0000\u0000\u0000\u030c\u030e\u0007\t\u0000\u0000\u030d\u030c\u0001"+
+ "\u0000\u0000\u0000\u030e\u030f\u0001\u0000\u0000\u0000\u030f\u030d\u0001"+
+ "\u0000\u0000\u0000\u030f\u0310\u0001\u0000\u0000\u0000\u0310\u0311\u0001"+
+ "\u0000\u0000\u0000\u0311\u0312\u0006`\u0001\u0000\u0312\u00c3\u0001\u0000"+
+ "\u0000\u0000\u0313\u0314\u0005/\u0000\u0000\u0314\u0315\u0005*\u0000\u0000"+
+ "\u0315\u0319\u0001\u0000\u0000\u0000\u0316\u0318\b\n\u0000\u0000\u0317"+
+ "\u0316\u0001\u0000\u0000\u0000\u0318\u031b\u0001\u0000\u0000\u0000\u0319"+
+ "\u031a\u0001\u0000\u0000\u0000\u0319\u0317\u0001\u0000\u0000\u0000\u031a"+
+ "\u031c\u0001\u0000\u0000\u0000\u031b\u0319\u0001\u0000\u0000\u0000\u031c"+
+ "\u031d\u0005*\u0000\u0000\u031d\u031e\u0005/\u0000\u0000\u031e\u031f\u0001"+
+ "\u0000\u0000\u0000\u031f\u0320\u0006a\u0001\u0000\u0320\u00c5\u0001\u0000"+
+ "\u0000\u0000\u0321\u0322\u0005/\u0000\u0000\u0322\u0323\u0005/\u0000\u0000"+
+ "\u0323\u0327\u0001\u0000\u0000\u0000\u0324\u0326\b\n\u0000\u0000\u0325"+
+ "\u0324\u0001\u0000\u0000\u0000\u0326\u0329\u0001\u0000\u0000\u0000\u0327"+
+ "\u0325\u0001\u0000\u0000\u0000\u0327\u0328\u0001\u0000\u0000\u0000\u0328"+
+ "\u032a\u0001\u0000\u0000\u0000\u0329\u0327\u0001\u0000\u0000\u0000\u032a"+
+ "\u032b\u0006b\u0001\u0000\u032b\u00c7\u0001\u0000\u0000\u0000\u032c\u032e"+
+ "\u0007\n\u0000\u0000\u032d\u032c\u0001\u0000\u0000\u0000\u032e\u032f\u0001"+
+ "\u0000\u0000\u0000\u032f\u032d\u0001\u0000\u0000\u0000\u032f\u0330\u0001"+
+ "\u0000\u0000\u0000\u0330\u033f\u0001\u0000\u0000\u0000\u0331\u033f\u0005"+
+ ";\u0000\u0000\u0332\u0333\u0005/\u0000\u0000\u0333\u0334\u0005*\u0000"+
+ "\u0000\u0334\u0338\u0001\u0000\u0000\u0000\u0335\u0337\t\u0000\u0000\u0000"+
+ "\u0336\u0335\u0001\u0000\u0000\u0000\u0337\u033a\u0001\u0000\u0000\u0000"+
+ "\u0338\u0339\u0001\u0000\u0000\u0000\u0338\u0336\u0001\u0000\u0000\u0000"+
+ "\u0339\u033b\u0001\u0000\u0000\u0000\u033a\u0338\u0001\u0000\u0000\u0000"+
+ "\u033b\u033c\u0005*\u0000\u0000\u033c\u033f\u0005/\u0000\u0000\u033d\u033f"+
+ "\u0005\u0000\u0000\u0001\u033e\u032d\u0001\u0000\u0000\u0000\u033e\u0331"+
+ "\u0001\u0000\u0000\u0000\u033e\u0332\u0001\u0000\u0000\u0000\u033e\u033d"+
+ "\u0001\u0000\u0000\u0000\u033f\u0340\u0001\u0000\u0000\u0000\u0340\u0341"+
+ "\u0006c\u0002\u0000\u0341\u00c9\u0001\u0000\u0000\u0000\u0342\u0343\u0001"+
+ "\u0000\u0000\u0000\u0343\u0344\u0001\u0000\u0000\u0000\u0344\u0345\u0006"+
+ "d\u0002\u0000\u0345\u0346\u0006d\u0001\u0000\u0346\u00cb\u0001\u0000\u0000"+
+ "\u00003\u0000\u0001\u0177\u0179\u01e2\u01e7\u01ea\u01f1\u01f6\u01fc\u01ff"+
+ "\u0204\u020b\u0210\u0216\u021d\u0220\u0223\u0228\u022a\u0232\u0237\u023b"+
+ "\u0240\u0243\u0248\u024d\u0250\u0254\u025d\u0266\u0270\u0292\u029c\u029e"+
+ "\u02a8\u02b2\u02bd\u02c7\u02d0\u02ec\u02f0\u02f5\u0300\u0306\u030f\u0319"+
+ "\u0327\u032f\u0338\u033e\u0003\u0002\u0001\u0000\u0000\u0001\u0000\u0002"+
+ "\u0000\u0000";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ide/go.lang/src/org/antlr/parser/golang/GoParser.g4 b/ide/go.lang/src/org/antlr/parser/golang/GoParser.g4
new file mode 100644
index 0000000000..69f5f6b073
--- /dev/null
+++ b/ide/go.lang/src/org/antlr/parser/golang/GoParser.g4
@@ -0,0 +1,409 @@
+/*
+ [The "BSD licence"] Copyright (c) 2017 Sasa Coh, Michał Błotniak Copyright (c) 2019 Ivan Kochurkin,
+ kvanttt@gmail.com, Positive Technologies Copyright (c) 2019 Dmitry Rassadin,
+ flipparassa@gmail.com,Positive Technologies All rights reserved. Copyright (c) 2021 Martin Mirchev,
+ mirchevmartin2203@gmail.com
+
+ Redistribution and use in source and binary forms, with or without modification, are permitted
+ provided that the following conditions are met: 1. Redistributions of source code must retain the
+ above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in
+ binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution. 3. The name
+ of the author may not be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A Go grammar for ANTLR 4 derived from the Go Language Specification https://golang.org/ref/spec
+ */
+
+parser grammar GoParser;
+
+@header{
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// DO NOT EDIT THIS FILE MANUALLY!
+// SEE build.xml FOR INSTRUCTIONS
+
+
+package org.antlr.parser.golang;
+
+}
+
+options {
+ tokenVocab = GoLexer;
+ superClass = GoParserBase;
+}
+
+sourceFile:
+ packageClause eos (importDecl eos)* (
+ (functionDecl | methodDecl | declaration) eos
+ )* EOF;
+
+packageClause: PACKAGE packageName = IDENTIFIER;
+
+importDecl:
+ IMPORT (importSpec | L_PAREN (importSpec eos)* R_PAREN);
+
+importSpec: alias = (DOT | IDENTIFIER)? importPath;
+
+importPath: string_;
+
+declaration: constDecl | typeDecl | varDecl;
+
+constDecl: CONST (constSpec | L_PAREN (constSpec eos)* R_PAREN);
+
+constSpec: identifierList (type_? ASSIGN expressionList)?;
+
+identifierList: IDENTIFIER (COMMA IDENTIFIER)*;
+
+expressionList: expression (COMMA expression)*;
+
+typeDecl: TYPE (typeSpec | L_PAREN (typeSpec eos)* R_PAREN);
+
+typeSpec: IDENTIFIER ASSIGN? type_;
+
+// Function declarations
+
+functionDecl: FUNC IDENTIFIER (signature block?);
+
+methodDecl: FUNC receiver IDENTIFIER ( signature block?);
+
+receiver: parameters;
+
+varDecl: VAR (varSpec | L_PAREN (varSpec eos)* R_PAREN);
+
+varSpec:
+ identifierList (
+ type_ (ASSIGN expressionList)?
+ | ASSIGN expressionList
+ );
+
+block: L_CURLY statementList? R_CURLY;
+
+statementList: ((SEMI? | EOS? | {this.closingBracket()}?) statement eos)+;
+
+statement:
+ declaration
+ | labeledStmt
+ | simpleStmt
+ | goStmt
+ | returnStmt
+ | breakStmt
+ | continueStmt
+ | gotoStmt
+ | fallthroughStmt
+ | block
+ | ifStmt
+ | switchStmt
+ | selectStmt
+ | forStmt
+ | deferStmt;
+
+simpleStmt:
+ sendStmt
+ | incDecStmt
+ | assignment
+ | expressionStmt
+ | shortVarDecl;
+
+expressionStmt: expression;
+
+sendStmt: channel = expression RECEIVE expression;
+
+incDecStmt: expression (PLUS_PLUS | MINUS_MINUS);
+
+assignment: expressionList assign_op expressionList;
+
+assign_op: (
+ PLUS
+ | MINUS
+ | OR
+ | CARET
+ | STAR
+ | DIV
+ | MOD
+ | LSHIFT
+ | RSHIFT
+ | AMPERSAND
+ | BIT_CLEAR
+ )? ASSIGN;
+
+shortVarDecl: identifierList DECLARE_ASSIGN expressionList;
+
+emptyStmt: EOS | SEMI;
+
+labeledStmt: IDENTIFIER COLON statement?;
+
+returnStmt: RETURN expressionList?;
+
+breakStmt: BREAK IDENTIFIER?;
+
+continueStmt: CONTINUE IDENTIFIER?;
+
+gotoStmt: GOTO IDENTIFIER;
+
+fallthroughStmt: FALLTHROUGH;
+
+deferStmt: DEFER expression;
+
+ifStmt:
+ IF ( expression
+ | eos expression
+ | simpleStmt eos expression
+ ) block (
+ ELSE (ifStmt | block)
+ )?;
+
+switchStmt: exprSwitchStmt | typeSwitchStmt;
+
+exprSwitchStmt:
+ SWITCH (expression?
+ | simpleStmt? eos expression?
+ ) L_CURLY exprCaseClause* R_CURLY;
+
+exprCaseClause: exprSwitchCase COLON statementList?;
+
+exprSwitchCase: CASE expressionList | DEFAULT;
+
+typeSwitchStmt:
+ SWITCH ( typeSwitchGuard
+ | eos typeSwitchGuard
+ | simpleStmt eos typeSwitchGuard)
+ L_CURLY typeCaseClause* R_CURLY;
+
+typeSwitchGuard: (IDENTIFIER DECLARE_ASSIGN)? primaryExpr DOT L_PAREN TYPE R_PAREN;
+
+typeCaseClause: typeSwitchCase COLON statementList?;
+
+typeSwitchCase: CASE typeList | DEFAULT;
+
+typeList: (type_ | NIL_LIT) (COMMA (type_ | NIL_LIT))*;
+
+selectStmt: SELECT L_CURLY commClause* R_CURLY;
+
+commClause: commCase COLON statementList?;
+
+commCase: CASE (sendStmt | recvStmt) | DEFAULT;
+
+recvStmt: (expressionList ASSIGN | identifierList DECLARE_ASSIGN)? recvExpr = expression;
+
+forStmt: FOR (expression? | forClause | rangeClause?) block;
+
+forClause:
+ initStmt = simpleStmt? eos expression? eos postStmt = simpleStmt?;
+
+rangeClause: (
+ expressionList ASSIGN
+ | identifierList DECLARE_ASSIGN
+ )? RANGE expression;
+
+goStmt: GO expression;
+
+type_: typeName | typeLit | L_PAREN type_ R_PAREN;
+
+typeName: qualifiedIdent | IDENTIFIER;
+
+typeLit:
+ arrayType
+ | structType
+ | pointerType
+ | functionType
+ | interfaceType
+ | sliceType
+ | mapType
+ | channelType;
+
+arrayType: L_BRACKET arrayLength R_BRACKET elementType;
+
+arrayLength: expression;
+
+elementType: type_;
+
+pointerType: STAR type_;
+
+interfaceType:
+ INTERFACE L_CURLY ((methodSpec | typeName) eos)* R_CURLY;
+
+sliceType: L_BRACKET R_BRACKET elementType;
+
+// It's possible to replace `type` with more restricted typeLit list and also pay attention to nil maps
+mapType: MAP L_BRACKET type_ R_BRACKET elementType;
+
+channelType: (CHAN | CHAN RECEIVE | RECEIVE CHAN) elementType;
+
+methodSpec:
+ IDENTIFIER parameters result
+ | IDENTIFIER parameters;
+
+functionType: FUNC signature;
+
+signature:
+ parameters result
+ | parameters;
+
+result: parameters | type_;
+
+parameters:
+ L_PAREN (parameterDecl (COMMA parameterDecl)* COMMA?)? R_PAREN;
+
+parameterDecl: identifierList? ELLIPSIS? type_;
+
+expression:
+ primaryExpr
+ | unary_op = (
+ PLUS
+ | MINUS
+ | EXCLAMATION
+ | CARET
+ | STAR
+ | AMPERSAND
+ | RECEIVE
+ ) expression
+ | expression mul_op = (
+ STAR
+ | DIV
+ | MOD
+ | LSHIFT
+ | RSHIFT
+ | AMPERSAND
+ | BIT_CLEAR
+ ) expression
+ | expression add_op = (PLUS | MINUS | OR | CARET) expression
+ | expression rel_op = (
+ EQUALS
+ | NOT_EQUALS
+ | LESS
+ | LESS_OR_EQUALS
+ | GREATER
+ | GREATER_OR_EQUALS
+ ) expression
+ | expression LOGICAL_AND expression
+ | expression LOGICAL_OR expression;
+
+primaryExpr:
+ operand
+ | conversion
+ | methodExpr
+ | primaryExpr (
+ (DOT IDENTIFIER)
+ | index
+ | slice_
+ | typeAssertion
+ | arguments
+ );
+
+
+conversion: nonNamedType L_PAREN expression COMMA? R_PAREN;
+
+nonNamedType: typeLit | L_PAREN nonNamedType R_PAREN;
+
+operand: literal | operandName | L_PAREN expression R_PAREN;
+
+literal: basicLit | compositeLit | functionLit;
+
+basicLit:
+ NIL_LIT
+ | integer
+ | string_
+ | FLOAT_LIT;
+
+integer:
+ DECIMAL_LIT
+ | BINARY_LIT
+ | OCTAL_LIT
+ | HEX_LIT
+ | IMAGINARY_LIT
+ | RUNE_LIT;
+
+operandName: IDENTIFIER;
+
+qualifiedIdent: IDENTIFIER DOT IDENTIFIER;
+
+compositeLit: literalType literalValue;
+
+literalType:
+ structType
+ | arrayType
+ | L_BRACKET ELLIPSIS R_BRACKET elementType
+ | sliceType
+ | mapType
+ | typeName;
+
+literalValue: L_CURLY (elementList COMMA?)? R_CURLY;
+
+elementList: keyedElement (COMMA keyedElement)*;
+
+keyedElement: (key COLON)? element;
+
+key: expression | literalValue;
+
+element: expression | literalValue;
+
+structType: STRUCT L_CURLY (fieldDecl eos)* R_CURLY;
+
+fieldDecl: (
+ identifierList type_
+ | embeddedField
+ ) tag = string_?;
+
+string_: RAW_STRING_LIT | INTERPRETED_STRING_LIT;
+
+embeddedField: STAR? typeName;
+
+functionLit: FUNC signature block; // function
+
+index: L_BRACKET expression R_BRACKET;
+
+slice_:
+ L_BRACKET (
+ expression? COLON expression?
+ | expression? COLON expression COLON expression
+ ) R_BRACKET;
+
+typeAssertion: DOT L_PAREN type_ R_PAREN;
+
+arguments:
+ L_PAREN (
+ (expressionList | nonNamedType (COMMA expressionList)?) ELLIPSIS? COMMA?
+ )? R_PAREN;
+
+methodExpr: nonNamedType DOT IDENTIFIER;
+
+//receiverType: typeName | '(' ('*' typeName | receiverType) ')';
+
+receiverType: type_;
+
+eos:
+ SEMI
+ | EOF
+ | EOS
+ | {this.closingBracket()}?
+ ;
diff --git a/ide/go.lang/src/org/antlr/parser/golang/GoParser.java b/ide/go.lang/src/org/antlr/parser/golang/GoParser.java
new file mode 100644
index 0000000000..9fc249cd7a
--- /dev/null
+++ b/ide/go.lang/src/org/antlr/parser/golang/GoParser.java
@@ -0,0 +1,8244 @@
+// Generated from java-escape by ANTLR 4.11.1
+
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// DO NOT EDIT THIS FILE MANUALLY!
+// SEE build.xml FOR INSTRUCTIONS
+
+
+package org.antlr.parser.golang;
+
+
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class GoParser extends GoParserBase {
+ static { RuntimeMetaData.checkVersion("4.11.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ BREAK=1, DEFAULT=2, FUNC=3, INTERFACE=4, SELECT=5, CASE=6, DEFER=7, GO=8,
+ MAP=9, STRUCT=10, CHAN=11, ELSE=12, GOTO=13, PACKAGE=14, SWITCH=15, CONST=16,
+ FALLTHROUGH=17, IF=18, RANGE=19, TYPE=20, CONTINUE=21, FOR=22, IMPORT=23,
+ RETURN=24, VAR=25, NIL_LIT=26, IDENTIFIER=27, L_PAREN=28, R_PAREN=29,
+ L_CURLY=30, R_CURLY=31, L_BRACKET=32, R_BRACKET=33, ASSIGN=34, COMMA=35,
+ SEMI=36, COLON=37, DOT=38, PLUS_PLUS=39, MINUS_MINUS=40, DECLARE_ASSIGN=41,
+ ELLIPSIS=42, LOGICAL_OR=43, LOGICAL_AND=44, EQUALS=45, NOT_EQUALS=46,
+ LESS=47, LESS_OR_EQUALS=48, GREATER=49, GREATER_OR_EQUALS=50, OR=51, DIV=52,
+ MOD=53, LSHIFT=54, RSHIFT=55, BIT_CLEAR=56, EXCLAMATION=57, PLUS=58, MINUS=59,
+ CARET=60, STAR=61, AMPERSAND=62, RECEIVE=63, DECIMAL_LIT=64, BINARY_LIT=65,
+ OCTAL_LIT=66, HEX_LIT=67, FLOAT_LIT=68, DECIMAL_FLOAT_LIT=69, HEX_FLOAT_LIT=70,
+ IMAGINARY_LIT=71, RUNE_LIT=72, BYTE_VALUE=73, OCTAL_BYTE_VALUE=74, HEX_BYTE_VALUE=75,
+ LITTLE_U_VALUE=76, BIG_U_VALUE=77, RAW_STRING_LIT=78, INTERPRETED_STRING_LIT=79,
+ WS=80, COMMENT=81, TERMINATOR=82, LINE_COMMENT=83, WS_NLSEMI=84, COMMENT_NLSEMI=85,
+ LINE_COMMENT_NLSEMI=86, EOS=87, OTHER=88;
+ public static final int
+ RULE_sourceFile = 0, RULE_packageClause = 1, RULE_importDecl = 2, RULE_importSpec = 3,
+ RULE_importPath = 4, RULE_declaration = 5, RULE_constDecl = 6, RULE_constSpec = 7,
+ RULE_identifierList = 8, RULE_expressionList = 9, RULE_typeDecl = 10,
+ RULE_typeSpec = 11, RULE_functionDecl = 12, RULE_methodDecl = 13, RULE_receiver = 14,
+ RULE_varDecl = 15, RULE_varSpec = 16, RULE_block = 17, RULE_statementList = 18,
+ RULE_statement = 19, RULE_simpleStmt = 20, RULE_expressionStmt = 21, RULE_sendStmt = 22,
+ RULE_incDecStmt = 23, RULE_assignment = 24, RULE_assign_op = 25, RULE_shortVarDecl = 26,
+ RULE_emptyStmt = 27, RULE_labeledStmt = 28, RULE_returnStmt = 29, RULE_breakStmt = 30,
+ RULE_continueStmt = 31, RULE_gotoStmt = 32, RULE_fallthroughStmt = 33,
+ RULE_deferStmt = 34, RULE_ifStmt = 35, RULE_switchStmt = 36, RULE_exprSwitchStmt = 37,
+ RULE_exprCaseClause = 38, RULE_exprSwitchCase = 39, RULE_typeSwitchStmt = 40,
+ RULE_typeSwitchGuard = 41, RULE_typeCaseClause = 42, RULE_typeSwitchCase = 43,
+ RULE_typeList = 44, RULE_selectStmt = 45, RULE_commClause = 46, RULE_commCase = 47,
+ RULE_recvStmt = 48, RULE_forStmt = 49, RULE_forClause = 50, RULE_rangeClause = 51,
+ RULE_goStmt = 52, RULE_type_ = 53, RULE_typeName = 54, RULE_typeLit = 55,
+ RULE_arrayType = 56, RULE_arrayLength = 57, RULE_elementType = 58, RULE_pointerType = 59,
+ RULE_interfaceType = 60, RULE_sliceType = 61, RULE_mapType = 62, RULE_channelType = 63,
+ RULE_methodSpec = 64, RULE_functionType = 65, RULE_signature = 66, RULE_result = 67,
+ RULE_parameters = 68, RULE_parameterDecl = 69, RULE_expression = 70, RULE_primaryExpr = 71,
+ RULE_conversion = 72, RULE_nonNamedType = 73, RULE_operand = 74, RULE_literal = 75,
+ RULE_basicLit = 76, RULE_integer = 77, RULE_operandName = 78, RULE_qualifiedIdent = 79,
+ RULE_compositeLit = 80, RULE_literalType = 81, RULE_literalValue = 82,
+ RULE_elementList = 83, RULE_keyedElement = 84, RULE_key = 85, RULE_element = 86,
+ RULE_structType = 87, RULE_fieldDecl = 88, RULE_string_ = 89, RULE_embeddedField = 90,
+ RULE_functionLit = 91, RULE_index = 92, RULE_slice_ = 93, RULE_typeAssertion = 94,
+ RULE_arguments = 95, RULE_methodExpr = 96, RULE_receiverType = 97, RULE_eos = 98;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "sourceFile", "packageClause", "importDecl", "importSpec", "importPath",
+ "declaration", "constDecl", "constSpec", "identifierList", "expressionList",
+ "typeDecl", "typeSpec", "functionDecl", "methodDecl", "receiver", "varDecl",
+ "varSpec", "block", "statementList", "statement", "simpleStmt", "expressionStmt",
+ "sendStmt", "incDecStmt", "assignment", "assign_op", "shortVarDecl",
+ "emptyStmt", "labeledStmt", "returnStmt", "breakStmt", "continueStmt",
+ "gotoStmt", "fallthroughStmt", "deferStmt", "ifStmt", "switchStmt", "exprSwitchStmt",
+ "exprCaseClause", "exprSwitchCase", "typeSwitchStmt", "typeSwitchGuard",
+ "typeCaseClause", "typeSwitchCase", "typeList", "selectStmt", "commClause",
+ "commCase", "recvStmt", "forStmt", "forClause", "rangeClause", "goStmt",
+ "type_", "typeName", "typeLit", "arrayType", "arrayLength", "elementType",
+ "pointerType", "interfaceType", "sliceType", "mapType", "channelType",
+ "methodSpec", "functionType", "signature", "result", "parameters", "parameterDecl",
+ "expression", "primaryExpr", "conversion", "nonNamedType", "operand",
+ "literal", "basicLit", "integer", "operandName", "qualifiedIdent", "compositeLit",
+ "literalType", "literalValue", "elementList", "keyedElement", "key",
+ "element", "structType", "fieldDecl", "string_", "embeddedField", "functionLit",
+ "index", "slice_", "typeAssertion", "arguments", "methodExpr", "receiverType",
+ "eos"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'",
+ "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'",
+ "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'",
+ "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'",
+ null, "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'",
+ "':'", "'.'", "'++'", "'--'", "':='", "'...'", "'||'", "'&&'", "'=='",
+ "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'",
+ "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER",
+ "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST",
+ "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN",
+ "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY",
+ "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT",
+ "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR",
+ "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER",
+ "GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR",
+ "EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE",
+ "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT",
+ "HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE",
+ "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT",
+ "INTERPRETED_STRING_LIT", "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT",
+ "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", "EOS", "OTHER"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "<INVALID>";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "java-escape"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public GoParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SourceFileContext extends ParserRuleContext {
+ public PackageClauseContext packageClause() {
+ return getRuleContext(PackageClauseContext.class,0);
+ }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public TerminalNode EOF() { return getToken(GoParser.EOF, 0); }
+ public List<ImportDeclContext> importDecl() {
+ return getRuleContexts(ImportDeclContext.class);
+ }
+ public ImportDeclContext importDecl(int i) {
+ return getRuleContext(ImportDeclContext.class,i);
+ }
+ public List<FunctionDeclContext> functionDecl() {
+ return getRuleContexts(FunctionDeclContext.class);
+ }
+ public FunctionDeclContext functionDecl(int i) {
+ return getRuleContext(FunctionDeclContext.class,i);
+ }
+ public List<MethodDeclContext> methodDecl() {
+ return getRuleContexts(MethodDeclContext.class);
+ }
+ public MethodDeclContext methodDecl(int i) {
+ return getRuleContext(MethodDeclContext.class,i);
+ }
+ public List<DeclarationContext> declaration() {
+ return getRuleContexts(DeclarationContext.class);
+ }
+ public DeclarationContext declaration(int i) {
+ return getRuleContext(DeclarationContext.class,i);
+ }
+ public SourceFileContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sourceFile; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSourceFile(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSourceFile(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSourceFile(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SourceFileContext sourceFile() throws RecognitionException {
+ SourceFileContext _localctx = new SourceFileContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_sourceFile);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(198);
+ packageClause();
+ setState(199);
+ eos();
+ setState(205);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IMPORT) {
+ {
+ {
+ setState(200);
+ importDecl();
+ setState(201);
+ eos();
+ }
+ }
+ setState(207);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(217);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (((_la) & ~0x3f) == 0 && ((1L << _la) & 34668552L) != 0) {
+ {
+ {
+ setState(211);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
+ case 1:
+ {
+ setState(208);
+ functionDecl();
+ }
+ break;
+ case 2:
+ {
+ setState(209);
+ methodDecl();
+ }
+ break;
+ case 3:
+ {
+ setState(210);
+ declaration();
+ }
+ break;
+ }
+ setState(213);
+ eos();
+ }
+ }
+ setState(219);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(220);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PackageClauseContext extends ParserRuleContext {
+ public Token packageName;
+ public TerminalNode PACKAGE() { return getToken(GoParser.PACKAGE, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public PackageClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterPackageClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitPackageClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitPackageClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final PackageClauseContext packageClause() throws RecognitionException {
+ PackageClauseContext _localctx = new PackageClauseContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_packageClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(222);
+ match(PACKAGE);
+ setState(223);
+ ((PackageClauseContext)_localctx).packageName = match(IDENTIFIER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ImportDeclContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(GoParser.IMPORT, 0); }
+ public List<ImportSpecContext> importSpec() {
+ return getRuleContexts(ImportSpecContext.class);
+ }
+ public ImportSpecContext importSpec(int i) {
+ return getRuleContext(ImportSpecContext.class,i);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public ImportDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterImportDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitImportDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitImportDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ImportDeclContext importDecl() throws RecognitionException {
+ ImportDeclContext _localctx = new ImportDeclContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_importDecl);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(225);
+ match(IMPORT);
+ setState(237);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ case DOT:
+ case RAW_STRING_LIT:
+ case INTERPRETED_STRING_LIT:
+ {
+ setState(226);
+ importSpec();
+ }
+ break;
+ case L_PAREN:
+ {
+ setState(227);
+ match(L_PAREN);
+ setState(233);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la - 27)) & ~0x3f) == 0 && ((1L << (_la - 27)) & 6755399441057793L) != 0) {
+ {
+ {
+ setState(228);
+ importSpec();
+ setState(229);
+ eos();
+ }
+ }
+ setState(235);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(236);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ImportSpecContext extends ParserRuleContext {
+ public Token alias;
+ public ImportPathContext importPath() {
+ return getRuleContext(ImportPathContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public ImportSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterImportSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitImportSpec(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitImportSpec(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ImportSpecContext importSpec() throws RecognitionException {
+ ImportSpecContext _localctx = new ImportSpecContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_importSpec);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(240);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IDENTIFIER || _la==DOT) {
+ {
+ setState(239);
+ ((ImportSpecContext)_localctx).alias = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==IDENTIFIER || _la==DOT) ) {
+ ((ImportSpecContext)_localctx).alias = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+
+ setState(242);
+ importPath();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ImportPathContext extends ParserRuleContext {
+ public String_Context string_() {
+ return getRuleContext(String_Context.class,0);
+ }
+ public ImportPathContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importPath; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterImportPath(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitImportPath(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitImportPath(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ImportPathContext importPath() throws RecognitionException {
+ ImportPathContext _localctx = new ImportPathContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_importPath);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(244);
+ string_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DeclarationContext extends ParserRuleContext {
+ public ConstDeclContext constDecl() {
+ return getRuleContext(ConstDeclContext.class,0);
+ }
+ public TypeDeclContext typeDecl() {
+ return getRuleContext(TypeDeclContext.class,0);
+ }
+ public VarDeclContext varDecl() {
+ return getRuleContext(VarDeclContext.class,0);
+ }
+ public DeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_declaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitDeclaration(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitDeclaration(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final DeclarationContext declaration() throws RecognitionException {
+ DeclarationContext _localctx = new DeclarationContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_declaration);
+ try {
+ setState(249);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CONST:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(246);
+ constDecl();
+ }
+ break;
+ case TYPE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(247);
+ typeDecl();
+ }
+ break;
+ case VAR:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(248);
+ varDecl();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstDeclContext extends ParserRuleContext {
+ public TerminalNode CONST() { return getToken(GoParser.CONST, 0); }
+ public List<ConstSpecContext> constSpec() {
+ return getRuleContexts(ConstSpecContext.class);
+ }
+ public ConstSpecContext constSpec(int i) {
+ return getRuleContext(ConstSpecContext.class,i);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public ConstDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterConstDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitConstDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitConstDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ConstDeclContext constDecl() throws RecognitionException {
+ ConstDeclContext _localctx = new ConstDeclContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_constDecl);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(251);
+ match(CONST);
+ setState(263);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(252);
+ constSpec();
+ }
+ break;
+ case L_PAREN:
+ {
+ setState(253);
+ match(L_PAREN);
+ setState(259);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IDENTIFIER) {
+ {
+ {
+ setState(254);
+ constSpec();
+ setState(255);
+ eos();
+ }
+ }
+ setState(261);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(262);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstSpecContext extends ParserRuleContext {
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public ConstSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterConstSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitConstSpec(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitConstSpec(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ConstSpecContext constSpec() throws RecognitionException {
+ ConstSpecContext _localctx = new ConstSpecContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_constSpec);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(265);
+ identifierList();
+ setState(271);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ case 1:
+ {
+ setState(267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -6917529022943457768L) != 0) {
+ {
+ setState(266);
+ type_();
+ }
+ }
+
+ setState(269);
+ match(ASSIGN);
+ setState(270);
+ expressionList();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentifierListContext extends ParserRuleContext {
+ public List<TerminalNode> IDENTIFIER() { return getTokens(GoParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(GoParser.IDENTIFIER, i);
+ }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public IdentifierListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identifierList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterIdentifierList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitIdentifierList(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitIdentifierList(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IdentifierListContext identifierList() throws RecognitionException {
+ IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_identifierList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(273);
+ match(IDENTIFIER);
+ setState(278);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,11,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(274);
+ match(COMMA);
+ setState(275);
+ match(IDENTIFIER);
+ }
+ }
+ }
+ setState(280);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,11,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionListContext extends ParserRuleContext {
+ public List<ExpressionContext> expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public ExpressionListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExpressionList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExpressionList(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExpressionList(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExpressionListContext expressionList() throws RecognitionException {
+ ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_expressionList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(281);
+ expression(0);
+ setState(286);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(282);
+ match(COMMA);
+ setState(283);
+ expression(0);
+ }
+ }
+ }
+ setState(288);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeDeclContext extends ParserRuleContext {
+ public TerminalNode TYPE() { return getToken(GoParser.TYPE, 0); }
+ public List<TypeSpecContext> typeSpec() {
+ return getRuleContexts(TypeSpecContext.class);
+ }
+ public TypeSpecContext typeSpec(int i) {
+ return getRuleContext(TypeSpecContext.class,i);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public TypeDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeDeclContext typeDecl() throws RecognitionException {
+ TypeDeclContext _localctx = new TypeDeclContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_typeDecl);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(289);
+ match(TYPE);
+ setState(301);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(290);
+ typeSpec();
+ }
+ break;
+ case L_PAREN:
+ {
+ setState(291);
+ match(L_PAREN);
+ setState(297);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IDENTIFIER) {
+ {
+ {
+ setState(292);
+ typeSpec();
+ setState(293);
+ eos();
+ }
+ }
+ setState(299);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(300);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSpecContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public TypeSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeSpec(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeSpec(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeSpecContext typeSpec() throws RecognitionException {
+ TypeSpecContext _localctx = new TypeSpecContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_typeSpec);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(303);
+ match(IDENTIFIER);
+ setState(305);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ASSIGN) {
+ {
+ setState(304);
+ match(ASSIGN);
+ }
+ }
+
+ setState(307);
+ type_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionDeclContext extends ParserRuleContext {
+ public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public SignatureContext signature() {
+ return getRuleContext(SignatureContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public FunctionDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterFunctionDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitFunctionDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitFunctionDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FunctionDeclContext functionDecl() throws RecognitionException {
+ FunctionDeclContext _localctx = new FunctionDeclContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_functionDecl);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(309);
+ match(FUNC);
+ setState(310);
+ match(IDENTIFIER);
+ {
+ setState(311);
+ signature();
+ setState(313);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ case 1:
+ {
+ setState(312);
+ block();
+ }
+ break;
+ }
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodDeclContext extends ParserRuleContext {
+ public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); }
+ public ReceiverContext receiver() {
+ return getRuleContext(ReceiverContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public SignatureContext signature() {
+ return getRuleContext(SignatureContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public MethodDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterMethodDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitMethodDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitMethodDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MethodDeclContext methodDecl() throws RecognitionException {
+ MethodDeclContext _localctx = new MethodDeclContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_methodDecl);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(315);
+ match(FUNC);
+ setState(316);
+ receiver();
+ setState(317);
+ match(IDENTIFIER);
+ {
+ setState(318);
+ signature();
+ setState(320);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+ case 1:
+ {
+ setState(319);
+ block();
+ }
+ break;
+ }
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReceiverContext extends ParserRuleContext {
+ public ParametersContext parameters() {
+ return getRuleContext(ParametersContext.class,0);
+ }
+ public ReceiverContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_receiver; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterReceiver(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitReceiver(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitReceiver(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ReceiverContext receiver() throws RecognitionException {
+ ReceiverContext _localctx = new ReceiverContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_receiver);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(322);
+ parameters();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VarDeclContext extends ParserRuleContext {
+ public TerminalNode VAR() { return getToken(GoParser.VAR, 0); }
+ public List<VarSpecContext> varSpec() {
+ return getRuleContexts(VarSpecContext.class);
+ }
+ public VarSpecContext varSpec(int i) {
+ return getRuleContext(VarSpecContext.class,i);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public VarDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_varDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterVarDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitVarDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitVarDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final VarDeclContext varDecl() throws RecognitionException {
+ VarDeclContext _localctx = new VarDeclContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_varDecl);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(324);
+ match(VAR);
+ setState(336);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ {
+ setState(325);
+ varSpec();
+ }
+ break;
+ case L_PAREN:
+ {
+ setState(326);
+ match(L_PAREN);
+ setState(332);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IDENTIFIER) {
+ {
+ {
+ setState(327);
+ varSpec();
+ setState(328);
+ eos();
+ }
+ }
+ setState(334);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(335);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VarSpecContext extends ParserRuleContext {
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public VarSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_varSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterVarSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitVarSpec(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitVarSpec(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final VarSpecContext varSpec() throws RecognitionException {
+ VarSpecContext _localctx = new VarSpecContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_varSpec);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(338);
+ identifierList();
+ setState(346);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case IDENTIFIER:
+ case L_PAREN:
+ case L_BRACKET:
+ case STAR:
+ case RECEIVE:
+ {
+ setState(339);
+ type_();
+ setState(342);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
+ case 1:
+ {
+ setState(340);
+ match(ASSIGN);
+ setState(341);
+ expressionList();
+ }
+ break;
+ }
+ }
+ break;
+ case ASSIGN:
+ {
+ setState(344);
+ match(ASSIGN);
+ setState(345);
+ expressionList();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BlockContext extends ParserRuleContext {
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public StatementListContext statementList() {
+ return getRuleContext(StatementListContext.class,0);
+ }
+ public BlockContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_block; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterBlock(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitBlock(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitBlock(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final BlockContext block() throws RecognitionException {
+ BlockContext _localctx = new BlockContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_block);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(348);
+ match(L_CURLY);
+ setState(350);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
+ case 1:
+ {
+ setState(349);
+ statementList();
+ }
+ break;
+ }
+ setState(352);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementListContext extends ParserRuleContext {
+ public List<StatementContext> statement() {
+ return getRuleContexts(StatementContext.class);
+ }
+ public StatementContext statement(int i) {
+ return getRuleContext(StatementContext.class,i);
+ }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public List<TerminalNode> SEMI() { return getTokens(GoParser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(GoParser.SEMI, i);
+ }
+ public List<TerminalNode> EOS() { return getTokens(GoParser.EOS); }
+ public TerminalNode EOS(int i) {
+ return getToken(GoParser.EOS, i);
+ }
+ public StatementListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statementList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterStatementList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitStatementList(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitStatementList(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final StatementListContext statementList() throws RecognitionException {
+ StatementListContext _localctx = new StatementListContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_statementList);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(366);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(361);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
+ case 1:
+ {
+ setState(355);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEMI) {
+ {
+ setState(354);
+ match(SEMI);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ setState(358);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EOS) {
+ {
+ setState(357);
+ match(EOS);
+ }
+ }
+
+ }
+ break;
+ case 3:
+ {
+ setState(360);
+ if (!(this.closingBracket())) throw new FailedPredicateException(this, "this.closingBracket()");
+ }
+ break;
+ }
+ setState(363);
+ statement();
+ setState(364);
+ eos();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(368);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,26,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementContext extends ParserRuleContext {
+ public DeclarationContext declaration() {
+ return getRuleContext(DeclarationContext.class,0);
+ }
+ public LabeledStmtContext labeledStmt() {
+ return getRuleContext(LabeledStmtContext.class,0);
+ }
+ public SimpleStmtContext simpleStmt() {
+ return getRuleContext(SimpleStmtContext.class,0);
+ }
+ public GoStmtContext goStmt() {
+ return getRuleContext(GoStmtContext.class,0);
+ }
+ public ReturnStmtContext returnStmt() {
+ return getRuleContext(ReturnStmtContext.class,0);
+ }
+ public BreakStmtContext breakStmt() {
+ return getRuleContext(BreakStmtContext.class,0);
+ }
+ public ContinueStmtContext continueStmt() {
+ return getRuleContext(ContinueStmtContext.class,0);
+ }
+ public GotoStmtContext gotoStmt() {
+ return getRuleContext(GotoStmtContext.class,0);
+ }
+ public FallthroughStmtContext fallthroughStmt() {
+ return getRuleContext(FallthroughStmtContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public IfStmtContext ifStmt() {
+ return getRuleContext(IfStmtContext.class,0);
+ }
+ public SwitchStmtContext switchStmt() {
+ return getRuleContext(SwitchStmtContext.class,0);
+ }
+ public SelectStmtContext selectStmt() {
+ return getRuleContext(SelectStmtContext.class,0);
+ }
+ public ForStmtContext forStmt() {
+ return getRuleContext(ForStmtContext.class,0);
+ }
+ public DeferStmtContext deferStmt() {
+ return getRuleContext(DeferStmtContext.class,0);
+ }
+ public StatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitStatement(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitStatement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final StatementContext statement() throws RecognitionException {
+ StatementContext _localctx = new StatementContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_statement);
+ try {
+ setState(385);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(370);
+ declaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(371);
+ labeledStmt();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(372);
+ simpleStmt();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(373);
+ goStmt();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(374);
+ returnStmt();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(375);
+ breakStmt();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(376);
+ continueStmt();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(377);
+ gotoStmt();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(378);
+ fallthroughStmt();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(379);
+ block();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(380);
+ ifStmt();
+ }
+ break;
+ case 12:
+ enterOuterAlt(_localctx, 12);
+ {
+ setState(381);
+ switchStmt();
+ }
+ break;
+ case 13:
+ enterOuterAlt(_localctx, 13);
+ {
+ setState(382);
+ selectStmt();
+ }
+ break;
+ case 14:
+ enterOuterAlt(_localctx, 14);
+ {
+ setState(383);
+ forStmt();
+ }
+ break;
+ case 15:
+ enterOuterAlt(_localctx, 15);
+ {
+ setState(384);
+ deferStmt();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SimpleStmtContext extends ParserRuleContext {
+ public SendStmtContext sendStmt() {
+ return getRuleContext(SendStmtContext.class,0);
+ }
+ public IncDecStmtContext incDecStmt() {
+ return getRuleContext(IncDecStmtContext.class,0);
+ }
+ public AssignmentContext assignment() {
+ return getRuleContext(AssignmentContext.class,0);
+ }
+ public ExpressionStmtContext expressionStmt() {
+ return getRuleContext(ExpressionStmtContext.class,0);
+ }
+ public ShortVarDeclContext shortVarDecl() {
+ return getRuleContext(ShortVarDeclContext.class,0);
+ }
+ public SimpleStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_simpleStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSimpleStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSimpleStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSimpleStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SimpleStmtContext simpleStmt() throws RecognitionException {
+ SimpleStmtContext _localctx = new SimpleStmtContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_simpleStmt);
+ try {
+ setState(392);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(387);
+ sendStmt();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(388);
+ incDecStmt();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(389);
+ assignment();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(390);
+ expressionStmt();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(391);
+ shortVarDecl();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionStmtContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExpressionStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExpressionStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExpressionStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExpressionStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExpressionStmtContext expressionStmt() throws RecognitionException {
+ ExpressionStmtContext _localctx = new ExpressionStmtContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_expressionStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(394);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SendStmtContext extends ParserRuleContext {
+ public ExpressionContext channel;
+ public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); }
+ public List<ExpressionContext> expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public SendStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sendStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSendStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSendStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSendStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SendStmtContext sendStmt() throws RecognitionException {
+ SendStmtContext _localctx = new SendStmtContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_sendStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(396);
+ ((SendStmtContext)_localctx).channel = expression(0);
+ setState(397);
+ match(RECEIVE);
+ setState(398);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IncDecStmtContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode PLUS_PLUS() { return getToken(GoParser.PLUS_PLUS, 0); }
+ public TerminalNode MINUS_MINUS() { return getToken(GoParser.MINUS_MINUS, 0); }
+ public IncDecStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_incDecStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterIncDecStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitIncDecStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitIncDecStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IncDecStmtContext incDecStmt() throws RecognitionException {
+ IncDecStmtContext _localctx = new IncDecStmtContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_incDecStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(400);
+ expression(0);
+ setState(401);
+ _la = _input.LA(1);
+ if ( !(_la==PLUS_PLUS || _la==MINUS_MINUS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssignmentContext extends ParserRuleContext {
+ public List<ExpressionListContext> expressionList() {
+ return getRuleContexts(ExpressionListContext.class);
+ }
+ public ExpressionListContext expressionList(int i) {
+ return getRuleContext(ExpressionListContext.class,i);
+ }
+ public Assign_opContext assign_op() {
+ return getRuleContext(Assign_opContext.class,0);
+ }
+ public AssignmentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assignment; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterAssignment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitAssignment(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitAssignment(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final AssignmentContext assignment() throws RecognitionException {
+ AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_assignment);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(403);
+ expressionList();
+ setState(404);
+ assign_op();
+ setState(405);
+ expressionList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class Assign_opContext extends ParserRuleContext {
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public TerminalNode PLUS() { return getToken(GoParser.PLUS, 0); }
+ public TerminalNode MINUS() { return getToken(GoParser.MINUS, 0); }
+ public TerminalNode OR() { return getToken(GoParser.OR, 0); }
+ public TerminalNode CARET() { return getToken(GoParser.CARET, 0); }
+ public TerminalNode STAR() { return getToken(GoParser.STAR, 0); }
+ public TerminalNode DIV() { return getToken(GoParser.DIV, 0); }
+ public TerminalNode MOD() { return getToken(GoParser.MOD, 0); }
+ public TerminalNode LSHIFT() { return getToken(GoParser.LSHIFT, 0); }
+ public TerminalNode RSHIFT() { return getToken(GoParser.RSHIFT, 0); }
+ public TerminalNode AMPERSAND() { return getToken(GoParser.AMPERSAND, 0); }
+ public TerminalNode BIT_CLEAR() { return getToken(GoParser.BIT_CLEAR, 0); }
+ public Assign_opContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assign_op; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterAssign_op(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitAssign_op(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitAssign_op(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final Assign_opContext assign_op() throws RecognitionException {
+ Assign_opContext _localctx = new Assign_opContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_assign_op);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(408);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & 9077005048965234688L) != 0) {
+ {
+ setState(407);
+ _la = _input.LA(1);
+ if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 9077005048965234688L) != 0) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+
+ setState(410);
+ match(ASSIGN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ShortVarDeclContext extends ParserRuleContext {
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ShortVarDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_shortVarDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterShortVarDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitShortVarDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitShortVarDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ShortVarDeclContext shortVarDecl() throws RecognitionException {
+ ShortVarDeclContext _localctx = new ShortVarDeclContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_shortVarDecl);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(412);
+ identifierList();
+ setState(413);
+ match(DECLARE_ASSIGN);
+ setState(414);
+ expressionList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EmptyStmtContext extends ParserRuleContext {
+ public TerminalNode EOS() { return getToken(GoParser.EOS, 0); }
+ public TerminalNode SEMI() { return getToken(GoParser.SEMI, 0); }
+ public EmptyStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_emptyStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterEmptyStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitEmptyStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitEmptyStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EmptyStmtContext emptyStmt() throws RecognitionException {
+ EmptyStmtContext _localctx = new EmptyStmtContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_emptyStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(416);
+ _la = _input.LA(1);
+ if ( !(_la==SEMI || _la==EOS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LabeledStmtContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public TerminalNode COLON() { return getToken(GoParser.COLON, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public LabeledStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_labeledStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterLabeledStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitLabeledStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitLabeledStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LabeledStmtContext labeledStmt() throws RecognitionException {
+ LabeledStmtContext _localctx = new LabeledStmtContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_labeledStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(418);
+ match(IDENTIFIER);
+ setState(419);
+ match(COLON);
+ setState(421);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
+ case 1:
+ {
+ setState(420);
+ statement();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReturnStmtContext extends ParserRuleContext {
+ public TerminalNode RETURN() { return getToken(GoParser.RETURN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ReturnStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_returnStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterReturnStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitReturnStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitReturnStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ReturnStmtContext returnStmt() throws RecognitionException {
+ ReturnStmtContext _localctx = new ReturnStmtContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_returnStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(423);
+ match(RETURN);
+ setState(425);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
+ case 1:
+ {
+ setState(424);
+ expressionList();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BreakStmtContext extends ParserRuleContext {
+ public TerminalNode BREAK() { return getToken(GoParser.BREAK, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public BreakStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_breakStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterBreakStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitBreakStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitBreakStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final BreakStmtContext breakStmt() throws RecognitionException {
+ BreakStmtContext _localctx = new BreakStmtContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_breakStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(427);
+ match(BREAK);
+ setState(429);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
+ case 1:
+ {
+ setState(428);
+ match(IDENTIFIER);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ContinueStmtContext extends ParserRuleContext {
+ public TerminalNode CONTINUE() { return getToken(GoParser.CONTINUE, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public ContinueStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_continueStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterContinueStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitContinueStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitContinueStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ContinueStmtContext continueStmt() throws RecognitionException {
+ ContinueStmtContext _localctx = new ContinueStmtContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_continueStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(431);
+ match(CONTINUE);
+ setState(433);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ {
+ setState(432);
+ match(IDENTIFIER);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GotoStmtContext extends ParserRuleContext {
+ public TerminalNode GOTO() { return getToken(GoParser.GOTO, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public GotoStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_gotoStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterGotoStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitGotoStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitGotoStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final GotoStmtContext gotoStmt() throws RecognitionException {
+ GotoStmtContext _localctx = new GotoStmtContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_gotoStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(435);
+ match(GOTO);
+ setState(436);
+ match(IDENTIFIER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FallthroughStmtContext extends ParserRuleContext {
+ public TerminalNode FALLTHROUGH() { return getToken(GoParser.FALLTHROUGH, 0); }
+ public FallthroughStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fallthroughStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterFallthroughStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitFallthroughStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitFallthroughStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FallthroughStmtContext fallthroughStmt() throws RecognitionException {
+ FallthroughStmtContext _localctx = new FallthroughStmtContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_fallthroughStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(438);
+ match(FALLTHROUGH);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DeferStmtContext extends ParserRuleContext {
+ public TerminalNode DEFER() { return getToken(GoParser.DEFER, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public DeferStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_deferStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterDeferStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitDeferStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitDeferStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final DeferStmtContext deferStmt() throws RecognitionException {
+ DeferStmtContext _localctx = new DeferStmtContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_deferStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(440);
+ match(DEFER);
+ setState(441);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IfStmtContext extends ParserRuleContext {
+ public TerminalNode IF() { return getToken(GoParser.IF, 0); }
+ public List<BlockContext> block() {
+ return getRuleContexts(BlockContext.class);
+ }
+ public BlockContext block(int i) {
+ return getRuleContext(BlockContext.class,i);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public EosContext eos() {
+ return getRuleContext(EosContext.class,0);
+ }
+ public SimpleStmtContext simpleStmt() {
+ return getRuleContext(SimpleStmtContext.class,0);
+ }
+ public TerminalNode ELSE() { return getToken(GoParser.ELSE, 0); }
+ public IfStmtContext ifStmt() {
+ return getRuleContext(IfStmtContext.class,0);
+ }
+ public IfStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ifStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterIfStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitIfStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitIfStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IfStmtContext ifStmt() throws RecognitionException {
+ IfStmtContext _localctx = new IfStmtContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_ifStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(443);
+ match(IF);
+ setState(452);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
+ case 1:
+ {
+ setState(444);
+ expression(0);
+ }
+ break;
+ case 2:
+ {
+ setState(445);
+ eos();
+ setState(446);
+ expression(0);
+ }
+ break;
+ case 3:
+ {
+ setState(448);
+ simpleStmt();
+ setState(449);
+ eos();
+ setState(450);
+ expression(0);
+ }
+ break;
+ }
+ setState(454);
+ block();
+ setState(460);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
+ case 1:
+ {
+ setState(455);
+ match(ELSE);
+ setState(458);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IF:
+ {
+ setState(456);
+ ifStmt();
+ }
+ break;
+ case L_CURLY:
+ {
+ setState(457);
+ block();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchStmtContext extends ParserRuleContext {
+ public ExprSwitchStmtContext exprSwitchStmt() {
+ return getRuleContext(ExprSwitchStmtContext.class,0);
+ }
+ public TypeSwitchStmtContext typeSwitchStmt() {
+ return getRuleContext(TypeSwitchStmtContext.class,0);
+ }
+ public SwitchStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSwitchStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSwitchStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSwitchStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SwitchStmtContext switchStmt() throws RecognitionException {
+ SwitchStmtContext _localctx = new SwitchStmtContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_switchStmt);
+ try {
+ setState(464);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(462);
+ exprSwitchStmt();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(463);
+ typeSwitchStmt();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExprSwitchStmtContext extends ParserRuleContext {
+ public TerminalNode SWITCH() { return getToken(GoParser.SWITCH, 0); }
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public EosContext eos() {
+ return getRuleContext(EosContext.class,0);
+ }
+ public List<ExprCaseClauseContext> exprCaseClause() {
+ return getRuleContexts(ExprCaseClauseContext.class);
+ }
+ public ExprCaseClauseContext exprCaseClause(int i) {
+ return getRuleContext(ExprCaseClauseContext.class,i);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public SimpleStmtContext simpleStmt() {
+ return getRuleContext(SimpleStmtContext.class,0);
+ }
+ public ExprSwitchStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exprSwitchStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExprSwitchStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExprSwitchStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExprSwitchStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExprSwitchStmtContext exprSwitchStmt() throws RecognitionException {
+ ExprSwitchStmtContext _localctx = new ExprSwitchStmtContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_exprSwitchStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(466);
+ match(SWITCH);
+ setState(477);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
+ case 1:
+ {
+ setState(468);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(467);
+ expression(0);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ setState(471);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
+ case 1:
+ {
+ setState(470);
+ simpleStmt();
+ }
+ break;
+ }
+ setState(473);
+ eos();
+ setState(475);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(474);
+ expression(0);
+ }
+ }
+
+ }
+ break;
+ }
+ setState(479);
+ match(L_CURLY);
+ setState(483);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DEFAULT || _la==CASE) {
+ {
+ {
+ setState(480);
+ exprCaseClause();
+ }
+ }
+ setState(485);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(486);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExprCaseClauseContext extends ParserRuleContext {
+ public ExprSwitchCaseContext exprSwitchCase() {
+ return getRuleContext(ExprSwitchCaseContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(GoParser.COLON, 0); }
+ public StatementListContext statementList() {
+ return getRuleContext(StatementListContext.class,0);
+ }
+ public ExprCaseClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exprCaseClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExprCaseClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExprCaseClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExprCaseClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExprCaseClauseContext exprCaseClause() throws RecognitionException {
+ ExprCaseClauseContext _localctx = new ExprCaseClauseContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_exprCaseClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(488);
+ exprSwitchCase();
+ setState(489);
+ match(COLON);
+ setState(491);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ case 1:
+ {
+ setState(490);
+ statementList();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExprSwitchCaseContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(GoParser.CASE, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); }
+ public ExprSwitchCaseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exprSwitchCase; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExprSwitchCase(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExprSwitchCase(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExprSwitchCase(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExprSwitchCaseContext exprSwitchCase() throws RecognitionException {
+ ExprSwitchCaseContext _localctx = new ExprSwitchCaseContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_exprSwitchCase);
+ try {
+ setState(496);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CASE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(493);
+ match(CASE);
+ setState(494);
+ expressionList();
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(495);
+ match(DEFAULT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSwitchStmtContext extends ParserRuleContext {
+ public TerminalNode SWITCH() { return getToken(GoParser.SWITCH, 0); }
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public TypeSwitchGuardContext typeSwitchGuard() {
+ return getRuleContext(TypeSwitchGuardContext.class,0);
+ }
+ public EosContext eos() {
+ return getRuleContext(EosContext.class,0);
+ }
+ public SimpleStmtContext simpleStmt() {
+ return getRuleContext(SimpleStmtContext.class,0);
+ }
+ public List<TypeCaseClauseContext> typeCaseClause() {
+ return getRuleContexts(TypeCaseClauseContext.class);
+ }
+ public TypeCaseClauseContext typeCaseClause(int i) {
+ return getRuleContext(TypeCaseClauseContext.class,i);
+ }
+ public TypeSwitchStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSwitchStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeSwitchStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeSwitchStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeSwitchStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeSwitchStmtContext typeSwitchStmt() throws RecognitionException {
+ TypeSwitchStmtContext _localctx = new TypeSwitchStmtContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_typeSwitchStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(498);
+ match(SWITCH);
+ setState(507);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
+ case 1:
+ {
+ setState(499);
+ typeSwitchGuard();
+ }
+ break;
+ case 2:
+ {
+ setState(500);
+ eos();
+ setState(501);
+ typeSwitchGuard();
+ }
+ break;
+ case 3:
+ {
+ setState(503);
+ simpleStmt();
+ setState(504);
+ eos();
+ setState(505);
+ typeSwitchGuard();
+ }
+ break;
+ }
+ setState(509);
+ match(L_CURLY);
+ setState(513);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DEFAULT || _la==CASE) {
+ {
+ {
+ setState(510);
+ typeCaseClause();
+ }
+ }
+ setState(515);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(516);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSwitchGuardContext extends ParserRuleContext {
+ public PrimaryExprContext primaryExpr() {
+ return getRuleContext(PrimaryExprContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode TYPE() { return getToken(GoParser.TYPE, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); }
+ public TypeSwitchGuardContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSwitchGuard; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeSwitchGuard(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeSwitchGuard(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeSwitchGuard(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeSwitchGuardContext typeSwitchGuard() throws RecognitionException {
+ TypeSwitchGuardContext _localctx = new TypeSwitchGuardContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_typeSwitchGuard);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(520);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
+ case 1:
+ {
+ setState(518);
+ match(IDENTIFIER);
+ setState(519);
+ match(DECLARE_ASSIGN);
+ }
+ break;
+ }
+ setState(522);
+ primaryExpr(0);
+ setState(523);
+ match(DOT);
+ setState(524);
+ match(L_PAREN);
+ setState(525);
+ match(TYPE);
+ setState(526);
+ match(R_PAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeCaseClauseContext extends ParserRuleContext {
+ public TypeSwitchCaseContext typeSwitchCase() {
+ return getRuleContext(TypeSwitchCaseContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(GoParser.COLON, 0); }
+ public StatementListContext statementList() {
+ return getRuleContext(StatementListContext.class,0);
+ }
+ public TypeCaseClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeCaseClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeCaseClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeCaseClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeCaseClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeCaseClauseContext typeCaseClause() throws RecognitionException {
+ TypeCaseClauseContext _localctx = new TypeCaseClauseContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_typeCaseClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(528);
+ typeSwitchCase();
+ setState(529);
+ match(COLON);
+ setState(531);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
+ case 1:
+ {
+ setState(530);
+ statementList();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSwitchCaseContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(GoParser.CASE, 0); }
+ public TypeListContext typeList() {
+ return getRuleContext(TypeListContext.class,0);
+ }
+ public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); }
+ public TypeSwitchCaseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSwitchCase; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeSwitchCase(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeSwitchCase(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeSwitchCase(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeSwitchCaseContext typeSwitchCase() throws RecognitionException {
+ TypeSwitchCaseContext _localctx = new TypeSwitchCaseContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_typeSwitchCase);
+ try {
+ setState(536);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CASE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(533);
+ match(CASE);
+ setState(534);
+ typeList();
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(535);
+ match(DEFAULT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeListContext extends ParserRuleContext {
+ public List<Type_Context> type_() {
+ return getRuleContexts(Type_Context.class);
+ }
+ public Type_Context type_(int i) {
+ return getRuleContext(Type_Context.class,i);
+ }
+ public List<TerminalNode> NIL_LIT() { return getTokens(GoParser.NIL_LIT); }
+ public TerminalNode NIL_LIT(int i) {
+ return getToken(GoParser.NIL_LIT, i);
+ }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public TypeListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeList(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeList(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeListContext typeList() throws RecognitionException {
+ TypeListContext _localctx = new TypeListContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_typeList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(540);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case IDENTIFIER:
+ case L_PAREN:
+ case L_BRACKET:
+ case STAR:
+ case RECEIVE:
+ {
+ setState(538);
+ type_();
+ }
+ break;
+ case NIL_LIT:
+ {
+ setState(539);
+ match(NIL_LIT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(549);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(542);
+ match(COMMA);
+ setState(545);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case IDENTIFIER:
+ case L_PAREN:
+ case L_BRACKET:
+ case STAR:
+ case RECEIVE:
+ {
+ setState(543);
+ type_();
+ }
+ break;
+ case NIL_LIT:
+ {
+ setState(544);
+ match(NIL_LIT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ setState(551);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectStmtContext extends ParserRuleContext {
+ public TerminalNode SELECT() { return getToken(GoParser.SELECT, 0); }
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public List<CommClauseContext> commClause() {
+ return getRuleContexts(CommClauseContext.class);
+ }
+ public CommClauseContext commClause(int i) {
+ return getRuleContext(CommClauseContext.class,i);
+ }
+ public SelectStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSelectStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSelectStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSelectStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SelectStmtContext selectStmt() throws RecognitionException {
+ SelectStmtContext _localctx = new SelectStmtContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_selectStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(552);
+ match(SELECT);
+ setState(553);
+ match(L_CURLY);
+ setState(557);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DEFAULT || _la==CASE) {
+ {
+ {
+ setState(554);
+ commClause();
+ }
+ }
+ setState(559);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(560);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CommClauseContext extends ParserRuleContext {
+ public CommCaseContext commCase() {
+ return getRuleContext(CommCaseContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(GoParser.COLON, 0); }
+ public StatementListContext statementList() {
+ return getRuleContext(StatementListContext.class,0);
+ }
+ public CommClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_commClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterCommClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitCommClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitCommClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final CommClauseContext commClause() throws RecognitionException {
+ CommClauseContext _localctx = new CommClauseContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_commClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(562);
+ commCase();
+ setState(563);
+ match(COLON);
+ setState(565);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
+ case 1:
+ {
+ setState(564);
+ statementList();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CommCaseContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(GoParser.CASE, 0); }
+ public SendStmtContext sendStmt() {
+ return getRuleContext(SendStmtContext.class,0);
+ }
+ public RecvStmtContext recvStmt() {
+ return getRuleContext(RecvStmtContext.class,0);
+ }
+ public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); }
+ public CommCaseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_commCase; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterCommCase(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitCommCase(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitCommCase(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final CommCaseContext commCase() throws RecognitionException {
+ CommCaseContext _localctx = new CommCaseContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_commCase);
+ try {
+ setState(573);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CASE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(567);
+ match(CASE);
+ setState(570);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
+ case 1:
+ {
+ setState(568);
+ sendStmt();
+ }
+ break;
+ case 2:
+ {
+ setState(569);
+ recvStmt();
+ }
+ break;
+ }
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(572);
+ match(DEFAULT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RecvStmtContext extends ParserRuleContext {
+ public ExpressionContext recvExpr;
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); }
+ public RecvStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_recvStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterRecvStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitRecvStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitRecvStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RecvStmtContext recvStmt() throws RecognitionException {
+ RecvStmtContext _localctx = new RecvStmtContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_recvStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(581);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
+ case 1:
+ {
+ setState(575);
+ expressionList();
+ setState(576);
+ match(ASSIGN);
+ }
+ break;
+ case 2:
+ {
+ setState(578);
+ identifierList();
+ setState(579);
+ match(DECLARE_ASSIGN);
+ }
+ break;
+ }
+ setState(583);
+ ((RecvStmtContext)_localctx).recvExpr = expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForStmtContext extends ParserRuleContext {
+ public TerminalNode FOR() { return getToken(GoParser.FOR, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public ForClauseContext forClause() {
+ return getRuleContext(ForClauseContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public RangeClauseContext rangeClause() {
+ return getRuleContext(RangeClauseContext.class,0);
+ }
+ public ForStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterForStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitForStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitForStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForStmtContext forStmt() throws RecognitionException {
+ ForStmtContext _localctx = new ForStmtContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_forStmt);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(585);
+ match(FOR);
+ setState(593);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
+ case 1:
+ {
+ setState(587);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(586);
+ expression(0);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ setState(589);
+ forClause();
+ }
+ break;
+ case 3:
+ {
+ setState(591);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183310598632L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(590);
+ rangeClause();
+ }
+ }
+
+ }
+ break;
+ }
+ setState(595);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForClauseContext extends ParserRuleContext {
+ public SimpleStmtContext initStmt;
+ public SimpleStmtContext postStmt;
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List<SimpleStmtContext> simpleStmt() {
+ return getRuleContexts(SimpleStmtContext.class);
+ }
+ public SimpleStmtContext simpleStmt(int i) {
+ return getRuleContext(SimpleStmtContext.class,i);
+ }
+ public ForClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterForClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitForClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitForClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForClauseContext forClause() throws RecognitionException {
+ ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_forClause);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(598);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
+ case 1:
+ {
+ setState(597);
+ ((ForClauseContext)_localctx).initStmt = simpleStmt();
+ }
+ break;
+ }
+ setState(600);
+ eos();
+ setState(602);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
+ case 1:
+ {
+ setState(601);
+ expression(0);
+ }
+ break;
+ }
+ setState(604);
+ eos();
+ setState(606);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(605);
+ ((ForClauseContext)_localctx).postStmt = simpleStmt();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RangeClauseContext extends ParserRuleContext {
+ public TerminalNode RANGE() { return getToken(GoParser.RANGE, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); }
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); }
+ public RangeClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_rangeClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterRangeClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitRangeClause(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitRangeClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RangeClauseContext rangeClause() throws RecognitionException {
+ RangeClauseContext _localctx = new RangeClauseContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_rangeClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(614);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
+ case 1:
+ {
+ setState(608);
+ expressionList();
+ setState(609);
+ match(ASSIGN);
+ }
+ break;
+ case 2:
+ {
+ setState(611);
+ identifierList();
+ setState(612);
+ match(DECLARE_ASSIGN);
+ }
+ break;
+ }
+ setState(616);
+ match(RANGE);
+ setState(617);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GoStmtContext extends ParserRuleContext {
+ public TerminalNode GO() { return getToken(GoParser.GO, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GoStmtContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_goStmt; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterGoStmt(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitGoStmt(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitGoStmt(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final GoStmtContext goStmt() throws RecognitionException {
+ GoStmtContext _localctx = new GoStmtContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_goStmt);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(619);
+ match(GO);
+ setState(620);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class Type_Context extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TypeLitContext typeLit() {
+ return getRuleContext(TypeLitContext.class,0);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public Type_Context(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_type_; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterType_(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitType_(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitType_(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final Type_Context type_() throws RecognitionException {
+ Type_Context _localctx = new Type_Context(_ctx, getState());
+ enterRule(_localctx, 106, RULE_type_);
+ try {
+ setState(628);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(622);
+ typeName();
+ }
+ break;
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case L_BRACKET:
+ case STAR:
+ case RECEIVE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(623);
+ typeLit();
+ }
+ break;
+ case L_PAREN:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(624);
+ match(L_PAREN);
+ setState(625);
+ type_();
+ setState(626);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeNameContext extends ParserRuleContext {
+ public QualifiedIdentContext qualifiedIdent() {
+ return getRuleContext(QualifiedIdentContext.class,0);
+ }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public TypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeName(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeNameContext typeName() throws RecognitionException {
+ TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_typeName);
+ try {
+ setState(632);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(630);
+ qualifiedIdent();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(631);
+ match(IDENTIFIER);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeLitContext extends ParserRuleContext {
+ public ArrayTypeContext arrayType() {
+ return getRuleContext(ArrayTypeContext.class,0);
+ }
+ public StructTypeContext structType() {
+ return getRuleContext(StructTypeContext.class,0);
+ }
+ public PointerTypeContext pointerType() {
+ return getRuleContext(PointerTypeContext.class,0);
+ }
+ public FunctionTypeContext functionType() {
+ return getRuleContext(FunctionTypeContext.class,0);
+ }
+ public InterfaceTypeContext interfaceType() {
+ return getRuleContext(InterfaceTypeContext.class,0);
+ }
+ public SliceTypeContext sliceType() {
+ return getRuleContext(SliceTypeContext.class,0);
+ }
+ public MapTypeContext mapType() {
+ return getRuleContext(MapTypeContext.class,0);
+ }
+ public ChannelTypeContext channelType() {
+ return getRuleContext(ChannelTypeContext.class,0);
+ }
+ public TypeLitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeLit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeLit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeLit(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeLit(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeLitContext typeLit() throws RecognitionException {
+ TypeLitContext _localctx = new TypeLitContext(_ctx, getState());
+ enterRule(_localctx, 110, RULE_typeLit);
+ try {
+ setState(642);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(634);
+ arrayType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(635);
+ structType();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(636);
+ pointerType();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(637);
+ functionType();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(638);
+ interfaceType();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(639);
+ sliceType();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(640);
+ mapType();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(641);
+ channelType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayTypeContext extends ParserRuleContext {
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public ArrayLengthContext arrayLength() {
+ return getRuleContext(ArrayLengthContext.class,0);
+ }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public ElementTypeContext elementType() {
+ return getRuleContext(ElementTypeContext.class,0);
+ }
+ public ArrayTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterArrayType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitArrayType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitArrayType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ArrayTypeContext arrayType() throws RecognitionException {
+ ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_arrayType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(644);
+ match(L_BRACKET);
+ setState(645);
+ arrayLength();
+ setState(646);
+ match(R_BRACKET);
+ setState(647);
+ elementType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayLengthContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ArrayLengthContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayLength; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterArrayLength(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitArrayLength(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitArrayLength(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ArrayLengthContext arrayLength() throws RecognitionException {
+ ArrayLengthContext _localctx = new ArrayLengthContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_arrayLength);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(649);
+ expression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementTypeContext extends ParserRuleContext {
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public ElementTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterElementType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitElementType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitElementType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ElementTypeContext elementType() throws RecognitionException {
+ ElementTypeContext _localctx = new ElementTypeContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_elementType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(651);
+ type_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PointerTypeContext extends ParserRuleContext {
+ public TerminalNode STAR() { return getToken(GoParser.STAR, 0); }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public PointerTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_pointerType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterPointerType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitPointerType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitPointerType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final PointerTypeContext pointerType() throws RecognitionException {
+ PointerTypeContext _localctx = new PointerTypeContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_pointerType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(653);
+ match(STAR);
+ setState(654);
+ type_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceTypeContext extends ParserRuleContext {
+ public TerminalNode INTERFACE() { return getToken(GoParser.INTERFACE, 0); }
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public List<MethodSpecContext> methodSpec() {
+ return getRuleContexts(MethodSpecContext.class);
+ }
+ public MethodSpecContext methodSpec(int i) {
+ return getRuleContext(MethodSpecContext.class,i);
+ }
+ public List<TypeNameContext> typeName() {
+ return getRuleContexts(TypeNameContext.class);
+ }
+ public TypeNameContext typeName(int i) {
+ return getRuleContext(TypeNameContext.class,i);
+ }
+ public InterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitInterfaceType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitInterfaceType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final InterfaceTypeContext interfaceType() throws RecognitionException {
+ InterfaceTypeContext _localctx = new InterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_interfaceType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(656);
+ match(INTERFACE);
+ setState(657);
+ match(L_CURLY);
+ setState(666);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IDENTIFIER) {
+ {
+ {
+ setState(660);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
+ case 1:
+ {
+ setState(658);
+ methodSpec();
+ }
+ break;
+ case 2:
+ {
+ setState(659);
+ typeName();
+ }
+ break;
+ }
+ setState(662);
+ eos();
+ }
+ }
+ setState(668);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(669);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SliceTypeContext extends ParserRuleContext {
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public ElementTypeContext elementType() {
+ return getRuleContext(ElementTypeContext.class,0);
+ }
+ public SliceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sliceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSliceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSliceType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSliceType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SliceTypeContext sliceType() throws RecognitionException {
+ SliceTypeContext _localctx = new SliceTypeContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_sliceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(671);
+ match(L_BRACKET);
+ setState(672);
+ match(R_BRACKET);
+ setState(673);
+ elementType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MapTypeContext extends ParserRuleContext {
+ public TerminalNode MAP() { return getToken(GoParser.MAP, 0); }
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public ElementTypeContext elementType() {
+ return getRuleContext(ElementTypeContext.class,0);
+ }
+ public MapTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_mapType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterMapType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitMapType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitMapType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MapTypeContext mapType() throws RecognitionException {
+ MapTypeContext _localctx = new MapTypeContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_mapType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(675);
+ match(MAP);
+ setState(676);
+ match(L_BRACKET);
+ setState(677);
+ type_();
+ setState(678);
+ match(R_BRACKET);
+ setState(679);
+ elementType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ChannelTypeContext extends ParserRuleContext {
+ public ElementTypeContext elementType() {
+ return getRuleContext(ElementTypeContext.class,0);
+ }
+ public TerminalNode CHAN() { return getToken(GoParser.CHAN, 0); }
+ public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); }
+ public ChannelTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_channelType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterChannelType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitChannelType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitChannelType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ChannelTypeContext channelType() throws RecognitionException {
+ ChannelTypeContext _localctx = new ChannelTypeContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_channelType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(686);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
+ case 1:
+ {
+ setState(681);
+ match(CHAN);
+ }
+ break;
+ case 2:
+ {
+ setState(682);
+ match(CHAN);
+ setState(683);
+ match(RECEIVE);
+ }
+ break;
+ case 3:
+ {
+ setState(684);
+ match(RECEIVE);
+ setState(685);
+ match(CHAN);
+ }
+ break;
+ }
+ setState(688);
+ elementType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodSpecContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public ParametersContext parameters() {
+ return getRuleContext(ParametersContext.class,0);
+ }
+ public ResultContext result() {
+ return getRuleContext(ResultContext.class,0);
+ }
+ public MethodSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterMethodSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitMethodSpec(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitMethodSpec(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MethodSpecContext methodSpec() throws RecognitionException {
+ MethodSpecContext _localctx = new MethodSpecContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_methodSpec);
+ try {
+ setState(696);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(690);
+ match(IDENTIFIER);
+ setState(691);
+ parameters();
+ setState(692);
+ result();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(694);
+ match(IDENTIFIER);
+ setState(695);
+ parameters();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionTypeContext extends ParserRuleContext {
+ public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); }
+ public SignatureContext signature() {
+ return getRuleContext(SignatureContext.class,0);
+ }
+ public FunctionTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterFunctionType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitFunctionType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitFunctionType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FunctionTypeContext functionType() throws RecognitionException {
+ FunctionTypeContext _localctx = new FunctionTypeContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_functionType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(698);
+ match(FUNC);
+ setState(699);
+ signature();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SignatureContext extends ParserRuleContext {
+ public ParametersContext parameters() {
+ return getRuleContext(ParametersContext.class,0);
+ }
+ public ResultContext result() {
+ return getRuleContext(ResultContext.class,0);
+ }
+ public SignatureContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_signature; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSignature(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSignature(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSignature(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SignatureContext signature() throws RecognitionException {
+ SignatureContext _localctx = new SignatureContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_signature);
+ try {
+ setState(705);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(701);
+ parameters();
+ setState(702);
+ result();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(704);
+ parameters();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ResultContext extends ParserRuleContext {
+ public ParametersContext parameters() {
+ return getRuleContext(ParametersContext.class,0);
+ }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public ResultContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_result; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterResult(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitResult(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitResult(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ResultContext result() throws RecognitionException {
+ ResultContext _localctx = new ResultContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_result);
+ try {
+ setState(709);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(707);
+ parameters();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(708);
+ type_();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParametersContext extends ParserRuleContext {
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public List<ParameterDeclContext> parameterDecl() {
+ return getRuleContexts(ParameterDeclContext.class);
+ }
+ public ParameterDeclContext parameterDecl(int i) {
+ return getRuleContext(ParameterDeclContext.class,i);
+ }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public ParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitParameters(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitParameters(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ParametersContext parameters() throws RecognitionException {
+ ParametersContext _localctx = new ParametersContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_parameters);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(711);
+ match(L_PAREN);
+ setState(723);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -6917524624896946664L) != 0) {
+ {
+ setState(712);
+ parameterDecl();
+ setState(717);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,74,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(713);
+ match(COMMA);
+ setState(714);
+ parameterDecl();
+ }
+ }
+ }
+ setState(719);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,74,_ctx);
+ }
+ setState(721);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(720);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(725);
+ match(R_PAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParameterDeclContext extends ParserRuleContext {
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); }
+ public ParameterDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameterDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterParameterDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitParameterDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitParameterDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ParameterDeclContext parameterDecl() throws RecognitionException {
+ ParameterDeclContext _localctx = new ParameterDeclContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_parameterDecl);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(728);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
+ case 1:
+ {
+ setState(727);
+ identifierList();
+ }
+ break;
+ }
+ setState(731);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ELLIPSIS) {
+ {
+ setState(730);
+ match(ELLIPSIS);
+ }
+ }
+
+ setState(733);
+ type_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionContext extends ParserRuleContext {
+ public Token unary_op;
+ public Token mul_op;
+ public Token add_op;
+ public Token rel_op;
+ public PrimaryExprContext primaryExpr() {
+ return getRuleContext(PrimaryExprContext.class,0);
+ }
+ public List<ExpressionContext> expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode PLUS() { return getToken(GoParser.PLUS, 0); }
+ public TerminalNode MINUS() { return getToken(GoParser.MINUS, 0); }
+ public TerminalNode EXCLAMATION() { return getToken(GoParser.EXCLAMATION, 0); }
+ public TerminalNode CARET() { return getToken(GoParser.CARET, 0); }
+ public TerminalNode STAR() { return getToken(GoParser.STAR, 0); }
+ public TerminalNode AMPERSAND() { return getToken(GoParser.AMPERSAND, 0); }
+ public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); }
+ public TerminalNode DIV() { return getToken(GoParser.DIV, 0); }
+ public TerminalNode MOD() { return getToken(GoParser.MOD, 0); }
+ public TerminalNode LSHIFT() { return getToken(GoParser.LSHIFT, 0); }
+ public TerminalNode RSHIFT() { return getToken(GoParser.RSHIFT, 0); }
+ public TerminalNode BIT_CLEAR() { return getToken(GoParser.BIT_CLEAR, 0); }
+ public TerminalNode OR() { return getToken(GoParser.OR, 0); }
+ public TerminalNode EQUALS() { return getToken(GoParser.EQUALS, 0); }
+ public TerminalNode NOT_EQUALS() { return getToken(GoParser.NOT_EQUALS, 0); }
+ public TerminalNode LESS() { return getToken(GoParser.LESS, 0); }
+ public TerminalNode LESS_OR_EQUALS() { return getToken(GoParser.LESS_OR_EQUALS, 0); }
+ public TerminalNode GREATER() { return getToken(GoParser.GREATER, 0); }
+ public TerminalNode GREATER_OR_EQUALS() { return getToken(GoParser.GREATER_OR_EQUALS, 0); }
+ public TerminalNode LOGICAL_AND() { return getToken(GoParser.LOGICAL_AND, 0); }
+ public TerminalNode LOGICAL_OR() { return getToken(GoParser.LOGICAL_OR, 0); }
+ public ExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitExpression(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExpressionContext expression() throws RecognitionException {
+ return expression(0);
+ }
+
+ private ExpressionContext expression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
+ ExpressionContext _prevctx = _localctx;
+ int _startState = 140;
+ enterRecursionRule(_localctx, 140, RULE_expression, _p);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(739);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
+ case 1:
+ {
+ setState(736);
+ primaryExpr(0);
+ }
+ break;
+ case 2:
+ {
+ setState(737);
+ ((ExpressionContext)_localctx).unary_op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & -144115188075855872L) != 0) ) {
+ ((ExpressionContext)_localctx).unary_op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(738);
+ expression(6);
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(758);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,81,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(756);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
+ case 1:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(741);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+ setState(742);
+ ((ExpressionContext)_localctx).mul_op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 7057140616089567232L) != 0) ) {
+ ((ExpressionContext)_localctx).mul_op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(743);
+ expression(6);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(744);
+ if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
+ setState(745);
+ ((ExpressionContext)_localctx).add_op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 2019864432875667456L) != 0) ) {
+ ((ExpressionContext)_localctx).add_op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(746);
+ expression(5);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(747);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(748);
+ ((ExpressionContext)_localctx).rel_op = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 2216615441596416L) != 0) ) {
+ ((ExpressionContext)_localctx).rel_op = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(749);
+ expression(4);
+ }
+ break;
+ case 4:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(750);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(751);
+ match(LOGICAL_AND);
+ setState(752);
+ expression(3);
+ }
+ break;
+ case 5:
+ {
+ _localctx = new ExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_expression);
+ setState(753);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(754);
+ match(LOGICAL_OR);
+ setState(755);
+ expression(2);
+ }
+ break;
+ }
+ }
+ }
+ setState(760);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,81,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryExprContext extends ParserRuleContext {
+ public OperandContext operand() {
+ return getRuleContext(OperandContext.class,0);
+ }
+ public ConversionContext conversion() {
+ return getRuleContext(ConversionContext.class,0);
+ }
+ public MethodExprContext methodExpr() {
+ return getRuleContext(MethodExprContext.class,0);
+ }
+ public PrimaryExprContext primaryExpr() {
+ return getRuleContext(PrimaryExprContext.class,0);
+ }
+ public IndexContext index() {
+ return getRuleContext(IndexContext.class,0);
+ }
+ public Slice_Context slice_() {
+ return getRuleContext(Slice_Context.class,0);
+ }
+ public TypeAssertionContext typeAssertion() {
+ return getRuleContext(TypeAssertionContext.class,0);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public PrimaryExprContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryExpr; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterPrimaryExpr(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitPrimaryExpr(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitPrimaryExpr(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final PrimaryExprContext primaryExpr() throws RecognitionException {
+ return primaryExpr(0);
+ }
+
+ private PrimaryExprContext primaryExpr(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ PrimaryExprContext _localctx = new PrimaryExprContext(_ctx, _parentState);
+ PrimaryExprContext _prevctx = _localctx;
+ int _startState = 142;
+ enterRecursionRule(_localctx, 142, RULE_primaryExpr, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(765);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) {
+ case 1:
+ {
+ setState(762);
+ operand();
+ }
+ break;
+ case 2:
+ {
+ setState(763);
+ conversion();
+ }
+ break;
+ case 3:
+ {
+ setState(764);
+ methodExpr();
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(778);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,84,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new PrimaryExprContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_primaryExpr);
+ setState(767);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(774);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
+ case 1:
+ {
+ {
+ setState(768);
+ match(DOT);
+ setState(769);
+ match(IDENTIFIER);
+ }
+ }
+ break;
+ case 2:
+ {
+ setState(770);
+ index();
+ }
+ break;
+ case 3:
+ {
+ setState(771);
+ slice_();
+ }
+ break;
+ case 4:
+ {
+ setState(772);
+ typeAssertion();
+ }
+ break;
+ case 5:
+ {
+ setState(773);
+ arguments();
+ }
+ break;
+ }
+ }
+ }
+ }
+ setState(780);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,84,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConversionContext extends ParserRuleContext {
+ public NonNamedTypeContext nonNamedType() {
+ return getRuleContext(NonNamedTypeContext.class,0);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public TerminalNode COMMA() { return getToken(GoParser.COMMA, 0); }
+ public ConversionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_conversion; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterConversion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitConversion(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitConversion(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ConversionContext conversion() throws RecognitionException {
+ ConversionContext _localctx = new ConversionContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_conversion);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(781);
+ nonNamedType();
+ setState(782);
+ match(L_PAREN);
+ setState(783);
+ expression(0);
+ setState(785);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(784);
+ match(COMMA);
+ }
+ }
+
+ setState(787);
+ match(R_PAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NonNamedTypeContext extends ParserRuleContext {
+ public TypeLitContext typeLit() {
+ return getRuleContext(TypeLitContext.class,0);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public NonNamedTypeContext nonNamedType() {
+ return getRuleContext(NonNamedTypeContext.class,0);
+ }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public NonNamedTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nonNamedType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterNonNamedType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitNonNamedType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitNonNamedType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final NonNamedTypeContext nonNamedType() throws RecognitionException {
+ NonNamedTypeContext _localctx = new NonNamedTypeContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_nonNamedType);
+ try {
+ setState(794);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case L_BRACKET:
+ case STAR:
+ case RECEIVE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(789);
+ typeLit();
+ }
+ break;
+ case L_PAREN:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(790);
+ match(L_PAREN);
+ setState(791);
+ nonNamedType();
+ setState(792);
+ match(R_PAREN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperandContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public OperandNameContext operandName() {
+ return getRuleContext(OperandNameContext.class,0);
+ }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public OperandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_operand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterOperand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitOperand(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitOperand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OperandContext operand() throws RecognitionException {
+ OperandContext _localctx = new OperandContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_operand);
+ try {
+ setState(802);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(796);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(797);
+ operandName();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(798);
+ match(L_PAREN);
+ setState(799);
+ expression(0);
+ setState(800);
+ match(R_PAREN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LiteralContext extends ParserRuleContext {
+ public BasicLitContext basicLit() {
+ return getRuleContext(BasicLitContext.class,0);
+ }
+ public CompositeLitContext compositeLit() {
+ return getRuleContext(CompositeLitContext.class,0);
+ }
+ public FunctionLitContext functionLit() {
+ return getRuleContext(FunctionLitContext.class,0);
+ }
+ public LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literal; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitLiteral(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LiteralContext literal() throws RecognitionException {
+ LiteralContext _localctx = new LiteralContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_literal);
+ try {
+ setState(807);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case NIL_LIT:
+ case DECIMAL_LIT:
+ case BINARY_LIT:
+ case OCTAL_LIT:
+ case HEX_LIT:
+ case FLOAT_LIT:
+ case IMAGINARY_LIT:
+ case RUNE_LIT:
+ case RAW_STRING_LIT:
+ case INTERPRETED_STRING_LIT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(804);
+ basicLit();
+ }
+ break;
+ case MAP:
+ case STRUCT:
+ case IDENTIFIER:
+ case L_BRACKET:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(805);
+ compositeLit();
+ }
+ break;
+ case FUNC:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(806);
+ functionLit();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BasicLitContext extends ParserRuleContext {
+ public TerminalNode NIL_LIT() { return getToken(GoParser.NIL_LIT, 0); }
+ public IntegerContext integer() {
+ return getRuleContext(IntegerContext.class,0);
+ }
+ public String_Context string_() {
+ return getRuleContext(String_Context.class,0);
+ }
+ public TerminalNode FLOAT_LIT() { return getToken(GoParser.FLOAT_LIT, 0); }
+ public BasicLitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_basicLit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterBasicLit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitBasicLit(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitBasicLit(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final BasicLitContext basicLit() throws RecognitionException {
+ BasicLitContext _localctx = new BasicLitContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_basicLit);
+ try {
+ setState(813);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case NIL_LIT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(809);
+ match(NIL_LIT);
+ }
+ break;
+ case DECIMAL_LIT:
+ case BINARY_LIT:
+ case OCTAL_LIT:
+ case HEX_LIT:
+ case IMAGINARY_LIT:
+ case RUNE_LIT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(810);
+ integer();
+ }
+ break;
+ case RAW_STRING_LIT:
+ case INTERPRETED_STRING_LIT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(811);
+ string_();
+ }
+ break;
+ case FLOAT_LIT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(812);
+ match(FLOAT_LIT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IntegerContext extends ParserRuleContext {
+ public TerminalNode DECIMAL_LIT() { return getToken(GoParser.DECIMAL_LIT, 0); }
+ public TerminalNode BINARY_LIT() { return getToken(GoParser.BINARY_LIT, 0); }
+ public TerminalNode OCTAL_LIT() { return getToken(GoParser.OCTAL_LIT, 0); }
+ public TerminalNode HEX_LIT() { return getToken(GoParser.HEX_LIT, 0); }
+ public TerminalNode IMAGINARY_LIT() { return getToken(GoParser.IMAGINARY_LIT, 0); }
+ public TerminalNode RUNE_LIT() { return getToken(GoParser.RUNE_LIT, 0); }
+ public IntegerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_integer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterInteger(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitInteger(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitInteger(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IntegerContext integer() throws RecognitionException {
+ IntegerContext _localctx = new IntegerContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_integer);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(815);
+ _la = _input.LA(1);
+ if ( !((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 399L) != 0) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperandNameContext extends ParserRuleContext {
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public OperandNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_operandName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterOperandName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitOperandName(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitOperandName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OperandNameContext operandName() throws RecognitionException {
+ OperandNameContext _localctx = new OperandNameContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_operandName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(817);
+ match(IDENTIFIER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QualifiedIdentContext extends ParserRuleContext {
+ public List<TerminalNode> IDENTIFIER() { return getTokens(GoParser.IDENTIFIER); }
+ public TerminalNode IDENTIFIER(int i) {
+ return getToken(GoParser.IDENTIFIER, i);
+ }
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public QualifiedIdentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedIdent; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterQualifiedIdent(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitQualifiedIdent(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitQualifiedIdent(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final QualifiedIdentContext qualifiedIdent() throws RecognitionException {
+ QualifiedIdentContext _localctx = new QualifiedIdentContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_qualifiedIdent);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(819);
+ match(IDENTIFIER);
+ setState(820);
+ match(DOT);
+ setState(821);
+ match(IDENTIFIER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CompositeLitContext extends ParserRuleContext {
+ public LiteralTypeContext literalType() {
+ return getRuleContext(LiteralTypeContext.class,0);
+ }
+ public LiteralValueContext literalValue() {
+ return getRuleContext(LiteralValueContext.class,0);
+ }
+ public CompositeLitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_compositeLit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterCompositeLit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitCompositeLit(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitCompositeLit(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final CompositeLitContext compositeLit() throws RecognitionException {
+ CompositeLitContext _localctx = new CompositeLitContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_compositeLit);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(823);
+ literalType();
+ setState(824);
+ literalValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LiteralTypeContext extends ParserRuleContext {
+ public StructTypeContext structType() {
+ return getRuleContext(StructTypeContext.class,0);
+ }
+ public ArrayTypeContext arrayType() {
+ return getRuleContext(ArrayTypeContext.class,0);
+ }
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public ElementTypeContext elementType() {
+ return getRuleContext(ElementTypeContext.class,0);
+ }
+ public SliceTypeContext sliceType() {
+ return getRuleContext(SliceTypeContext.class,0);
+ }
+ public MapTypeContext mapType() {
+ return getRuleContext(MapTypeContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public LiteralTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literalType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterLiteralType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitLiteralType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitLiteralType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LiteralTypeContext literalType() throws RecognitionException {
+ LiteralTypeContext _localctx = new LiteralTypeContext(_ctx, getState());
+ enterRule(_localctx, 162, RULE_literalType);
+ try {
+ setState(835);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(826);
+ structType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(827);
+ arrayType();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(828);
+ match(L_BRACKET);
+ setState(829);
+ match(ELLIPSIS);
+ setState(830);
+ match(R_BRACKET);
+ setState(831);
+ elementType();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(832);
+ sliceType();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(833);
+ mapType();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(834);
+ typeName();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LiteralValueContext extends ParserRuleContext {
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public ElementListContext elementList() {
+ return getRuleContext(ElementListContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(GoParser.COMMA, 0); }
+ public LiteralValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literalValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterLiteralValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitLiteralValue(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitLiteralValue(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LiteralValueContext literalValue() throws RecognitionException {
+ LiteralValueContext _localctx = new LiteralValueContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_literalValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(837);
+ match(L_CURLY);
+ setState(842);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115182237381096L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(838);
+ elementList();
+ setState(840);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(839);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(844);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementListContext extends ParserRuleContext {
+ public List<KeyedElementContext> keyedElement() {
+ return getRuleContexts(KeyedElementContext.class);
+ }
+ public KeyedElementContext keyedElement(int i) {
+ return getRuleContext(KeyedElementContext.class,i);
+ }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public ElementListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterElementList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitElementList(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitElementList(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ElementListContext elementList() throws RecognitionException {
+ ElementListContext _localctx = new ElementListContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_elementList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(846);
+ keyedElement();
+ setState(851);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,93,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(847);
+ match(COMMA);
+ setState(848);
+ keyedElement();
+ }
+ }
+ }
+ setState(853);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,93,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class KeyedElementContext extends ParserRuleContext {
+ public ElementContext element() {
+ return getRuleContext(ElementContext.class,0);
+ }
+ public KeyContext key() {
+ return getRuleContext(KeyContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(GoParser.COLON, 0); }
+ public KeyedElementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_keyedElement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterKeyedElement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitKeyedElement(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitKeyedElement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final KeyedElementContext keyedElement() throws RecognitionException {
+ KeyedElementContext _localctx = new KeyedElementContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_keyedElement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(857);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
+ case 1:
+ {
+ setState(854);
+ key();
+ setState(855);
+ match(COLON);
+ }
+ break;
+ }
+ setState(859);
+ element();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class KeyContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public LiteralValueContext literalValue() {
+ return getRuleContext(LiteralValueContext.class,0);
+ }
+ public KeyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_key; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterKey(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitKey(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitKey(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final KeyContext key() throws RecognitionException {
+ KeyContext _localctx = new KeyContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_key);
+ try {
+ setState(863);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case NIL_LIT:
+ case IDENTIFIER:
+ case L_PAREN:
+ case L_BRACKET:
+ case EXCLAMATION:
+ case PLUS:
+ case MINUS:
+ case CARET:
+ case STAR:
+ case AMPERSAND:
+ case RECEIVE:
+ case DECIMAL_LIT:
+ case BINARY_LIT:
+ case OCTAL_LIT:
+ case HEX_LIT:
+ case FLOAT_LIT:
+ case IMAGINARY_LIT:
+ case RUNE_LIT:
+ case RAW_STRING_LIT:
+ case INTERPRETED_STRING_LIT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(861);
+ expression(0);
+ }
+ break;
+ case L_CURLY:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(862);
+ literalValue();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public LiteralValueContext literalValue() {
+ return getRuleContext(LiteralValueContext.class,0);
+ }
+ public ElementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_element; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterElement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitElement(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitElement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ElementContext element() throws RecognitionException {
+ ElementContext _localctx = new ElementContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_element);
+ try {
+ setState(867);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case FUNC:
+ case INTERFACE:
+ case MAP:
+ case STRUCT:
+ case CHAN:
+ case NIL_LIT:
+ case IDENTIFIER:
+ case L_PAREN:
+ case L_BRACKET:
+ case EXCLAMATION:
+ case PLUS:
+ case MINUS:
+ case CARET:
+ case STAR:
+ case AMPERSAND:
+ case RECEIVE:
+ case DECIMAL_LIT:
+ case BINARY_LIT:
+ case OCTAL_LIT:
+ case HEX_LIT:
+ case FLOAT_LIT:
+ case IMAGINARY_LIT:
+ case RUNE_LIT:
+ case RAW_STRING_LIT:
+ case INTERPRETED_STRING_LIT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(865);
+ expression(0);
+ }
+ break;
+ case L_CURLY:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(866);
+ literalValue();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StructTypeContext extends ParserRuleContext {
+ public TerminalNode STRUCT() { return getToken(GoParser.STRUCT, 0); }
+ public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); }
+ public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); }
+ public List<FieldDeclContext> fieldDecl() {
+ return getRuleContexts(FieldDeclContext.class);
+ }
+ public FieldDeclContext fieldDecl(int i) {
+ return getRuleContext(FieldDeclContext.class,i);
+ }
+ public List<EosContext> eos() {
+ return getRuleContexts(EosContext.class);
+ }
+ public EosContext eos(int i) {
+ return getRuleContext(EosContext.class,i);
+ }
+ public StructTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_structType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterStructType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitStructType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitStructType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final StructTypeContext structType() throws RecognitionException {
+ StructTypeContext _localctx = new StructTypeContext(_ctx, getState());
+ enterRule(_localctx, 174, RULE_structType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(869);
+ match(STRUCT);
+ setState(870);
+ match(L_CURLY);
+ setState(876);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IDENTIFIER || _la==STAR) {
+ {
+ {
+ setState(871);
+ fieldDecl();
+ setState(872);
+ eos();
+ }
+ }
+ setState(878);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(879);
+ match(R_CURLY);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldDeclContext extends ParserRuleContext {
+ public String_Context tag;
+ public IdentifierListContext identifierList() {
+ return getRuleContext(IdentifierListContext.class,0);
+ }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public EmbeddedFieldContext embeddedField() {
+ return getRuleContext(EmbeddedFieldContext.class,0);
+ }
+ public String_Context string_() {
+ return getRuleContext(String_Context.class,0);
+ }
+ public FieldDeclContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldDecl; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterFieldDecl(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitFieldDecl(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitFieldDecl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FieldDeclContext fieldDecl() throws RecognitionException {
+ FieldDeclContext _localctx = new FieldDeclContext(_ctx, getState());
+ enterRule(_localctx, 176, RULE_fieldDecl);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(885);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,98,_ctx) ) {
+ case 1:
+ {
+ setState(881);
+ identifierList();
+ setState(882);
+ type_();
+ }
+ break;
+ case 2:
+ {
+ setState(884);
+ embeddedField();
+ }
+ break;
+ }
+ setState(888);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
+ case 1:
+ {
+ setState(887);
+ ((FieldDeclContext)_localctx).tag = string_();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class String_Context extends ParserRuleContext {
+ public TerminalNode RAW_STRING_LIT() { return getToken(GoParser.RAW_STRING_LIT, 0); }
+ public TerminalNode INTERPRETED_STRING_LIT() { return getToken(GoParser.INTERPRETED_STRING_LIT, 0); }
+ public String_Context(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_string_; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterString_(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitString_(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitString_(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final String_Context string_() throws RecognitionException {
+ String_Context _localctx = new String_Context(_ctx, getState());
+ enterRule(_localctx, 178, RULE_string_);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(890);
+ _la = _input.LA(1);
+ if ( !(_la==RAW_STRING_LIT || _la==INTERPRETED_STRING_LIT) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EmbeddedFieldContext extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode STAR() { return getToken(GoParser.STAR, 0); }
+ public EmbeddedFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_embeddedField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterEmbeddedField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitEmbeddedField(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitEmbeddedField(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EmbeddedFieldContext embeddedField() throws RecognitionException {
+ EmbeddedFieldContext _localctx = new EmbeddedFieldContext(_ctx, getState());
+ enterRule(_localctx, 180, RULE_embeddedField);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(893);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==STAR) {
+ {
+ setState(892);
+ match(STAR);
+ }
+ }
+
+ setState(895);
+ typeName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FunctionLitContext extends ParserRuleContext {
+ public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); }
+ public SignatureContext signature() {
+ return getRuleContext(SignatureContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public FunctionLitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionLit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterFunctionLit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitFunctionLit(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitFunctionLit(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FunctionLitContext functionLit() throws RecognitionException {
+ FunctionLitContext _localctx = new FunctionLitContext(_ctx, getState());
+ enterRule(_localctx, 182, RULE_functionLit);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(897);
+ match(FUNC);
+ setState(898);
+ signature();
+ setState(899);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IndexContext extends ParserRuleContext {
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public IndexContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_index; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterIndex(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitIndex(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitIndex(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IndexContext index() throws RecognitionException {
+ IndexContext _localctx = new IndexContext(_ctx, getState());
+ enterRule(_localctx, 184, RULE_index);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(901);
+ match(L_BRACKET);
+ setState(902);
+ expression(0);
+ setState(903);
+ match(R_BRACKET);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class Slice_Context extends ParserRuleContext {
+ public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); }
+ public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); }
+ public List<TerminalNode> COLON() { return getTokens(GoParser.COLON); }
+ public TerminalNode COLON(int i) {
+ return getToken(GoParser.COLON, i);
+ }
+ public List<ExpressionContext> expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public Slice_Context(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_slice_; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterSlice_(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitSlice_(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitSlice_(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final Slice_Context slice_() throws RecognitionException {
+ Slice_Context _localctx = new Slice_Context(_ctx, getState());
+ enterRule(_localctx, 186, RULE_slice_);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(905);
+ match(L_BRACKET);
+ setState(921);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,104,_ctx) ) {
+ case 1:
+ {
+ setState(907);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(906);
+ expression(0);
+ }
+ }
+
+ setState(909);
+ match(COLON);
+ setState(911);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(910);
+ expression(0);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ setState(914);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(913);
+ expression(0);
+ }
+ }
+
+ setState(916);
+ match(COLON);
+ setState(917);
+ expression(0);
+ setState(918);
+ match(COLON);
+ setState(919);
+ expression(0);
+ }
+ break;
+ }
+ setState(923);
+ match(R_BRACKET);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeAssertionContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public TypeAssertionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeAssertion; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterTypeAssertion(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitTypeAssertion(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitTypeAssertion(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeAssertionContext typeAssertion() throws RecognitionException {
+ TypeAssertionContext _localctx = new TypeAssertionContext(_ctx, getState());
+ enterRule(_localctx, 188, RULE_typeAssertion);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(925);
+ match(DOT);
+ setState(926);
+ match(L_PAREN);
+ setState(927);
+ type_();
+ setState(928);
+ match(R_PAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgumentsContext extends ParserRuleContext {
+ public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); }
+ public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); }
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public NonNamedTypeContext nonNamedType() {
+ return getRuleContext(NonNamedTypeContext.class,0);
+ }
+ public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); }
+ public List<TerminalNode> COMMA() { return getTokens(GoParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(GoParser.COMMA, i);
+ }
+ public ArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitArguments(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitArguments(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ArgumentsContext arguments() throws RecognitionException {
+ ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 190, RULE_arguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(930);
+ match(L_PAREN);
+ setState(945);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((_la) & ~0x3f) == 0 && ((1L << _la) & -144115183311122920L) != 0 || (((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 49567L) != 0) {
+ {
+ setState(937);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) {
+ case 1:
+ {
+ setState(931);
+ expressionList();
+ }
+ break;
+ case 2:
+ {
+ setState(932);
+ nonNamedType();
+ setState(935);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
+ case 1:
+ {
+ setState(933);
+ match(COMMA);
+ setState(934);
+ expressionList();
+ }
+ break;
+ }
+ }
+ break;
+ }
+ setState(940);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ELLIPSIS) {
+ {
+ setState(939);
+ match(ELLIPSIS);
+ }
+ }
+
+ setState(943);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(942);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(947);
+ match(R_PAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodExprContext extends ParserRuleContext {
+ public NonNamedTypeContext nonNamedType() {
+ return getRuleContext(NonNamedTypeContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(GoParser.DOT, 0); }
+ public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); }
+ public MethodExprContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodExpr; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterMethodExpr(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitMethodExpr(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitMethodExpr(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MethodExprContext methodExpr() throws RecognitionException {
+ MethodExprContext _localctx = new MethodExprContext(_ctx, getState());
+ enterRule(_localctx, 192, RULE_methodExpr);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(949);
+ nonNamedType();
+ setState(950);
+ match(DOT);
+ setState(951);
+ match(IDENTIFIER);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReceiverTypeContext extends ParserRuleContext {
+ public Type_Context type_() {
+ return getRuleContext(Type_Context.class,0);
+ }
+ public ReceiverTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_receiverType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterReceiverType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitReceiverType(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitReceiverType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ReceiverTypeContext receiverType() throws RecognitionException {
+ ReceiverTypeContext _localctx = new ReceiverTypeContext(_ctx, getState());
+ enterRule(_localctx, 194, RULE_receiverType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(953);
+ type_();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EosContext extends ParserRuleContext {
+ public TerminalNode SEMI() { return getToken(GoParser.SEMI, 0); }
+ public TerminalNode EOF() { return getToken(GoParser.EOF, 0); }
+ public TerminalNode EOS() { return getToken(GoParser.EOS, 0); }
+ public EosContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_eos; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).enterEos(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GoParserListener ) ((GoParserListener)listener).exitEos(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof GoParserVisitor ) return ((GoParserVisitor<? extends T>)visitor).visitEos(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EosContext eos() throws RecognitionException {
+ EosContext _localctx = new EosContext(_ctx, getState());
+ enterRule(_localctx, 196, RULE_eos);
+ try {
+ setState(959);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(955);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(956);
+ match(EOF);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(957);
+ match(EOS);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(958);
+ if (!(this.closingBracket())) throw new FailedPredicateException(this, "this.closingBracket()");
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+ switch (ruleIndex) {
+ case 18:
+ return statementList_sempred((StatementListContext)_localctx, predIndex);
+ case 70:
+ return expression_sempred((ExpressionContext)_localctx, predIndex);
+ case 71:
+ return primaryExpr_sempred((PrimaryExprContext)_localctx, predIndex);
+ case 98:
+ return eos_sempred((EosContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean statementList_sempred(StatementListContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return this.closingBracket();
+ }
+ return true;
+ }
+ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 1:
+ return precpred(_ctx, 5);
+ case 2:
+ return precpred(_ctx, 4);
+ case 3:
+ return precpred(_ctx, 3);
+ case 4:
+ return precpred(_ctx, 2);
+ case 5:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean primaryExpr_sempred(PrimaryExprContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 6:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean eos_sempred(EosContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 7:
+ return this.closingBracket();
+ }
+ return true;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0001X\u03c2\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
+ "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
+ "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
+ "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+
+ "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+
+ "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+
+ "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+
+ "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+
+ "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+
+ "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+
+ "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
+ "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
+ "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+
+ "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+
+ "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+
+ "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+
+ "A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+
+ "F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+
+ "K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+
+ "P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002"+
+ "U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002"+
+ "Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002"+
+ "_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0005\u0000\u00cc\b\u0000\n\u0000"+
+ "\f\u0000\u00cf\t\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0003\u0000"+
+ "\u00d4\b\u0000\u0001\u0000\u0001\u0000\u0005\u0000\u00d8\b\u0000\n\u0000"+
+ "\f\u0000\u00db\t\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
+ "\u0001\u0002\u0005\u0002\u00e8\b\u0002\n\u0002\f\u0002\u00eb\t\u0002\u0001"+
+ "\u0002\u0003\u0002\u00ee\b\u0002\u0001\u0003\u0003\u0003\u00f1\b\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
+ "\u0001\u0005\u0003\u0005\u00fa\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0005\u0006\u0102\b\u0006\n\u0006"+
+ "\f\u0006\u0105\t\u0006\u0001\u0006\u0003\u0006\u0108\b\u0006\u0001\u0007"+
+ "\u0001\u0007\u0003\u0007\u010c\b\u0007\u0001\u0007\u0001\u0007\u0003\u0007"+
+ "\u0110\b\u0007\u0001\b\u0001\b\u0001\b\u0005\b\u0115\b\b\n\b\f\b\u0118"+
+ "\t\b\u0001\t\u0001\t\u0001\t\u0005\t\u011d\b\t\n\t\f\t\u0120\t\t\u0001"+
+ "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0005\n\u0128\b\n\n\n\f\n\u012b"+
+ "\t\n\u0001\n\u0003\n\u012e\b\n\u0001\u000b\u0001\u000b\u0003\u000b\u0132"+
+ "\b\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+
+ "\f\u013a\b\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003\r\u0141\b\r"+
+ "\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0001\u000f\u0001\u000f\u0005\u000f\u014b\b\u000f\n\u000f\f\u000f\u014e"+
+ "\t\u000f\u0001\u000f\u0003\u000f\u0151\b\u000f\u0001\u0010\u0001\u0010"+
+ "\u0001\u0010\u0001\u0010\u0003\u0010\u0157\b\u0010\u0001\u0010\u0001\u0010"+
+ "\u0003\u0010\u015b\b\u0010\u0001\u0011\u0001\u0011\u0003\u0011\u015f\b"+
+ "\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0003\u0012\u0164\b\u0012\u0001"+
+ "\u0012\u0003\u0012\u0167\b\u0012\u0001\u0012\u0003\u0012\u016a\b\u0012"+
+ "\u0001\u0012\u0001\u0012\u0001\u0012\u0004\u0012\u016f\b\u0012\u000b\u0012"+
+ "\f\u0012\u0170\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u0182\b\u0013"+
+ "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014"+
+ "\u0189\b\u0014\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016"+
+ "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018"+
+ "\u0001\u0018\u0001\u0018\u0001\u0019\u0003\u0019\u0199\b\u0019\u0001\u0019"+
+ "\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+
+ "\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u01a6\b\u001c"+
+ "\u0001\u001d\u0001\u001d\u0003\u001d\u01aa\b\u001d\u0001\u001e\u0001\u001e"+
+ "\u0003\u001e\u01ae\b\u001e\u0001\u001f\u0001\u001f\u0003\u001f\u01b2\b"+
+ "\u001f\u0001 \u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001"+
+ "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0003#\u01c5"+
+ "\b#\u0001#\u0001#\u0001#\u0001#\u0003#\u01cb\b#\u0003#\u01cd\b#\u0001"+
+ "$\u0001$\u0003$\u01d1\b$\u0001%\u0001%\u0003%\u01d5\b%\u0001%\u0003%\u01d8"+
+ "\b%\u0001%\u0001%\u0003%\u01dc\b%\u0003%\u01de\b%\u0001%\u0001%\u0005"+
+ "%\u01e2\b%\n%\f%\u01e5\t%\u0001%\u0001%\u0001&\u0001&\u0001&\u0003&\u01ec"+
+ "\b&\u0001\'\u0001\'\u0001\'\u0003\'\u01f1\b\'\u0001(\u0001(\u0001(\u0001"+
+ "(\u0001(\u0001(\u0001(\u0001(\u0001(\u0003(\u01fc\b(\u0001(\u0001(\u0005"+
+ "(\u0200\b(\n(\f(\u0203\t(\u0001(\u0001(\u0001)\u0001)\u0003)\u0209\b)"+
+ "\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0003"+
+ "*\u0214\b*\u0001+\u0001+\u0001+\u0003+\u0219\b+\u0001,\u0001,\u0003,\u021d"+
+ "\b,\u0001,\u0001,\u0001,\u0003,\u0222\b,\u0005,\u0224\b,\n,\f,\u0227\t"+
+ ",\u0001-\u0001-\u0001-\u0005-\u022c\b-\n-\f-\u022f\t-\u0001-\u0001-\u0001"+
+ ".\u0001.\u0001.\u0003.\u0236\b.\u0001/\u0001/\u0001/\u0003/\u023b\b/\u0001"+
+ "/\u0003/\u023e\b/\u00010\u00010\u00010\u00010\u00010\u00010\u00030\u0246"+
+ "\b0\u00010\u00010\u00011\u00011\u00031\u024c\b1\u00011\u00011\u00031\u0250"+
+ "\b1\u00031\u0252\b1\u00011\u00011\u00012\u00032\u0257\b2\u00012\u0001"+
+ "2\u00032\u025b\b2\u00012\u00012\u00032\u025f\b2\u00013\u00013\u00013\u0001"+
+ "3\u00013\u00013\u00033\u0267\b3\u00013\u00013\u00013\u00014\u00014\u0001"+
+ "4\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u0275\b5\u00016\u0001"+
+ "6\u00036\u0279\b6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+
+ "7\u00037\u0283\b7\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u0001"+
+ ":\u0001:\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0003<\u0295"+
+ "\b<\u0001<\u0001<\u0005<\u0299\b<\n<\f<\u029c\t<\u0001<\u0001<\u0001="+
+ "\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ "?\u0001?\u0001?\u0001?\u0001?\u0003?\u02af\b?\u0001?\u0001?\u0001@\u0001"+
+ "@\u0001@\u0001@\u0001@\u0001@\u0003@\u02b9\b@\u0001A\u0001A\u0001A\u0001"+
+ "B\u0001B\u0001B\u0001B\u0003B\u02c2\bB\u0001C\u0001C\u0003C\u02c6\bC\u0001"+
+ "D\u0001D\u0001D\u0001D\u0005D\u02cc\bD\nD\fD\u02cf\tD\u0001D\u0003D\u02d2"+
+ "\bD\u0003D\u02d4\bD\u0001D\u0001D\u0001E\u0003E\u02d9\bE\u0001E\u0003"+
+ "E\u02dc\bE\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0003F\u02e4\bF\u0001"+
+ "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+
+ "F\u0001F\u0001F\u0001F\u0001F\u0005F\u02f5\bF\nF\fF\u02f8\tF\u0001G\u0001"+
+ "G\u0001G\u0001G\u0003G\u02fe\bG\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+
+ "G\u0001G\u0003G\u0307\bG\u0005G\u0309\bG\nG\fG\u030c\tG\u0001H\u0001H"+
+ "\u0001H\u0001H\u0003H\u0312\bH\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"+
+ "I\u0001I\u0003I\u031b\bI\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0003"+
+ "J\u0323\bJ\u0001K\u0001K\u0001K\u0003K\u0328\bK\u0001L\u0001L\u0001L\u0001"+
+ "L\u0003L\u032e\bL\u0001M\u0001M\u0001N\u0001N\u0001O\u0001O\u0001O\u0001"+
+ "O\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+
+ "Q\u0001Q\u0001Q\u0003Q\u0344\bQ\u0001R\u0001R\u0001R\u0003R\u0349\bR\u0003"+
+ "R\u034b\bR\u0001R\u0001R\u0001S\u0001S\u0001S\u0005S\u0352\bS\nS\fS\u0355"+
+ "\tS\u0001T\u0001T\u0001T\u0003T\u035a\bT\u0001T\u0001T\u0001U\u0001U\u0003"+
+ "U\u0360\bU\u0001V\u0001V\u0003V\u0364\bV\u0001W\u0001W\u0001W\u0001W\u0001"+
+ "W\u0005W\u036b\bW\nW\fW\u036e\tW\u0001W\u0001W\u0001X\u0001X\u0001X\u0001"+
+ "X\u0003X\u0376\bX\u0001X\u0003X\u0379\bX\u0001Y\u0001Y\u0001Z\u0003Z\u037e"+
+ "\bZ\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001\\"+
+ "\u0001\\\u0001]\u0001]\u0003]\u038c\b]\u0001]\u0001]\u0003]\u0390\b]\u0001"+
+ "]\u0003]\u0393\b]\u0001]\u0001]\u0001]\u0001]\u0001]\u0003]\u039a\b]\u0001"+
+ "]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001"+
+ "_\u0001_\u0003_\u03a8\b_\u0003_\u03aa\b_\u0001_\u0003_\u03ad\b_\u0001"+
+ "_\u0003_\u03b0\b_\u0003_\u03b2\b_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001"+
+ "`\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0003b\u03c0\bb\u0001b\u0000"+
+ "\u0002\u008c\u008ec\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014"+
+ "\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfh"+
+ "jlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+
+ "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa"+
+ "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2"+
+ "\u00c4\u0000\n\u0002\u0000\u001b\u001b&&\u0001\u0000\'(\u0002\u000038"+
+ ":>\u0002\u0000$$WW\u0001\u00009?\u0002\u000048=>\u0002\u000033:<\u0001"+
+ "\u0000-2\u0002\u0000@CGH\u0001\u0000NO\u03fe\u0000\u00c6\u0001\u0000\u0000"+
+ "\u0000\u0002\u00de\u0001\u0000\u0000\u0000\u0004\u00e1\u0001\u0000\u0000"+
+ "\u0000\u0006\u00f0\u0001\u0000\u0000\u0000\b\u00f4\u0001\u0000\u0000\u0000"+
+ "\n\u00f9\u0001\u0000\u0000\u0000\f\u00fb\u0001\u0000\u0000\u0000\u000e"+
+ "\u0109\u0001\u0000\u0000\u0000\u0010\u0111\u0001\u0000\u0000\u0000\u0012"+
+ "\u0119\u0001\u0000\u0000\u0000\u0014\u0121\u0001\u0000\u0000\u0000\u0016"+
+ "\u012f\u0001\u0000\u0000\u0000\u0018\u0135\u0001\u0000\u0000\u0000\u001a"+
+ "\u013b\u0001\u0000\u0000\u0000\u001c\u0142\u0001\u0000\u0000\u0000\u001e"+
+ "\u0144\u0001\u0000\u0000\u0000 \u0152\u0001\u0000\u0000\u0000\"\u015c"+
+ "\u0001\u0000\u0000\u0000$\u016e\u0001\u0000\u0000\u0000&\u0181\u0001\u0000"+
+ "\u0000\u0000(\u0188\u0001\u0000\u0000\u0000*\u018a\u0001\u0000\u0000\u0000"+
+ ",\u018c\u0001\u0000\u0000\u0000.\u0190\u0001\u0000\u0000\u00000\u0193"+
+ "\u0001\u0000\u0000\u00002\u0198\u0001\u0000\u0000\u00004\u019c\u0001\u0000"+
+ "\u0000\u00006\u01a0\u0001\u0000\u0000\u00008\u01a2\u0001\u0000\u0000\u0000"+
+ ":\u01a7\u0001\u0000\u0000\u0000<\u01ab\u0001\u0000\u0000\u0000>\u01af"+
+ "\u0001\u0000\u0000\u0000@\u01b3\u0001\u0000\u0000\u0000B\u01b6\u0001\u0000"+
+ "\u0000\u0000D\u01b8\u0001\u0000\u0000\u0000F\u01bb\u0001\u0000\u0000\u0000"+
+ "H\u01d0\u0001\u0000\u0000\u0000J\u01d2\u0001\u0000\u0000\u0000L\u01e8"+
+ "\u0001\u0000\u0000\u0000N\u01f0\u0001\u0000\u0000\u0000P\u01f2\u0001\u0000"+
+ "\u0000\u0000R\u0208\u0001\u0000\u0000\u0000T\u0210\u0001\u0000\u0000\u0000"+
+ "V\u0218\u0001\u0000\u0000\u0000X\u021c\u0001\u0000\u0000\u0000Z\u0228"+
+ "\u0001\u0000\u0000\u0000\\\u0232\u0001\u0000\u0000\u0000^\u023d\u0001"+
+ "\u0000\u0000\u0000`\u0245\u0001\u0000\u0000\u0000b\u0249\u0001\u0000\u0000"+
+ "\u0000d\u0256\u0001\u0000\u0000\u0000f\u0266\u0001\u0000\u0000\u0000h"+
+ "\u026b\u0001\u0000\u0000\u0000j\u0274\u0001\u0000\u0000\u0000l\u0278\u0001"+
+ "\u0000\u0000\u0000n\u0282\u0001\u0000\u0000\u0000p\u0284\u0001\u0000\u0000"+
+ "\u0000r\u0289\u0001\u0000\u0000\u0000t\u028b\u0001\u0000\u0000\u0000v"+
+ "\u028d\u0001\u0000\u0000\u0000x\u0290\u0001\u0000\u0000\u0000z\u029f\u0001"+
+ "\u0000\u0000\u0000|\u02a3\u0001\u0000\u0000\u0000~\u02ae\u0001\u0000\u0000"+
+ "\u0000\u0080\u02b8\u0001\u0000\u0000\u0000\u0082\u02ba\u0001\u0000\u0000"+
+ "\u0000\u0084\u02c1\u0001\u0000\u0000\u0000\u0086\u02c5\u0001\u0000\u0000"+
+ "\u0000\u0088\u02c7\u0001\u0000\u0000\u0000\u008a\u02d8\u0001\u0000\u0000"+
+ "\u0000\u008c\u02e3\u0001\u0000\u0000\u0000\u008e\u02fd\u0001\u0000\u0000"+
+ "\u0000\u0090\u030d\u0001\u0000\u0000\u0000\u0092\u031a\u0001\u0000\u0000"+
+ "\u0000\u0094\u0322\u0001\u0000\u0000\u0000\u0096\u0327\u0001\u0000\u0000"+
+ "\u0000\u0098\u032d\u0001\u0000\u0000\u0000\u009a\u032f\u0001\u0000\u0000"+
+ "\u0000\u009c\u0331\u0001\u0000\u0000\u0000\u009e\u0333\u0001\u0000\u0000"+
+ "\u0000\u00a0\u0337\u0001\u0000\u0000\u0000\u00a2\u0343\u0001\u0000\u0000"+
+ "\u0000\u00a4\u0345\u0001\u0000\u0000\u0000\u00a6\u034e\u0001\u0000\u0000"+
+ "\u0000\u00a8\u0359\u0001\u0000\u0000\u0000\u00aa\u035f\u0001\u0000\u0000"+
+ "\u0000\u00ac\u0363\u0001\u0000\u0000\u0000\u00ae\u0365\u0001\u0000\u0000"+
+ "\u0000\u00b0\u0375\u0001\u0000\u0000\u0000\u00b2\u037a\u0001\u0000\u0000"+
+ "\u0000\u00b4\u037d\u0001\u0000\u0000\u0000\u00b6\u0381\u0001\u0000\u0000"+
+ "\u0000\u00b8\u0385\u0001\u0000\u0000\u0000\u00ba\u0389\u0001\u0000\u0000"+
+ "\u0000\u00bc\u039d\u0001\u0000\u0000\u0000\u00be\u03a2\u0001\u0000\u0000"+
+ "\u0000\u00c0\u03b5\u0001\u0000\u0000\u0000\u00c2\u03b9\u0001\u0000\u0000"+
+ "\u0000\u00c4\u03bf\u0001\u0000\u0000\u0000\u00c6\u00c7\u0003\u0002\u0001"+
+ "\u0000\u00c7\u00cd\u0003\u00c4b\u0000\u00c8\u00c9\u0003\u0004\u0002\u0000"+
+ "\u00c9\u00ca\u0003\u00c4b\u0000\u00ca\u00cc\u0001\u0000\u0000\u0000\u00cb"+
+ "\u00c8\u0001\u0000\u0000\u0000\u00cc\u00cf\u0001\u0000\u0000\u0000\u00cd"+
+ "\u00cb\u0001\u0000\u0000\u0000\u00cd\u00ce\u0001\u0000\u0000\u0000\u00ce"+
+ "\u00d9\u0001\u0000\u0000\u0000\u00cf\u00cd\u0001\u0000\u0000\u0000\u00d0"+
+ "\u00d4\u0003\u0018\f\u0000\u00d1\u00d4\u0003\u001a\r\u0000\u00d2\u00d4"+
+ "\u0003\n\u0005\u0000\u00d3\u00d0\u0001\u0000\u0000\u0000\u00d3\u00d1\u0001"+
+ "\u0000\u0000\u0000\u00d3\u00d2\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001"+
+ "\u0000\u0000\u0000\u00d5\u00d6\u0003\u00c4b\u0000\u00d6\u00d8\u0001\u0000"+
+ "\u0000\u0000\u00d7\u00d3\u0001\u0000\u0000\u0000\u00d8\u00db\u0001\u0000"+
+ "\u0000\u0000\u00d9\u00d7\u0001\u0000\u0000\u0000\u00d9\u00da\u0001\u0000"+
+ "\u0000\u0000\u00da\u00dc\u0001\u0000\u0000\u0000\u00db\u00d9\u0001\u0000"+
+ "\u0000\u0000\u00dc\u00dd\u0005\u0000\u0000\u0001\u00dd\u0001\u0001\u0000"+
+ "\u0000\u0000\u00de\u00df\u0005\u000e\u0000\u0000\u00df\u00e0\u0005\u001b"+
+ "\u0000\u0000\u00e0\u0003\u0001\u0000\u0000\u0000\u00e1\u00ed\u0005\u0017"+
+ "\u0000\u0000\u00e2\u00ee\u0003\u0006\u0003\u0000\u00e3\u00e9\u0005\u001c"+
+ "\u0000\u0000\u00e4\u00e5\u0003\u0006\u0003\u0000\u00e5\u00e6\u0003\u00c4"+
+ "b\u0000\u00e6\u00e8\u0001\u0000\u0000\u0000\u00e7\u00e4\u0001\u0000\u0000"+
+ "\u0000\u00e8\u00eb\u0001\u0000\u0000\u0000\u00e9\u00e7\u0001\u0000\u0000"+
+ "\u0000\u00e9\u00ea\u0001\u0000\u0000\u0000\u00ea\u00ec\u0001\u0000\u0000"+
+ "\u0000\u00eb\u00e9\u0001\u0000\u0000\u0000\u00ec\u00ee\u0005\u001d\u0000"+
+ "\u0000\u00ed\u00e2\u0001\u0000\u0000\u0000\u00ed\u00e3\u0001\u0000\u0000"+
+ "\u0000\u00ee\u0005\u0001\u0000\u0000\u0000\u00ef\u00f1\u0007\u0000\u0000"+
+ "\u0000\u00f0\u00ef\u0001\u0000\u0000\u0000\u00f0\u00f1\u0001\u0000\u0000"+
+ "\u0000\u00f1\u00f2\u0001\u0000\u0000\u0000\u00f2\u00f3\u0003\b\u0004\u0000"+
+ "\u00f3\u0007\u0001\u0000\u0000\u0000\u00f4\u00f5\u0003\u00b2Y\u0000\u00f5"+
+ "\t\u0001\u0000\u0000\u0000\u00f6\u00fa\u0003\f\u0006\u0000\u00f7\u00fa"+
+ "\u0003\u0014\n\u0000\u00f8\u00fa\u0003\u001e\u000f\u0000\u00f9\u00f6\u0001"+
+ "\u0000\u0000\u0000\u00f9\u00f7\u0001\u0000\u0000\u0000\u00f9\u00f8\u0001"+
+ "\u0000\u0000\u0000\u00fa\u000b\u0001\u0000\u0000\u0000\u00fb\u0107\u0005"+
+ "\u0010\u0000\u0000\u00fc\u0108\u0003\u000e\u0007\u0000\u00fd\u0103\u0005"+
+ "\u001c\u0000\u0000\u00fe\u00ff\u0003\u000e\u0007\u0000\u00ff\u0100\u0003"+
+ "\u00c4b\u0000\u0100\u0102\u0001\u0000\u0000\u0000\u0101\u00fe\u0001\u0000"+
+ "\u0000\u0000\u0102\u0105\u0001\u0000\u0000\u0000\u0103\u0101\u0001\u0000"+
+ "\u0000\u0000\u0103\u0104\u0001\u0000\u0000\u0000\u0104\u0106\u0001\u0000"+
+ "\u0000\u0000\u0105\u0103\u0001\u0000\u0000\u0000\u0106\u0108\u0005\u001d"+
+ "\u0000\u0000\u0107\u00fc\u0001\u0000\u0000\u0000\u0107\u00fd\u0001\u0000"+
+ "\u0000\u0000\u0108\r\u0001\u0000\u0000\u0000\u0109\u010f\u0003\u0010\b"+
+ "\u0000\u010a\u010c\u0003j5\u0000\u010b\u010a\u0001\u0000\u0000\u0000\u010b"+
+ "\u010c\u0001\u0000\u0000\u0000\u010c\u010d\u0001\u0000\u0000\u0000\u010d"+
+ "\u010e\u0005\"\u0000\u0000\u010e\u0110\u0003\u0012\t\u0000\u010f\u010b"+
+ "\u0001\u0000\u0000\u0000\u010f\u0110\u0001\u0000\u0000\u0000\u0110\u000f"+
+ "\u0001\u0000\u0000\u0000\u0111\u0116\u0005\u001b\u0000\u0000\u0112\u0113"+
+ "\u0005#\u0000\u0000\u0113\u0115\u0005\u001b\u0000\u0000\u0114\u0112\u0001"+
+ "\u0000\u0000\u0000\u0115\u0118\u0001\u0000\u0000\u0000\u0116\u0114\u0001"+
+ "\u0000\u0000\u0000\u0116\u0117\u0001\u0000\u0000\u0000\u0117\u0011\u0001"+
+ "\u0000\u0000\u0000\u0118\u0116\u0001\u0000\u0000\u0000\u0119\u011e\u0003"+
+ "\u008cF\u0000\u011a\u011b\u0005#\u0000\u0000\u011b\u011d\u0003\u008cF"+
+ "\u0000\u011c\u011a\u0001\u0000\u0000\u0000\u011d\u0120\u0001\u0000\u0000"+
+ "\u0000\u011e\u011c\u0001\u0000\u0000\u0000\u011e\u011f\u0001\u0000\u0000"+
+ "\u0000\u011f\u0013\u0001\u0000\u0000\u0000\u0120\u011e\u0001\u0000\u0000"+
+ "\u0000\u0121\u012d\u0005\u0014\u0000\u0000\u0122\u012e\u0003\u0016\u000b"+
+ "\u0000\u0123\u0129\u0005\u001c\u0000\u0000\u0124\u0125\u0003\u0016\u000b"+
+ "\u0000\u0125\u0126\u0003\u00c4b\u0000\u0126\u0128\u0001\u0000\u0000\u0000"+
+ "\u0127\u0124\u0001\u0000\u0000\u0000\u0128\u012b\u0001\u0000\u0000\u0000"+
+ "\u0129\u0127\u0001\u0000\u0000\u0000\u0129\u012a\u0001\u0000\u0000\u0000"+
+ "\u012a\u012c\u0001\u0000\u0000\u0000\u012b\u0129\u0001\u0000\u0000\u0000"+
+ "\u012c\u012e\u0005\u001d\u0000\u0000\u012d\u0122\u0001\u0000\u0000\u0000"+
+ "\u012d\u0123\u0001\u0000\u0000\u0000\u012e\u0015\u0001\u0000\u0000\u0000"+
+ "\u012f\u0131\u0005\u001b\u0000\u0000\u0130\u0132\u0005\"\u0000\u0000\u0131"+
+ "\u0130\u0001\u0000\u0000\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132"+
... 4176 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists