Initial commit with Advoware proxy

This commit is contained in:
root
2025-10-19 14:57:07 +00:00
commit 273aa8b549
45771 changed files with 5534555 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2020 Alex Anthony and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,43 @@
# python-ast
Python (3) Parser for JavaScript/TypeScript, based on [antlr4ts](https://www.npmjs.com/package/antlr4ts), grammar taken from [antlr4's python grammar](https://github.com/antlr/grammars-v4/tree/master/python/python3-ts) too (so please report bugs and open pull requests related to grammars upstream)
[![npm version](https://img.shields.io/npm/v/python-ast.svg)](https://www.npmjs.com/package/python-ast)
<!-- [![Build Status](https://travis-ci.org/urish/java-ast.png?branch=master)](https://travis-ci.org/urish/java-ast) -->
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
Singificantly based on [java-ast](https://github.com/urish/java-ast) - all credit to [Urish](https://github.com/urish)
## Usage Example
```typescript
import { parse, createVisitor } from 'python-ast';
const countMethods = (source: string) => {
let ast = parse(source);
return createVisitor({
visitFuncdef: () => 1,
defaultResult: () => 0,
aggregateResult: (a, b) => a + b,
}).visit(ast);
};
console.log(
countMethods(`
class A:
a: int
def b(self):
pass
def c(self):
pass
class B:
def z(self, i):
pass
`),
); // logs 3
```

View File

@@ -0,0 +1,90 @@
import { File_inputContext } from './parser/Python3Parser';
import { Python3Listener } from './parser/Python3Listener';
import { Python3Visitor } from './parser/Python3Visitor';
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor';
import { ParseTreeVisitor } from 'antlr4ts/tree/ParseTreeVisitor';
import { RuleNode } from 'antlr4ts/tree/RuleNode';
/**
* Parses the given source code and returns the AST
* @param source Python source code to parse
*/
export declare function parse(source: string): ParseTree;
export interface ParseTree extends File_inputContext {
}
/**
* Walks a parse tree
* @see https://github.com/antlr/antlr4/blob/master/doc/listeners.md
*/
export declare function walk(listener: Python3Listener, tree: ParseTree): void;
export { Python3Listener } from './parser/Python3Listener';
/**
* Create a parse tree visitor
*/
export declare function createVisitor<T>(visitor: Visitor<T>): ConcreteVisitor<T>;
export declare function createVisitor(visitor: VoidVisitor): ConcreteVisitor<void>;
export interface Visitor<T> extends AbstractVisitor<T>, OmitStrict<Python3Visitor<T>, NonOverridableMethods> {
}
export interface VoidVisitor extends OmitStrict<Visitor<void>, 'defaultResult' | 'aggregateResult'> {
}
declare type NonOverridableMethods = keyof ParseTreeVisitor<any>;
declare type OmitStrict<T, K extends keyof T> = Omit<T, K>;
export interface ConcreteVisitor<T> extends AbstractParseTreeVisitor<T> {
}
interface AbstractVisitor<T> {
/**
* Gets the default value returned by visitor methods. This value is
* returned by the default implementations of
* {@link #visitTerminal visitTerminal}, {@link #visitErrorNode visitErrorNode}.
* The default implementation of {@link #visitChildren visitChildren}
* initializes its aggregate result to this value.
*
* @return The default value returned by visitor methods.
*/
defaultResult: () => T;
/**
* Aggregates the results of visiting multiple children of a node. After
* either all children are visited or {@link #shouldVisitNextChild} returns
* {@code false}, the aggregate value is returned as the result of
* {@link #visitChildren}.
*
* <p>The default implementation returns {@code nextResult}, meaning
* {@link #visitChildren} will return the result of the last child visited
* (or return the initial value if the node has no children).</p>
*
* @param aggregate The previous aggregate value. In the default
* implementation, the aggregate value is initialized to
* {@link #defaultResult}, which is passed as the {@code aggregate} argument
* to this method after the first child node is visited.
* @param nextResult The result of the immediately preceeding call to visit
* a child node.
*
* @return The updated aggregate result.
*/
aggregateResult: (aggregate: T, nextResult: T) => T;
/**
* This method is called after visiting each child in
* {@link #visitChildren}. This method is first called before the first
* child is visited; at that point {@code currentResult} will be the initial
* value (in the default implementation, the initial value is returned by a
* call to {@link #defaultResult}. This method is not called after the last
* child is visited.
*
* <p>The default implementation always returns {@code true}, indicating that
* {@code visitChildren} should only return after all children are visited.
* One reason to override this method is to provide a "short circuit"
* evaluation option for situations where the result of visiting a single
* child has the potential to determine the result of the visit operation as
* a whole.</p>
*
* @param node The {@link RuleNode} whose children are currently being
* visited.
* @param currentResult The current aggregate result of the children visited
* to the current point.
*
* @return {@code true} to continue visiting children. Otherwise return
* {@code false} to stop visiting children and immediately return the
* current aggregate result from {@link #visitChildren}.
*/
shouldVisitNextChild?: (node: RuleNode, currentResult: T) => boolean;
}
export * from './parser/Python3Contexts';

View File

@@ -0,0 +1,55 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createVisitor = exports.walk = exports.parse = void 0;
// parse
const antlr4ts_1 = require("antlr4ts");
const Python3Lexer_1 = require("./parser/Python3Lexer");
const Python3Parser_1 = require("./parser/Python3Parser");
// walk
const ParseTreeWalker_1 = require("antlr4ts/tree/ParseTreeWalker");
// createVisitor
const AbstractParseTreeVisitor_1 = require("antlr4ts/tree/AbstractParseTreeVisitor");
/**
* Parses the given source code and returns the AST
* @param source Python source code to parse
*/
function parse(source) {
const chars = new antlr4ts_1.ANTLRInputStream(source);
const lexer = new Python3Lexer_1.Python3Lexer(chars);
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
const parser = new Python3Parser_1.Python3Parser(tokens);
return parser.file_input();
}
exports.parse = parse;
/**
* Walks a parse tree
* @see https://github.com/antlr/antlr4/blob/master/doc/listeners.md
*/
function walk(listener, tree) {
ParseTreeWalker_1.ParseTreeWalker.DEFAULT.walk(listener, tree);
}
exports.walk = walk;
function createVisitor(visitor) {
// we don't want users to write classes because it's not JavaScript-y
// so we'll set implementation of abstract methods and other visit* methods in constructor
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return new (class extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor {
constructor() {
super();
Object.assign(this, Object.assign({ defaultResult: () => undefined, aggregateResult: () => undefined }, visitor));
}
})();
}
exports.createVisitor = createVisitor;
__exportStar(require("./parser/Python3Contexts"), exports);

View File

@@ -0,0 +1 @@
export { Single_inputContext, File_inputContext, Eval_inputContext, DecoratorContext, DecoratorsContext, DecoratedContext, Async_funcdefContext, FuncdefContext, ParametersContext, TypedargslistContext, TfpdefContext, VarargslistContext, VfpdefContext, StmtContext, Simple_stmtContext, Small_stmtContext, Expr_stmtContext, AnnassignContext, Testlist_star_exprContext, AugassignContext, Del_stmtContext, Pass_stmtContext, Flow_stmtContext, Break_stmtContext, Continue_stmtContext, Return_stmtContext, Yield_stmtContext, Raise_stmtContext, Import_stmtContext, Import_nameContext, Import_fromContext, Import_as_nameContext, Dotted_as_nameContext, Import_as_namesContext, Dotted_as_namesContext, Dotted_nameContext, Global_stmtContext, Nonlocal_stmtContext, Assert_stmtContext, Compound_stmtContext, Async_stmtContext, If_stmtContext, While_stmtContext, For_stmtContext, Try_stmtContext, With_stmtContext, With_itemContext, Except_clauseContext, SuiteContext, TestContext, Test_nocondContext, LambdefContext, Lambdef_nocondContext, Or_testContext, And_testContext, Not_testContext, ComparisonContext, Comp_opContext, Star_exprContext, ExprContext, Xor_exprContext, And_exprContext, Shift_exprContext, Arith_exprContext, TermContext, FactorContext, PowerContext, Atom_exprContext, AtomContext, Testlist_compContext, TrailerContext, SubscriptlistContext, SubscriptContext, SliceopContext, ExprlistContext, TestlistContext, DictorsetmakerContext, ClassdefContext, ArglistContext, ArgumentContext, Comp_iterContext, Comp_forContext, Comp_ifContext, Encoding_declContext, Yield_exprContext, Yield_argContext } from './Python3Parser';

View File

@@ -0,0 +1,89 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Python3Parser_1 = require("./Python3Parser");
Object.defineProperty(exports, "Single_inputContext", { enumerable: true, get: function () { return Python3Parser_1.Single_inputContext; } });
Object.defineProperty(exports, "File_inputContext", { enumerable: true, get: function () { return Python3Parser_1.File_inputContext; } });
Object.defineProperty(exports, "Eval_inputContext", { enumerable: true, get: function () { return Python3Parser_1.Eval_inputContext; } });
Object.defineProperty(exports, "DecoratorContext", { enumerable: true, get: function () { return Python3Parser_1.DecoratorContext; } });
Object.defineProperty(exports, "DecoratorsContext", { enumerable: true, get: function () { return Python3Parser_1.DecoratorsContext; } });
Object.defineProperty(exports, "DecoratedContext", { enumerable: true, get: function () { return Python3Parser_1.DecoratedContext; } });
Object.defineProperty(exports, "Async_funcdefContext", { enumerable: true, get: function () { return Python3Parser_1.Async_funcdefContext; } });
Object.defineProperty(exports, "FuncdefContext", { enumerable: true, get: function () { return Python3Parser_1.FuncdefContext; } });
Object.defineProperty(exports, "ParametersContext", { enumerable: true, get: function () { return Python3Parser_1.ParametersContext; } });
Object.defineProperty(exports, "TypedargslistContext", { enumerable: true, get: function () { return Python3Parser_1.TypedargslistContext; } });
Object.defineProperty(exports, "TfpdefContext", { enumerable: true, get: function () { return Python3Parser_1.TfpdefContext; } });
Object.defineProperty(exports, "VarargslistContext", { enumerable: true, get: function () { return Python3Parser_1.VarargslistContext; } });
Object.defineProperty(exports, "VfpdefContext", { enumerable: true, get: function () { return Python3Parser_1.VfpdefContext; } });
Object.defineProperty(exports, "StmtContext", { enumerable: true, get: function () { return Python3Parser_1.StmtContext; } });
Object.defineProperty(exports, "Simple_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Simple_stmtContext; } });
Object.defineProperty(exports, "Small_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Small_stmtContext; } });
Object.defineProperty(exports, "Expr_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Expr_stmtContext; } });
Object.defineProperty(exports, "AnnassignContext", { enumerable: true, get: function () { return Python3Parser_1.AnnassignContext; } });
Object.defineProperty(exports, "Testlist_star_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Testlist_star_exprContext; } });
Object.defineProperty(exports, "AugassignContext", { enumerable: true, get: function () { return Python3Parser_1.AugassignContext; } });
Object.defineProperty(exports, "Del_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Del_stmtContext; } });
Object.defineProperty(exports, "Pass_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Pass_stmtContext; } });
Object.defineProperty(exports, "Flow_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Flow_stmtContext; } });
Object.defineProperty(exports, "Break_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Break_stmtContext; } });
Object.defineProperty(exports, "Continue_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Continue_stmtContext; } });
Object.defineProperty(exports, "Return_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Return_stmtContext; } });
Object.defineProperty(exports, "Yield_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Yield_stmtContext; } });
Object.defineProperty(exports, "Raise_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Raise_stmtContext; } });
Object.defineProperty(exports, "Import_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Import_stmtContext; } });
Object.defineProperty(exports, "Import_nameContext", { enumerable: true, get: function () { return Python3Parser_1.Import_nameContext; } });
Object.defineProperty(exports, "Import_fromContext", { enumerable: true, get: function () { return Python3Parser_1.Import_fromContext; } });
Object.defineProperty(exports, "Import_as_nameContext", { enumerable: true, get: function () { return Python3Parser_1.Import_as_nameContext; } });
Object.defineProperty(exports, "Dotted_as_nameContext", { enumerable: true, get: function () { return Python3Parser_1.Dotted_as_nameContext; } });
Object.defineProperty(exports, "Import_as_namesContext", { enumerable: true, get: function () { return Python3Parser_1.Import_as_namesContext; } });
Object.defineProperty(exports, "Dotted_as_namesContext", { enumerable: true, get: function () { return Python3Parser_1.Dotted_as_namesContext; } });
Object.defineProperty(exports, "Dotted_nameContext", { enumerable: true, get: function () { return Python3Parser_1.Dotted_nameContext; } });
Object.defineProperty(exports, "Global_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Global_stmtContext; } });
Object.defineProperty(exports, "Nonlocal_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Nonlocal_stmtContext; } });
Object.defineProperty(exports, "Assert_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Assert_stmtContext; } });
Object.defineProperty(exports, "Compound_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Compound_stmtContext; } });
Object.defineProperty(exports, "Async_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Async_stmtContext; } });
Object.defineProperty(exports, "If_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.If_stmtContext; } });
Object.defineProperty(exports, "While_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.While_stmtContext; } });
Object.defineProperty(exports, "For_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.For_stmtContext; } });
Object.defineProperty(exports, "Try_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.Try_stmtContext; } });
Object.defineProperty(exports, "With_stmtContext", { enumerable: true, get: function () { return Python3Parser_1.With_stmtContext; } });
Object.defineProperty(exports, "With_itemContext", { enumerable: true, get: function () { return Python3Parser_1.With_itemContext; } });
Object.defineProperty(exports, "Except_clauseContext", { enumerable: true, get: function () { return Python3Parser_1.Except_clauseContext; } });
Object.defineProperty(exports, "SuiteContext", { enumerable: true, get: function () { return Python3Parser_1.SuiteContext; } });
Object.defineProperty(exports, "TestContext", { enumerable: true, get: function () { return Python3Parser_1.TestContext; } });
Object.defineProperty(exports, "Test_nocondContext", { enumerable: true, get: function () { return Python3Parser_1.Test_nocondContext; } });
Object.defineProperty(exports, "LambdefContext", { enumerable: true, get: function () { return Python3Parser_1.LambdefContext; } });
Object.defineProperty(exports, "Lambdef_nocondContext", { enumerable: true, get: function () { return Python3Parser_1.Lambdef_nocondContext; } });
Object.defineProperty(exports, "Or_testContext", { enumerable: true, get: function () { return Python3Parser_1.Or_testContext; } });
Object.defineProperty(exports, "And_testContext", { enumerable: true, get: function () { return Python3Parser_1.And_testContext; } });
Object.defineProperty(exports, "Not_testContext", { enumerable: true, get: function () { return Python3Parser_1.Not_testContext; } });
Object.defineProperty(exports, "ComparisonContext", { enumerable: true, get: function () { return Python3Parser_1.ComparisonContext; } });
Object.defineProperty(exports, "Comp_opContext", { enumerable: true, get: function () { return Python3Parser_1.Comp_opContext; } });
Object.defineProperty(exports, "Star_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Star_exprContext; } });
Object.defineProperty(exports, "ExprContext", { enumerable: true, get: function () { return Python3Parser_1.ExprContext; } });
Object.defineProperty(exports, "Xor_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Xor_exprContext; } });
Object.defineProperty(exports, "And_exprContext", { enumerable: true, get: function () { return Python3Parser_1.And_exprContext; } });
Object.defineProperty(exports, "Shift_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Shift_exprContext; } });
Object.defineProperty(exports, "Arith_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Arith_exprContext; } });
Object.defineProperty(exports, "TermContext", { enumerable: true, get: function () { return Python3Parser_1.TermContext; } });
Object.defineProperty(exports, "FactorContext", { enumerable: true, get: function () { return Python3Parser_1.FactorContext; } });
Object.defineProperty(exports, "PowerContext", { enumerable: true, get: function () { return Python3Parser_1.PowerContext; } });
Object.defineProperty(exports, "Atom_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Atom_exprContext; } });
Object.defineProperty(exports, "AtomContext", { enumerable: true, get: function () { return Python3Parser_1.AtomContext; } });
Object.defineProperty(exports, "Testlist_compContext", { enumerable: true, get: function () { return Python3Parser_1.Testlist_compContext; } });
Object.defineProperty(exports, "TrailerContext", { enumerable: true, get: function () { return Python3Parser_1.TrailerContext; } });
Object.defineProperty(exports, "SubscriptlistContext", { enumerable: true, get: function () { return Python3Parser_1.SubscriptlistContext; } });
Object.defineProperty(exports, "SubscriptContext", { enumerable: true, get: function () { return Python3Parser_1.SubscriptContext; } });
Object.defineProperty(exports, "SliceopContext", { enumerable: true, get: function () { return Python3Parser_1.SliceopContext; } });
Object.defineProperty(exports, "ExprlistContext", { enumerable: true, get: function () { return Python3Parser_1.ExprlistContext; } });
Object.defineProperty(exports, "TestlistContext", { enumerable: true, get: function () { return Python3Parser_1.TestlistContext; } });
Object.defineProperty(exports, "DictorsetmakerContext", { enumerable: true, get: function () { return Python3Parser_1.DictorsetmakerContext; } });
Object.defineProperty(exports, "ClassdefContext", { enumerable: true, get: function () { return Python3Parser_1.ClassdefContext; } });
Object.defineProperty(exports, "ArglistContext", { enumerable: true, get: function () { return Python3Parser_1.ArglistContext; } });
Object.defineProperty(exports, "ArgumentContext", { enumerable: true, get: function () { return Python3Parser_1.ArgumentContext; } });
Object.defineProperty(exports, "Comp_iterContext", { enumerable: true, get: function () { return Python3Parser_1.Comp_iterContext; } });
Object.defineProperty(exports, "Comp_forContext", { enumerable: true, get: function () { return Python3Parser_1.Comp_forContext; } });
Object.defineProperty(exports, "Comp_ifContext", { enumerable: true, get: function () { return Python3Parser_1.Comp_ifContext; } });
Object.defineProperty(exports, "Encoding_declContext", { enumerable: true, get: function () { return Python3Parser_1.Encoding_declContext; } });
Object.defineProperty(exports, "Yield_exprContext", { enumerable: true, get: function () { return Python3Parser_1.Yield_exprContext; } });
Object.defineProperty(exports, "Yield_argContext", { enumerable: true, get: function () { return Python3Parser_1.Yield_argContext; } });

View File

@@ -0,0 +1,152 @@
import { Token } from 'antlr4ts/Token';
import { ATN } from "antlr4ts/atn/ATN";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
export declare class Python3Lexer extends Lexer {
static readonly STRING = 1;
static readonly NUMBER = 2;
static readonly INTEGER = 3;
static readonly DEF = 4;
static readonly RETURN = 5;
static readonly RAISE = 6;
static readonly FROM = 7;
static readonly IMPORT = 8;
static readonly AS = 9;
static readonly GLOBAL = 10;
static readonly NONLOCAL = 11;
static readonly ASSERT = 12;
static readonly IF = 13;
static readonly ELIF = 14;
static readonly ELSE = 15;
static readonly WHILE = 16;
static readonly FOR = 17;
static readonly IN = 18;
static readonly TRY = 19;
static readonly FINALLY = 20;
static readonly WITH = 21;
static readonly EXCEPT = 22;
static readonly LAMBDA = 23;
static readonly OR = 24;
static readonly AND = 25;
static readonly NOT = 26;
static readonly IS = 27;
static readonly NONE = 28;
static readonly TRUE = 29;
static readonly FALSE = 30;
static readonly CLASS = 31;
static readonly YIELD = 32;
static readonly DEL = 33;
static readonly PASS = 34;
static readonly CONTINUE = 35;
static readonly BREAK = 36;
static readonly ASYNC = 37;
static readonly AWAIT = 38;
static readonly NEWLINE = 39;
static readonly NAME = 40;
static readonly STRING_LITERAL = 41;
static readonly BYTES_LITERAL = 42;
static readonly DECIMAL_INTEGER = 43;
static readonly OCT_INTEGER = 44;
static readonly HEX_INTEGER = 45;
static readonly BIN_INTEGER = 46;
static readonly FLOAT_NUMBER = 47;
static readonly IMAG_NUMBER = 48;
static readonly DOT = 49;
static readonly ELLIPSIS = 50;
static readonly STAR = 51;
static readonly OPEN_PAREN = 52;
static readonly CLOSE_PAREN = 53;
static readonly COMMA = 54;
static readonly COLON = 55;
static readonly SEMI_COLON = 56;
static readonly POWER = 57;
static readonly ASSIGN = 58;
static readonly OPEN_BRACK = 59;
static readonly CLOSE_BRACK = 60;
static readonly OR_OP = 61;
static readonly XOR = 62;
static readonly AND_OP = 63;
static readonly LEFT_SHIFT = 64;
static readonly RIGHT_SHIFT = 65;
static readonly ADD = 66;
static readonly MINUS = 67;
static readonly DIV = 68;
static readonly MOD = 69;
static readonly IDIV = 70;
static readonly NOT_OP = 71;
static readonly OPEN_BRACE = 72;
static readonly CLOSE_BRACE = 73;
static readonly LESS_THAN = 74;
static readonly GREATER_THAN = 75;
static readonly EQUALS = 76;
static readonly GT_EQ = 77;
static readonly LT_EQ = 78;
static readonly NOT_EQ_1 = 79;
static readonly NOT_EQ_2 = 80;
static readonly AT = 81;
static readonly ARROW = 82;
static readonly ADD_ASSIGN = 83;
static readonly SUB_ASSIGN = 84;
static readonly MULT_ASSIGN = 85;
static readonly AT_ASSIGN = 86;
static readonly DIV_ASSIGN = 87;
static readonly MOD_ASSIGN = 88;
static readonly AND_ASSIGN = 89;
static readonly OR_ASSIGN = 90;
static readonly XOR_ASSIGN = 91;
static readonly LEFT_SHIFT_ASSIGN = 92;
static readonly RIGHT_SHIFT_ASSIGN = 93;
static readonly POWER_ASSIGN = 94;
static readonly IDIV_ASSIGN = 95;
static readonly SKIP_ = 96;
static readonly UNKNOWN_CHAR = 97;
static readonly channelNames: string[];
static readonly modeNames: string[];
static readonly ruleNames: string[];
private static readonly _LITERAL_NAMES;
private static readonly _SYMBOLIC_NAMES;
static readonly VOCABULARY: Vocabulary;
get vocabulary(): Vocabulary;
private token_queue;
private indents;
private opened;
private last_token;
reset(): void;
emit(token?: Token): Token;
/**
* Return the next token from the character stream and records this last
* token in case it resides on the default channel. This recorded token
* is used to determine when the lexer could possibly match a regex
* literal.
*
*/
nextToken(): Token;
private createDedent;
private commonToken;
private getIndentationCount;
private atStartOfInput;
constructor(input: CharStream);
get grammarFileName(): string;
get ruleNames(): string[];
get serializedATN(): string;
get channelNames(): string[];
get modeNames(): string[];
action(_localctx: RuleContext, ruleIndex: number, actionIndex: number): void;
private NEWLINE_action;
private OPEN_PAREN_action;
private CLOSE_PAREN_action;
private OPEN_BRACK_action;
private CLOSE_BRACK_action;
private OPEN_BRACE_action;
private CLOSE_BRACE_action;
sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean;
private NEWLINE_sempred;
private static readonly _serializedATNSegments;
private static readonly _serializedATNSegment0;
private static readonly _serializedATNSegment1;
static readonly _serializedATN: string;
static __ATN: ATN;
static get _ATN(): ATN;
}

View File

@@ -0,0 +1,948 @@
"use strict";
// Generated from src/parser/Python3.g4 by ANTLR 4.7.3-SNAPSHOT
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Python3Lexer = void 0;
const Token_1 = require("antlr4ts/Token");
const CommonToken_1 = require("antlr4ts/CommonToken");
const Python3Parser_1 = require("./Python3Parser");
const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer");
const Lexer_1 = require("antlr4ts/Lexer");
const LexerATNSimulator_1 = require("antlr4ts/atn/LexerATNSimulator");
const Decorators_1 = require("antlr4ts/Decorators");
const VocabularyImpl_1 = require("antlr4ts/VocabularyImpl");
const Utils = __importStar(require("antlr4ts/misc/Utils"));
class Python3Lexer extends Lexer_1.Lexer {
constructor(input) {
super(input);
// tslint:enable:no-trailing-whitespace
this.token_queue = [];
this.indents = [];
this.opened = 0;
this.last_token = undefined;
this._interp = new LexerATNSimulator_1.LexerATNSimulator(Python3Lexer._ATN, this);
}
// @Override
// @NotNull
get vocabulary() {
return Python3Lexer.VOCABULARY;
}
reset() {
// A queue where extra tokens are pushed on (see the NEWLINE lexer rule).
this.token_queue = [];
// The stack that keeps track of the indentation level.
this.indents = [];
// The amount of opened braces, brackets and parenthesis.
this.opened = 0;
super.reset();
}
;
emit(token) {
if (token) {
token = super.emit(token);
}
else {
token = super.emit();
}
this.token_queue.push(token);
return token;
}
;
/**
* Return the next token from the character stream and records this last
* token in case it resides on the default channel. This recorded token
* is used to determine when the lexer could possibly match a regex
* literal.
*
*/
nextToken() {
// Check if the end-of-file is ahead and there are still some DEDENTS expected.
if (this.inputStream.LA(1) === Python3Parser_1.Python3Parser.EOF && this.indents.length) {
// Remove any trailing EOF tokens from our buffer.
this.token_queue = this.token_queue.filter(function (val) {
return val.type !== Python3Parser_1.Python3Parser.EOF;
});
// First emit an extra line break that serves as the end of the statement.
this.emit(this.commonToken(Python3Parser_1.Python3Parser.NEWLINE, "\n"));
// Now emit as much DEDENT tokens as needed.
while (this.indents.length) {
this.emit(this.createDedent());
this.indents.pop();
}
// Put the EOF back on the token stream.
this.emit(this.commonToken(Python3Parser_1.Python3Parser.EOF, "<EOF>"));
}
let next = super.nextToken();
if (next.channel == Token_1.Token.DEFAULT_CHANNEL) {
// Keep track of the last token on the default channel.
this.last_token = next;
}
return this.token_queue.shift() || next;
}
createDedent() {
let dedent = this.commonToken(Python3Parser_1.Python3Parser.DEDENT, "");
if (this.last_token) {
dedent.line = this.last_token.line;
}
return dedent;
}
commonToken(type, text) {
let stop = this.charIndex - 1;
let start = text.length ? stop - text.length + 1 : stop;
return new CommonToken_1.CommonToken(type, text, this._tokenFactorySourcePair, Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL, start, stop);
}
// Calculates the indentation of the provided spaces, taking the
// following rules into account:
//
// "Tabs are replaced (from left to right) by one to eight spaces
// such that the total number of characters up to and including
// the replacement is a multiple of eight [...]"
//
// -- https://docs.python.org/3.1/reference/lexical_analysis.html#indentation
getIndentationCount(whitespace) {
let count = 0;
for (let i = 0; i < whitespace.length; i++) {
if (whitespace[i] === '\t') {
count += 8 - count % 8;
}
else {
count++;
}
}
return count;
}
atStartOfInput() {
return this.charIndex === 0;
}
// @Override
get grammarFileName() { return "Python3.g4"; }
// @Override
get ruleNames() { return Python3Lexer.ruleNames; }
// @Override
get serializedATN() { return Python3Lexer._serializedATN; }
// @Override
get channelNames() { return Python3Lexer.channelNames; }
// @Override
get modeNames() { return Python3Lexer.modeNames; }
// @Override
action(_localctx, ruleIndex, actionIndex) {
switch (ruleIndex) {
case 38:
this.NEWLINE_action(_localctx, actionIndex);
break;
case 51:
this.OPEN_PAREN_action(_localctx, actionIndex);
break;
case 52:
this.CLOSE_PAREN_action(_localctx, actionIndex);
break;
case 58:
this.OPEN_BRACK_action(_localctx, actionIndex);
break;
case 59:
this.CLOSE_BRACK_action(_localctx, actionIndex);
break;
case 71:
this.OPEN_BRACE_action(_localctx, actionIndex);
break;
case 72:
this.CLOSE_BRACE_action(_localctx, actionIndex);
break;
}
}
NEWLINE_action(_localctx, actionIndex) {
switch (actionIndex) {
case 0:
let newLine = this.text.replace(/[^\r\n]+/g, '');
let spaces = this.text.replace(/[\r\n]+/g, '');
// Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to
// satisfy the final newline needed by the single_put rule used by the REPL.
let next = this.inputStream.LA(1);
let nextnext = this.inputStream.LA(2);
if (this.opened > 0 || (nextnext != -1 /* EOF */ && (next === 13 /* '\r' */ || next === 10 /* '\n' */ || next === 35 /* '#' */))) {
// If we're inside a list or on a blank line, ignore all indents,
// dedents and line breaks.
this.skip();
}
else {
this.emit(this.commonToken(Python3Parser_1.Python3Parser.NEWLINE, newLine));
let indent = this.getIndentationCount(spaces);
let previous = this.indents.length ? this.indents[this.indents.length - 1] : 0;
if (indent === previous) {
// skip indents of the same size as the present indent-size
this.skip();
}
else if (indent > previous) {
this.indents.push(indent);
this.emit(this.commonToken(Python3Parser_1.Python3Parser.INDENT, spaces));
}
else {
// Possibly emit more than 1 DEDENT token.
while (this.indents.length && this.indents[this.indents.length - 1] > indent) {
this.emit(this.createDedent());
this.indents.pop();
}
}
}
break;
}
}
OPEN_PAREN_action(_localctx, actionIndex) {
switch (actionIndex) {
case 1:
this.opened++;
break;
}
}
CLOSE_PAREN_action(_localctx, actionIndex) {
switch (actionIndex) {
case 2:
this.opened--;
break;
}
}
OPEN_BRACK_action(_localctx, actionIndex) {
switch (actionIndex) {
case 3:
this.opened++;
break;
}
}
CLOSE_BRACK_action(_localctx, actionIndex) {
switch (actionIndex) {
case 4:
this.opened--;
break;
}
}
OPEN_BRACE_action(_localctx, actionIndex) {
switch (actionIndex) {
case 5:
this.opened++;
break;
}
}
CLOSE_BRACE_action(_localctx, actionIndex) {
switch (actionIndex) {
case 6:
this.opened--;
break;
}
}
// @Override
sempred(_localctx, ruleIndex, predIndex) {
switch (ruleIndex) {
case 38:
return this.NEWLINE_sempred(_localctx, predIndex);
}
return true;
}
NEWLINE_sempred(_localctx, predIndex) {
switch (predIndex) {
case 0:
return this.atStartOfInput();
}
return true;
}
static get _ATN() {
if (!Python3Lexer.__ATN) {
Python3Lexer.__ATN = new ATNDeserializer_1.ATNDeserializer().deserialize(Utils.toCharArray(Python3Lexer._serializedATN));
}
return Python3Lexer.__ATN;
}
}
Python3Lexer.STRING = 1;
Python3Lexer.NUMBER = 2;
Python3Lexer.INTEGER = 3;
Python3Lexer.DEF = 4;
Python3Lexer.RETURN = 5;
Python3Lexer.RAISE = 6;
Python3Lexer.FROM = 7;
Python3Lexer.IMPORT = 8;
Python3Lexer.AS = 9;
Python3Lexer.GLOBAL = 10;
Python3Lexer.NONLOCAL = 11;
Python3Lexer.ASSERT = 12;
Python3Lexer.IF = 13;
Python3Lexer.ELIF = 14;
Python3Lexer.ELSE = 15;
Python3Lexer.WHILE = 16;
Python3Lexer.FOR = 17;
Python3Lexer.IN = 18;
Python3Lexer.TRY = 19;
Python3Lexer.FINALLY = 20;
Python3Lexer.WITH = 21;
Python3Lexer.EXCEPT = 22;
Python3Lexer.LAMBDA = 23;
Python3Lexer.OR = 24;
Python3Lexer.AND = 25;
Python3Lexer.NOT = 26;
Python3Lexer.IS = 27;
Python3Lexer.NONE = 28;
Python3Lexer.TRUE = 29;
Python3Lexer.FALSE = 30;
Python3Lexer.CLASS = 31;
Python3Lexer.YIELD = 32;
Python3Lexer.DEL = 33;
Python3Lexer.PASS = 34;
Python3Lexer.CONTINUE = 35;
Python3Lexer.BREAK = 36;
Python3Lexer.ASYNC = 37;
Python3Lexer.AWAIT = 38;
Python3Lexer.NEWLINE = 39;
Python3Lexer.NAME = 40;
Python3Lexer.STRING_LITERAL = 41;
Python3Lexer.BYTES_LITERAL = 42;
Python3Lexer.DECIMAL_INTEGER = 43;
Python3Lexer.OCT_INTEGER = 44;
Python3Lexer.HEX_INTEGER = 45;
Python3Lexer.BIN_INTEGER = 46;
Python3Lexer.FLOAT_NUMBER = 47;
Python3Lexer.IMAG_NUMBER = 48;
Python3Lexer.DOT = 49;
Python3Lexer.ELLIPSIS = 50;
Python3Lexer.STAR = 51;
Python3Lexer.OPEN_PAREN = 52;
Python3Lexer.CLOSE_PAREN = 53;
Python3Lexer.COMMA = 54;
Python3Lexer.COLON = 55;
Python3Lexer.SEMI_COLON = 56;
Python3Lexer.POWER = 57;
Python3Lexer.ASSIGN = 58;
Python3Lexer.OPEN_BRACK = 59;
Python3Lexer.CLOSE_BRACK = 60;
Python3Lexer.OR_OP = 61;
Python3Lexer.XOR = 62;
Python3Lexer.AND_OP = 63;
Python3Lexer.LEFT_SHIFT = 64;
Python3Lexer.RIGHT_SHIFT = 65;
Python3Lexer.ADD = 66;
Python3Lexer.MINUS = 67;
Python3Lexer.DIV = 68;
Python3Lexer.MOD = 69;
Python3Lexer.IDIV = 70;
Python3Lexer.NOT_OP = 71;
Python3Lexer.OPEN_BRACE = 72;
Python3Lexer.CLOSE_BRACE = 73;
Python3Lexer.LESS_THAN = 74;
Python3Lexer.GREATER_THAN = 75;
Python3Lexer.EQUALS = 76;
Python3Lexer.GT_EQ = 77;
Python3Lexer.LT_EQ = 78;
Python3Lexer.NOT_EQ_1 = 79;
Python3Lexer.NOT_EQ_2 = 80;
Python3Lexer.AT = 81;
Python3Lexer.ARROW = 82;
Python3Lexer.ADD_ASSIGN = 83;
Python3Lexer.SUB_ASSIGN = 84;
Python3Lexer.MULT_ASSIGN = 85;
Python3Lexer.AT_ASSIGN = 86;
Python3Lexer.DIV_ASSIGN = 87;
Python3Lexer.MOD_ASSIGN = 88;
Python3Lexer.AND_ASSIGN = 89;
Python3Lexer.OR_ASSIGN = 90;
Python3Lexer.XOR_ASSIGN = 91;
Python3Lexer.LEFT_SHIFT_ASSIGN = 92;
Python3Lexer.RIGHT_SHIFT_ASSIGN = 93;
Python3Lexer.POWER_ASSIGN = 94;
Python3Lexer.IDIV_ASSIGN = 95;
Python3Lexer.SKIP_ = 96;
Python3Lexer.UNKNOWN_CHAR = 97;
// tslint:disable:no-trailing-whitespace
Python3Lexer.channelNames = [
"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
];
// tslint:disable:no-trailing-whitespace
Python3Lexer.modeNames = [
"DEFAULT_MODE",
];
Python3Lexer.ruleNames = [
"STRING", "NUMBER", "INTEGER", "DEF", "RETURN", "RAISE", "FROM", "IMPORT",
"AS", "GLOBAL", "NONLOCAL", "ASSERT", "IF", "ELIF", "ELSE", "WHILE", "FOR",
"IN", "TRY", "FINALLY", "WITH", "EXCEPT", "LAMBDA", "OR", "AND", "NOT",
"IS", "NONE", "TRUE", "FALSE", "CLASS", "YIELD", "DEL", "PASS", "CONTINUE",
"BREAK", "ASYNC", "AWAIT", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL",
"DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER",
"IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
"COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK",
"OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS",
"DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN",
"GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT",
"ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN",
"MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
"RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR",
"SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM", "LONG_STRING_CHAR",
"STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT", "DIGIT", "OCT_DIGIT", "HEX_DIGIT",
"BIN_DIGIT", "POINT_FLOAT", "EXPONENT_FLOAT", "INT_PART", "FRACTION",
"EXPONENT", "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE",
"SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", "LONG_BYTES_CHAR", "BYTES_ESCAPE_SEQ",
"SPACES", "COMMENT", "LINE_JOINING", "ID_START", "ID_CONTINUE",
];
Python3Lexer._LITERAL_NAMES = [
undefined, undefined, undefined, undefined, "'def'", "'return'", "'raise'",
"'from'", "'import'", "'as'", "'global'", "'nonlocal'", "'assert'", "'if'",
"'elif'", "'else'", "'while'", "'for'", "'in'", "'try'", "'finally'",
"'with'", "'except'", "'lambda'", "'or'", "'and'", "'not'", "'is'", "'None'",
"'True'", "'False'", "'class'", "'yield'", "'del'", "'pass'", "'continue'",
"'break'", "'async'", "'await'", undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined, "'.'",
"'...'", "'*'", "'('", "')'", "','", "':'", "';'", "'**'", "'='", "'['",
"']'", "'|'", "'^'", "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'",
"'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'",
"'!='", "'@'", "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='",
"'&='", "'|='", "'^='", "'<<='", "'>>='", "'**='", "'//='",
];
Python3Lexer._SYMBOLIC_NAMES = [
undefined, "STRING", "NUMBER", "INTEGER", "DEF", "RETURN", "RAISE", "FROM",
"IMPORT", "AS", "GLOBAL", "NONLOCAL", "ASSERT", "IF", "ELIF", "ELSE",
"WHILE", "FOR", "IN", "TRY", "FINALLY", "WITH", "EXCEPT", "LAMBDA", "OR",
"AND", "NOT", "IS", "NONE", "TRUE", "FALSE", "CLASS", "YIELD", "DEL",
"PASS", "CONTINUE", "BREAK", "ASYNC", "AWAIT", "NEWLINE", "NAME", "STRING_LITERAL",
"BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER",
"FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN",
"CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK",
"CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT",
"ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE",
"LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2",
"AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN",
"DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
"RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR",
];
Python3Lexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(Python3Lexer._LITERAL_NAMES, Python3Lexer._SYMBOLIC_NAMES, []);
Python3Lexer._serializedATNSegments = 2;
Python3Lexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02c\u0373\b\x01" +
"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" +
"\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" +
"\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" +
"\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" +
"\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" +
"\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" +
"\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04" +
"+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" +
"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" +
"=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" +
"F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" +
"O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" +
"X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" +
"`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" +
"i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04" +
"r\tr\x04s\ts\x04t\tt\x04u\tu\x04v\tv\x04w\tw\x04x\tx\x04y\ty\x04z\tz\x04" +
"{\t{\x04|\t|\x04}\t}\x03\x02\x03\x02\x05\x02\xFE\n\x02\x03\x03\x03\x03" +
"\x03\x03\x05\x03\u0103\n\x03\x03\x04\x03\x04\x03\x04\x03\x04\x05\x04\u0109" +
"\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06" +
"\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07" +
"\x03\b\x03\b\x03\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" +
"\t\x03\n\x03\n\x03\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03" +
"\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03" +
"\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F" +
"\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11" +
"\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13" +
"\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15" +
"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" +
"\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18" +
"\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03\x1A" +
"\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C" +
"\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E" +
"\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 " +
"\x03 \x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03!\x03!\x03!\x03\"\x03\"\x03" +
"\"\x03\"\x03#\x03#\x03#\x03#\x03#\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03" +
"$\x03$\x03%\x03%\x03%\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03&\x03&\x03" +
"\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x05(\u01CC\n(\x03(\x03" +
"(\x05(\u01D0\n(\x03(\x05(\u01D3\n(\x05(\u01D5\n(\x03(\x03(\x03)\x03)\x07" +
")\u01DB\n)\f)\x0E)\u01DE\v)\x03*\x03*\x03*\x03*\x03*\x05*\u01E5\n*\x03" +
"*\x03*\x05*\u01E9\n*\x03+\x03+\x03+\x03+\x03+\x05+\u01F0\n+\x03+\x03+" +
"\x05+\u01F4\n+\x03,\x03,\x07,\u01F8\n,\f,\x0E,\u01FB\v,\x03,\x06,\u01FE" +
"\n,\r,\x0E,\u01FF\x05,\u0202\n,\x03-\x03-\x03-\x06-\u0207\n-\r-\x0E-\u0208" +
"\x03.\x03.\x03.\x06.\u020E\n.\r.\x0E.\u020F\x03/\x03/\x03/\x06/\u0215" +
"\n/\r/\x0E/\u0216\x030\x030\x050\u021B\n0\x031\x031\x051\u021F\n1\x03" +
"1\x031\x032\x032\x033\x033\x033\x033\x034\x034\x035\x035\x035\x036\x03" +
"6\x036\x037\x037\x038\x038\x039\x039\x03:\x03:\x03:\x03;\x03;\x03<\x03" +
"<\x03<\x03=\x03=\x03=\x03>\x03>\x03?\x03?\x03@\x03@\x03A\x03A\x03A\x03" +
"B\x03B\x03B\x03C\x03C\x03D\x03D\x03E\x03E\x03F\x03F\x03G\x03G\x03G\x03" +
"H\x03H\x03I\x03I\x03I\x03J\x03J\x03J\x03K\x03K\x03L\x03L\x03M\x03M\x03" +
"M\x03N\x03N\x03N\x03O\x03O\x03O\x03P\x03P\x03P\x03Q\x03Q\x03Q\x03R\x03" +
"R\x03S\x03S\x03S\x03T\x03T\x03T\x03U\x03U\x03U\x03V\x03V\x03V\x03W\x03" +
"W\x03W\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x03[\x03[\x03[\x03" +
"\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03_\x03_\x03_" +
"\x03_\x03`\x03`\x03`\x03`\x03a\x03a\x03a\x05a\u02A7\na\x03a\x03a\x03b" +
"\x03b\x03c\x03c\x03c\x07c\u02B0\nc\fc\x0Ec\u02B3\vc\x03c\x03c\x03c\x03" +
"c\x07c\u02B9\nc\fc\x0Ec\u02BC\vc\x03c\x05c\u02BF\nc\x03d\x03d\x03d\x03" +
"d\x03d\x07d\u02C6\nd\fd\x0Ed\u02C9\vd\x03d\x03d\x03d\x03d\x03d\x03d\x03" +
"d\x03d\x07d\u02D3\nd\fd\x0Ed\u02D6\vd\x03d\x03d\x03d\x05d\u02DB\nd\x03" +
"e\x03e\x05e\u02DF\ne\x03f\x03f\x03g\x03g\x03g\x03g\x05g\u02E7\ng\x03h" +
"\x03h\x03i\x03i\x03j\x03j\x03k\x03k\x03l\x03l\x03m\x05m\u02F4\nm\x03m" +
"\x03m\x03m\x03m\x05m\u02FA\nm\x03n\x03n\x05n\u02FE\nn\x03n\x03n\x03o\x06" +
"o\u0303\no\ro\x0Eo\u0304\x03p\x03p\x06p\u0309\np\rp\x0Ep\u030A\x03q\x03" +
"q\x05q\u030F\nq\x03q\x06q\u0312\nq\rq\x0Eq\u0313\x03r\x03r\x03r\x07r\u0319" +
"\nr\fr\x0Er\u031C\vr\x03r\x03r\x03r\x03r\x07r\u0322\nr\fr\x0Er\u0325\v" +
"r\x03r\x05r\u0328\nr\x03s\x03s\x03s\x03s\x03s\x07s\u032F\ns\fs\x0Es\u0332" +
"\vs\x03s\x03s\x03s\x03s\x03s\x03s\x03s\x03s\x07s\u033C\ns\fs\x0Es\u033F" +
"\vs\x03s\x03s\x03s\x05s\u0344\ns\x03t\x03t\x05t\u0348\nt\x03u\x05u\u034B" +
"\nu\x03v\x05v\u034E\nv\x03w\x05w\u0351\nw\x03x\x03x\x03x\x03y\x06y\u0357" +
"\ny\ry\x0Ey\u0358\x03z\x03z\x07z\u035D\nz\fz\x0Ez\u0360\vz\x03{\x03{\x05" +
"{\u0364\n{\x03{\x05{\u0367\n{\x03{\x03{\x05{\u036B\n{\x03|\x05|\u036E" +
"\n|\x03}\x03}\x05}\u0372\n}\x06\u02C7\u02D4\u0330\u033D\x02\x02~\x03\x02" +
"\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11" +
"\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10" +
"\x1F\x02\x11!\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02" +
"\x18/\x02\x191\x02\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02" +
" ?\x02!A\x02\"C\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+" +
"U\x02,W\x02-Y\x02.[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x02" +
"7m\x028o\x029q\x02:s\x02;u\x02<w\x02=y\x02>{\x02?}\x02@\x7F\x02A\x81\x02" +
"B\x83\x02C\x85\x02D\x87\x02E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02" +
"J\x93\x02K\x95\x02L\x97\x02M\x99\x02N\x9B\x02O\x9D\x02P\x9F\x02Q\xA1\x02" +
"R\xA3\x02S\xA5\x02T\xA7\x02U\xA9\x02V\xAB\x02W\xAD\x02X\xAF\x02Y\xB1\x02" +
"Z\xB3\x02[\xB5\x02\\\xB7\x02]\xB9\x02^\xBB\x02_\xBD\x02`\xBF\x02a\xC1" +
"\x02b\xC3\x02c\xC5\x02\x02\xC7\x02\x02\xC9\x02\x02\xCB\x02\x02\xCD\x02" +
"\x02\xCF\x02\x02\xD1\x02\x02\xD3\x02\x02\xD5\x02\x02\xD7\x02\x02\xD9\x02" +
"\x02\xDB\x02\x02\xDD\x02\x02\xDF\x02\x02\xE1\x02\x02\xE3\x02\x02\xE5\x02" +
"\x02\xE7\x02\x02\xE9\x02\x02\xEB\x02\x02\xED\x02\x02\xEF\x02\x02\xF1\x02" +
"\x02\xF3\x02\x02\xF5\x02\x02\xF7\x02\x02\xF9\x02\x02\x03\x02\x1B\b\x02" +
"HHTTWWhhttww\x04\x02HHhh\x04\x02TTtt\x04\x02DDdd\x04\x02QQqq\x04\x02Z" +
"Zzz\x04\x02LLll\x06\x02\f\f\x0E\x0F))^^\x06\x02\f\f\x0E\x0F$$^^\x03\x02" +
"^^\x03\x023;\x03\x022;\x03\x0229\x05\x022;CHch\x03\x0223\x04\x02GGgg\x04" +
"\x02--//\x07\x02\x02\v\r\x0E\x10(*]_\x81\x07\x02\x02\v\r\x0E\x10#%]_\x81" +
"\x04\x02\x02]_\x81\x03\x02\x02\x81\x04\x02\v\v\"\"\x04\x02\f\f\x0E\x0F" +
"\u0129\x02C\\aac|\xAC\xAC\xB7\xB7\xBC\xBC\xC2\xD8\xDA\xF8\xFA\u0243\u0252" +
"\u02C3\u02C8\u02D3\u02E2\u02E6\u02F0\u02F0\u037C\u037C\u0388\u0388\u038A" +
"\u038C\u038E\u038E\u0390\u03A3\u03A5\u03D0\u03D2\u03F7\u03F9\u0483\u048C" +
"\u04D0\u04D2\u04FB\u0502\u0511\u0533\u0558\u055B\u055B\u0563\u0589\u05D2" +
"\u05EC\u05F2\u05F4\u0623\u063C\u0642\u064C\u0670\u0671\u0673\u06D5\u06D7" +
"\u06D7\u06E7\u06E8\u06F0\u06F1\u06FC\u06FE\u0701\u0701\u0712\u0712\u0714" +
"\u0731\u074F\u076F\u0782\u07A7\u07B3\u07B3\u0906\u093B\u093F\u093F\u0952" +
"\u0952\u095A\u0963\u097F\u097F\u0987\u098E\u0991\u0992\u0995\u09AA\u09AC" +
"\u09B2\u09B4\u09B4\u09B8\u09BB\u09BF\u09BF\u09D0\u09D0\u09DE\u09DF\u09E1" +
"\u09E3\u09F2\u09F3\u0A07\u0A0C\u0A11\u0A12\u0A15\u0A2A\u0A2C\u0A32\u0A34" +
"\u0A35\u0A37\u0A38\u0A3A\u0A3B\u0A5B\u0A5E\u0A60\u0A60\u0A74\u0A76\u0A87" +
"\u0A8F\u0A91\u0A93\u0A95\u0AAA\u0AAC\u0AB2\u0AB4\u0AB5\u0AB7\u0ABB\u0ABF" +
"\u0ABF\u0AD2\u0AD2\u0AE2\u0AE3\u0B07\u0B0E\u0B11\u0B12\u0B15\u0B2A\u0B2C" +
"\u0B32\u0B34\u0B35\u0B37\u0B3B\u0B3F\u0B3F\u0B5E\u0B5F\u0B61\u0B63\u0B73" +
"\u0B73\u0B85\u0B85\u0B87\u0B8C\u0B90\u0B92\u0B94\u0B97\u0B9B\u0B9C\u0B9E" +
"\u0B9E\u0BA0\u0BA1\u0BA5\u0BA6\u0BAA\u0BAC\u0BB0\u0BBB\u0C07\u0C0E\u0C10" +
"\u0C12\u0C14\u0C2A\u0C2C\u0C35\u0C37\u0C3B\u0C62\u0C63\u0C87\u0C8E\u0C90" +
"\u0C92\u0C94\u0CAA\u0CAC\u0CB5\u0CB7\u0CBB\u0CBF\u0CBF\u0CE0\u0CE0\u0CE2" +
"\u0CE3\u0D07\u0D0E\u0D10\u0D12\u0D14\u0D2A\u0D2C\u0D3B\u0D62\u0D63\u0D87" +
"\u0D98\u0D9C\u0DB3\u0DB5\u0DBD\u0DBF\u0DBF\u0DC2\u0DC8\u0E03\u0E32\u0E34" +
"\u0E35\u0E42\u0E48\u0E83\u0E84\u0E86\u0E86\u0E89\u0E8A\u0E8C\u0E8C\u0E8F" +
"\u0E8F\u0E96\u0E99\u0E9B\u0EA1\u0EA3\u0EA5\u0EA7\u0EA7\u0EA9\u0EA9\u0EAC" +
"\u0EAD\u0EAF\u0EB2\u0EB4\u0EB5\u0EBF\u0EBF\u0EC2\u0EC6\u0EC8\u0EC8\u0EDE" +
"\u0EDF\u0F02\u0F02\u0F42\u0F49\u0F4B\u0F6C\u0F8A\u0F8D\u1002\u1023\u1025" +
"\u1029\u102B\u102C\u1052\u1057\u10A2\u10C7\u10D2\u10FC\u10FE\u10FE\u1102" +
"\u115B\u1161\u11A4\u11AA\u11FB\u1202\u124A\u124C\u124F\u1252\u1258\u125A" +
"\u125A\u125C\u125F\u1262\u128A\u128C\u128F\u1292\u12B2\u12B4\u12B7\u12BA" +
"\u12C0\u12C2\u12C2\u12C4\u12C7\u12CA\u12D8\u12DA\u1312\u1314\u1317\u131A" +
"\u135C\u1382\u1391\u13A2\u13F6\u1403\u166E\u1671\u1678\u1683\u169C\u16A2" +
"\u16EC\u16F0\u16F2\u1702\u170E\u1710\u1713\u1722\u1733\u1742\u1753\u1762" +
"\u176E\u1770\u1772\u1782\u17B5\u17D9\u17D9\u17DE\u17DE\u1822\u1879\u1882" +
"\u18AA\u1902\u191E\u1952\u196F\u1972\u1976\u1982\u19AB\u19C3\u19C9\u1A02" +
"\u1A18\u1D02\u1DC1\u1E02\u1E9D\u1EA2\u1EFB\u1F02\u1F17\u1F1A\u1F1F\u1F22" +
"\u1F47\u1F4A\u1F4F\u1F52\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F61" +
"\u1F7F\u1F82\u1FB6\u1FB8\u1FBE\u1FC0\u1FC0\u1FC4\u1FC6\u1FC8\u1FCE\u1FD2" +
"\u1FD5\u1FD8\u1FDD\u1FE2\u1FEE\u1FF4\u1FF6\u1FF8\u1FFE\u2073\u2073\u2081" +
"\u2081\u2092\u2096\u2104\u2104\u2109\u2109\u210C\u2115\u2117\u2117\u211A" +
"\u211F\u2126\u2126\u2128\u2128\u212A\u212A\u212C\u2133\u2135\u213B\u213E" +
"\u2141\u2147\u214B\u2162\u2185\u2C02\u2C30\u2C32\u2C60\u2C82\u2CE6\u2D02" +
"\u2D27\u2D32\u2D67\u2D71\u2D71\u2D82\u2D98\u2DA2\u2DA8\u2DAA\u2DB0\u2DB2" +
"\u2DB8\u2DBA\u2DC0\u2DC2\u2DC8\u2DCA\u2DD0\u2DD2\u2DD8\u2DDA\u2DE0\u3007" +
"\u3009\u3023\u302B\u3033\u3037\u303A\u303E\u3043\u3098\u309D\u30A1\u30A3" +
"\u30FC\u30FE\u3101\u3107\u312E\u3133\u3190\u31A2\u31B9\u31F2\u3201\u3402" +
"\u4DB7\u4E02\u9FBD\uA002\uA48E\uA802\uA803\uA805\uA807\uA809\uA80C\uA80E" +
"\uA824\uAC02\uD7A5\uF902\uFA2F\uFA32\uFA6C\uFA72\uFADB\uFB02\uFB08\uFB15" +
"\uFB19\uFB1F\uFB1F\uFB21\uFB2A\uFB2C\uFB38\uFB3A\uFB3E\uFB40\uFB40\uFB42" +
"\uFB43\uFB45\uFB46\uFB48\uFBB3\uFBD5\uFD3F\uFD52\uFD91\uFD94\uFDC9\uFDF2" +
"\uFDFD\uFE72\uFE76\uFE78\uFEFE\uFF23\uFF3C\uFF43\uFF5C\uFF68\uFFC0\uFFC4" +
"\uFFC9\uFFCC\uFFD1\uFFD4\uFFD9\uFFDC\uFFDE\x96\x022;\u0302\u0371\u0485" +
"\u0488\u0593\u05BB\u05BD\u05BF\u05C1\u05C1\u05C3\u05C4\u05C6\u05C7\u05C9" +
"\u05C9\u0612\u0617\u064D\u0660\u0662\u066B\u0672\u0672\u06D8\u06DE\u06E1" +
"\u06E6\u06E9\u06EA\u06EC\u06EF\u06F2\u06FB\u0713\u0713\u0732\u074C\u07A8" +
"\u07B2\u0903\u0905\u093E\u093E\u0940\u094F\u0953\u0956\u0964\u0965\u0968" +
"\u0971\u0983\u0985\u09BE\u09BE\u09C0\u09C6\u09C9\u09CA\u09CD\u09CF\u09D9" +
"\u09D9\u09E4\u09E5\u09E8\u09F1\u0A03\u0A05\u0A3E\u0A3E\u0A40\u0A44\u0A49" +
"\u0A4A\u0A4D\u0A4F\u0A68\u0A73\u0A83\u0A85\u0ABE\u0ABE\u0AC0\u0AC7\u0AC9" +
"\u0ACB\u0ACD\u0ACF\u0AE4\u0AE5\u0AE8\u0AF1\u0B03\u0B05\u0B3E\u0B3E\u0B40" +
"\u0B45\u0B49\u0B4A\u0B4D\u0B4F\u0B58\u0B59\u0B68\u0B71\u0B84\u0B84\u0BC0" +
"\u0BC4\u0BC8\u0BCA\u0BCC\u0BCF\u0BD9\u0BD9\u0BE8\u0BF1\u0C03\u0C05\u0C40" +
"\u0C46\u0C48\u0C4A\u0C4C\u0C4F\u0C57\u0C58\u0C68\u0C71\u0C84\u0C85\u0CBE" +
"\u0CBE\u0CC0\u0CC6\u0CC8\u0CCA\u0CCC\u0CCF\u0CD7\u0CD8\u0CE8\u0CF1\u0D04" +
"\u0D05\u0D40\u0D45\u0D48\u0D4A\u0D4C\u0D4F\u0D59\u0D59\u0D68\u0D71\u0D84" +
"\u0D85\u0DCC\u0DCC\u0DD1\u0DD6\u0DD8\u0DD8\u0DDA\u0DE1\u0DF4\u0DF5\u0E33" +
"\u0E33\u0E36\u0E3C\u0E49\u0E50\u0E52\u0E5B\u0EB3\u0EB3\u0EB6\u0EBB\u0EBD" +
"\u0EBE\u0ECA\u0ECF\u0ED2\u0EDB\u0F1A\u0F1B\u0F22\u0F2B\u0F37\u0F37\u0F39" +
"\u0F39\u0F3B\u0F3B\u0F40\u0F41\u0F73\u0F86\u0F88\u0F89\u0F92\u0F99\u0F9B" +
"\u0FBE\u0FC8\u0FC8\u102E\u1034\u1038\u103B\u1042\u104B\u1058\u105B\u1361" +
"\u1361\u136B\u1373\u1714\u1716\u1734\u1736\u1754\u1755\u1774\u1775\u17B8" +
"\u17D5\u17DF\u17DF\u17E2\u17EB\u180D\u180F\u1812\u181B\u18AB\u18AB\u1922" +
"\u192D\u1932\u193D\u1948\u1951\u19B2\u19C2\u19CA\u19CB\u19D2\u19DB\u1A19" +
"\u1A1D\u1DC2\u1DC5\u2041\u2042\u2056\u2056\u20D2\u20DE\u20E3\u20E3\u20E7" +
"\u20ED\u302C\u3031\u309B\u309C\uA804\uA804\uA808\uA808\uA80D\uA80D\uA825" +
"\uA829\uFB20\uFB20\uFE02\uFE11\uFE22\uFE25\uFE35\uFE36\uFE4F\uFE51\uFF12" +
"\uFF1B\uFF41\uFF41\x02\u0393\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02" +
"\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02" +
"\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02" +
"\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02" +
"\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02" +
"\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02" +
"%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03" +
"\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02" +
"\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x02" +
"9\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02" +
"\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02" +
"\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03" +
"\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02" +
"\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02" +
"[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02" +
"\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02" +
"\x02i\x03\x02\x02\x02\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03" +
"\x02\x02\x02\x02q\x03\x02\x02\x02\x02s\x03\x02\x02\x02\x02u\x03\x02\x02" +
"\x02\x02w\x03\x02\x02\x02\x02y\x03\x02\x02\x02\x02{\x03\x02\x02\x02\x02" +
"}\x03\x02\x02\x02\x02\x7F\x03\x02\x02\x02\x02\x81\x03\x02\x02\x02\x02" +
"\x83\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03\x02\x02\x02\x02" +
"\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x02\x8D\x03\x02\x02\x02\x02" +
"\x8F\x03\x02\x02\x02\x02\x91\x03\x02\x02\x02\x02\x93\x03\x02\x02\x02\x02" +
"\x95\x03\x02\x02\x02\x02\x97\x03\x02\x02\x02\x02\x99\x03\x02\x02\x02\x02" +
"\x9B\x03\x02\x02\x02\x02\x9D\x03\x02\x02\x02\x02\x9F\x03\x02\x02\x02\x02" +
"\xA1\x03\x02\x02\x02\x02\xA3\x03\x02\x02\x02\x02\xA5\x03\x02\x02\x02\x02" +
"\xA7\x03\x02\x02\x02\x02\xA9\x03\x02\x02\x02\x02\xAB\x03\x02\x02\x02\x02" +
"\xAD\x03\x02\x02\x02\x02\xAF\x03\x02\x02\x02\x02\xB1\x03\x02\x02\x02\x02" +
"\xB3\x03\x02\x02\x02\x02\xB5\x03\x02\x02\x02\x02\xB7\x03\x02\x02\x02\x02" +
"\xB9\x03\x02\x02\x02\x02\xBB\x03\x02\x02\x02\x02\xBD\x03\x02\x02\x02\x02" +
"\xBF\x03\x02\x02\x02\x02\xC1\x03\x02\x02\x02\x02\xC3\x03\x02\x02\x02\x03" +
"\xFD\x03\x02\x02\x02\x05\u0102\x03\x02\x02\x02\x07\u0108\x03\x02\x02\x02" +
"\t\u010A\x03\x02\x02\x02\v\u010E\x03\x02\x02\x02\r\u0115\x03\x02\x02\x02" +
"\x0F\u011B\x03\x02\x02\x02\x11\u0120\x03\x02\x02\x02\x13\u0127\x03\x02" +
"\x02\x02\x15\u012A\x03\x02\x02\x02\x17\u0131\x03\x02\x02\x02\x19\u013A" +
"\x03\x02\x02\x02\x1B\u0141\x03\x02\x02\x02\x1D\u0144\x03\x02\x02\x02\x1F" +
"\u0149\x03\x02\x02\x02!\u014E\x03\x02\x02\x02#\u0154\x03\x02\x02\x02%" +
"\u0158\x03\x02\x02\x02\'\u015B\x03\x02\x02\x02)\u015F\x03\x02\x02\x02" +
"+\u0167\x03\x02\x02\x02-\u016C\x03\x02\x02\x02/\u0173\x03\x02\x02\x02" +
"1\u017A\x03\x02\x02\x023\u017D\x03\x02\x02\x025\u0181\x03\x02\x02\x02" +
"7\u0185\x03\x02\x02\x029\u0188\x03\x02\x02\x02;\u018D\x03\x02\x02\x02" +
"=\u0192\x03\x02\x02\x02?\u0198\x03\x02\x02\x02A\u019E\x03\x02\x02\x02" +
"C\u01A4\x03\x02\x02\x02E\u01A8\x03\x02\x02\x02G\u01AD\x03\x02\x02\x02" +
"I\u01B6\x03\x02\x02\x02K\u01BC\x03\x02\x02\x02M\u01C2\x03\x02\x02\x02" +
"O\u01D4\x03\x02\x02\x02Q\u01D8\x03\x02\x02\x02S\u01E4\x03\x02\x02\x02" +
"U\u01EF\x03\x02\x02\x02W\u0201\x03\x02\x02\x02Y\u0203\x03\x02\x02\x02" +
"[\u020A\x03\x02\x02\x02]\u0211\x03\x02\x02\x02_\u021A\x03\x02\x02\x02" +
"a\u021E\x03\x02\x02\x02c\u0222\x03\x02\x02\x02e\u0224\x03\x02\x02\x02" +
"g\u0228\x03\x02\x02\x02i\u022A\x03\x02\x02\x02k\u022D\x03\x02\x02\x02" +
"m\u0230\x03\x02\x02\x02o\u0232\x03\x02\x02\x02q\u0234\x03\x02\x02\x02" +
"s\u0236\x03\x02\x02\x02u\u0239\x03\x02\x02\x02w\u023B\x03\x02\x02\x02" +
"y\u023E\x03\x02\x02\x02{\u0241\x03\x02\x02\x02}\u0243\x03\x02\x02\x02" +
"\x7F\u0245\x03\x02\x02\x02\x81\u0247\x03\x02\x02\x02\x83\u024A\x03\x02" +
"\x02\x02\x85\u024D\x03\x02\x02\x02\x87\u024F\x03\x02\x02\x02\x89\u0251" +
"\x03\x02\x02\x02\x8B\u0253\x03\x02\x02\x02\x8D\u0255\x03\x02\x02\x02\x8F" +
"\u0258\x03\x02\x02\x02\x91\u025A\x03\x02\x02\x02\x93\u025D\x03\x02\x02" +
"\x02\x95\u0260\x03\x02\x02\x02\x97\u0262\x03\x02\x02\x02\x99\u0264\x03" +
"\x02\x02\x02\x9B\u0267\x03\x02\x02\x02\x9D\u026A\x03\x02\x02\x02\x9F\u026D" +
"\x03\x02\x02\x02\xA1\u0270\x03\x02\x02\x02\xA3\u0273\x03\x02\x02\x02\xA5" +
"\u0275\x03\x02\x02\x02\xA7\u0278\x03\x02\x02\x02\xA9\u027B\x03\x02\x02" +
"\x02\xAB\u027E\x03\x02\x02\x02\xAD\u0281\x03\x02\x02\x02\xAF\u0284\x03" +
"\x02\x02\x02\xB1\u0287\x03\x02\x02\x02\xB3\u028A\x03\x02\x02\x02\xB5\u028D" +
"\x03\x02\x02\x02\xB7\u0290\x03\x02\x02\x02\xB9\u0293\x03\x02\x02\x02\xBB" +
"\u0297\x03\x02\x02\x02\xBD\u029B\x03\x02\x02\x02\xBF\u029F\x03\x02\x02" +
"\x02\xC1\u02A6\x03\x02\x02\x02\xC3\u02AA\x03\x02\x02\x02\xC5\u02BE\x03" +
"\x02\x02\x02\xC7\u02DA\x03\x02\x02\x02\xC9\u02DE\x03\x02\x02\x02\xCB\u02E0" +
"\x03\x02\x02\x02\xCD\u02E6\x03\x02\x02\x02\xCF\u02E8\x03\x02\x02\x02\xD1" +
"\u02EA\x03\x02\x02\x02\xD3\u02EC\x03\x02\x02\x02\xD5\u02EE\x03\x02\x02" +
"\x02\xD7\u02F0\x03\x02\x02\x02\xD9\u02F9\x03\x02\x02\x02\xDB\u02FD\x03" +
"\x02\x02\x02\xDD\u0302\x03\x02\x02\x02\xDF\u0306\x03\x02\x02\x02\xE1\u030C" +
"\x03\x02\x02\x02\xE3\u0327\x03\x02\x02\x02\xE5\u0343\x03\x02\x02\x02\xE7" +
"\u0347\x03\x02\x02\x02\xE9\u034A\x03\x02\x02\x02\xEB\u034D\x03\x02\x02" +
"\x02\xED\u0350\x03\x02\x02\x02\xEF\u0352\x03\x02\x02\x02\xF1\u0356\x03" +
"\x02\x02\x02\xF3\u035A\x03\x02\x02\x02\xF5\u0361\x03\x02\x02\x02\xF7\u036D" +
"\x03\x02\x02\x02\xF9\u0371\x03\x02\x02\x02\xFB\xFE\x05S*\x02\xFC\xFE\x05" +
"U+\x02\xFD\xFB\x03\x02\x02\x02\xFD\xFC\x03\x02\x02\x02\xFE\x04\x03\x02" +
"\x02\x02\xFF\u0103\x05\x07\x04\x02\u0100\u0103\x05_0\x02\u0101\u0103\x05" +
"a1\x02\u0102\xFF\x03\x02\x02\x02\u0102\u0100\x03\x02\x02\x02\u0102\u0101" +
"\x03\x02\x02\x02\u0103\x06\x03\x02\x02\x02\u0104\u0109\x05W,\x02\u0105" +
"\u0109\x05Y-\x02\u0106\u0109\x05[.\x02\u0107\u0109\x05]/\x02\u0108\u0104" +
"\x03\x02\x02\x02\u0108\u0105\x03\x02\x02\x02\u0108\u0106\x03\x02\x02\x02" +
"\u0108\u0107\x03\x02\x02\x02\u0109\b\x03\x02\x02\x02\u010A\u010B\x07f" +
"\x02\x02\u010B\u010C\x07g\x02\x02\u010C\u010D\x07h\x02\x02\u010D\n\x03" +
"\x02\x02\x02\u010E\u010F\x07t\x02\x02\u010F\u0110\x07g\x02\x02\u0110\u0111" +
"\x07v\x02\x02\u0111\u0112\x07w\x02\x02\u0112\u0113\x07t\x02\x02\u0113" +
"\u0114\x07p\x02\x02\u0114\f\x03\x02\x02\x02\u0115\u0116\x07t\x02\x02\u0116" +
"\u0117\x07c\x02\x02\u0117\u0118\x07k\x02\x02\u0118\u0119\x07u\x02\x02" +
"\u0119\u011A\x07g\x02\x02\u011A\x0E\x03\x02\x02\x02\u011B\u011C\x07h\x02" +
"\x02\u011C\u011D\x07t\x02\x02\u011D\u011E\x07q\x02\x02\u011E\u011F\x07" +
"o\x02\x02\u011F\x10\x03\x02\x02\x02\u0120\u0121\x07k\x02\x02\u0121\u0122" +
"\x07o\x02\x02\u0122\u0123\x07r\x02\x02\u0123\u0124\x07q\x02\x02\u0124" +
"\u0125\x07t\x02\x02\u0125\u0126\x07v\x02\x02\u0126\x12\x03\x02\x02\x02" +
"\u0127\u0128\x07c\x02\x02\u0128\u0129\x07u\x02\x02\u0129\x14\x03\x02\x02" +
"\x02\u012A\u012B\x07i\x02\x02\u012B\u012C\x07n\x02\x02\u012C\u012D\x07" +
"q\x02\x02\u012D\u012E\x07d\x02\x02\u012E\u012F\x07c\x02\x02\u012F\u0130" +
"\x07n\x02\x02\u0130\x16\x03\x02\x02\x02\u0131\u0132\x07p\x02\x02\u0132" +
"\u0133\x07q\x02\x02\u0133\u0134\x07p\x02\x02\u0134\u0135\x07n\x02\x02" +
"\u0135\u0136\x07q\x02\x02\u0136\u0137\x07e\x02\x02\u0137";
Python3Lexer._serializedATNSegment1 = "\u0138\x07c\x02\x02\u0138\u0139\x07n\x02\x02\u0139\x18\x03\x02\x02\x02" +
"\u013A\u013B\x07c\x02\x02\u013B\u013C\x07u\x02\x02\u013C\u013D\x07u\x02" +
"\x02\u013D\u013E\x07g\x02\x02\u013E\u013F\x07t\x02\x02\u013F\u0140\x07" +
"v\x02\x02\u0140\x1A\x03\x02\x02\x02\u0141\u0142\x07k\x02\x02\u0142\u0143" +
"\x07h\x02\x02\u0143\x1C\x03\x02\x02\x02\u0144\u0145\x07g\x02\x02\u0145" +
"\u0146\x07n\x02\x02\u0146\u0147\x07k\x02\x02\u0147\u0148\x07h\x02\x02" +
"\u0148\x1E\x03\x02\x02\x02\u0149\u014A\x07g\x02\x02\u014A\u014B\x07n\x02" +
"\x02\u014B\u014C\x07u\x02\x02\u014C\u014D\x07g\x02\x02\u014D \x03\x02" +
"\x02\x02\u014E\u014F\x07y\x02\x02\u014F\u0150\x07j\x02\x02\u0150\u0151" +
"\x07k\x02\x02\u0151\u0152\x07n\x02\x02\u0152\u0153\x07g\x02\x02\u0153" +
"\"\x03\x02\x02\x02\u0154\u0155\x07h\x02\x02\u0155\u0156\x07q\x02\x02\u0156" +
"\u0157\x07t\x02\x02\u0157$\x03\x02\x02\x02\u0158\u0159\x07k\x02\x02\u0159" +
"\u015A\x07p\x02\x02\u015A&\x03\x02\x02\x02\u015B\u015C\x07v\x02\x02\u015C" +
"\u015D\x07t\x02\x02\u015D\u015E\x07{\x02\x02\u015E(\x03\x02\x02\x02\u015F" +
"\u0160\x07h\x02\x02\u0160\u0161\x07k\x02\x02\u0161\u0162\x07p\x02\x02" +
"\u0162\u0163\x07c\x02\x02\u0163\u0164\x07n\x02\x02\u0164\u0165\x07n\x02" +
"\x02\u0165\u0166\x07{\x02\x02\u0166*\x03\x02\x02\x02\u0167\u0168\x07y" +
"\x02\x02\u0168\u0169\x07k\x02\x02\u0169\u016A\x07v\x02\x02\u016A\u016B" +
"\x07j\x02\x02\u016B,\x03\x02\x02\x02\u016C\u016D\x07g\x02\x02\u016D\u016E" +
"\x07z\x02\x02\u016E\u016F\x07e\x02\x02\u016F\u0170\x07g\x02\x02\u0170" +
"\u0171\x07r\x02\x02\u0171\u0172\x07v\x02\x02\u0172.\x03\x02\x02\x02\u0173" +
"\u0174\x07n\x02\x02\u0174\u0175\x07c\x02\x02\u0175\u0176\x07o\x02\x02" +
"\u0176\u0177\x07d\x02\x02\u0177\u0178\x07f\x02\x02\u0178\u0179\x07c\x02" +
"\x02\u01790\x03\x02\x02\x02\u017A\u017B\x07q\x02\x02\u017B\u017C\x07t" +
"\x02\x02\u017C2\x03\x02\x02\x02\u017D\u017E\x07c\x02\x02\u017E\u017F\x07" +
"p\x02\x02\u017F\u0180\x07f\x02\x02\u01804\x03\x02\x02\x02\u0181\u0182" +
"\x07p\x02\x02\u0182\u0183\x07q\x02\x02\u0183\u0184\x07v\x02\x02\u0184" +
"6\x03\x02\x02\x02\u0185\u0186\x07k\x02\x02\u0186\u0187\x07u\x02\x02\u0187" +
"8\x03\x02\x02\x02\u0188\u0189\x07P\x02\x02\u0189\u018A\x07q\x02\x02\u018A" +
"\u018B\x07p\x02\x02\u018B\u018C\x07g\x02\x02\u018C:\x03\x02\x02\x02\u018D" +
"\u018E\x07V\x02\x02\u018E\u018F\x07t\x02\x02\u018F\u0190\x07w\x02\x02" +
"\u0190\u0191\x07g\x02\x02\u0191<\x03\x02\x02\x02\u0192\u0193\x07H\x02" +
"\x02\u0193\u0194\x07c\x02\x02\u0194\u0195\x07n\x02\x02\u0195\u0196\x07" +
"u\x02\x02\u0196\u0197\x07g\x02\x02\u0197>\x03\x02\x02\x02\u0198\u0199" +
"\x07e\x02\x02\u0199\u019A\x07n\x02\x02\u019A\u019B\x07c\x02\x02\u019B" +
"\u019C\x07u\x02\x02\u019C\u019D\x07u\x02\x02\u019D@\x03\x02\x02\x02\u019E" +
"\u019F\x07{\x02\x02\u019F\u01A0\x07k\x02\x02\u01A0\u01A1\x07g\x02\x02" +
"\u01A1\u01A2\x07n\x02\x02\u01A2\u01A3\x07f\x02\x02\u01A3B\x03\x02\x02" +
"\x02\u01A4\u01A5\x07f\x02\x02\u01A5\u01A6\x07g\x02\x02\u01A6\u01A7\x07" +
"n\x02\x02\u01A7D\x03\x02\x02\x02\u01A8\u01A9\x07r\x02\x02\u01A9\u01AA" +
"\x07c\x02\x02\u01AA\u01AB\x07u\x02\x02\u01AB\u01AC\x07u\x02\x02\u01AC" +
"F\x03\x02\x02\x02\u01AD\u01AE\x07e\x02\x02\u01AE\u01AF\x07q\x02\x02\u01AF" +
"\u01B0\x07p\x02\x02\u01B0\u01B1\x07v\x02\x02\u01B1\u01B2\x07k\x02\x02" +
"\u01B2\u01B3\x07p\x02\x02\u01B3\u01B4\x07w\x02\x02\u01B4\u01B5\x07g\x02" +
"\x02\u01B5H\x03\x02\x02\x02\u01B6\u01B7\x07d\x02\x02\u01B7\u01B8\x07t" +
"\x02\x02\u01B8\u01B9\x07g\x02\x02\u01B9\u01BA\x07c\x02\x02\u01BA\u01BB" +
"\x07m\x02\x02\u01BBJ\x03\x02\x02\x02\u01BC\u01BD\x07c\x02\x02\u01BD\u01BE" +
"\x07u\x02\x02\u01BE\u01BF\x07{\x02\x02\u01BF\u01C0\x07p\x02\x02\u01C0" +
"\u01C1\x07e\x02\x02\u01C1L\x03\x02\x02\x02\u01C2\u01C3\x07c\x02\x02\u01C3" +
"\u01C4\x07y\x02\x02\u01C4\u01C5\x07c\x02\x02\u01C5\u01C6\x07k\x02\x02" +
"\u01C6\u01C7\x07v\x02\x02\u01C7N\x03\x02\x02\x02\u01C8\u01C9\x06(\x02" +
"\x02\u01C9\u01D5\x05\xF1y\x02\u01CA\u01CC\x07\x0F\x02\x02\u01CB\u01CA" +
"\x03\x02\x02\x02\u01CB\u01CC\x03\x02\x02\x02\u01CC\u01CD\x03\x02\x02\x02" +
"\u01CD\u01D0\x07\f\x02\x02\u01CE\u01D0\x07\x0F\x02\x02\u01CF\u01CB\x03" +
"\x02\x02\x02\u01CF\u01CE\x03\x02\x02\x02\u01D0\u01D2\x03\x02\x02\x02\u01D1" +
"\u01D3\x05\xF1y\x02\u01D2\u01D1\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02" +
"\x02\u01D3\u01D5\x03\x02\x02\x02\u01D4\u01C8\x03\x02\x02\x02\u01D4\u01CF" +
"\x03\x02\x02\x02\u01D5\u01D6\x03\x02\x02\x02\u01D6\u01D7\b(\x02\x02\u01D7" +
"P\x03\x02\x02\x02\u01D8\u01DC\x05\xF7|\x02\u01D9\u01DB\x05\xF9}\x02\u01DA" +
"\u01D9\x03\x02\x02\x02\u01DB\u01DE\x03\x02\x02\x02\u01DC\u01DA\x03\x02" +
"\x02\x02\u01DC\u01DD\x03\x02\x02\x02\u01DDR\x03\x02\x02\x02\u01DE\u01DC" +
"\x03\x02\x02\x02\u01DF\u01E5\t\x02\x02\x02\u01E0\u01E1\t\x03\x02\x02\u01E1" +
"\u01E5\t\x04\x02\x02\u01E2\u01E3\t\x04\x02\x02\u01E3\u01E5\t\x03\x02\x02" +
"\u01E4\u01DF\x03\x02\x02\x02\u01E4\u01E0\x03\x02\x02\x02\u01E4\u01E2\x03" +
"\x02\x02\x02\u01E4\u01E5\x03\x02\x02\x02\u01E5\u01E8\x03\x02\x02\x02\u01E6" +
"\u01E9\x05\xC5c\x02\u01E7\u01E9\x05\xC7d\x02\u01E8\u01E6\x03\x02\x02\x02" +
"\u01E8\u01E7\x03\x02\x02\x02\u01E9T\x03\x02\x02\x02\u01EA\u01F0\t\x05" +
"\x02\x02\u01EB\u01EC\t\x05\x02\x02\u01EC\u01F0\t\x04\x02\x02\u01ED\u01EE" +
"\t\x04\x02\x02\u01EE\u01F0\t\x05\x02\x02\u01EF\u01EA\x03\x02\x02\x02\u01EF" +
"\u01EB\x03\x02\x02\x02\u01EF\u01ED\x03\x02\x02\x02\u01F0\u01F3\x03\x02" +
"\x02\x02\u01F1\u01F4\x05\xE3r\x02\u01F2\u01F4\x05\xE5s\x02\u01F3\u01F1" +
"\x03\x02\x02\x02\u01F3\u01F2\x03\x02\x02\x02\u01F4V\x03\x02\x02\x02\u01F5" +
"\u01F9\x05\xCFh\x02\u01F6\u01F8\x05\xD1i\x02\u01F7\u01F6\x03\x02\x02\x02" +
"\u01F8\u01FB\x03\x02\x02\x02\u01F9\u01F7\x03\x02\x02\x02\u01F9\u01FA\x03" +
"\x02\x02\x02\u01FA\u0202\x03\x02\x02\x02\u01FB\u01F9\x03\x02\x02\x02\u01FC" +
"\u01FE\x072\x02\x02\u01FD\u01FC\x03\x02\x02\x02\u01FE\u01FF\x03\x02\x02" +
"\x02\u01FF\u01FD\x03\x02\x02\x02\u01FF\u0200\x03\x02\x02\x02\u0200\u0202" +
"\x03\x02\x02\x02\u0201\u01F5\x03\x02\x02\x02\u0201\u01FD\x03\x02\x02\x02" +
"\u0202X\x03\x02\x02\x02\u0203\u0204\x072\x02\x02\u0204\u0206\t\x06\x02" +
"\x02\u0205\u0207\x05\xD3j\x02\u0206\u0205\x03\x02\x02\x02\u0207\u0208" +
"\x03\x02\x02\x02\u0208\u0206\x03\x02\x02\x02\u0208\u0209\x03\x02\x02\x02" +
"\u0209Z\x03\x02\x02\x02\u020A\u020B\x072\x02\x02\u020B\u020D\t\x07\x02" +
"\x02\u020C\u020E\x05\xD5k\x02\u020D\u020C\x03\x02\x02\x02\u020E\u020F" +
"\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02" +
"\u0210\\\x03\x02\x02\x02\u0211\u0212\x072\x02\x02\u0212\u0214\t\x05\x02" +
"\x02\u0213\u0215\x05\xD7l\x02\u0214\u0213\x03\x02\x02\x02\u0215\u0216" +
"\x03\x02\x02\x02\u0216\u0214\x03\x02\x02\x02\u0216\u0217\x03\x02\x02\x02" +
"\u0217^\x03\x02\x02\x02\u0218\u021B\x05\xD9m\x02\u0219\u021B\x05\xDBn" +
"\x02\u021A\u0218\x03\x02\x02\x02\u021A\u0219\x03\x02\x02\x02\u021B`\x03" +
"\x02\x02\x02\u021C\u021F\x05_0\x02\u021D\u021F\x05\xDDo\x02\u021E\u021C" +
"\x03\x02\x02\x02\u021E\u021D\x03\x02\x02\x02\u021F\u0220\x03\x02\x02\x02" +
"\u0220\u0221\t\b\x02\x02\u0221b\x03\x02\x02\x02\u0222\u0223\x070\x02\x02" +
"\u0223d\x03\x02\x02\x02\u0224\u0225\x070\x02\x02\u0225\u0226\x070\x02" +
"\x02\u0226\u0227\x070\x02\x02\u0227f\x03\x02\x02\x02\u0228\u0229\x07," +
"\x02\x02\u0229h\x03\x02\x02\x02\u022A\u022B\x07*\x02\x02\u022B\u022C\b" +
"5\x03\x02\u022Cj\x03\x02\x02\x02\u022D\u022E\x07+\x02\x02\u022E\u022F" +
"\b6\x04\x02\u022Fl\x03\x02\x02\x02\u0230\u0231\x07.\x02\x02\u0231n\x03" +
"\x02\x02\x02\u0232\u0233\x07<\x02\x02\u0233p\x03\x02\x02\x02\u0234\u0235" +
"\x07=\x02\x02\u0235r\x03\x02\x02\x02\u0236\u0237\x07,\x02\x02\u0237\u0238" +
"\x07,\x02\x02\u0238t\x03\x02\x02\x02\u0239\u023A\x07?\x02\x02\u023Av\x03" +
"\x02\x02\x02\u023B\u023C\x07]\x02\x02\u023C\u023D\b<\x05\x02\u023Dx\x03" +
"\x02\x02\x02\u023E\u023F\x07_\x02\x02\u023F\u0240\b=\x06\x02\u0240z\x03" +
"\x02\x02\x02\u0241\u0242\x07~\x02\x02\u0242|\x03\x02\x02\x02\u0243\u0244" +
"\x07`\x02\x02\u0244~\x03\x02\x02\x02\u0245\u0246\x07(\x02\x02\u0246\x80" +
"\x03\x02\x02\x02\u0247\u0248\x07>\x02\x02\u0248\u0249\x07>\x02\x02\u0249" +
"\x82\x03\x02\x02\x02\u024A\u024B\x07@\x02\x02\u024B\u024C\x07@\x02\x02" +
"\u024C\x84\x03\x02\x02\x02\u024D\u024E\x07-\x02\x02\u024E\x86\x03\x02" +
"\x02\x02\u024F\u0250\x07/\x02\x02\u0250\x88\x03\x02\x02\x02\u0251\u0252" +
"\x071\x02\x02\u0252\x8A\x03\x02\x02\x02\u0253\u0254\x07\'\x02\x02\u0254" +
"\x8C\x03\x02\x02\x02\u0255\u0256\x071\x02\x02\u0256\u0257\x071\x02\x02" +
"\u0257\x8E\x03\x02\x02\x02\u0258\u0259\x07\x80\x02\x02\u0259\x90\x03\x02" +
"\x02\x02\u025A\u025B\x07}\x02\x02\u025B\u025C\bI\x07\x02\u025C\x92\x03" +
"\x02\x02\x02\u025D\u025E\x07\x7F\x02\x02\u025E\u025F\bJ\b\x02\u025F\x94" +
"\x03\x02\x02\x02\u0260\u0261\x07>\x02\x02\u0261\x96\x03\x02\x02\x02\u0262" +
"\u0263\x07@\x02\x02\u0263\x98\x03\x02\x02\x02\u0264\u0265\x07?\x02\x02" +
"\u0265\u0266\x07?\x02\x02\u0266\x9A\x03\x02\x02\x02\u0267\u0268\x07@\x02" +
"\x02\u0268\u0269\x07?\x02\x02\u0269\x9C\x03\x02\x02\x02\u026A\u026B\x07" +
">\x02\x02\u026B\u026C\x07?\x02\x02\u026C\x9E\x03\x02\x02\x02\u026D\u026E" +
"\x07>\x02\x02\u026E\u026F\x07@\x02\x02\u026F\xA0\x03\x02\x02\x02\u0270" +
"\u0271\x07#\x02\x02\u0271\u0272\x07?\x02\x02\u0272\xA2\x03\x02\x02\x02" +
"\u0273\u0274\x07B\x02\x02\u0274\xA4\x03\x02\x02\x02\u0275\u0276\x07/\x02" +
"\x02\u0276\u0277\x07@\x02\x02\u0277\xA6\x03\x02\x02\x02\u0278\u0279\x07" +
"-\x02\x02\u0279\u027A\x07?\x02\x02\u027A\xA8\x03\x02\x02\x02\u027B\u027C" +
"\x07/\x02\x02\u027C\u027D\x07?\x02\x02\u027D\xAA\x03\x02\x02\x02\u027E" +
"\u027F\x07,\x02\x02\u027F\u0280\x07?\x02\x02\u0280\xAC\x03\x02\x02\x02" +
"\u0281\u0282\x07B\x02\x02\u0282\u0283\x07?\x02\x02\u0283\xAE\x03\x02\x02" +
"\x02\u0284\u0285\x071\x02\x02\u0285\u0286\x07?\x02\x02\u0286\xB0\x03\x02" +
"\x02\x02\u0287\u0288\x07\'\x02\x02\u0288\u0289\x07?\x02\x02\u0289\xB2" +
"\x03\x02\x02\x02\u028A\u028B\x07(\x02\x02\u028B\u028C\x07?\x02\x02\u028C" +
"\xB4\x03\x02\x02\x02\u028D\u028E\x07~\x02\x02\u028E\u028F\x07?\x02\x02" +
"\u028F\xB6\x03\x02\x02\x02\u0290\u0291\x07`\x02\x02\u0291\u0292\x07?\x02" +
"\x02\u0292\xB8\x03\x02\x02\x02\u0293\u0294\x07>\x02\x02\u0294\u0295\x07" +
">\x02\x02\u0295\u0296\x07?\x02\x02\u0296\xBA\x03\x02\x02\x02\u0297\u0298" +
"\x07@\x02\x02\u0298\u0299\x07@\x02\x02\u0299\u029A\x07?\x02\x02\u029A" +
"\xBC\x03\x02\x02\x02\u029B\u029C\x07,\x02\x02\u029C\u029D\x07,\x02\x02" +
"\u029D\u029E\x07?\x02\x02\u029E\xBE\x03\x02\x02\x02\u029F\u02A0\x071\x02" +
"\x02\u02A0\u02A1\x071\x02\x02\u02A1\u02A2\x07?\x02\x02\u02A2\xC0\x03\x02" +
"\x02\x02\u02A3\u02A7\x05\xF1y\x02\u02A4\u02A7\x05\xF3z\x02\u02A5\u02A7" +
"\x05\xF5{\x02\u02A6\u02A3\x03\x02\x02\x02\u02A6\u02A4\x03\x02\x02\x02" +
"\u02A6\u02A5\x03\x02\x02\x02\u02A7\u02A8\x03\x02\x02\x02\u02A8\u02A9\b" +
"a\t\x02\u02A9\xC2\x03\x02\x02\x02\u02AA\u02AB\v\x02\x02\x02\u02AB\xC4" +
"\x03\x02\x02\x02\u02AC\u02B1\x07)\x02\x02\u02AD\u02B0\x05\xCDg\x02\u02AE" +
"\u02B0\n\t\x02\x02\u02AF\u02AD\x03\x02\x02\x02\u02AF\u02AE\x03\x02\x02" +
"\x02\u02B0\u02B3\x03\x02\x02\x02\u02B1\u02AF\x03\x02\x02\x02\u02B1\u02B2" +
"\x03\x02\x02\x02\u02B2\u02B4\x03\x02\x02\x02\u02B3\u02B1\x03\x02\x02\x02" +
"\u02B4\u02BF\x07)\x02\x02\u02B5\u02BA\x07$\x02\x02\u02B6\u02B9\x05\xCD" +
"g\x02\u02B7\u02B9\n\n\x02\x02\u02B8\u02B6\x03\x02\x02\x02\u02B8\u02B7" +
"\x03\x02\x02\x02\u02B9\u02BC\x03\x02\x02\x02\u02BA\u02B8\x03\x02\x02\x02" +
"\u02BA\u02BB\x03\x02\x02\x02\u02BB\u02BD\x03\x02\x02\x02\u02BC\u02BA\x03" +
"\x02\x02\x02\u02BD\u02BF\x07$\x02\x02\u02BE\u02AC\x03\x02\x02\x02\u02BE" +
"\u02B5\x03\x02\x02\x02\u02BF\xC6\x03\x02\x02\x02\u02C0\u02C1\x07)\x02" +
"\x02\u02C1\u02C2\x07)\x02\x02\u02C2\u02C3\x07)\x02\x02\u02C3\u02C7\x03" +
"\x02\x02\x02\u02C4\u02C6\x05\xC9e\x02\u02C5\u02C4\x03\x02\x02\x02\u02C6" +
"\u02C9\x03\x02\x02\x02\u02C7\u02C8\x03\x02\x02\x02\u02C7\u02C5\x03\x02" +
"\x02\x02\u02C8\u02CA\x03\x02\x02\x02\u02C9\u02C7\x03\x02\x02\x02\u02CA" +
"\u02CB\x07)\x02\x02\u02CB\u02CC\x07)\x02\x02\u02CC\u02DB\x07)\x02\x02" +
"\u02CD\u02CE\x07$\x02\x02\u02CE\u02CF\x07$\x02\x02\u02CF\u02D0\x07$\x02" +
"\x02\u02D0\u02D4\x03\x02\x02\x02\u02D1\u02D3\x05\xC9e\x02\u02D2\u02D1" +
"\x03\x02\x02\x02\u02D3\u02D6\x03\x02\x02\x02\u02D4\u02D5\x03\x02\x02\x02" +
"\u02D4\u02D2\x03\x02\x02\x02\u02D5\u02D7\x03\x02\x02\x02\u02D6\u02D4\x03" +
"\x02\x02\x02\u02D7\u02D8\x07$\x02\x02\u02D8\u02D9\x07$\x02\x02\u02D9\u02DB" +
"\x07$\x02\x02\u02DA\u02C0\x03\x02\x02\x02\u02DA\u02CD\x03\x02\x02\x02" +
"\u02DB\xC8\x03\x02\x02\x02\u02DC\u02DF\x05\xCBf\x02\u02DD\u02DF\x05\xCD" +
"g\x02\u02DE\u02DC\x03\x02\x02\x02\u02DE\u02DD\x03\x02\x02\x02\u02DF\xCA" +
"\x03\x02\x02\x02\u02E0\u02E1\n\v\x02\x02\u02E1\xCC\x03\x02\x02\x02\u02E2" +
"\u02E3\x07^\x02\x02\u02E3\u02E7\v\x02\x02\x02\u02E4\u02E5\x07^\x02\x02" +
"\u02E5\u02E7\x05O(\x02\u02E6\u02E2\x03\x02\x02\x02\u02E6\u02E4\x03\x02" +
"\x02\x02\u02E7\xCE\x03\x02\x02\x02\u02E8\u02E9\t\f\x02\x02\u02E9\xD0\x03" +
"\x02\x02\x02\u02EA\u02EB\t\r\x02\x02\u02EB\xD2\x03\x02\x02\x02\u02EC\u02ED" +
"\t\x0E\x02\x02\u02ED\xD4\x03\x02\x02\x02\u02EE\u02EF\t\x0F\x02\x02\u02EF" +
"\xD6\x03\x02\x02\x02\u02F0\u02F1\t\x10\x02\x02\u02F1\xD8\x03\x02\x02\x02" +
"\u02F2\u02F4\x05\xDDo\x02\u02F3\u02F2\x03\x02\x02\x02\u02F3\u02F4\x03" +
"\x02\x02\x02\u02F4\u02F5\x03\x02\x02\x02\u02F5\u02FA\x05\xDFp\x02\u02F6" +
"\u02F7\x05\xDDo\x02\u02F7\u02F8\x070\x02\x02\u02F8\u02FA\x03\x02\x02\x02" +
"\u02F9\u02F3\x03\x02\x02\x02\u02F9\u02F6\x03\x02\x02\x02\u02FA\xDA\x03" +
"\x02\x02\x02\u02FB\u02FE\x05\xDDo\x02\u02FC\u02FE\x05\xD9m\x02\u02FD\u02FB" +
"\x03\x02\x02\x02\u02FD\u02FC\x03\x02\x02\x02\u02FE\u02FF\x03\x02\x02\x02" +
"\u02FF\u0300\x05\xE1q\x02\u0300\xDC\x03\x02\x02\x02\u0301\u0303\x05\xD1" +
"i\x02\u0302\u0301\x03\x02\x02\x02\u0303\u0304\x03\x02\x02\x02\u0304\u0302" +
"\x03\x02\x02\x02\u0304\u0305\x03\x02\x02\x02\u0305\xDE\x03\x02\x02\x02" +
"\u0306\u0308\x070\x02\x02\u0307\u0309\x05\xD1i\x02\u0308\u0307\x03\x02" +
"\x02\x02\u0309\u030A\x03\x02\x02\x02\u030A\u0308\x03\x02\x02\x02\u030A" +
"\u030B\x03\x02\x02\x02\u030B\xE0\x03\x02\x02\x02\u030C\u030E\t\x11\x02" +
"\x02\u030D\u030F\t\x12\x02\x02\u030E\u030D\x03\x02\x02\x02\u030E\u030F" +
"\x03\x02\x02\x02\u030F\u0311\x03\x02\x02\x02\u0310\u0312\x05\xD1i\x02" +
"\u0311\u0310\x03\x02\x02\x02\u0312\u0313\x03\x02\x02\x02\u0313\u0311\x03" +
"\x02\x02\x02\u0313\u0314\x03\x02\x02\x02\u0314\xE2\x03\x02\x02\x02\u0315" +
"\u031A\x07)\x02\x02\u0316\u0319\x05\xE9u\x02\u0317\u0319\x05\xEFx\x02" +
"\u0318\u0316\x03\x02\x02\x02\u0318\u0317\x03\x02\x02\x02\u0319\u031C\x03" +
"\x02\x02\x02\u031A\u0318\x03\x02\x02\x02\u031A\u031B\x03\x02\x02\x02\u031B" +
"\u031D\x03\x02\x02\x02\u031C\u031A\x03\x02\x02\x02\u031D\u0328\x07)\x02" +
"\x02\u031E\u0323\x07$\x02\x02\u031F\u0322\x05\xEBv\x02\u0320\u0322\x05" +
"\xEFx\x02\u0321\u031F\x03\x02\x02\x02\u0321\u0320\x03\x02\x02\x02\u0322" +
"\u0325\x03\x02\x02\x02\u0323\u0321\x03\x02\x02\x02\u0323\u0324\x03\x02" +
"\x02\x02\u0324\u0326\x03\x02\x02\x02\u0325\u0323\x03\x02\x02\x02\u0326" +
"\u0328\x07$\x02\x02\u0327\u0315\x03\x02\x02\x02\u0327\u031E\x03\x02\x02" +
"\x02\u0328\xE4\x03\x02\x02\x02\u0329\u032A\x07)\x02\x02\u032A\u032B\x07" +
")\x02\x02\u032B\u032C\x07)\x02\x02\u032C\u0330\x03\x02\x02\x02\u032D\u032F" +
"\x05\xE7t\x02\u032E\u032D\x03\x02\x02\x02\u032F\u0332\x03\x02\x02\x02" +
"\u0330\u0331\x03\x02\x02\x02\u0330\u032E\x03\x02\x02\x02\u0331\u0333\x03" +
"\x02\x02\x02\u0332\u0330\x03\x02\x02\x02\u0333\u0334\x07)\x02\x02\u0334" +
"\u0335\x07)\x02\x02\u0335\u0344\x07)\x02\x02\u0336\u0337\x07$\x02\x02" +
"\u0337\u0338\x07$\x02\x02\u0338\u0339\x07$\x02\x02\u0339\u033D\x03\x02" +
"\x02\x02\u033A\u033C\x05\xE7t\x02\u033B\u033A\x03\x02\x02\x02\u033C\u033F" +
"\x03\x02\x02\x02\u033D\u033E\x03\x02\x02\x02\u033D\u033B\x03\x02\x02\x02" +
"\u033E\u0340\x03\x02\x02\x02\u033F\u033D\x03\x02\x02\x02\u0340\u0341\x07" +
"$\x02\x02\u0341\u0342\x07$\x02\x02\u0342\u0344\x07$\x02\x02\u0343\u0329" +
"\x03\x02\x02\x02\u0343\u0336\x03\x02\x02\x02\u0344\xE6\x03\x02\x02\x02" +
"\u0345\u0348\x05\xEDw\x02\u0346\u0348\x05\xEFx\x02\u0347\u0345\x03\x02" +
"\x02\x02\u0347\u0346\x03\x02\x02\x02\u0348\xE8\x03\x02\x02\x02\u0349\u034B" +
"\t\x13\x02\x02\u034A\u0349\x03\x02\x02\x02\u034B\xEA\x03\x02\x02\x02\u034C" +
"\u034E\t\x14\x02\x02\u034D\u034C\x03\x02\x02\x02\u034E\xEC\x03\x02\x02" +
"\x02\u034F\u0351\t\x15\x02\x02\u0350\u034F\x03\x02\x02\x02\u0351\xEE\x03" +
"\x02\x02\x02\u0352\u0353\x07^\x02\x02\u0353\u0354\t\x16\x02\x02\u0354" +
"\xF0\x03\x02\x02\x02\u0355\u0357\t\x17\x02\x02\u0356\u0355\x03\x02\x02" +
"\x02\u0357\u0358\x03\x02\x02\x02\u0358\u0356\x03\x02\x02\x02\u0358\u0359" +
"\x03\x02\x02\x02\u0359\xF2\x03\x02\x02\x02\u035A\u035E\x07%\x02\x02\u035B" +
"\u035D\n\x18\x02\x02\u035C\u035B\x03\x02\x02\x02\u035D\u0360\x03\x02\x02" +
"\x02\u035E\u035C\x03\x02\x02\x02\u035E\u035F\x03\x02\x02\x02\u035F\xF4" +
"\x03\x02\x02\x02\u0360\u035E\x03\x02\x02\x02\u0361\u0363\x07^\x02\x02" +
"\u0362\u0364\x05\xF1y\x02\u0363\u0362\x03\x02\x02\x02\u0363\u0364\x03" +
"\x02\x02\x02\u0364\u036A\x03\x02\x02\x02\u0365\u0367\x07\x0F\x02\x02\u0366" +
"\u0365\x03\x02\x02\x02\u0366\u0367\x03\x02\x02\x02\u0367\u0368\x03\x02" +
"\x02\x02\u0368\u036B\x07\f\x02\x02\u0369\u036B\x04\x0E\x0F\x02\u036A\u0366" +
"\x03\x02\x02\x02\u036A\u0369\x03\x02\x02\x02\u036B\xF6\x03\x02\x02\x02" +
"\u036C\u036E\t\x19\x02\x02\u036D\u036C\x03\x02\x02\x02\u036E\xF8\x03\x02" +
"\x02\x02\u036F\u0372\x05\xF7|\x02\u0370\u0372\t\x1A\x02\x02\u0371\u036F" +
"\x03\x02\x02\x02\u0371\u0370\x03\x02\x02\x02\u0372\xFA\x03\x02\x02\x02" +
"<\x02\xFD\u0102\u0108\u01CB\u01CF\u01D2\u01D4\u01DC\u01E4\u01E8\u01EF" +
"\u01F3\u01F9\u01FF\u0201\u0208\u020F\u0216\u021A\u021E\u02A6\u02AF\u02B1" +
"\u02B8\u02BA\u02BE\u02C7\u02D4\u02DA\u02DE\u02E6\u02F3\u02F9\u02FD\u0304" +
"\u030A\u030E\u0313\u0318\u031A\u0321\u0323\u0327\u0330\u033D\u0343\u0347" +
"\u034A\u034D\u0350\u0358\u035E\u0363\u0366\u036A\u036D\u0371\n\x03(\x02" +
"\x035\x03\x036\x04\x03<\x05\x03=\x06\x03I\x07\x03J\b\b\x02\x02";
Python3Lexer._serializedATN = Utils.join([
Python3Lexer._serializedATNSegment0,
Python3Lexer._serializedATNSegment1,
], "");
__decorate([
Decorators_1.Override
], Python3Lexer.prototype, "reset", null);
__decorate([
Decorators_1.Override
], Python3Lexer.prototype, "emit", null);
__decorate([
Decorators_1.Override
], Python3Lexer.prototype, "nextToken", null);
exports.Python3Lexer = Python3Lexer;

View File

@@ -0,0 +1,953 @@
import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";
import { Single_inputContext } from "./Python3Parser";
import { File_inputContext } from "./Python3Parser";
import { Eval_inputContext } from "./Python3Parser";
import { DecoratorContext } from "./Python3Parser";
import { DecoratorsContext } from "./Python3Parser";
import { DecoratedContext } from "./Python3Parser";
import { Async_funcdefContext } from "./Python3Parser";
import { FuncdefContext } from "./Python3Parser";
import { ParametersContext } from "./Python3Parser";
import { TypedargslistContext } from "./Python3Parser";
import { TfpdefContext } from "./Python3Parser";
import { VarargslistContext } from "./Python3Parser";
import { VfpdefContext } from "./Python3Parser";
import { StmtContext } from "./Python3Parser";
import { Simple_stmtContext } from "./Python3Parser";
import { Small_stmtContext } from "./Python3Parser";
import { Expr_stmtContext } from "./Python3Parser";
import { AnnassignContext } from "./Python3Parser";
import { Testlist_star_exprContext } from "./Python3Parser";
import { AugassignContext } from "./Python3Parser";
import { Del_stmtContext } from "./Python3Parser";
import { Pass_stmtContext } from "./Python3Parser";
import { Flow_stmtContext } from "./Python3Parser";
import { Break_stmtContext } from "./Python3Parser";
import { Continue_stmtContext } from "./Python3Parser";
import { Return_stmtContext } from "./Python3Parser";
import { Yield_stmtContext } from "./Python3Parser";
import { Raise_stmtContext } from "./Python3Parser";
import { Import_stmtContext } from "./Python3Parser";
import { Import_nameContext } from "./Python3Parser";
import { Import_fromContext } from "./Python3Parser";
import { Import_as_nameContext } from "./Python3Parser";
import { Dotted_as_nameContext } from "./Python3Parser";
import { Import_as_namesContext } from "./Python3Parser";
import { Dotted_as_namesContext } from "./Python3Parser";
import { Dotted_nameContext } from "./Python3Parser";
import { Global_stmtContext } from "./Python3Parser";
import { Nonlocal_stmtContext } from "./Python3Parser";
import { Assert_stmtContext } from "./Python3Parser";
import { Compound_stmtContext } from "./Python3Parser";
import { Async_stmtContext } from "./Python3Parser";
import { If_stmtContext } from "./Python3Parser";
import { While_stmtContext } from "./Python3Parser";
import { For_stmtContext } from "./Python3Parser";
import { Try_stmtContext } from "./Python3Parser";
import { With_stmtContext } from "./Python3Parser";
import { With_itemContext } from "./Python3Parser";
import { Except_clauseContext } from "./Python3Parser";
import { SuiteContext } from "./Python3Parser";
import { TestContext } from "./Python3Parser";
import { Test_nocondContext } from "./Python3Parser";
import { LambdefContext } from "./Python3Parser";
import { Lambdef_nocondContext } from "./Python3Parser";
import { Or_testContext } from "./Python3Parser";
import { And_testContext } from "./Python3Parser";
import { Not_testContext } from "./Python3Parser";
import { ComparisonContext } from "./Python3Parser";
import { Comp_opContext } from "./Python3Parser";
import { Star_exprContext } from "./Python3Parser";
import { ExprContext } from "./Python3Parser";
import { Xor_exprContext } from "./Python3Parser";
import { And_exprContext } from "./Python3Parser";
import { Shift_exprContext } from "./Python3Parser";
import { Arith_exprContext } from "./Python3Parser";
import { TermContext } from "./Python3Parser";
import { FactorContext } from "./Python3Parser";
import { PowerContext } from "./Python3Parser";
import { Atom_exprContext } from "./Python3Parser";
import { AtomContext } from "./Python3Parser";
import { Testlist_compContext } from "./Python3Parser";
import { TrailerContext } from "./Python3Parser";
import { SubscriptlistContext } from "./Python3Parser";
import { SubscriptContext } from "./Python3Parser";
import { SliceopContext } from "./Python3Parser";
import { ExprlistContext } from "./Python3Parser";
import { TestlistContext } from "./Python3Parser";
import { DictorsetmakerContext } from "./Python3Parser";
import { ClassdefContext } from "./Python3Parser";
import { ArglistContext } from "./Python3Parser";
import { ArgumentContext } from "./Python3Parser";
import { Comp_iterContext } from "./Python3Parser";
import { Comp_forContext } from "./Python3Parser";
import { Comp_ifContext } from "./Python3Parser";
import { Encoding_declContext } from "./Python3Parser";
import { Yield_exprContext } from "./Python3Parser";
import { Yield_argContext } from "./Python3Parser";
/**
* This interface defines a complete listener for a parse tree produced by
* `Python3Parser`.
*/
export interface Python3Listener extends ParseTreeListener {
/**
* Enter a parse tree produced by `Python3Parser.single_input`.
* @param ctx the parse tree
*/
enterSingle_input?: (ctx: Single_inputContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.single_input`.
* @param ctx the parse tree
*/
exitSingle_input?: (ctx: Single_inputContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.file_input`.
* @param ctx the parse tree
*/
enterFile_input?: (ctx: File_inputContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.file_input`.
* @param ctx the parse tree
*/
exitFile_input?: (ctx: File_inputContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.eval_input`.
* @param ctx the parse tree
*/
enterEval_input?: (ctx: Eval_inputContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.eval_input`.
* @param ctx the parse tree
*/
exitEval_input?: (ctx: Eval_inputContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.decorator`.
* @param ctx the parse tree
*/
enterDecorator?: (ctx: DecoratorContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.decorator`.
* @param ctx the parse tree
*/
exitDecorator?: (ctx: DecoratorContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.decorators`.
* @param ctx the parse tree
*/
enterDecorators?: (ctx: DecoratorsContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.decorators`.
* @param ctx the parse tree
*/
exitDecorators?: (ctx: DecoratorsContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.decorated`.
* @param ctx the parse tree
*/
enterDecorated?: (ctx: DecoratedContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.decorated`.
* @param ctx the parse tree
*/
exitDecorated?: (ctx: DecoratedContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.async_funcdef`.
* @param ctx the parse tree
*/
enterAsync_funcdef?: (ctx: Async_funcdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.async_funcdef`.
* @param ctx the parse tree
*/
exitAsync_funcdef?: (ctx: Async_funcdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.funcdef`.
* @param ctx the parse tree
*/
enterFuncdef?: (ctx: FuncdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.funcdef`.
* @param ctx the parse tree
*/
exitFuncdef?: (ctx: FuncdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.parameters`.
* @param ctx the parse tree
*/
enterParameters?: (ctx: ParametersContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.parameters`.
* @param ctx the parse tree
*/
exitParameters?: (ctx: ParametersContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.typedargslist`.
* @param ctx the parse tree
*/
enterTypedargslist?: (ctx: TypedargslistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.typedargslist`.
* @param ctx the parse tree
*/
exitTypedargslist?: (ctx: TypedargslistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.tfpdef`.
* @param ctx the parse tree
*/
enterTfpdef?: (ctx: TfpdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.tfpdef`.
* @param ctx the parse tree
*/
exitTfpdef?: (ctx: TfpdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.varargslist`.
* @param ctx the parse tree
*/
enterVarargslist?: (ctx: VarargslistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.varargslist`.
* @param ctx the parse tree
*/
exitVarargslist?: (ctx: VarargslistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.vfpdef`.
* @param ctx the parse tree
*/
enterVfpdef?: (ctx: VfpdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.vfpdef`.
* @param ctx the parse tree
*/
exitVfpdef?: (ctx: VfpdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.stmt`.
* @param ctx the parse tree
*/
enterStmt?: (ctx: StmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.stmt`.
* @param ctx the parse tree
*/
exitStmt?: (ctx: StmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.simple_stmt`.
* @param ctx the parse tree
*/
enterSimple_stmt?: (ctx: Simple_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.simple_stmt`.
* @param ctx the parse tree
*/
exitSimple_stmt?: (ctx: Simple_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.small_stmt`.
* @param ctx the parse tree
*/
enterSmall_stmt?: (ctx: Small_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.small_stmt`.
* @param ctx the parse tree
*/
exitSmall_stmt?: (ctx: Small_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.expr_stmt`.
* @param ctx the parse tree
*/
enterExpr_stmt?: (ctx: Expr_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.expr_stmt`.
* @param ctx the parse tree
*/
exitExpr_stmt?: (ctx: Expr_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.annassign`.
* @param ctx the parse tree
*/
enterAnnassign?: (ctx: AnnassignContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.annassign`.
* @param ctx the parse tree
*/
exitAnnassign?: (ctx: AnnassignContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.testlist_star_expr`.
* @param ctx the parse tree
*/
enterTestlist_star_expr?: (ctx: Testlist_star_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.testlist_star_expr`.
* @param ctx the parse tree
*/
exitTestlist_star_expr?: (ctx: Testlist_star_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.augassign`.
* @param ctx the parse tree
*/
enterAugassign?: (ctx: AugassignContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.augassign`.
* @param ctx the parse tree
*/
exitAugassign?: (ctx: AugassignContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.del_stmt`.
* @param ctx the parse tree
*/
enterDel_stmt?: (ctx: Del_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.del_stmt`.
* @param ctx the parse tree
*/
exitDel_stmt?: (ctx: Del_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.pass_stmt`.
* @param ctx the parse tree
*/
enterPass_stmt?: (ctx: Pass_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.pass_stmt`.
* @param ctx the parse tree
*/
exitPass_stmt?: (ctx: Pass_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.flow_stmt`.
* @param ctx the parse tree
*/
enterFlow_stmt?: (ctx: Flow_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.flow_stmt`.
* @param ctx the parse tree
*/
exitFlow_stmt?: (ctx: Flow_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.break_stmt`.
* @param ctx the parse tree
*/
enterBreak_stmt?: (ctx: Break_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.break_stmt`.
* @param ctx the parse tree
*/
exitBreak_stmt?: (ctx: Break_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.continue_stmt`.
* @param ctx the parse tree
*/
enterContinue_stmt?: (ctx: Continue_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.continue_stmt`.
* @param ctx the parse tree
*/
exitContinue_stmt?: (ctx: Continue_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.return_stmt`.
* @param ctx the parse tree
*/
enterReturn_stmt?: (ctx: Return_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.return_stmt`.
* @param ctx the parse tree
*/
exitReturn_stmt?: (ctx: Return_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.yield_stmt`.
* @param ctx the parse tree
*/
enterYield_stmt?: (ctx: Yield_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.yield_stmt`.
* @param ctx the parse tree
*/
exitYield_stmt?: (ctx: Yield_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.raise_stmt`.
* @param ctx the parse tree
*/
enterRaise_stmt?: (ctx: Raise_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.raise_stmt`.
* @param ctx the parse tree
*/
exitRaise_stmt?: (ctx: Raise_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.import_stmt`.
* @param ctx the parse tree
*/
enterImport_stmt?: (ctx: Import_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.import_stmt`.
* @param ctx the parse tree
*/
exitImport_stmt?: (ctx: Import_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.import_name`.
* @param ctx the parse tree
*/
enterImport_name?: (ctx: Import_nameContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.import_name`.
* @param ctx the parse tree
*/
exitImport_name?: (ctx: Import_nameContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.import_from`.
* @param ctx the parse tree
*/
enterImport_from?: (ctx: Import_fromContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.import_from`.
* @param ctx the parse tree
*/
exitImport_from?: (ctx: Import_fromContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.import_as_name`.
* @param ctx the parse tree
*/
enterImport_as_name?: (ctx: Import_as_nameContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.import_as_name`.
* @param ctx the parse tree
*/
exitImport_as_name?: (ctx: Import_as_nameContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.dotted_as_name`.
* @param ctx the parse tree
*/
enterDotted_as_name?: (ctx: Dotted_as_nameContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.dotted_as_name`.
* @param ctx the parse tree
*/
exitDotted_as_name?: (ctx: Dotted_as_nameContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.import_as_names`.
* @param ctx the parse tree
*/
enterImport_as_names?: (ctx: Import_as_namesContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.import_as_names`.
* @param ctx the parse tree
*/
exitImport_as_names?: (ctx: Import_as_namesContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.dotted_as_names`.
* @param ctx the parse tree
*/
enterDotted_as_names?: (ctx: Dotted_as_namesContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.dotted_as_names`.
* @param ctx the parse tree
*/
exitDotted_as_names?: (ctx: Dotted_as_namesContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.dotted_name`.
* @param ctx the parse tree
*/
enterDotted_name?: (ctx: Dotted_nameContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.dotted_name`.
* @param ctx the parse tree
*/
exitDotted_name?: (ctx: Dotted_nameContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.global_stmt`.
* @param ctx the parse tree
*/
enterGlobal_stmt?: (ctx: Global_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.global_stmt`.
* @param ctx the parse tree
*/
exitGlobal_stmt?: (ctx: Global_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.nonlocal_stmt`.
* @param ctx the parse tree
*/
enterNonlocal_stmt?: (ctx: Nonlocal_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.nonlocal_stmt`.
* @param ctx the parse tree
*/
exitNonlocal_stmt?: (ctx: Nonlocal_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.assert_stmt`.
* @param ctx the parse tree
*/
enterAssert_stmt?: (ctx: Assert_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.assert_stmt`.
* @param ctx the parse tree
*/
exitAssert_stmt?: (ctx: Assert_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.compound_stmt`.
* @param ctx the parse tree
*/
enterCompound_stmt?: (ctx: Compound_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.compound_stmt`.
* @param ctx the parse tree
*/
exitCompound_stmt?: (ctx: Compound_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.async_stmt`.
* @param ctx the parse tree
*/
enterAsync_stmt?: (ctx: Async_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.async_stmt`.
* @param ctx the parse tree
*/
exitAsync_stmt?: (ctx: Async_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.if_stmt`.
* @param ctx the parse tree
*/
enterIf_stmt?: (ctx: If_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.if_stmt`.
* @param ctx the parse tree
*/
exitIf_stmt?: (ctx: If_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.while_stmt`.
* @param ctx the parse tree
*/
enterWhile_stmt?: (ctx: While_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.while_stmt`.
* @param ctx the parse tree
*/
exitWhile_stmt?: (ctx: While_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.for_stmt`.
* @param ctx the parse tree
*/
enterFor_stmt?: (ctx: For_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.for_stmt`.
* @param ctx the parse tree
*/
exitFor_stmt?: (ctx: For_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.try_stmt`.
* @param ctx the parse tree
*/
enterTry_stmt?: (ctx: Try_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.try_stmt`.
* @param ctx the parse tree
*/
exitTry_stmt?: (ctx: Try_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.with_stmt`.
* @param ctx the parse tree
*/
enterWith_stmt?: (ctx: With_stmtContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.with_stmt`.
* @param ctx the parse tree
*/
exitWith_stmt?: (ctx: With_stmtContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.with_item`.
* @param ctx the parse tree
*/
enterWith_item?: (ctx: With_itemContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.with_item`.
* @param ctx the parse tree
*/
exitWith_item?: (ctx: With_itemContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.except_clause`.
* @param ctx the parse tree
*/
enterExcept_clause?: (ctx: Except_clauseContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.except_clause`.
* @param ctx the parse tree
*/
exitExcept_clause?: (ctx: Except_clauseContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.suite`.
* @param ctx the parse tree
*/
enterSuite?: (ctx: SuiteContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.suite`.
* @param ctx the parse tree
*/
exitSuite?: (ctx: SuiteContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.test`.
* @param ctx the parse tree
*/
enterTest?: (ctx: TestContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.test`.
* @param ctx the parse tree
*/
exitTest?: (ctx: TestContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.test_nocond`.
* @param ctx the parse tree
*/
enterTest_nocond?: (ctx: Test_nocondContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.test_nocond`.
* @param ctx the parse tree
*/
exitTest_nocond?: (ctx: Test_nocondContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.lambdef`.
* @param ctx the parse tree
*/
enterLambdef?: (ctx: LambdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.lambdef`.
* @param ctx the parse tree
*/
exitLambdef?: (ctx: LambdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.lambdef_nocond`.
* @param ctx the parse tree
*/
enterLambdef_nocond?: (ctx: Lambdef_nocondContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.lambdef_nocond`.
* @param ctx the parse tree
*/
exitLambdef_nocond?: (ctx: Lambdef_nocondContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.or_test`.
* @param ctx the parse tree
*/
enterOr_test?: (ctx: Or_testContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.or_test`.
* @param ctx the parse tree
*/
exitOr_test?: (ctx: Or_testContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.and_test`.
* @param ctx the parse tree
*/
enterAnd_test?: (ctx: And_testContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.and_test`.
* @param ctx the parse tree
*/
exitAnd_test?: (ctx: And_testContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.not_test`.
* @param ctx the parse tree
*/
enterNot_test?: (ctx: Not_testContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.not_test`.
* @param ctx the parse tree
*/
exitNot_test?: (ctx: Not_testContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.comparison`.
* @param ctx the parse tree
*/
enterComparison?: (ctx: ComparisonContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.comparison`.
* @param ctx the parse tree
*/
exitComparison?: (ctx: ComparisonContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.comp_op`.
* @param ctx the parse tree
*/
enterComp_op?: (ctx: Comp_opContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.comp_op`.
* @param ctx the parse tree
*/
exitComp_op?: (ctx: Comp_opContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.star_expr`.
* @param ctx the parse tree
*/
enterStar_expr?: (ctx: Star_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.star_expr`.
* @param ctx the parse tree
*/
exitStar_expr?: (ctx: Star_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.expr`.
* @param ctx the parse tree
*/
enterExpr?: (ctx: ExprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.expr`.
* @param ctx the parse tree
*/
exitExpr?: (ctx: ExprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.xor_expr`.
* @param ctx the parse tree
*/
enterXor_expr?: (ctx: Xor_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.xor_expr`.
* @param ctx the parse tree
*/
exitXor_expr?: (ctx: Xor_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.and_expr`.
* @param ctx the parse tree
*/
enterAnd_expr?: (ctx: And_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.and_expr`.
* @param ctx the parse tree
*/
exitAnd_expr?: (ctx: And_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.shift_expr`.
* @param ctx the parse tree
*/
enterShift_expr?: (ctx: Shift_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.shift_expr`.
* @param ctx the parse tree
*/
exitShift_expr?: (ctx: Shift_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.arith_expr`.
* @param ctx the parse tree
*/
enterArith_expr?: (ctx: Arith_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.arith_expr`.
* @param ctx the parse tree
*/
exitArith_expr?: (ctx: Arith_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.term`.
* @param ctx the parse tree
*/
enterTerm?: (ctx: TermContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.term`.
* @param ctx the parse tree
*/
exitTerm?: (ctx: TermContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.factor`.
* @param ctx the parse tree
*/
enterFactor?: (ctx: FactorContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.factor`.
* @param ctx the parse tree
*/
exitFactor?: (ctx: FactorContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.power`.
* @param ctx the parse tree
*/
enterPower?: (ctx: PowerContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.power`.
* @param ctx the parse tree
*/
exitPower?: (ctx: PowerContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.atom_expr`.
* @param ctx the parse tree
*/
enterAtom_expr?: (ctx: Atom_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.atom_expr`.
* @param ctx the parse tree
*/
exitAtom_expr?: (ctx: Atom_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.atom`.
* @param ctx the parse tree
*/
enterAtom?: (ctx: AtomContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.atom`.
* @param ctx the parse tree
*/
exitAtom?: (ctx: AtomContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.testlist_comp`.
* @param ctx the parse tree
*/
enterTestlist_comp?: (ctx: Testlist_compContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.testlist_comp`.
* @param ctx the parse tree
*/
exitTestlist_comp?: (ctx: Testlist_compContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.trailer`.
* @param ctx the parse tree
*/
enterTrailer?: (ctx: TrailerContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.trailer`.
* @param ctx the parse tree
*/
exitTrailer?: (ctx: TrailerContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.subscriptlist`.
* @param ctx the parse tree
*/
enterSubscriptlist?: (ctx: SubscriptlistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.subscriptlist`.
* @param ctx the parse tree
*/
exitSubscriptlist?: (ctx: SubscriptlistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.subscript`.
* @param ctx the parse tree
*/
enterSubscript?: (ctx: SubscriptContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.subscript`.
* @param ctx the parse tree
*/
exitSubscript?: (ctx: SubscriptContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.sliceop`.
* @param ctx the parse tree
*/
enterSliceop?: (ctx: SliceopContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.sliceop`.
* @param ctx the parse tree
*/
exitSliceop?: (ctx: SliceopContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.exprlist`.
* @param ctx the parse tree
*/
enterExprlist?: (ctx: ExprlistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.exprlist`.
* @param ctx the parse tree
*/
exitExprlist?: (ctx: ExprlistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.testlist`.
* @param ctx the parse tree
*/
enterTestlist?: (ctx: TestlistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.testlist`.
* @param ctx the parse tree
*/
exitTestlist?: (ctx: TestlistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.dictorsetmaker`.
* @param ctx the parse tree
*/
enterDictorsetmaker?: (ctx: DictorsetmakerContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.dictorsetmaker`.
* @param ctx the parse tree
*/
exitDictorsetmaker?: (ctx: DictorsetmakerContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.classdef`.
* @param ctx the parse tree
*/
enterClassdef?: (ctx: ClassdefContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.classdef`.
* @param ctx the parse tree
*/
exitClassdef?: (ctx: ClassdefContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.arglist`.
* @param ctx the parse tree
*/
enterArglist?: (ctx: ArglistContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.arglist`.
* @param ctx the parse tree
*/
exitArglist?: (ctx: ArglistContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.argument`.
* @param ctx the parse tree
*/
enterArgument?: (ctx: ArgumentContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.argument`.
* @param ctx the parse tree
*/
exitArgument?: (ctx: ArgumentContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.comp_iter`.
* @param ctx the parse tree
*/
enterComp_iter?: (ctx: Comp_iterContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.comp_iter`.
* @param ctx the parse tree
*/
exitComp_iter?: (ctx: Comp_iterContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.comp_for`.
* @param ctx the parse tree
*/
enterComp_for?: (ctx: Comp_forContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.comp_for`.
* @param ctx the parse tree
*/
exitComp_for?: (ctx: Comp_forContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.comp_if`.
* @param ctx the parse tree
*/
enterComp_if?: (ctx: Comp_ifContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.comp_if`.
* @param ctx the parse tree
*/
exitComp_if?: (ctx: Comp_ifContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.encoding_decl`.
* @param ctx the parse tree
*/
enterEncoding_decl?: (ctx: Encoding_declContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.encoding_decl`.
* @param ctx the parse tree
*/
exitEncoding_decl?: (ctx: Encoding_declContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.yield_expr`.
* @param ctx the parse tree
*/
enterYield_expr?: (ctx: Yield_exprContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.yield_expr`.
* @param ctx the parse tree
*/
exitYield_expr?: (ctx: Yield_exprContext) => void;
/**
* Enter a parse tree produced by `Python3Parser.yield_arg`.
* @param ctx the parse tree
*/
enterYield_arg?: (ctx: Yield_argContext) => void;
/**
* Exit a parse tree produced by `Python3Parser.yield_arg`.
* @param ctx the parse tree
*/
exitYield_arg?: (ctx: Yield_argContext) => void;
}

View File

@@ -0,0 +1,3 @@
"use strict";
// Generated from src/parser/Python3.g4 by ANTLR 4.7.3-SNAPSHOT
Object.defineProperty(exports, "__esModule", { value: true });

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,612 @@
import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";
import { Single_inputContext } from "./Python3Parser";
import { File_inputContext } from "./Python3Parser";
import { Eval_inputContext } from "./Python3Parser";
import { DecoratorContext } from "./Python3Parser";
import { DecoratorsContext } from "./Python3Parser";
import { DecoratedContext } from "./Python3Parser";
import { Async_funcdefContext } from "./Python3Parser";
import { FuncdefContext } from "./Python3Parser";
import { ParametersContext } from "./Python3Parser";
import { TypedargslistContext } from "./Python3Parser";
import { TfpdefContext } from "./Python3Parser";
import { VarargslistContext } from "./Python3Parser";
import { VfpdefContext } from "./Python3Parser";
import { StmtContext } from "./Python3Parser";
import { Simple_stmtContext } from "./Python3Parser";
import { Small_stmtContext } from "./Python3Parser";
import { Expr_stmtContext } from "./Python3Parser";
import { AnnassignContext } from "./Python3Parser";
import { Testlist_star_exprContext } from "./Python3Parser";
import { AugassignContext } from "./Python3Parser";
import { Del_stmtContext } from "./Python3Parser";
import { Pass_stmtContext } from "./Python3Parser";
import { Flow_stmtContext } from "./Python3Parser";
import { Break_stmtContext } from "./Python3Parser";
import { Continue_stmtContext } from "./Python3Parser";
import { Return_stmtContext } from "./Python3Parser";
import { Yield_stmtContext } from "./Python3Parser";
import { Raise_stmtContext } from "./Python3Parser";
import { Import_stmtContext } from "./Python3Parser";
import { Import_nameContext } from "./Python3Parser";
import { Import_fromContext } from "./Python3Parser";
import { Import_as_nameContext } from "./Python3Parser";
import { Dotted_as_nameContext } from "./Python3Parser";
import { Import_as_namesContext } from "./Python3Parser";
import { Dotted_as_namesContext } from "./Python3Parser";
import { Dotted_nameContext } from "./Python3Parser";
import { Global_stmtContext } from "./Python3Parser";
import { Nonlocal_stmtContext } from "./Python3Parser";
import { Assert_stmtContext } from "./Python3Parser";
import { Compound_stmtContext } from "./Python3Parser";
import { Async_stmtContext } from "./Python3Parser";
import { If_stmtContext } from "./Python3Parser";
import { While_stmtContext } from "./Python3Parser";
import { For_stmtContext } from "./Python3Parser";
import { Try_stmtContext } from "./Python3Parser";
import { With_stmtContext } from "./Python3Parser";
import { With_itemContext } from "./Python3Parser";
import { Except_clauseContext } from "./Python3Parser";
import { SuiteContext } from "./Python3Parser";
import { TestContext } from "./Python3Parser";
import { Test_nocondContext } from "./Python3Parser";
import { LambdefContext } from "./Python3Parser";
import { Lambdef_nocondContext } from "./Python3Parser";
import { Or_testContext } from "./Python3Parser";
import { And_testContext } from "./Python3Parser";
import { Not_testContext } from "./Python3Parser";
import { ComparisonContext } from "./Python3Parser";
import { Comp_opContext } from "./Python3Parser";
import { Star_exprContext } from "./Python3Parser";
import { ExprContext } from "./Python3Parser";
import { Xor_exprContext } from "./Python3Parser";
import { And_exprContext } from "./Python3Parser";
import { Shift_exprContext } from "./Python3Parser";
import { Arith_exprContext } from "./Python3Parser";
import { TermContext } from "./Python3Parser";
import { FactorContext } from "./Python3Parser";
import { PowerContext } from "./Python3Parser";
import { Atom_exprContext } from "./Python3Parser";
import { AtomContext } from "./Python3Parser";
import { Testlist_compContext } from "./Python3Parser";
import { TrailerContext } from "./Python3Parser";
import { SubscriptlistContext } from "./Python3Parser";
import { SubscriptContext } from "./Python3Parser";
import { SliceopContext } from "./Python3Parser";
import { ExprlistContext } from "./Python3Parser";
import { TestlistContext } from "./Python3Parser";
import { DictorsetmakerContext } from "./Python3Parser";
import { ClassdefContext } from "./Python3Parser";
import { ArglistContext } from "./Python3Parser";
import { ArgumentContext } from "./Python3Parser";
import { Comp_iterContext } from "./Python3Parser";
import { Comp_forContext } from "./Python3Parser";
import { Comp_ifContext } from "./Python3Parser";
import { Encoding_declContext } from "./Python3Parser";
import { Yield_exprContext } from "./Python3Parser";
import { Yield_argContext } from "./Python3Parser";
/**
* This interface defines a complete generic visitor for a parse tree produced
* by `Python3Parser`.
*
* @param <Result> The return type of the visit operation. Use `void` for
* operations with no return type.
*/
export interface Python3Visitor<Result> extends ParseTreeVisitor<Result> {
/**
* Visit a parse tree produced by `Python3Parser.single_input`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSingle_input?: (ctx: Single_inputContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.file_input`.
* @param ctx the parse tree
* @return the visitor result
*/
visitFile_input?: (ctx: File_inputContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.eval_input`.
* @param ctx the parse tree
* @return the visitor result
*/
visitEval_input?: (ctx: Eval_inputContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.decorator`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDecorator?: (ctx: DecoratorContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.decorators`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDecorators?: (ctx: DecoratorsContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.decorated`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDecorated?: (ctx: DecoratedContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.async_funcdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAsync_funcdef?: (ctx: Async_funcdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.funcdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitFuncdef?: (ctx: FuncdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.parameters`.
* @param ctx the parse tree
* @return the visitor result
*/
visitParameters?: (ctx: ParametersContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.typedargslist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTypedargslist?: (ctx: TypedargslistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.tfpdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTfpdef?: (ctx: TfpdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.varargslist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitVarargslist?: (ctx: VarargslistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.vfpdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitVfpdef?: (ctx: VfpdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitStmt?: (ctx: StmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.simple_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSimple_stmt?: (ctx: Simple_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.small_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSmall_stmt?: (ctx: Small_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.expr_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitExpr_stmt?: (ctx: Expr_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.annassign`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAnnassign?: (ctx: AnnassignContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.testlist_star_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTestlist_star_expr?: (ctx: Testlist_star_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.augassign`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAugassign?: (ctx: AugassignContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.del_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDel_stmt?: (ctx: Del_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.pass_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitPass_stmt?: (ctx: Pass_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.flow_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitFlow_stmt?: (ctx: Flow_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.break_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitBreak_stmt?: (ctx: Break_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.continue_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitContinue_stmt?: (ctx: Continue_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.return_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitReturn_stmt?: (ctx: Return_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.yield_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitYield_stmt?: (ctx: Yield_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.raise_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitRaise_stmt?: (ctx: Raise_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.import_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitImport_stmt?: (ctx: Import_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.import_name`.
* @param ctx the parse tree
* @return the visitor result
*/
visitImport_name?: (ctx: Import_nameContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.import_from`.
* @param ctx the parse tree
* @return the visitor result
*/
visitImport_from?: (ctx: Import_fromContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.import_as_name`.
* @param ctx the parse tree
* @return the visitor result
*/
visitImport_as_name?: (ctx: Import_as_nameContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.dotted_as_name`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDotted_as_name?: (ctx: Dotted_as_nameContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.import_as_names`.
* @param ctx the parse tree
* @return the visitor result
*/
visitImport_as_names?: (ctx: Import_as_namesContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.dotted_as_names`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDotted_as_names?: (ctx: Dotted_as_namesContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.dotted_name`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDotted_name?: (ctx: Dotted_nameContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.global_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitGlobal_stmt?: (ctx: Global_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.nonlocal_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitNonlocal_stmt?: (ctx: Nonlocal_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.assert_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAssert_stmt?: (ctx: Assert_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.compound_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitCompound_stmt?: (ctx: Compound_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.async_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAsync_stmt?: (ctx: Async_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.if_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitIf_stmt?: (ctx: If_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.while_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitWhile_stmt?: (ctx: While_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.for_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitFor_stmt?: (ctx: For_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.try_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTry_stmt?: (ctx: Try_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.with_stmt`.
* @param ctx the parse tree
* @return the visitor result
*/
visitWith_stmt?: (ctx: With_stmtContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.with_item`.
* @param ctx the parse tree
* @return the visitor result
*/
visitWith_item?: (ctx: With_itemContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.except_clause`.
* @param ctx the parse tree
* @return the visitor result
*/
visitExcept_clause?: (ctx: Except_clauseContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.suite`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSuite?: (ctx: SuiteContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.test`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTest?: (ctx: TestContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.test_nocond`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTest_nocond?: (ctx: Test_nocondContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.lambdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitLambdef?: (ctx: LambdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.lambdef_nocond`.
* @param ctx the parse tree
* @return the visitor result
*/
visitLambdef_nocond?: (ctx: Lambdef_nocondContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.or_test`.
* @param ctx the parse tree
* @return the visitor result
*/
visitOr_test?: (ctx: Or_testContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.and_test`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAnd_test?: (ctx: And_testContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.not_test`.
* @param ctx the parse tree
* @return the visitor result
*/
visitNot_test?: (ctx: Not_testContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.comparison`.
* @param ctx the parse tree
* @return the visitor result
*/
visitComparison?: (ctx: ComparisonContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.comp_op`.
* @param ctx the parse tree
* @return the visitor result
*/
visitComp_op?: (ctx: Comp_opContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.star_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitStar_expr?: (ctx: Star_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitExpr?: (ctx: ExprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.xor_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitXor_expr?: (ctx: Xor_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.and_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAnd_expr?: (ctx: And_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.shift_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitShift_expr?: (ctx: Shift_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.arith_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitArith_expr?: (ctx: Arith_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.term`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTerm?: (ctx: TermContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.factor`.
* @param ctx the parse tree
* @return the visitor result
*/
visitFactor?: (ctx: FactorContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.power`.
* @param ctx the parse tree
* @return the visitor result
*/
visitPower?: (ctx: PowerContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.atom_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAtom_expr?: (ctx: Atom_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.atom`.
* @param ctx the parse tree
* @return the visitor result
*/
visitAtom?: (ctx: AtomContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.testlist_comp`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTestlist_comp?: (ctx: Testlist_compContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.trailer`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTrailer?: (ctx: TrailerContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.subscriptlist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSubscriptlist?: (ctx: SubscriptlistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.subscript`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSubscript?: (ctx: SubscriptContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.sliceop`.
* @param ctx the parse tree
* @return the visitor result
*/
visitSliceop?: (ctx: SliceopContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.exprlist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitExprlist?: (ctx: ExprlistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.testlist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitTestlist?: (ctx: TestlistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.dictorsetmaker`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDictorsetmaker?: (ctx: DictorsetmakerContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.classdef`.
* @param ctx the parse tree
* @return the visitor result
*/
visitClassdef?: (ctx: ClassdefContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.arglist`.
* @param ctx the parse tree
* @return the visitor result
*/
visitArglist?: (ctx: ArglistContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.argument`.
* @param ctx the parse tree
* @return the visitor result
*/
visitArgument?: (ctx: ArgumentContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.comp_iter`.
* @param ctx the parse tree
* @return the visitor result
*/
visitComp_iter?: (ctx: Comp_iterContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.comp_for`.
* @param ctx the parse tree
* @return the visitor result
*/
visitComp_for?: (ctx: Comp_forContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.comp_if`.
* @param ctx the parse tree
* @return the visitor result
*/
visitComp_if?: (ctx: Comp_ifContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.encoding_decl`.
* @param ctx the parse tree
* @return the visitor result
*/
visitEncoding_decl?: (ctx: Encoding_declContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.yield_expr`.
* @param ctx the parse tree
* @return the visitor result
*/
visitYield_expr?: (ctx: Yield_exprContext) => Result;
/**
* Visit a parse tree produced by `Python3Parser.yield_arg`.
* @param ctx the parse tree
* @return the visitor result
*/
visitYield_arg?: (ctx: Yield_argContext) => Result;
}

View File

@@ -0,0 +1,3 @@
"use strict";
// Generated from src/parser/Python3.g4 by ANTLR 4.7.3-SNAPSHOT
Object.defineProperty(exports, "__esModule", { value: true });

View File

@@ -0,0 +1,79 @@
{
"name": "python-ast",
"version": "0.1.0",
"description": "Python Parser for JavaScript/TypeScript, based on antlr4ts",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"license": "MIT",
"repository": "https://github.com/lexanth/python-ast",
"author": "Alex Anthony <alex.anthony2@gmail.com>",
"keywords": [
"ast",
"python",
"parser",
"antlr",
"antlr4ts",
"abstract syntax tree",
"parse python",
"python parser"
],
"files": [
"dist"
],
"scripts": {
"build": "ts-node build.ts",
"update": "ts-node update.ts",
"format": "prettier --write build.ts update.ts src/**.ts **/*.json",
"prepublish": "yarn build",
"precommit": "lint-staged",
"postcommit": "git update-index --again",
"test": "jest"
},
"devDependencies": {
"@types/jest": "^26.0.4",
"@types/node": "^14.0.22",
"@types/node-fetch": "^2.5.7",
"@types/rimraf": "^3.0.0",
"@typescript-eslint/eslint-plugin": "^3.8.0",
"@typescript-eslint/parser": "^3.8.0",
"antlr4ts-cli": "^0.5.0-alpha.3",
"eslint": "^7.6.0",
"husky": "^4.2.5",
"jest": "^26.1.0",
"lint-staged": "^10.2.11",
"node-fetch": "^2.6.0",
"prettier": "^2.0.5",
"rimraf": "^3.0.2",
"ts-jest": "^26.1.1",
"ts-node": "^8.10.2",
"typescript": "^3.9.6"
},
"dependencies": {
"antlr4ts": "^0.5.0-alpha.3"
},
"lint-staged": {
"*.{js,json}": [
"prettier --write",
"git add"
],
"*.ts": [
"prettier --write",
"eslint --fix",
"git add"
]
},
"jest": {
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
]
}
}