wdlparse-0.1.0/0000755000076500000240000000000013770744643013604 5ustar wlgaostaff00000000000000wdlparse-0.1.0/PKG-INFO0000644000076500000240000000042613770744643014703 0ustar wlgaostaff00000000000000Metadata-Version: 2.1 Name: wdlparse Version: 0.1.0 Summary: WDL parsers for Python. Home-page: https://github.com/DataBiosphere/wdl-parsers Author: William Gao Author-email: wlgao@ucsc.edu License: Apache License v2.0 Description: UNKNOWN Platform: UNKNOWN Provides-Extra: dev wdlparse-0.1.0/README.md0000644000076500000240000000105113770740627015056 0ustar wlgaostaff00000000000000# wdl-parsers A Python package that provides the generated `Hermes` and `Antlr4` WDL parsers for Python. | Version | Parser(s) | Module | |---------|-----------|--------| | draft-2 | Hermes | draft2 | | v1.0 | Antlr4 | v1 | | development | Antlr4 |dev | ## Installation #### Install via pip `pip install wdlparse` ## Usage ```python # to be written. ``` ## License The grammar files come from [openwdl/wdl](https://github.com/openwdl/wdl/) under the [BSD 3-Clause "New" or "Revised" License](https://github.com/openwdl/wdl/blob/main/LICENSE). wdlparse-0.1.0/setup.cfg0000644000076500000240000000004613770744643015425 0ustar wlgaostaff00000000000000[egg_info] tag_build = tag_date = 0 wdlparse-0.1.0/setup.py0000644000076500000240000000102013770743166015306 0ustar wlgaostaff00000000000000from setuptools import setup, find_packages install_requires = [ "antlr4-python3-runtime==4.8", ] dev_requires = [ "hermes-parser==2.0rc6", ] setup(name='wdlparse', version='0.1.0', description='WDL parsers for Python.', url='https://github.com/DataBiosphere/wdl-parsers', author='William Gao', author_email='wlgao@ucsc.edu', license="Apache License v2.0", packages=find_packages('.'), install_requires=install_requires, extras_require={'dev': dev_requires}) wdlparse-0.1.0/wdlparse/0000755000076500000240000000000013770744643015425 5ustar wlgaostaff00000000000000wdlparse-0.1.0/wdlparse/__init__.py0000644000076500000240000000116513770743255017537 0ustar wlgaostaff00000000000000# Copyright (C) 2021 Regents of the University of California # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. __version__ = '0.1.0' wdlparse-0.1.0/wdlparse/dev/0000755000076500000240000000000013770744643016203 5ustar wlgaostaff00000000000000wdlparse-0.1.0/wdlparse/dev/WdlLexer.py0000644000076500000240000011675313770744637020323 0ustar wlgaostaff00000000000000# Generated from WdlLexer.g4 by ANTLR 4.8 from antlr4 import * from io import StringIO from typing.io import TextIO import sys def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2X") buf.write("\u03ca\b\1\b\1\b\1\b\1\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4") buf.write("\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13") buf.write("\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4") buf.write("\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26") buf.write("\t\26\4\27\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33") buf.write("\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4") buf.write("\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*") buf.write("\t*\4+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61") buf.write("\4\62\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67") buf.write("\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?") buf.write("\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\t") buf.write("H\4I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\t") buf.write("Q\4R\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\t") buf.write("Z\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4") buf.write("c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\tk\4") buf.write("l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4") buf.write("u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\3") buf.write("\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3") buf.write("\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3") buf.write("\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7") buf.write("\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3") buf.write("\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3") buf.write("\f\3\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3") buf.write("\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20") buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") buf.write("\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23") buf.write("\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24") buf.write("\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26") buf.write("\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27") buf.write("\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\32") buf.write("\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33") buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35") buf.write("\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37") buf.write("\3\37\3\37\3\37\3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3") buf.write("!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3$\3$\3$\3") buf.write("$\3$\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\7&\u01f8") buf.write("\n&\f&\16&\u01fb\13&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'") buf.write("\3\'\3\'\3\'\3\'\3\'\7\'\u020c\n\'\f\'\16\'\u020f\13\'") buf.write("\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\5)\u021c\n)\3*\3") buf.write("*\5*\u0220\n*\3+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u022b\n+\3") buf.write(",\3,\3-\3-\3.\3.\3.\3.\3/\3/\3/\3/\3\60\3\60\3\61\3\61") buf.write("\3\62\3\62\3\63\3\63\3\64\3\64\3\65\3\65\3\66\3\66\3\66") buf.write("\3\67\3\67\3\67\38\38\38\39\39\39\3:\3:\3;\3;\3;\3<\3") buf.write("<\3<\3=\3=\3>\3>\3?\3?\3@\3@\3A\3A\3B\3B\3C\3C\3D\3D\3") buf.write("E\3E\3F\3F\3G\3G\3H\3H\3I\3I\3I\3I\3J\3J\3J\3J\3K\6K\u027a") buf.write("\nK\rK\16K\u027b\3K\3K\3L\3L\7L\u0282\nL\fL\16L\u0285") buf.write("\13L\3L\3L\3M\3M\3N\3N\3N\3N\3N\3O\3O\3O\3O\3P\3P\3P\3") buf.write("P\3Q\3Q\3Q\3Q\3R\3R\3R\3R\5R\u02a0\nR\3R\3R\3R\3S\3S\3") buf.write("S\3S\3S\3S\3S\5S\u02ac\nS\5S\u02ae\nS\5S\u02b0\nS\5S\u02b2") buf.write("\nS\3S\3S\3T\3T\3T\3T\3T\3U\6U\u02bc\nU\rU\16U\u02bd\3") buf.write("V\3V\3V\3V\3V\3W\3W\3W\3W\3X\3X\3X\3X\3Y\3Y\3Y\3Y\3Z\3") buf.write("Z\3Z\3Z\5Z\u02d5\nZ\3Z\3Z\3Z\3[\3[\3[\3[\3[\3[\3[\5[\u02e1") buf.write("\n[\5[\u02e3\n[\5[\u02e5\n[\3[\3[\3\\\3\\\3\\\3\\\3\\") buf.write("\3]\6]\u02ef\n]\r]\16]\u02f0\3]\3]\3^\3^\3^\3^\3^\3^\3") buf.write("^\5^\u02fc\n^\5^\u02fe\n^\5^\u0300\n^\5^\u0302\n^\3_\3") buf.write("_\3_\3_\3_\3`\3`\3`\3`\3a\3a\3a\3a\3b\3b\3b\3b\3b\3b\3") buf.write("c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3") buf.write("e\3e\3e\3e\3e\7e\u032e\ne\fe\16e\u0331\13e\5e\u0333\n") buf.write("e\3e\3e\3f\6f\u0338\nf\rf\16f\u0339\3f\3f\3g\3g\3g\3g") buf.write("\3g\3h\3h\3h\3h\3h\3h\3h\5h\u034a\nh\5h\u034c\nh\5h\u034e") buf.write("\nh\5h\u0350\nh\3i\3i\3i\3i\3j\3j\3j\3j\3k\3k\3k\3k\3") buf.write("l\3l\3l\3l\5l\u0362\nl\3l\3l\3m\3m\3m\3m\3n\6n\u036b\n") buf.write("n\rn\16n\u036c\3o\6o\u0370\no\ro\16o\u0371\3o\3o\3p\6") buf.write("p\u0377\np\rp\16p\u0378\3p\3p\3q\3q\7q\u037f\nq\fq\16") buf.write("q\u0382\13q\3r\3r\3s\6s\u0387\ns\rs\16s\u0388\3t\3t\3") buf.write("t\3t\5t\u038f\nt\3t\5t\u0392\nt\3t\3t\3t\5t\u0397\nt\3") buf.write("u\3u\3u\3u\3u\5u\u039e\nu\5u\u03a0\nu\5u\u03a2\nu\5u\u03a4") buf.write("\nu\3v\3v\3w\3w\3x\6x\u03ab\nx\rx\16x\u03ac\3y\3y\3y\5") buf.write("y\u03b2\ny\3y\3y\5y\u03b6\ny\3z\3z\3z\3{\3{\5{\u03bd\n") buf.write("{\3{\3{\5{\u03c1\n{\5{\u03c3\n{\3|\3|\3|\3}\3}\3}\2\2") buf.write("~\b\3\n\4\f\5\16\6\20\7\22\b\24\t\26\n\30\13\32\f\34\r") buf.write("\36\16 \17\"\20$\21&\22(\23*\24,\25.\26\60\27\62\30\64") buf.write("\31\66\328\33:\34<\35>\36@\37B D!F\"H#J$L%N&P\'R(T)V*") buf.write("X+Z,\\-^.`/b\60d\61f\62h\63j\64l\65n\66p\67r8t9v:x;z<") buf.write("|=~>\u0080?\u0082@\u0084A\u0086B\u0088C\u008aD\u008cE") buf.write("\u008eF\u0090G\u0092H\u0094I\u0096J\u0098K\u009aL\u009c") buf.write("M\u009eN\u00a0\2\u00a2\2\u00a4\2\u00a6\2\u00a8\2\u00aa") buf.write("\2\u00ac\2\u00aeO\u00b0\2\u00b2\2\u00b4\2\u00b6\2\u00b8") buf.write("\2\u00ba\2\u00bc\2\u00be\2\u00c0P\u00c2\2\u00c4\2\u00c6") buf.write("\2\u00c8\2\u00caW\u00ccX\u00ce\2\u00d0\2\u00d2\2\u00d4") buf.write("Q\u00d6\2\u00d8\2\u00da\2\u00dcR\u00deS\u00e0T\u00e2U") buf.write("\u00e4V\u00e6\2\u00e8\2\u00ea\2\u00ec\2\u00ee\2\u00f0") buf.write("\2\u00f2\2\u00f4\2\u00f6\2\u00f8\2\u00fa\2\u00fc\2\u00fe") buf.write("\2\b\2\3\4\5\6\7\24\5\2\13\f\17\17\"\"\4\2\f\f\17\17\b") buf.write("\2\f\f\17\17&&))}}\u0080\u0080\b\2\f\f\17\17$$&&}}\u0080") buf.write("\u0080\5\2@@}}\u0080\u0080\5\2&&}}\177\u0080\4\2\13\13") buf.write("\"\"\6\2/\60\62;C\\c|\4\2C\\c|\6\2\62;C\\aac|\n\2$$))") buf.write("^^ddhhppttvv\3\2\62\65\3\2\629\5\2\62;CHch\3\2\62;\4\2") buf.write("--//\4\2--gg\4\2GGgg\2\u03e9\2\b\3\2\2\2\2\n\3\2\2\2\2") buf.write("\f\3\2\2\2\2\16\3\2\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24") buf.write("\3\2\2\2\2\26\3\2\2\2\2\30\3\2\2\2\2\32\3\2\2\2\2\34\3") buf.write("\2\2\2\2\36\3\2\2\2\2 \3\2\2\2\2\"\3\2\2\2\2$\3\2\2\2") buf.write("\2&\3\2\2\2\2(\3\2\2\2\2*\3\2\2\2\2,\3\2\2\2\2.\3\2\2") buf.write("\2\2\60\3\2\2\2\2\62\3\2\2\2\2\64\3\2\2\2\2\66\3\2\2\2") buf.write("\28\3\2\2\2\2:\3\2\2\2\2<\3\2\2\2\2>\3\2\2\2\2@\3\2\2") buf.write("\2\2B\3\2\2\2\2D\3\2\2\2\2F\3\2\2\2\2H\3\2\2\2\2J\3\2") buf.write("\2\2\2L\3\2\2\2\2N\3\2\2\2\2P\3\2\2\2\2R\3\2\2\2\2T\3") buf.write("\2\2\2\2V\3\2\2\2\2X\3\2\2\2\2Z\3\2\2\2\2\\\3\2\2\2\2") buf.write("^\3\2\2\2\2`\3\2\2\2\2b\3\2\2\2\2d\3\2\2\2\2f\3\2\2\2") buf.write("\2h\3\2\2\2\2j\3\2\2\2\2l\3\2\2\2\2n\3\2\2\2\2p\3\2\2") buf.write("\2\2r\3\2\2\2\2t\3\2\2\2\2v\3\2\2\2\2x\3\2\2\2\2z\3\2") buf.write("\2\2\2|\3\2\2\2\2~\3\2\2\2\2\u0080\3\2\2\2\2\u0082\3\2") buf.write("\2\2\2\u0084\3\2\2\2\2\u0086\3\2\2\2\2\u0088\3\2\2\2\2") buf.write("\u008a\3\2\2\2\2\u008c\3\2\2\2\2\u008e\3\2\2\2\2\u0090") buf.write("\3\2\2\2\2\u0092\3\2\2\2\2\u0094\3\2\2\2\2\u0096\3\2\2") buf.write("\2\2\u0098\3\2\2\2\2\u009a\3\2\2\2\2\u009c\3\2\2\2\2\u009e") buf.write("\3\2\2\2\3\u00a0\3\2\2\2\3\u00a2\3\2\2\2\3\u00a4\3\2\2") buf.write("\2\3\u00a6\3\2\2\2\3\u00a8\3\2\2\2\3\u00aa\3\2\2\2\3\u00ac") buf.write("\3\2\2\2\3\u00ae\3\2\2\2\4\u00b0\3\2\2\2\4\u00b2\3\2\2") buf.write("\2\4\u00b4\3\2\2\2\4\u00b6\3\2\2\2\4\u00b8\3\2\2\2\4\u00ba") buf.write("\3\2\2\2\4\u00bc\3\2\2\2\4\u00be\3\2\2\2\5\u00c0\3\2\2") buf.write("\2\5\u00c2\3\2\2\2\5\u00c4\3\2\2\2\5\u00c6\3\2\2\2\5\u00c8") buf.write("\3\2\2\2\5\u00ca\3\2\2\2\5\u00cc\3\2\2\2\5\u00ce\3\2\2") buf.write("\2\5\u00d0\3\2\2\2\6\u00d2\3\2\2\2\6\u00d4\3\2\2\2\6\u00d6") buf.write("\3\2\2\2\6\u00d8\3\2\2\2\6\u00da\3\2\2\2\6\u00dc\3\2\2") buf.write("\2\6\u00de\3\2\2\2\6\u00e0\3\2\2\2\7\u00e2\3\2\2\2\7\u00e4") buf.write("\3\2\2\2\b\u0100\3\2\2\2\n\u010a\3\2\2\2\f\u0111\3\2\2") buf.write("\2\16\u011a\3\2\2\2\20\u011f\3\2\2\2\22\u0126\3\2\2\2") buf.write("\24\u012e\3\2\2\2\26\u0133\3\2\2\2\30\u0136\3\2\2\2\32") buf.write("\u013b\3\2\2\2\34\u0140\3\2\2\2\36\u0146\3\2\2\2 \u0149") buf.write("\3\2\2\2\"\u014c\3\2\2\2$\u0152\3\2\2\2&\u0159\3\2\2\2") buf.write("(\u0168\3\2\2\2*\u016d\3\2\2\2,\u0173\3\2\2\2.\u017b\3") buf.write("\2\2\2\60\u017f\3\2\2\2\62\u0189\3\2\2\2\64\u0190\3\2") buf.write("\2\2\66\u0194\3\2\2\28\u019a\3\2\2\2:\u01a5\3\2\2\2<\u01b1") buf.write("\3\2\2\2>\u01b9\3\2\2\2@\u01bd\3\2\2\2B\u01c3\3\2\2\2") buf.write("D\u01ca\3\2\2\2F\u01cf\3\2\2\2H\u01d9\3\2\2\2J\u01df\3") buf.write("\2\2\2L\u01e3\3\2\2\2N\u01e8\3\2\2\2P\u01ee\3\2\2\2R\u0202") buf.write("\3\2\2\2T\u0214\3\2\2\2V\u021b\3\2\2\2X\u021f\3\2\2\2") buf.write("Z\u022a\3\2\2\2\\\u022c\3\2\2\2^\u022e\3\2\2\2`\u0230") buf.write("\3\2\2\2b\u0234\3\2\2\2d\u0238\3\2\2\2f\u023a\3\2\2\2") buf.write("h\u023c\3\2\2\2j\u023e\3\2\2\2l\u0240\3\2\2\2n\u0242\3") buf.write("\2\2\2p\u0244\3\2\2\2r\u0247\3\2\2\2t\u024a\3\2\2\2v\u024d") buf.write("\3\2\2\2x\u0250\3\2\2\2z\u0252\3\2\2\2|\u0255\3\2\2\2") buf.write("~\u0258\3\2\2\2\u0080\u025a\3\2\2\2\u0082\u025c\3\2\2") buf.write("\2\u0084\u025e\3\2\2\2\u0086\u0260\3\2\2\2\u0088\u0262") buf.write("\3\2\2\2\u008a\u0264\3\2\2\2\u008c\u0266\3\2\2\2\u008e") buf.write("\u0268\3\2\2\2\u0090\u026a\3\2\2\2\u0092\u026c\3\2\2\2") buf.write("\u0094\u026e\3\2\2\2\u0096\u0270\3\2\2\2\u0098\u0274\3") buf.write("\2\2\2\u009a\u0279\3\2\2\2\u009c\u027f\3\2\2\2\u009e\u0288") buf.write("\3\2\2\2\u00a0\u028a\3\2\2\2\u00a2\u028f\3\2\2\2\u00a4") buf.write("\u0293\3\2\2\2\u00a6\u0297\3\2\2\2\u00a8\u029f\3\2\2\2") buf.write("\u00aa\u02a4\3\2\2\2\u00ac\u02b5\3\2\2\2\u00ae\u02bb\3") buf.write("\2\2\2\u00b0\u02bf\3\2\2\2\u00b2\u02c4\3\2\2\2\u00b4\u02c8") buf.write("\3\2\2\2\u00b6\u02cc\3\2\2\2\u00b8\u02d4\3\2\2\2\u00ba") buf.write("\u02d9\3\2\2\2\u00bc\u02e8\3\2\2\2\u00be\u02ee\3\2\2\2") buf.write("\u00c0\u02f4\3\2\2\2\u00c2\u0303\3\2\2\2\u00c4\u0308\3") buf.write("\2\2\2\u00c6\u030c\3\2\2\2\u00c8\u0310\3\2\2\2\u00ca\u0316") buf.write("\3\2\2\2\u00cc\u031d\3\2\2\2\u00ce\u0332\3\2\2\2\u00d0") buf.write("\u0337\3\2\2\2\u00d2\u033d\3\2\2\2\u00d4\u0342\3\2\2\2") buf.write("\u00d6\u0351\3\2\2\2\u00d8\u0355\3\2\2\2\u00da\u0359\3") buf.write("\2\2\2\u00dc\u0361\3\2\2\2\u00de\u0365\3\2\2\2\u00e0\u036a") buf.write("\3\2\2\2\u00e2\u036f\3\2\2\2\u00e4\u0376\3\2\2\2\u00e6") buf.write("\u037c\3\2\2\2\u00e8\u0383\3\2\2\2\u00ea\u0386\3\2\2\2") buf.write("\u00ec\u0396\3\2\2\2\u00ee\u0398\3\2\2\2\u00f0\u03a5\3") buf.write("\2\2\2\u00f2\u03a7\3\2\2\2\u00f4\u03aa\3\2\2\2\u00f6\u03b5") buf.write("\3\2\2\2\u00f8\u03b7\3\2\2\2\u00fa\u03c2\3\2\2\2\u00fc") buf.write("\u03c4\3\2\2\2\u00fe\u03c7\3\2\2\2\u0100\u0101\7x\2\2") buf.write("\u0101\u0102\7g\2\2\u0102\u0103\7t\2\2\u0103\u0104\7u") buf.write("\2\2\u0104\u0105\7k\2\2\u0105\u0106\7q\2\2\u0106\u0107") buf.write("\7p\2\2\u0107\u0108\3\2\2\2\u0108\u0109\b\2\2\2\u0109") buf.write("\t\3\2\2\2\u010a\u010b\7k\2\2\u010b\u010c\7o\2\2\u010c") buf.write("\u010d\7r\2\2\u010d\u010e\7q\2\2\u010e\u010f\7t\2\2\u010f") buf.write("\u0110\7v\2\2\u0110\13\3\2\2\2\u0111\u0112\7y\2\2\u0112") buf.write("\u0113\7q\2\2\u0113\u0114\7t\2\2\u0114\u0115\7m\2\2\u0115") buf.write("\u0116\7h\2\2\u0116\u0117\7n\2\2\u0117\u0118\7q\2\2\u0118") buf.write("\u0119\7y\2\2\u0119\r\3\2\2\2\u011a\u011b\7v\2\2\u011b") buf.write("\u011c\7c\2\2\u011c\u011d\7u\2\2\u011d\u011e\7m\2\2\u011e") buf.write("\17\3\2\2\2\u011f\u0120\7u\2\2\u0120\u0121\7v\2\2\u0121") buf.write("\u0122\7t\2\2\u0122\u0123\7w\2\2\u0123\u0124\7e\2\2\u0124") buf.write("\u0125\7v\2\2\u0125\21\3\2\2\2\u0126\u0127\7u\2\2\u0127") buf.write("\u0128\7e\2\2\u0128\u0129\7c\2\2\u0129\u012a\7v\2\2\u012a") buf.write("\u012b\7v\2\2\u012b\u012c\7g\2\2\u012c\u012d\7t\2\2\u012d") buf.write("\23\3\2\2\2\u012e\u012f\7e\2\2\u012f\u0130\7c\2\2\u0130") buf.write("\u0131\7n\2\2\u0131\u0132\7n\2\2\u0132\25\3\2\2\2\u0133") buf.write("\u0134\7k\2\2\u0134\u0135\7h\2\2\u0135\27\3\2\2\2\u0136") buf.write("\u0137\7v\2\2\u0137\u0138\7j\2\2\u0138\u0139\7g\2\2\u0139") buf.write("\u013a\7p\2\2\u013a\31\3\2\2\2\u013b\u013c\7g\2\2\u013c") buf.write("\u013d\7n\2\2\u013d\u013e\7u\2\2\u013e\u013f\7g\2\2\u013f") buf.write("\33\3\2\2\2\u0140\u0141\7c\2\2\u0141\u0142\7n\2\2\u0142") buf.write("\u0143\7k\2\2\u0143\u0144\7c\2\2\u0144\u0145\7u\2\2\u0145") buf.write("\35\3\2\2\2\u0146\u0147\7c\2\2\u0147\u0148\7u\2\2\u0148") buf.write("\37\3\2\2\2\u0149\u014a\7k\2\2\u014a\u014b\7p\2\2\u014b") buf.write("!\3\2\2\2\u014c\u014d\7k\2\2\u014d\u014e\7p\2\2\u014e") buf.write("\u014f\7r\2\2\u014f\u0150\7w\2\2\u0150\u0151\7v\2\2\u0151") buf.write("#\3\2\2\2\u0152\u0153\7q\2\2\u0153\u0154\7w\2\2\u0154") buf.write("\u0155\7v\2\2\u0155\u0156\7r\2\2\u0156\u0157\7w\2\2\u0157") buf.write("\u0158\7v\2\2\u0158%\3\2\2\2\u0159\u015a\7r\2\2\u015a") buf.write("\u015b\7c\2\2\u015b\u015c\7t\2\2\u015c\u015d\7c\2\2\u015d") buf.write("\u015e\7o\2\2\u015e\u015f\7g\2\2\u015f\u0160\7v\2\2\u0160") buf.write("\u0161\7g\2\2\u0161\u0162\7t\2\2\u0162\u0163\7a\2\2\u0163") buf.write("\u0164\7o\2\2\u0164\u0165\7g\2\2\u0165\u0166\7v\2\2\u0166") buf.write("\u0167\7c\2\2\u0167\'\3\2\2\2\u0168\u0169\7o\2\2\u0169") buf.write("\u016a\7g\2\2\u016a\u016b\7v\2\2\u016b\u016c\7c\2\2\u016c") buf.write(")\3\2\2\2\u016d\u016e\7j\2\2\u016e\u016f\7k\2\2\u016f") buf.write("\u0170\7p\2\2\u0170\u0171\7v\2\2\u0171\u0172\7u\2\2\u0172") buf.write("+\3\2\2\2\u0173\u0174\7t\2\2\u0174\u0175\7w\2\2\u0175") buf.write("\u0176\7p\2\2\u0176\u0177\7v\2\2\u0177\u0178\7k\2\2\u0178") buf.write("\u0179\7o\2\2\u0179\u017a\7g\2\2\u017a-\3\2\2\2\u017b") buf.write("\u017c\7e\2\2\u017c\u017d\7r\2\2\u017d\u017e\7w\2\2\u017e") buf.write("/\3\2\2\2\u017f\u0180\7e\2\2\u0180\u0181\7q\2\2\u0181") buf.write("\u0182\7p\2\2\u0182\u0183\7v\2\2\u0183\u0184\7c\2\2\u0184") buf.write("\u0185\7k\2\2\u0185\u0186\7p\2\2\u0186\u0187\7g\2\2\u0187") buf.write("\u0188\7t\2\2\u0188\61\3\2\2\2\u0189\u018a\7o\2\2\u018a") buf.write("\u018b\7g\2\2\u018b\u018c\7o\2\2\u018c\u018d\7q\2\2\u018d") buf.write("\u018e\7t\2\2\u018e\u018f\7{\2\2\u018f\63\3\2\2\2\u0190") buf.write("\u0191\7i\2\2\u0191\u0192\7r\2\2\u0192\u0193\7w\2\2\u0193") buf.write("\65\3\2\2\2\u0194\u0195\7f\2\2\u0195\u0196\7k\2\2\u0196") buf.write("\u0197\7u\2\2\u0197\u0198\7m\2\2\u0198\u0199\7u\2\2\u0199") buf.write("\67\3\2\2\2\u019a\u019b\7o\2\2\u019b\u019c\7c\2\2\u019c") buf.write("\u019d\7z\2\2\u019d\u019e\7T\2\2\u019e\u019f\7g\2\2\u019f") buf.write("\u01a0\7v\2\2\u01a0\u01a1\7t\2\2\u01a1\u01a2\7k\2\2\u01a2") buf.write("\u01a3\7g\2\2\u01a3\u01a4\7u\2\2\u01a49\3\2\2\2\u01a5") buf.write("\u01a6\7t\2\2\u01a6\u01a7\7g\2\2\u01a7\u01a8\7v\2\2\u01a8") buf.write("\u01a9\7w\2\2\u01a9\u01aa\7t\2\2\u01aa\u01ab\7p\2\2\u01ab") buf.write("\u01ac\7E\2\2\u01ac\u01ad\7q\2\2\u01ad\u01ae\7f\2\2\u01ae") buf.write("\u01af\7g\2\2\u01af\u01b0\7u\2\2\u01b0;\3\2\2\2\u01b1") buf.write("\u01b2\7D\2\2\u01b2\u01b3\7q\2\2\u01b3\u01b4\7q\2\2\u01b4") buf.write("\u01b5\7n\2\2\u01b5\u01b6\7g\2\2\u01b6\u01b7\7c\2\2\u01b7") buf.write("\u01b8\7p\2\2\u01b8=\3\2\2\2\u01b9\u01ba\7K\2\2\u01ba") buf.write("\u01bb\7p\2\2\u01bb\u01bc\7v\2\2\u01bc?\3\2\2\2\u01bd") buf.write("\u01be\7H\2\2\u01be\u01bf\7n\2\2\u01bf\u01c0\7q\2\2\u01c0") buf.write("\u01c1\7c\2\2\u01c1\u01c2\7v\2\2\u01c2A\3\2\2\2\u01c3") buf.write("\u01c4\7U\2\2\u01c4\u01c5\7v\2\2\u01c5\u01c6\7t\2\2\u01c6") buf.write("\u01c7\7k\2\2\u01c7\u01c8\7p\2\2\u01c8\u01c9\7i\2\2\u01c9") buf.write("C\3\2\2\2\u01ca\u01cb\7H\2\2\u01cb\u01cc\7k\2\2\u01cc") buf.write("\u01cd\7n\2\2\u01cd\u01ce\7g\2\2\u01ceE\3\2\2\2\u01cf") buf.write("\u01d0\7F\2\2\u01d0\u01d1\7k\2\2\u01d1\u01d2\7t\2\2\u01d2") buf.write("\u01d3\7g\2\2\u01d3\u01d4\7e\2\2\u01d4\u01d5\7v\2\2\u01d5") buf.write("\u01d6\7q\2\2\u01d6\u01d7\7t\2\2\u01d7\u01d8\7{\2\2\u01d8") buf.write("G\3\2\2\2\u01d9\u01da\7C\2\2\u01da\u01db\7t\2\2\u01db") buf.write("\u01dc\7t\2\2\u01dc\u01dd\7c\2\2\u01dd\u01de\7{\2\2\u01de") buf.write("I\3\2\2\2\u01df\u01e0\7O\2\2\u01e0\u01e1\7c\2\2\u01e1") buf.write("\u01e2\7r\2\2\u01e2K\3\2\2\2\u01e3\u01e4\7R\2\2\u01e4") buf.write("\u01e5\7c\2\2\u01e5\u01e6\7k\2\2\u01e6\u01e7\7t\2\2\u01e7") buf.write("M\3\2\2\2\u01e8\u01e9\7c\2\2\u01e9\u01ea\7h\2\2\u01ea") buf.write("\u01eb\7v\2\2\u01eb\u01ec\7g\2\2\u01ec\u01ed\7t\2\2\u01ed") buf.write("O\3\2\2\2\u01ee\u01ef\7e\2\2\u01ef\u01f0\7q\2\2\u01f0") buf.write("\u01f1\7o\2\2\u01f1\u01f2\7o\2\2\u01f2\u01f3\7c\2\2\u01f3") buf.write("\u01f4\7p\2\2\u01f4\u01f5\7f\2\2\u01f5\u01f9\3\2\2\2\u01f6") buf.write("\u01f8\7\"\2\2\u01f7\u01f6\3\2\2\2\u01f8\u01fb\3\2\2\2") buf.write("\u01f9\u01f7\3\2\2\2\u01f9\u01fa\3\2\2\2\u01fa\u01fc\3") buf.write("\2\2\2\u01fb\u01f9\3\2\2\2\u01fc\u01fd\7>\2\2\u01fd\u01fe") buf.write("\7>\2\2\u01fe\u01ff\7>\2\2\u01ff\u0200\3\2\2\2\u0200\u0201") buf.write("\b&\3\2\u0201Q\3\2\2\2\u0202\u0203\7e\2\2\u0203\u0204") buf.write("\7q\2\2\u0204\u0205\7o\2\2\u0205\u0206\7o\2\2\u0206\u0207") buf.write("\7c\2\2\u0207\u0208\7p\2\2\u0208\u0209\7f\2\2\u0209\u020d") buf.write("\3\2\2\2\u020a\u020c\7\"\2\2\u020b\u020a\3\2\2\2\u020c") buf.write("\u020f\3\2\2\2\u020d\u020b\3\2\2\2\u020d\u020e\3\2\2\2") buf.write("\u020e\u0210\3\2\2\2\u020f\u020d\3\2\2\2\u0210\u0211\7") buf.write("}\2\2\u0211\u0212\3\2\2\2\u0212\u0213\b\'\4\2\u0213S\3") buf.write("\2\2\2\u0214\u0215\7P\2\2\u0215\u0216\7q\2\2\u0216\u0217") buf.write("\7p\2\2\u0217\u0218\7g\2\2\u0218U\3\2\2\2\u0219\u021c") buf.write("\5\u00f4x\2\u021a\u021c\5\u00f8z\2\u021b\u0219\3\2\2\2") buf.write("\u021b\u021a\3\2\2\2\u021cW\3\2\2\2\u021d\u0220\5\u00fc") buf.write("|\2\u021e\u0220\5\u00fa{\2\u021f\u021d\3\2\2\2\u021f\u021e") buf.write("\3\2\2\2\u0220Y\3\2\2\2\u0221\u0222\7v\2\2\u0222\u0223") buf.write("\7t\2\2\u0223\u0224\7w\2\2\u0224\u022b\7g\2\2\u0225\u0226") buf.write("\7h\2\2\u0226\u0227\7c\2\2\u0227\u0228\7n\2\2\u0228\u0229") buf.write("\7u\2\2\u0229\u022b\7g\2\2\u022a\u0221\3\2\2\2\u022a\u0225") buf.write("\3\2\2\2\u022b[\3\2\2\2\u022c\u022d\7*\2\2\u022d]\3\2") buf.write("\2\2\u022e\u022f\7+\2\2\u022f_\3\2\2\2\u0230\u0231\7}") buf.write("\2\2\u0231\u0232\3\2\2\2\u0232\u0233\b.\5\2\u0233a\3\2") buf.write("\2\2\u0234\u0235\7\177\2\2\u0235\u0236\3\2\2\2\u0236\u0237") buf.write("\b/\6\2\u0237c\3\2\2\2\u0238\u0239\7]\2\2\u0239e\3\2\2") buf.write("\2\u023a\u023b\7_\2\2\u023bg\3\2\2\2\u023c\u023d\7^\2") buf.write("\2\u023di\3\2\2\2\u023e\u023f\7<\2\2\u023fk\3\2\2\2\u0240") buf.write("\u0241\7>\2\2\u0241m\3\2\2\2\u0242\u0243\7@\2\2\u0243") buf.write("o\3\2\2\2\u0244\u0245\7@\2\2\u0245\u0246\7?\2\2\u0246") buf.write("q\3\2\2\2\u0247\u0248\7>\2\2\u0248\u0249\7?\2\2\u0249") buf.write("s\3\2\2\2\u024a\u024b\7?\2\2\u024b\u024c\7?\2\2\u024c") buf.write("u\3\2\2\2\u024d\u024e\7#\2\2\u024e\u024f\7?\2\2\u024f") buf.write("w\3\2\2\2\u0250\u0251\7?\2\2\u0251y\3\2\2\2\u0252\u0253") buf.write("\7(\2\2\u0253\u0254\7(\2\2\u0254{\3\2\2\2\u0255\u0256") buf.write("\7~\2\2\u0256\u0257\7~\2\2\u0257}\3\2\2\2\u0258\u0259") buf.write("\7A\2\2\u0259\177\3\2\2\2\u025a\u025b\7,\2\2\u025b\u0081") buf.write("\3\2\2\2\u025c\u025d\7-\2\2\u025d\u0083\3\2\2\2\u025e") buf.write("\u025f\7/\2\2\u025f\u0085\3\2\2\2\u0260\u0261\7&\2\2\u0261") buf.write("\u0087\3\2\2\2\u0262\u0263\7.\2\2\u0263\u0089\3\2\2\2") buf.write("\u0264\u0265\7=\2\2\u0265\u008b\3\2\2\2\u0266\u0267\7") buf.write("\60\2\2\u0267\u008d\3\2\2\2\u0268\u0269\7#\2\2\u0269\u008f") buf.write("\3\2\2\2\u026a\u026b\7\u0080\2\2\u026b\u0091\3\2\2\2\u026c") buf.write("\u026d\7\61\2\2\u026d\u0093\3\2\2\2\u026e\u026f\7\'\2") buf.write("\2\u026f\u0095\3\2\2\2\u0270\u0271\7)\2\2\u0271\u0272") buf.write("\3\2\2\2\u0272\u0273\bI\7\2\u0273\u0097\3\2\2\2\u0274") buf.write("\u0275\7$\2\2\u0275\u0276\3\2\2\2\u0276\u0277\bJ\b\2\u0277") buf.write("\u0099\3\2\2\2\u0278\u027a\t\2\2\2\u0279\u0278\3\2\2\2") buf.write("\u027a\u027b\3\2\2\2\u027b\u0279\3\2\2\2\u027b\u027c\3") buf.write("\2\2\2\u027c\u027d\3\2\2\2\u027d\u027e\bK\t\2\u027e\u009b") buf.write("\3\2\2\2\u027f\u0283\7%\2\2\u0280\u0282\n\3\2\2\u0281") buf.write("\u0280\3\2\2\2\u0282\u0285\3\2\2\2\u0283\u0281\3\2\2\2") buf.write("\u0283\u0284\3\2\2\2\u0284\u0286\3\2\2\2\u0285\u0283\3") buf.write("\2\2\2\u0286\u0287\bL\t\2\u0287\u009d\3\2\2\2\u0288\u0289") buf.write("\5\u00e6q\2\u0289\u009f\3\2\2\2\u028a\u028b\7^\2\2\u028b") buf.write("\u028c\13\2\2\2\u028c\u028d\3\2\2\2\u028d\u028e\bN\n\2") buf.write("\u028e\u00a1\3\2\2\2\u028f\u0290\7&\2\2\u0290\u0291\3") buf.write("\2\2\2\u0291\u0292\bO\n\2\u0292\u00a3\3\2\2\2\u0293\u0294") buf.write("\7\u0080\2\2\u0294\u0295\3\2\2\2\u0295\u0296\bP\n\2\u0296") buf.write("\u00a5\3\2\2\2\u0297\u0298\7}\2\2\u0298\u0299\3\2\2\2") buf.write("\u0299\u029a\bQ\n\2\u029a\u00a7\3\2\2\2\u029b\u029c\7") buf.write("&\2\2\u029c\u02a0\7}\2\2\u029d\u029e\7\u0080\2\2\u029e") buf.write("\u02a0\7}\2\2\u029f\u029b\3\2\2\2\u029f\u029d\3\2\2\2") buf.write("\u02a0\u02a1\3\2\2\2\u02a1\u02a2\bR\5\2\u02a2\u02a3\b") buf.write("R\13\2\u02a3\u00a9\3\2\2\2\u02a4\u02a5\7^\2\2\u02a5\u02a6") buf.write("\7w\2\2\u02a6\u02b1\3\2\2\2\u02a7\u02af\5\u00f0v\2\u02a8") buf.write("\u02ad\5\u00f0v\2\u02a9\u02ab\5\u00f0v\2\u02aa\u02ac\5") buf.write("\u00f0v\2\u02ab\u02aa\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac") buf.write("\u02ae\3\2\2\2\u02ad\u02a9\3\2\2\2\u02ad\u02ae\3\2\2\2") buf.write("\u02ae\u02b0\3\2\2\2\u02af\u02a8\3\2\2\2\u02af\u02b0\3") buf.write("\2\2\2\u02b0\u02b2\3\2\2\2\u02b1\u02a7\3\2\2\2\u02b1\u02b2") buf.write("\3\2\2\2\u02b2\u02b3\3\2\2\2\u02b3\u02b4\bS\n\2\u02b4") buf.write("\u00ab\3\2\2\2\u02b5\u02b6\7)\2\2\u02b6\u02b7\3\2\2\2") buf.write("\u02b7\u02b8\bT\6\2\u02b8\u02b9\bT\f\2\u02b9\u00ad\3\2") buf.write("\2\2\u02ba\u02bc\n\4\2\2\u02bb\u02ba\3\2\2\2\u02bc\u02bd") buf.write("\3\2\2\2\u02bd\u02bb\3\2\2\2\u02bd\u02be\3\2\2\2\u02be") buf.write("\u00af\3\2\2\2\u02bf\u02c0\7^\2\2\u02c0\u02c1\13\2\2\2") buf.write("\u02c1\u02c2\3\2\2\2\u02c2\u02c3\bV\n\2\u02c3\u00b1\3") buf.write("\2\2\2\u02c4\u02c5\7\u0080\2\2\u02c5\u02c6\3\2\2\2\u02c6") buf.write("\u02c7\bW\n\2\u02c7\u00b3\3\2\2\2\u02c8\u02c9\7&\2\2\u02c9") buf.write("\u02ca\3\2\2\2\u02ca\u02cb\bX\n\2\u02cb\u00b5\3\2\2\2") buf.write("\u02cc\u02cd\7}\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02cf\b") buf.write("Y\n\2\u02cf\u00b7\3\2\2\2\u02d0\u02d1\7&\2\2\u02d1\u02d5") buf.write("\7}\2\2\u02d2\u02d3\7\u0080\2\2\u02d3\u02d5\7}\2\2\u02d4") buf.write("\u02d0\3\2\2\2\u02d4\u02d2\3\2\2\2\u02d5\u02d6\3\2\2\2") buf.write("\u02d6\u02d7\bZ\5\2\u02d7\u02d8\bZ\13\2\u02d8\u00b9\3") buf.write("\2\2\2\u02d9\u02da\7^\2\2\u02da\u02db\7w\2\2\u02db\u02dc") buf.write("\3\2\2\2\u02dc\u02e4\5\u00f0v\2\u02dd\u02e2\5\u00f0v\2") buf.write("\u02de\u02e0\5\u00f0v\2\u02df\u02e1\5\u00f0v\2\u02e0\u02df") buf.write("\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e3\3\2\2\2\u02e2") buf.write("\u02de\3\2\2\2\u02e2\u02e3\3\2\2\2\u02e3\u02e5\3\2\2\2") buf.write("\u02e4\u02dd\3\2\2\2\u02e4\u02e5\3\2\2\2\u02e5\u02e6\3") buf.write("\2\2\2\u02e6\u02e7\b[\n\2\u02e7\u00bb\3\2\2\2\u02e8\u02e9") buf.write("\7$\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02eb\b\\\6\2\u02eb") buf.write("\u02ec\b\\\r\2\u02ec\u00bd\3\2\2\2\u02ed\u02ef\n\5\2\2") buf.write("\u02ee\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u02ee\3") buf.write("\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f3") buf.write("\b]\n\2\u02f3\u00bf\3\2\2\2\u02f4\u02f5\7^\2\2\u02f5\u02f6") buf.write("\7w\2\2\u02f6\u0301\3\2\2\2\u02f7\u02ff\5\u00f0v\2\u02f8") buf.write("\u02fd\5\u00f0v\2\u02f9\u02fb\5\u00f0v\2\u02fa\u02fc\5") buf.write("\u00f0v\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc") buf.write("\u02fe\3\2\2\2\u02fd\u02f9\3\2\2\2\u02fd\u02fe\3\2\2\2") buf.write("\u02fe\u0300\3\2\2\2\u02ff\u02f8\3\2\2\2\u02ff\u0300\3") buf.write("\2\2\2\u0300\u0302\3\2\2\2\u0301\u02f7\3\2\2\2\u0301\u0302") buf.write("\3\2\2\2\u0302\u00c1\3\2\2\2\u0303\u0304\7^\2\2\u0304") buf.write("\u0305\13\2\2\2\u0305\u0306\3\2\2\2\u0306\u0307\b_\16") buf.write("\2\u0307\u00c3\3\2\2\2\u0308\u0309\7\u0080\2\2\u0309\u030a") buf.write("\3\2\2\2\u030a\u030b\b`\16\2\u030b\u00c5\3\2\2\2\u030c") buf.write("\u030d\7}\2\2\u030d\u030e\3\2\2\2\u030e\u030f\ba\16\2") buf.write("\u030f\u00c7\3\2\2\2\u0310\u0311\7\u0080\2\2\u0311\u0312") buf.write("\7}\2\2\u0312\u0313\3\2\2\2\u0313\u0314\bb\5\2\u0314\u0315") buf.write("\bb\13\2\u0315\u00c9\3\2\2\2\u0316\u0317\7^\2\2\u0317") buf.write("\u0318\7@\2\2\u0318\u0319\7@\2\2\u0319\u031a\7@\2\2\u031a") buf.write("\u031b\3\2\2\2\u031b\u031c\bc\16\2\u031c\u00cb\3\2\2\2") buf.write("\u031d\u031e\7@\2\2\u031e\u031f\7@\2\2\u031f\u0320\7@") buf.write("\2\2\u0320\u0321\3\2\2\2\u0321\u0322\bd\6\2\u0322\u0323") buf.write("\bd\17\2\u0323\u00cd\3\2\2\2\u0324\u0333\7@\2\2\u0325") buf.write("\u0326\7@\2\2\u0326\u0333\7@\2\2\u0327\u0328\7@\2\2\u0328") buf.write("\u0329\7@\2\2\u0329\u032a\7@\2\2\u032a\u032b\7@\2\2\u032b") buf.write("\u032f\3\2\2\2\u032c\u032e\7@\2\2\u032d\u032c\3\2\2\2") buf.write("\u032e\u0331\3\2\2\2\u032f\u032d\3\2\2\2\u032f\u0330\3") buf.write("\2\2\2\u0330\u0333\3\2\2\2\u0331\u032f\3\2\2\2\u0332\u0324") buf.write("\3\2\2\2\u0332\u0325\3\2\2\2\u0332\u0327\3\2\2\2\u0333") buf.write("\u0334\3\2\2\2\u0334\u0335\be\16\2\u0335\u00cf\3\2\2\2") buf.write("\u0336\u0338\n\6\2\2\u0337\u0336\3\2\2\2\u0338\u0339\3") buf.write("\2\2\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2\u033a\u033b") buf.write("\3\2\2\2\u033b\u033c\bf\16\2\u033c\u00d1\3\2\2\2\u033d") buf.write("\u033e\7^\2\2\u033e\u033f\13\2\2\2\u033f\u0340\3\2\2\2") buf.write("\u0340\u0341\bg\16\2\u0341\u00d3\3\2\2\2\u0342\u0343\7") buf.write("^\2\2\u0343\u0344\7w\2\2\u0344\u034f\3\2\2\2\u0345\u034d") buf.write("\5\u00f0v\2\u0346\u034b\5\u00f0v\2\u0347\u0349\5\u00f0") buf.write("v\2\u0348\u034a\5\u00f0v\2\u0349\u0348\3\2\2\2\u0349\u034a") buf.write("\3\2\2\2\u034a\u034c\3\2\2\2\u034b\u0347\3\2\2\2\u034b") buf.write("\u034c\3\2\2\2\u034c\u034e\3\2\2\2\u034d\u0346\3\2\2\2") buf.write("\u034d\u034e\3\2\2\2\u034e\u0350\3\2\2\2\u034f\u0345\3") buf.write("\2\2\2\u034f\u0350\3\2\2\2\u0350\u00d5\3\2\2\2\u0351\u0352") buf.write("\7\u0080\2\2\u0352\u0353\3\2\2\2\u0353\u0354\bi\16\2\u0354") buf.write("\u00d7\3\2\2\2\u0355\u0356\7&\2\2\u0356\u0357\3\2\2\2") buf.write("\u0357\u0358\bj\16\2\u0358\u00d9\3\2\2\2\u0359\u035a\7") buf.write("}\2\2\u035a\u035b\3\2\2\2\u035b\u035c\bk\16\2\u035c\u00db") buf.write("\3\2\2\2\u035d\u035e\7&\2\2\u035e\u0362\7}\2\2\u035f\u0360") buf.write("\7\u0080\2\2\u0360\u0362\7}\2\2\u0361\u035d\3\2\2\2\u0361") buf.write("\u035f\3\2\2\2\u0362\u0363\3\2\2\2\u0363\u0364\bl\5\2") buf.write("\u0364\u00dd\3\2\2\2\u0365\u0366\7\177\2\2\u0366\u0367") buf.write("\3\2\2\2\u0367\u0368\bm\6\2\u0368\u00df\3\2\2\2\u0369") buf.write("\u036b\n\7\2\2\u036a\u0369\3\2\2\2\u036b\u036c\3\2\2\2") buf.write("\u036c\u036a\3\2\2\2\u036c\u036d\3\2\2\2\u036d\u00e1\3") buf.write("\2\2\2\u036e\u0370\t\b\2\2\u036f\u036e\3\2\2\2\u0370\u0371") buf.write("\3\2\2\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372") buf.write("\u0373\3\2\2\2\u0373\u0374\bo\t\2\u0374\u00e3\3\2\2\2") buf.write("\u0375\u0377\t\t\2\2\u0376\u0375\3\2\2\2\u0377\u0378\3") buf.write("\2\2\2\u0378\u0376\3\2\2\2\u0378\u0379\3\2\2\2\u0379\u037a") buf.write("\3\2\2\2\u037a\u037b\bp\6\2\u037b\u00e5\3\2\2\2\u037c") buf.write("\u0380\5\u00e8r\2\u037d\u037f\5\u00eas\2\u037e\u037d\3") buf.write("\2\2\2\u037f\u0382\3\2\2\2\u0380\u037e\3\2\2\2\u0380\u0381") buf.write("\3\2\2\2\u0381\u00e7\3\2\2\2\u0382\u0380\3\2\2\2\u0383") buf.write("\u0384\t\n\2\2\u0384\u00e9\3\2\2\2\u0385\u0387\t\13\2") buf.write("\2\u0386\u0385\3\2\2\2\u0387\u0388\3\2\2\2\u0388\u0386") buf.write("\3\2\2\2\u0388\u0389\3\2\2\2\u0389\u00eb\3\2\2\2\u038a") buf.write("\u038b\7^\2\2\u038b\u0397\t\f\2\2\u038c\u0391\7^\2\2\u038d") buf.write("\u038f\t\r\2\2\u038e\u038d\3\2\2\2\u038e\u038f\3\2\2\2") buf.write("\u038f\u0390\3\2\2\2\u0390\u0392\t\16\2\2\u0391\u038e") buf.write("\3\2\2\2\u0391\u0392\3\2\2\2\u0392\u0393\3\2\2\2\u0393") buf.write("\u0397\t\16\2\2\u0394\u0395\7^\2\2\u0395\u0397\5\u00ee") buf.write("u\2\u0396\u038a\3\2\2\2\u0396\u038c\3\2\2\2\u0396\u0394") buf.write("\3\2\2\2\u0397\u00ed\3\2\2\2\u0398\u03a3\7w\2\2\u0399") buf.write("\u03a1\5\u00f0v\2\u039a\u039f\5\u00f0v\2\u039b\u039d\5") buf.write("\u00f0v\2\u039c\u039e\5\u00f0v\2\u039d\u039c\3\2\2\2\u039d") buf.write("\u039e\3\2\2\2\u039e\u03a0\3\2\2\2\u039f\u039b\3\2\2\2") buf.write("\u039f\u03a0\3\2\2\2\u03a0\u03a2\3\2\2\2\u03a1\u039a\3") buf.write("\2\2\2\u03a1\u03a2\3\2\2\2\u03a2\u03a4\3\2\2\2\u03a3\u0399") buf.write("\3\2\2\2\u03a3\u03a4\3\2\2\2\u03a4\u00ef\3\2\2\2\u03a5") buf.write("\u03a6\t\17\2\2\u03a6\u00f1\3\2\2\2\u03a7\u03a8\t\20\2") buf.write("\2\u03a8\u00f3\3\2\2\2\u03a9\u03ab\5\u00f2w\2\u03aa\u03a9") buf.write("\3\2\2\2\u03ab\u03ac\3\2\2\2\u03ac\u03aa\3\2\2\2\u03ac") buf.write("\u03ad\3\2\2\2\u03ad\u00f5\3\2\2\2\u03ae\u03af\5\u00f4") buf.write("x\2\u03af\u03b1\7\60\2\2\u03b0\u03b2\5\u00f4x\2\u03b1") buf.write("\u03b0\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2\u03b6\3\2\2\2") buf.write("\u03b3\u03b4\7\60\2\2\u03b4\u03b6\5\u00f4x\2\u03b5\u03ae") buf.write("\3\2\2\2\u03b5\u03b3\3\2\2\2\u03b6\u00f7\3\2\2\2\u03b7") buf.write("\u03b8\t\21\2\2\u03b8\u03b9\5\u00f4x\2\u03b9\u00f9\3\2") buf.write("\2\2\u03ba\u03bc\5\u00f4x\2\u03bb\u03bd\5\u00fe}\2\u03bc") buf.write("\u03bb\3\2\2\2\u03bc\u03bd\3\2\2\2\u03bd\u03c3\3\2\2\2") buf.write("\u03be\u03c0\5\u00f6y\2\u03bf\u03c1\5\u00fe}\2\u03c0\u03bf") buf.write("\3\2\2\2\u03c0\u03c1\3\2\2\2\u03c1\u03c3\3\2\2\2\u03c2") buf.write("\u03ba\3\2\2\2\u03c2\u03be\3\2\2\2\u03c3\u00fb\3\2\2\2") buf.write("\u03c4\u03c5\t\22\2\2\u03c5\u03c6\5\u00fa{\2\u03c6\u00fd") buf.write("\3\2\2\2\u03c7\u03c8\t\23\2\2\u03c8\u03c9\5\u00f8z\2\u03c9") buf.write("\u00ff\3\2\2\28\2\3\4\5\6\7\u01f9\u020d\u021b\u021f\u022a") buf.write("\u027b\u0283\u029f\u02ab\u02ad\u02af\u02b1\u02bd\u02d4") buf.write("\u02e0\u02e2\u02e4\u02f0\u02fb\u02fd\u02ff\u0301\u032f") buf.write("\u0332\u0339\u0349\u034b\u034d\u034f\u0361\u036c\u0371") buf.write("\u0378\u0380\u0388\u038e\u0391\u0396\u039d\u039f\u03a1") buf.write("\u03a3\u03ac\u03b1\u03b5\u03bc\u03c0\u03c2\20\7\7\2\7") buf.write("\5\2\7\6\2\7\2\2\6\2\2\7\3\2\7\4\2\2\3\2\tO\2\tR\2\tJ") buf.write("\2\tK\2\tT\2\tS\2") return buf.getvalue() class WdlLexer(Lexer): atn = ATNDeserializer().deserialize(serializedATN()) decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] WdlComments = 2 SkipChannel = 3 SquoteInterpolatedString = 1 DquoteInterpolatedString = 2 HereDocCommand = 3 Command = 4 Version = 5 VERSION = 1 IMPORT = 2 WORKFLOW = 3 TASK = 4 STRUCT = 5 SCATTER = 6 CALL = 7 IF = 8 THEN = 9 ELSE = 10 ALIAS = 11 AS = 12 In = 13 INPUT = 14 OUTPUT = 15 PARAMETERMETA = 16 META = 17 HINTS = 18 RUNTIME = 19 RUNTIMECPU = 20 RUNTIMECONTAINER = 21 RUNTIMEMEMORY = 22 RUNTIMEGPU = 23 RUNTIMEDISKS = 24 RUNTIMEMAXRETRIES = 25 RUNTIMERETURNCODES = 26 BOOLEAN = 27 INT = 28 FLOAT = 29 STRING = 30 FILE = 31 DIRECTORY = 32 ARRAY = 33 MAP = 34 PAIR = 35 AFTER = 36 HEREDOC_COMMAND = 37 COMMAND = 38 NONELITERAL = 39 IntLiteral = 40 FloatLiteral = 41 BoolLiteral = 42 LPAREN = 43 RPAREN = 44 LBRACE = 45 RBRACE = 46 LBRACK = 47 RBRACK = 48 ESC = 49 COLON = 50 LT = 51 GT = 52 GTE = 53 LTE = 54 EQUALITY = 55 NOTEQUAL = 56 EQUAL = 57 AND = 58 OR = 59 OPTIONAL = 60 STAR = 61 PLUS = 62 MINUS = 63 DOLLAR = 64 COMMA = 65 SEMI = 66 DOT = 67 NOT = 68 TILDE = 69 DIVIDE = 70 MOD = 71 SQUOTE = 72 DQUOTE = 73 WHITESPACE = 74 COMMENT = 75 Identifier = 76 StringPart = 77 HereDocUnicodeEscape = 78 CommandUnicodeEscape = 79 StringCommandStart = 80 EndCommand = 81 CommandStringPart = 82 VERSION_WHITESPACE = 83 RELEASE_VERSION = 84 HereDocEscapedEnd = 85 EndHereDocCommand = 86 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", u"WdlComments", u"SkipChannel" ] modeNames = [ "DEFAULT_MODE", "SquoteInterpolatedString", "DquoteInterpolatedString", "HereDocCommand", "Command", "Version" ] literalNames = [ "", "'version'", "'import'", "'workflow'", "'task'", "'struct'", "'scatter'", "'call'", "'if'", "'then'", "'else'", "'alias'", "'as'", "'in'", "'input'", "'output'", "'parameter_meta'", "'meta'", "'hints'", "'runtime'", "'cpu'", "'container'", "'memory'", "'gpu'", "'disks'", "'maxRetries'", "'returnCodes'", "'Boolean'", "'Int'", "'Float'", "'String'", "'File'", "'Directory'", "'Array'", "'Map'", "'Pair'", "'after'", "'None'", "'('", "')'", "'['", "']'", "'\\'", "':'", "'<'", "'>'", "'>='", "'<='", "'=='", "'!='", "'='", "'&&'", "'||'", "'?'", "'*'", "'+'", "'-'", "','", "';'", "'.'", "'!'", "'/'", "'%'", "'\\>>>'", "'>>>'" ] symbolicNames = [ "", "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "HINTS", "RUNTIME", "RUNTIMECPU", "RUNTIMECONTAINER", "RUNTIMEMEMORY", "RUNTIMEGPU", "RUNTIMEDISKS", "RUNTIMEMAXRETRIES", "RUNTIMERETURNCODES", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "DIRECTORY", "ARRAY", "MAP", "PAIR", "AFTER", "HEREDOC_COMMAND", "COMMAND", "NONELITERAL", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "COMMENT", "Identifier", "StringPart", "HereDocUnicodeEscape", "CommandUnicodeEscape", "StringCommandStart", "EndCommand", "CommandStringPart", "VERSION_WHITESPACE", "RELEASE_VERSION", "HereDocEscapedEnd", "EndHereDocCommand" ] ruleNames = [ "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "HINTS", "RUNTIME", "RUNTIMECPU", "RUNTIMECONTAINER", "RUNTIMEMEMORY", "RUNTIMEGPU", "RUNTIMEDISKS", "RUNTIMEMAXRETRIES", "RUNTIMERETURNCODES", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "DIRECTORY", "ARRAY", "MAP", "PAIR", "AFTER", "HEREDOC_COMMAND", "COMMAND", "NONELITERAL", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "COMMENT", "Identifier", "SQuoteEscapedChar", "SQuoteDollarString", "SQuoteTildeString", "SQuoteCurlyString", "SQuoteCommandStart", "SQuoteUnicodeEscape", "EndSquote", "StringPart", "DQuoteEscapedChar", "DQuoteTildeString", "DQuoteDollarString", "DQUoteCurlString", "DQuoteCommandStart", "DQuoteUnicodeEscape", "EndDQuote", "DQuoteStringPart", "HereDocUnicodeEscape", "HereDocEscapedChar", "HereDocTildeString", "HereDocCurlyString", "HereDocCurlyStringCommand", "HereDocEscapedEnd", "EndHereDocCommand", "HereDocEscape", "HereDocStringPart", "CommandEscapedChar", "CommandUnicodeEscape", "CommandTildeString", "CommandDollarString", "CommandCurlyString", "StringCommandStart", "EndCommand", "CommandStringPart", "VERSION_WHITESPACE", "RELEASE_VERSION", "CompleteIdentifier", "IdentifierStart", "IdentifierFollow", "EscapeSequence", "UnicodeEsc", "HexDigit", "Digit", "Digits", "Decimals", "SignedDigits", "FloatFragment", "SignedFloatFragment", "EXP" ] grammarFileName = "WdlLexer.g4" def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.8") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None wdlparse-0.1.0/wdlparse/dev/WdlParser.py0000644000076500000240000071465413770744640020476 0ustar wlgaostaff00000000000000# Generated from WdlParser.g4 by ANTLR 4.8 # encoding: utf-8 from antlr4 import * from io import StringIO import sys if sys.version_info[1] > 5: from typing import TextIO else: from typing.io import TextIO def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3X") buf.write("\u02d5\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") buf.write(";\4<\t<\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3") buf.write("\3\5\3\u0085\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3") buf.write("\5\3\5\5\5\u0092\n\5\3\6\3\6\3\6\3\6\5\6\u0098\n\6\3\7") buf.write("\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\3\t\5\t\u00a4\n\t\3\n") buf.write("\3\n\3\13\7\13\u00a9\n\13\f\13\16\13\u00ac\13\13\3\f\3") buf.write("\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\7\16\u00b8\n\16") buf.write("\f\16\16\16\u00bb\13\16\3\16\3\16\3\16\3\16\3\16\7\16") buf.write("\u00c2\n\16\f\16\16\16\u00c5\13\16\3\16\3\16\5\16\u00c9") buf.write("\n\16\3\17\3\17\3\17\3\17\3\17\5\17\u00d0\n\17\3\20\3") buf.write("\20\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\7\22\u00dc") buf.write("\n\22\f\22\16\22\u00df\13\22\3\23\3\23\3\23\3\23\3\23") buf.write("\3\23\7\23\u00e7\n\23\f\23\16\23\u00ea\13\23\3\24\3\24") buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24") buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\7\24\u0101\n") buf.write("\24\f\24\16\24\u0104\13\24\3\25\3\25\3\25\3\25\3\25\3") buf.write("\25\3\25\3\25\3\25\7\25\u010f\n\25\f\25\16\25\u0112\13") buf.write("\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") buf.write("\3\26\3\26\7\26\u0120\n\26\f\26\16\26\u0123\13\26\3\27") buf.write("\3\27\3\30\3\30\3\30\3\30\3\30\3\30\7\30\u012d\n\30\f") buf.write("\30\16\30\u0130\13\30\5\30\u0132\n\30\3\30\3\30\3\30\3") buf.write("\30\3\30\7\30\u0139\n\30\f\30\16\30\u013c\13\30\7\30\u013e") buf.write("\n\30\f\30\16\30\u0141\13\30\3\30\3\30\3\30\3\30\3\30") buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") buf.write("\7\30\u0153\n\30\f\30\16\30\u0156\13\30\7\30\u0158\n\30") buf.write("\f\30\16\30\u015b\13\30\3\30\3\30\3\30\3\30\3\30\3\30") buf.write("\3\30\3\30\3\30\3\30\7\30\u0167\n\30\f\30\16\30\u016a") buf.write("\13\30\7\30\u016c\n\30\f\30\16\30\u016f\13\30\3\30\3\30") buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") buf.write("\3\30\3\30\3\30\3\30\3\30\5\30\u0183\n\30\3\30\3\30\3") buf.write("\30\3\30\3\30\3\30\3\30\3\30\7\30\u018d\n\30\f\30\16\30") buf.write("\u0190\13\30\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3") buf.write("\33\3\33\3\33\3\34\3\34\3\34\5\34\u01a0\n\34\3\34\7\34") buf.write("\u01a3\n\34\f\34\16\34\u01a6\13\34\3\35\3\35\3\35\3\35") buf.write("\7\35\u01ac\n\35\f\35\16\35\u01af\13\35\3\35\3\35\3\36") buf.write("\3\36\3\36\3\36\3\37\3\37\3\37\7\37\u01ba\n\37\f\37\16") buf.write("\37\u01bd\13\37\3\37\3\37\3 \3 \3 \7 \u01c4\n \f \16 ") buf.write("\u01c7\13 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3") buf.write("!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u01e0\n!\3\"\3\"\3\"\7\"") buf.write("\u01e5\n\"\f\"\16\"\u01e8\13\"\3\"\3\"\3#\3#\3#\3#\3$") buf.write("\3$\3$\7$\u01f3\n$\f$\16$\u01f6\13$\3$\3$\3%\3%\3%\7%") buf.write("\u01fd\n%\f%\16%\u0200\13%\3%\3%\3&\3&\3&\7&\u0207\n&") buf.write("\f&\16&\u020a\13&\3&\3&\3\'\3\'\3\'\7\'\u0211\n\'\f\'") buf.write("\16\'\u0214\13\'\3\'\3\'\3\'\3\'\3\'\7\'\u021b\n\'\f\'") buf.write("\16\'\u021e\13\'\3\'\3\'\5\'\u0222\n\'\3(\7(\u0225\n(") buf.write("\f(\16(\u0228\13(\3)\3)\3)\3)\3*\3*\3*\3+\3+\3+\3+\3+") buf.write("\3+\3+\3+\5+\u0239\n+\3,\3,\3,\3,\6,\u023f\n,\r,\16,\u0240") buf.write("\3,\3,\3-\3-\3-\3-\5-\u0249\n-\3.\3.\3.\3/\3/\3/\3/\3") buf.write("\60\3\60\3\60\3\60\3\60\7\60\u0257\n\60\f\60\16\60\u025a") buf.write("\13\60\3\61\3\61\5\61\u025e\n\61\3\61\3\61\3\62\3\62\3") buf.write("\62\3\63\3\63\3\63\7\63\u0268\n\63\f\63\16\63\u026b\13") buf.write("\63\3\64\3\64\3\64\5\64\u0270\n\64\3\64\7\64\u0273\n\64") buf.write("\f\64\16\64\u0276\13\64\3\64\5\64\u0279\n\64\3\65\3\65") buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\7\65\u0283\n\65\f\65\16") buf.write("\65\u0286\13\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66") buf.write("\7\66\u0290\n\66\f\66\16\66\u0293\13\66\3\66\3\66\3\67") buf.write("\3\67\3\67\7\67\u029a\n\67\f\67\16\67\u029d\13\67\3\67") buf.write("\3\67\38\38\38\78\u02a4\n8\f8\168\u02a7\138\38\38\39\3") buf.write("9\39\39\39\59\u02b0\n9\3:\3:\3:\3:\7:\u02b6\n:\f:\16:") buf.write("\u02b9\13:\3:\3:\3;\3;\3;\3;\5;\u02c1\n;\3<\3<\7<\u02c5") buf.write("\n<\f<\16<\u02c8\13<\3<\3<\7<\u02cc\n<\f<\16<\u02cf\13") buf.write("<\5<\u02d1\n<\3<\3<\3<\2\b\"$&(*.=\2\4\6\b\n\f\16\20\22") buf.write("\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPR") buf.write("TVXZ\\^`bdfhjlnprtv\2\5\4\2\35\"NN\3\2*+\3\2@A\2\u02fb") buf.write("\2x\3\2\2\2\4\177\3\2\2\2\6\u0086\3\2\2\2\b\u0091\3\2") buf.write("\2\2\n\u0097\3\2\2\2\f\u0099\3\2\2\2\16\u009c\3\2\2\2") buf.write("\20\u00a3\3\2\2\2\22\u00a5\3\2\2\2\24\u00aa\3\2\2\2\26") buf.write("\u00ad\3\2\2\2\30\u00b1\3\2\2\2\32\u00c8\3\2\2\2\34\u00cf") buf.write("\3\2\2\2\36\u00d1\3\2\2\2 \u00d3\3\2\2\2\"\u00d5\3\2\2") buf.write("\2$\u00e0\3\2\2\2&\u00eb\3\2\2\2(\u0105\3\2\2\2*\u0113") buf.write("\3\2\2\2,\u0124\3\2\2\2.\u0182\3\2\2\2\60\u0191\3\2\2") buf.write("\2\62\u0194\3\2\2\2\64\u0199\3\2\2\2\66\u019c\3\2\2\2") buf.write("8\u01a7\3\2\2\2:\u01b2\3\2\2\2<\u01b6\3\2\2\2>\u01c0\3") buf.write("\2\2\2@\u01df\3\2\2\2B\u01e1\3\2\2\2D\u01eb\3\2\2\2F\u01ef") buf.write("\3\2\2\2H\u01f9\3\2\2\2J\u0203\3\2\2\2L\u0221\3\2\2\2") buf.write("N\u0226\3\2\2\2P\u0229\3\2\2\2R\u022d\3\2\2\2T\u0238\3") buf.write("\2\2\2V\u023a\3\2\2\2X\u0248\3\2\2\2Z\u024a\3\2\2\2\\") buf.write("\u024d\3\2\2\2^\u0251\3\2\2\2`\u025b\3\2\2\2b\u0261\3") buf.write("\2\2\2d\u0264\3\2\2\2f\u026c\3\2\2\2h\u027a\3\2\2\2j\u0289") buf.write("\3\2\2\2l\u0296\3\2\2\2n\u02a0\3\2\2\2p\u02af\3\2\2\2") buf.write("r\u02b1\3\2\2\2t\u02c0\3\2\2\2v\u02c2\3\2\2\2xy\7$\2\2") buf.write("yz\7\61\2\2z{\5\n\6\2{|\7C\2\2|}\5\n\6\2}~\7\62\2\2~\3") buf.write("\3\2\2\2\177\u0080\7#\2\2\u0080\u0081\7\61\2\2\u0081\u0082") buf.write("\5\n\6\2\u0082\u0084\7\62\2\2\u0083\u0085\7@\2\2\u0084") buf.write("\u0083\3\2\2\2\u0084\u0085\3\2\2\2\u0085\5\3\2\2\2\u0086") buf.write("\u0087\7%\2\2\u0087\u0088\7\61\2\2\u0088\u0089\5\n\6\2") buf.write("\u0089\u008a\7C\2\2\u008a\u008b\5\n\6\2\u008b\u008c\7") buf.write("\62\2\2\u008c\7\3\2\2\2\u008d\u0092\5\4\3\2\u008e\u0092") buf.write("\5\2\2\2\u008f\u0092\5\6\4\2\u0090\u0092\t\2\2\2\u0091") buf.write("\u008d\3\2\2\2\u0091\u008e\3\2\2\2\u0091\u008f\3\2\2\2") buf.write("\u0091\u0090\3\2\2\2\u0092\t\3\2\2\2\u0093\u0094\5\b\5") buf.write("\2\u0094\u0095\7>\2\2\u0095\u0098\3\2\2\2\u0096\u0098") buf.write("\5\b\5\2\u0097\u0093\3\2\2\2\u0097\u0096\3\2\2\2\u0098") buf.write("\13\3\2\2\2\u0099\u009a\5\n\6\2\u009a\u009b\7N\2\2\u009b") buf.write("\r\3\2\2\2\u009c\u009d\5\n\6\2\u009d\u009e\7N\2\2\u009e") buf.write("\u009f\7;\2\2\u009f\u00a0\5\36\20\2\u00a0\17\3\2\2\2\u00a1") buf.write("\u00a4\5\f\7\2\u00a2\u00a4\5\16\b\2\u00a3\u00a1\3\2\2") buf.write("\2\u00a3\u00a2\3\2\2\2\u00a4\21\3\2\2\2\u00a5\u00a6\t") buf.write("\3\2\2\u00a6\23\3\2\2\2\u00a7\u00a9\7O\2\2\u00a8\u00a7") buf.write("\3\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa") buf.write("\u00ab\3\2\2\2\u00ab\25\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad") buf.write("\u00ae\7R\2\2\u00ae\u00af\5\36\20\2\u00af\u00b0\7\60\2") buf.write("\2\u00b0\27\3\2\2\2\u00b1\u00b2\5\26\f\2\u00b2\u00b3\5") buf.write("\24\13\2\u00b3\31\3\2\2\2\u00b4\u00b5\7K\2\2\u00b5\u00b9") buf.write("\5\24\13\2\u00b6\u00b8\5\30\r\2\u00b7\u00b6\3\2\2\2\u00b8") buf.write("\u00bb\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9\u00ba\3\2\2\2") buf.write("\u00ba\u00bc\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc\u00bd\7") buf.write("K\2\2\u00bd\u00c9\3\2\2\2\u00be\u00bf\7J\2\2\u00bf\u00c3") buf.write("\5\24\13\2\u00c0\u00c2\5\30\r\2\u00c1\u00c0\3\2\2\2\u00c2") buf.write("\u00c5\3\2\2\2\u00c3\u00c1\3\2\2\2\u00c3\u00c4\3\2\2\2") buf.write("\u00c4\u00c6\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c6\u00c7\7") buf.write("J\2\2\u00c7\u00c9\3\2\2\2\u00c8\u00b4\3\2\2\2\u00c8\u00be") buf.write("\3\2\2\2\u00c9\33\3\2\2\2\u00ca\u00d0\7,\2\2\u00cb\u00d0") buf.write("\5\22\n\2\u00cc\u00d0\5\32\16\2\u00cd\u00d0\7)\2\2\u00ce") buf.write("\u00d0\7N\2\2\u00cf\u00ca\3\2\2\2\u00cf\u00cb\3\2\2\2") buf.write("\u00cf\u00cc\3\2\2\2\u00cf\u00cd\3\2\2\2\u00cf\u00ce\3") buf.write("\2\2\2\u00d0\35\3\2\2\2\u00d1\u00d2\5 \21\2\u00d2\37\3") buf.write("\2\2\2\u00d3\u00d4\5\"\22\2\u00d4!\3\2\2\2\u00d5\u00d6") buf.write("\b\22\1\2\u00d6\u00d7\5$\23\2\u00d7\u00dd\3\2\2\2\u00d8") buf.write("\u00d9\f\4\2\2\u00d9\u00da\7=\2\2\u00da\u00dc\5$\23\2") buf.write("\u00db\u00d8\3\2\2\2\u00dc\u00df\3\2\2\2\u00dd\u00db\3") buf.write("\2\2\2\u00dd\u00de\3\2\2\2\u00de#\3\2\2\2\u00df\u00dd") buf.write("\3\2\2\2\u00e0\u00e1\b\23\1\2\u00e1\u00e2\5&\24\2\u00e2") buf.write("\u00e8\3\2\2\2\u00e3\u00e4\f\4\2\2\u00e4\u00e5\7<\2\2") buf.write("\u00e5\u00e7\5&\24\2\u00e6\u00e3\3\2\2\2\u00e7\u00ea\3") buf.write("\2\2\2\u00e8\u00e6\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9%") buf.write("\3\2\2\2\u00ea\u00e8\3\2\2\2\u00eb\u00ec\b\24\1\2\u00ec") buf.write("\u00ed\5(\25\2\u00ed\u0102\3\2\2\2\u00ee\u00ef\f\t\2\2") buf.write("\u00ef\u00f0\79\2\2\u00f0\u0101\5(\25\2\u00f1\u00f2\f") buf.write("\b\2\2\u00f2\u00f3\7:\2\2\u00f3\u0101\5(\25\2\u00f4\u00f5") buf.write("\f\7\2\2\u00f5\u00f6\78\2\2\u00f6\u0101\5(\25\2\u00f7") buf.write("\u00f8\f\6\2\2\u00f8\u00f9\7\67\2\2\u00f9\u0101\5(\25") buf.write("\2\u00fa\u00fb\f\5\2\2\u00fb\u00fc\7\65\2\2\u00fc\u0101") buf.write("\5(\25\2\u00fd\u00fe\f\4\2\2\u00fe\u00ff\7\66\2\2\u00ff") buf.write("\u0101\5(\25\2\u0100\u00ee\3\2\2\2\u0100\u00f1\3\2\2\2") buf.write("\u0100\u00f4\3\2\2\2\u0100\u00f7\3\2\2\2\u0100\u00fa\3") buf.write("\2\2\2\u0100\u00fd\3\2\2\2\u0101\u0104\3\2\2\2\u0102\u0100") buf.write("\3\2\2\2\u0102\u0103\3\2\2\2\u0103\'\3\2\2\2\u0104\u0102") buf.write("\3\2\2\2\u0105\u0106\b\25\1\2\u0106\u0107\5*\26\2\u0107") buf.write("\u0110\3\2\2\2\u0108\u0109\f\5\2\2\u0109\u010a\7@\2\2") buf.write("\u010a\u010f\5*\26\2\u010b\u010c\f\4\2\2\u010c\u010d\7") buf.write("A\2\2\u010d\u010f\5*\26\2\u010e\u0108\3\2\2\2\u010e\u010b") buf.write("\3\2\2\2\u010f\u0112\3\2\2\2\u0110\u010e\3\2\2\2\u0110") buf.write("\u0111\3\2\2\2\u0111)\3\2\2\2\u0112\u0110\3\2\2\2\u0113") buf.write("\u0114\b\26\1\2\u0114\u0115\5,\27\2\u0115\u0121\3\2\2") buf.write("\2\u0116\u0117\f\6\2\2\u0117\u0118\7?\2\2\u0118\u0120") buf.write("\5,\27\2\u0119\u011a\f\5\2\2\u011a\u011b\7H\2\2\u011b") buf.write("\u0120\5,\27\2\u011c\u011d\f\4\2\2\u011d\u011e\7I\2\2") buf.write("\u011e\u0120\5,\27\2\u011f\u0116\3\2\2\2\u011f\u0119\3") buf.write("\2\2\2\u011f\u011c\3\2\2\2\u0120\u0123\3\2\2\2\u0121\u011f") buf.write("\3\2\2\2\u0121\u0122\3\2\2\2\u0122+\3\2\2\2\u0123\u0121") buf.write("\3\2\2\2\u0124\u0125\5.\30\2\u0125-\3\2\2\2\u0126\u0127") buf.write("\b\30\1\2\u0127\u0128\7N\2\2\u0128\u0131\7-\2\2\u0129") buf.write("\u012e\5\36\20\2\u012a\u012b\7C\2\2\u012b\u012d\5\36\20") buf.write("\2\u012c\u012a\3\2\2\2\u012d\u0130\3\2\2\2\u012e\u012c") buf.write("\3\2\2\2\u012e\u012f\3\2\2\2\u012f\u0132\3\2\2\2\u0130") buf.write("\u012e\3\2\2\2\u0131\u0129\3\2\2\2\u0131\u0132\3\2\2\2") buf.write("\u0132\u0133\3\2\2\2\u0133\u0183\7.\2\2\u0134\u013f\7") buf.write("\61\2\2\u0135\u013a\5\36\20\2\u0136\u0137\7C\2\2\u0137") buf.write("\u0139\5\36\20\2\u0138\u0136\3\2\2\2\u0139\u013c\3\2\2") buf.write("\2\u013a\u0138\3\2\2\2\u013a\u013b\3\2\2\2\u013b\u013e") buf.write("\3\2\2\2\u013c\u013a\3\2\2\2\u013d\u0135\3\2\2\2\u013e") buf.write("\u0141\3\2\2\2\u013f\u013d\3\2\2\2\u013f\u0140\3\2\2\2") buf.write("\u0140\u0142\3\2\2\2\u0141\u013f\3\2\2\2\u0142\u0183\7") buf.write("\62\2\2\u0143\u0144\7-\2\2\u0144\u0145\5\36\20\2\u0145") buf.write("\u0146\7C\2\2\u0146\u0147\5\36\20\2\u0147\u0148\7.\2\2") buf.write("\u0148\u0183\3\2\2\2\u0149\u0159\7/\2\2\u014a\u014b\5") buf.write("\36\20\2\u014b\u014c\7\64\2\2\u014c\u0154\5\36\20\2\u014d") buf.write("\u014e\7C\2\2\u014e\u014f\5\36\20\2\u014f\u0150\7\64\2") buf.write("\2\u0150\u0151\5\36\20\2\u0151\u0153\3\2\2\2\u0152\u014d") buf.write("\3\2\2\2\u0153\u0156\3\2\2\2\u0154\u0152\3\2\2\2\u0154") buf.write("\u0155\3\2\2\2\u0155\u0158\3\2\2\2\u0156\u0154\3\2\2\2") buf.write("\u0157\u014a\3\2\2\2\u0158\u015b\3\2\2\2\u0159\u0157\3") buf.write("\2\2\2\u0159\u015a\3\2\2\2\u015a\u015c\3\2\2\2\u015b\u0159") buf.write("\3\2\2\2\u015c\u0183\7\60\2\2\u015d\u015e\7N\2\2\u015e") buf.write("\u016d\7/\2\2\u015f\u0160\7N\2\2\u0160\u0161\7\64\2\2") buf.write("\u0161\u0168\5\36\20\2\u0162\u0163\7C\2\2\u0163\u0164") buf.write("\7N\2\2\u0164\u0165\7\64\2\2\u0165\u0167\5\36\20\2\u0166") buf.write("\u0162\3\2\2\2\u0167\u016a\3\2\2\2\u0168\u0166\3\2\2\2") buf.write("\u0168\u0169\3\2\2\2\u0169\u016c\3\2\2\2\u016a\u0168\3") buf.write("\2\2\2\u016b\u015f\3\2\2\2\u016c\u016f\3\2\2\2\u016d\u016b") buf.write("\3\2\2\2\u016d\u016e\3\2\2\2\u016e\u0170\3\2\2\2\u016f") buf.write("\u016d\3\2\2\2\u0170\u0183\7\60\2\2\u0171\u0172\7\n\2") buf.write("\2\u0172\u0173\5\36\20\2\u0173\u0174\7\13\2\2\u0174\u0175") buf.write("\5\36\20\2\u0175\u0176\7\f\2\2\u0176\u0177\5\36\20\2\u0177") buf.write("\u0183\3\2\2\2\u0178\u0179\7-\2\2\u0179\u017a\5\36\20") buf.write("\2\u017a\u017b\7.\2\2\u017b\u0183\3\2\2\2\u017c\u017d") buf.write("\7F\2\2\u017d\u0183\5\36\20\2\u017e\u017f\t\4\2\2\u017f") buf.write("\u0183\5\36\20\2\u0180\u0183\5\34\17\2\u0181\u0183\7N") buf.write("\2\2\u0182\u0126\3\2\2\2\u0182\u0134\3\2\2\2\u0182\u0143") buf.write("\3\2\2\2\u0182\u0149\3\2\2\2\u0182\u015d\3\2\2\2\u0182") buf.write("\u0171\3\2\2\2\u0182\u0178\3\2\2\2\u0182\u017c\3\2\2\2") buf.write("\u0182\u017e\3\2\2\2\u0182\u0180\3\2\2\2\u0182\u0181\3") buf.write("\2\2\2\u0183\u018e\3\2\2\2\u0184\u0185\f\b\2\2\u0185\u0186") buf.write("\7\61\2\2\u0186\u0187\5\36\20\2\u0187\u0188\7\62\2\2\u0188") buf.write("\u018d\3\2\2\2\u0189\u018a\f\7\2\2\u018a\u018b\7E\2\2") buf.write("\u018b\u018d\7N\2\2\u018c\u0184\3\2\2\2\u018c\u0189\3") buf.write("\2\2\2\u018d\u0190\3\2\2\2\u018e\u018c\3\2\2\2\u018e\u018f") buf.write("\3\2\2\2\u018f/\3\2\2\2\u0190\u018e\3\2\2\2\u0191\u0192") buf.write("\7\3\2\2\u0192\u0193\7V\2\2\u0193\61\3\2\2\2\u0194\u0195") buf.write("\7\r\2\2\u0195\u0196\7N\2\2\u0196\u0197\7\16\2\2\u0197") buf.write("\u0198\7N\2\2\u0198\63\3\2\2\2\u0199\u019a\7\16\2\2\u019a") buf.write("\u019b\7N\2\2\u019b\65\3\2\2\2\u019c\u019d\7\4\2\2\u019d") buf.write("\u019f\5\32\16\2\u019e\u01a0\5\64\33\2\u019f\u019e\3\2") buf.write("\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a4\3\2\2\2\u01a1\u01a3") buf.write("\5\62\32\2\u01a2\u01a1\3\2\2\2\u01a3\u01a6\3\2\2\2\u01a4") buf.write("\u01a2\3\2\2\2\u01a4\u01a5\3\2\2\2\u01a5\67\3\2\2\2\u01a6") buf.write("\u01a4\3\2\2\2\u01a7\u01a8\7\7\2\2\u01a8\u01a9\7N\2\2") buf.write("\u01a9\u01ad\7/\2\2\u01aa\u01ac\5\f\7\2\u01ab\u01aa\3") buf.write("\2\2\2\u01ac\u01af\3\2\2\2\u01ad\u01ab\3\2\2\2\u01ad\u01ae") buf.write("\3\2\2\2\u01ae\u01b0\3\2\2\2\u01af\u01ad\3\2\2\2\u01b0") buf.write("\u01b1\7\60\2\2\u01b19\3\2\2\2\u01b2\u01b3\7N\2\2\u01b3") buf.write("\u01b4\7\64\2\2\u01b4\u01b5\5\36\20\2\u01b5;\3\2\2\2\u01b6") buf.write("\u01b7\7\22\2\2\u01b7\u01bb\7/\2\2\u01b8\u01ba\5:\36\2") buf.write("\u01b9\u01b8\3\2\2\2\u01ba\u01bd\3\2\2\2\u01bb\u01b9\3") buf.write("\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01be\3\2\2\2\u01bd\u01bb") buf.write("\3\2\2\2\u01be\u01bf\7\60\2\2\u01bf=\3\2\2\2\u01c0\u01c1") buf.write("\7\23\2\2\u01c1\u01c5\7/\2\2\u01c2\u01c4\5:\36\2\u01c3") buf.write("\u01c2\3\2\2\2\u01c4\u01c7\3\2\2\2\u01c5\u01c3\3\2\2\2") buf.write("\u01c5\u01c6\3\2\2\2\u01c6\u01c8\3\2\2\2\u01c7\u01c5\3") buf.write("\2\2\2\u01c8\u01c9\7\60\2\2\u01c9?\3\2\2\2\u01ca\u01cb") buf.write("\7\26\2\2\u01cb\u01cc\7\64\2\2\u01cc\u01e0\5\36\20\2\u01cd") buf.write("\u01ce\7\27\2\2\u01ce\u01cf\7\64\2\2\u01cf\u01e0\5\36") buf.write("\20\2\u01d0\u01d1\7\30\2\2\u01d1\u01d2\7\64\2\2\u01d2") buf.write("\u01e0\5\36\20\2\u01d3\u01d4\7\31\2\2\u01d4\u01d5\7\64") buf.write("\2\2\u01d5\u01e0\5\36\20\2\u01d6\u01d7\7\32\2\2\u01d7") buf.write("\u01d8\7\64\2\2\u01d8\u01e0\5\36\20\2\u01d9\u01da\7\33") buf.write("\2\2\u01da\u01db\7\64\2\2\u01db\u01e0\5\36\20\2\u01dc") buf.write("\u01dd\7\34\2\2\u01dd\u01de\7\64\2\2\u01de\u01e0\5\36") buf.write("\20\2\u01df\u01ca\3\2\2\2\u01df\u01cd\3\2\2\2\u01df\u01d0") buf.write("\3\2\2\2\u01df\u01d3\3\2\2\2\u01df\u01d6\3\2\2\2\u01df") buf.write("\u01d9\3\2\2\2\u01df\u01dc\3\2\2\2\u01e0A\3\2\2\2\u01e1") buf.write("\u01e2\7\25\2\2\u01e2\u01e6\7/\2\2\u01e3\u01e5\5@!\2\u01e4") buf.write("\u01e3\3\2\2\2\u01e5\u01e8\3\2\2\2\u01e6\u01e4\3\2\2\2") buf.write("\u01e6\u01e7\3\2\2\2\u01e7\u01e9\3\2\2\2\u01e8\u01e6\3") buf.write("\2\2\2\u01e9\u01ea\7\60\2\2\u01eaC\3\2\2\2\u01eb\u01ec") buf.write("\7N\2\2\u01ec\u01ed\7\64\2\2\u01ed\u01ee\5\36\20\2\u01ee") buf.write("E\3\2\2\2\u01ef\u01f0\7\24\2\2\u01f0\u01f4\7/\2\2\u01f1") buf.write("\u01f3\5D#\2\u01f2\u01f1\3\2\2\2\u01f3\u01f6\3\2\2\2\u01f4") buf.write("\u01f2\3\2\2\2\u01f4\u01f5\3\2\2\2\u01f5\u01f7\3\2\2\2") buf.write("\u01f6\u01f4\3\2\2\2\u01f7\u01f8\7\60\2\2\u01f8G\3\2\2") buf.write("\2\u01f9\u01fa\7\20\2\2\u01fa\u01fe\7/\2\2\u01fb\u01fd") buf.write("\5\20\t\2\u01fc\u01fb\3\2\2\2\u01fd\u0200\3\2\2\2\u01fe") buf.write("\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff\u0201\3\2\2\2") buf.write("\u0200\u01fe\3\2\2\2\u0201\u0202\7\60\2\2\u0202I\3\2\2") buf.write("\2\u0203\u0204\7\21\2\2\u0204\u0208\7/\2\2\u0205\u0207") buf.write("\5\16\b\2\u0206\u0205\3\2\2\2\u0207\u020a\3\2\2\2\u0208") buf.write("\u0206\3\2\2\2\u0208\u0209\3\2\2\2\u0209\u020b\3\2\2\2") buf.write("\u020a\u0208\3\2\2\2\u020b\u020c\7\60\2\2\u020cK\3\2\2") buf.write("\2\u020d\u020e\7(\2\2\u020e\u0212\5N(\2\u020f\u0211\5") buf.write("R*\2\u0210\u020f\3\2\2\2\u0211\u0214\3\2\2\2\u0212\u0210") buf.write("\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0215\3\2\2\2\u0214") buf.write("\u0212\3\2\2\2\u0215\u0216\7S\2\2\u0216\u0222\3\2\2\2") buf.write("\u0217\u0218\7\'\2\2\u0218\u021c\5N(\2\u0219\u021b\5R") buf.write("*\2\u021a\u0219\3\2\2\2\u021b\u021e\3\2\2\2\u021c\u021a") buf.write("\3\2\2\2\u021c\u021d\3\2\2\2\u021d\u021f\3\2\2\2\u021e") buf.write("\u021c\3\2\2\2\u021f\u0220\7S\2\2\u0220\u0222\3\2\2\2") buf.write("\u0221\u020d\3\2\2\2\u0221\u0217\3\2\2\2\u0222M\3\2\2") buf.write("\2\u0223\u0225\7T\2\2\u0224\u0223\3\2\2\2\u0225\u0228") buf.write("\3\2\2\2\u0226\u0224\3\2\2\2\u0226\u0227\3\2\2\2\u0227") buf.write("O\3\2\2\2\u0228\u0226\3\2\2\2\u0229\u022a\7R\2\2\u022a") buf.write("\u022b\5\36\20\2\u022b\u022c\7\60\2\2\u022cQ\3\2\2\2\u022d") buf.write("\u022e\5P)\2\u022e\u022f\5N(\2\u022fS\3\2\2\2\u0230\u0239") buf.write("\5H%\2\u0231\u0239\5J&\2\u0232\u0239\5L\'\2\u0233\u0239") buf.write("\5B\"\2\u0234\u0239\5F$\2\u0235\u0239\5\16\b\2\u0236\u0239") buf.write("\5<\37\2\u0237\u0239\5> \2\u0238\u0230\3\2\2\2\u0238\u0231") buf.write("\3\2\2\2\u0238\u0232\3\2\2\2\u0238\u0233\3\2\2\2\u0238") buf.write("\u0234\3\2\2\2\u0238\u0235\3\2\2\2\u0238\u0236\3\2\2\2") buf.write("\u0238\u0237\3\2\2\2\u0239U\3\2\2\2\u023a\u023b\7\6\2") buf.write("\2\u023b\u023c\7N\2\2\u023c\u023e\7/\2\2\u023d\u023f\5") buf.write("T+\2\u023e\u023d\3\2\2\2\u023f\u0240\3\2\2\2\u0240\u023e") buf.write("\3\2\2\2\u0240\u0241\3\2\2\2\u0241\u0242\3\2\2\2\u0242") buf.write("\u0243\7\60\2\2\u0243W\3\2\2\2\u0244\u0249\5\16\b\2\u0245") buf.write("\u0249\5f\64\2\u0246\u0249\5h\65\2\u0247\u0249\5j\66\2") buf.write("\u0248\u0244\3\2\2\2\u0248\u0245\3\2\2\2\u0248\u0246\3") buf.write("\2\2\2\u0248\u0247\3\2\2\2\u0249Y\3\2\2\2\u024a\u024b") buf.write("\7\16\2\2\u024b\u024c\7N\2\2\u024c[\3\2\2\2\u024d\u024e") buf.write("\7N\2\2\u024e\u024f\7;\2\2\u024f\u0250\5\36\20\2\u0250") buf.write("]\3\2\2\2\u0251\u0252\7\20\2\2\u0252\u0253\7\64\2\2\u0253") buf.write("\u0258\5\\/\2\u0254\u0255\7C\2\2\u0255\u0257\5\\/\2\u0256") buf.write("\u0254\3\2\2\2\u0257\u025a\3\2\2\2\u0258\u0256\3\2\2\2") buf.write("\u0258\u0259\3\2\2\2\u0259_\3\2\2\2\u025a\u0258\3\2\2") buf.write("\2\u025b\u025d\7/\2\2\u025c\u025e\5^\60\2\u025d\u025c") buf.write("\3\2\2\2\u025d\u025e\3\2\2\2\u025e\u025f\3\2\2\2\u025f") buf.write("\u0260\7\60\2\2\u0260a\3\2\2\2\u0261\u0262\7&\2\2\u0262") buf.write("\u0263\7N\2\2\u0263c\3\2\2\2\u0264\u0269\7N\2\2\u0265") buf.write("\u0266\7E\2\2\u0266\u0268\7N\2\2\u0267\u0265\3\2\2\2\u0268") buf.write("\u026b\3\2\2\2\u0269\u0267\3\2\2\2\u0269\u026a\3\2\2\2") buf.write("\u026ae\3\2\2\2\u026b\u0269\3\2\2\2\u026c\u026d\7\t\2") buf.write("\2\u026d\u026f\5d\63\2\u026e\u0270\5Z.\2\u026f\u026e\3") buf.write("\2\2\2\u026f\u0270\3\2\2\2\u0270\u0274\3\2\2\2\u0271\u0273") buf.write("\5b\62\2\u0272\u0271\3\2\2\2\u0273\u0276\3\2\2\2\u0274") buf.write("\u0272\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0278\3\2\2\2") buf.write("\u0276\u0274\3\2\2\2\u0277\u0279\5`\61\2\u0278\u0277\3") buf.write("\2\2\2\u0278\u0279\3\2\2\2\u0279g\3\2\2\2\u027a\u027b") buf.write("\7\b\2\2\u027b\u027c\7-\2\2\u027c\u027d\7N\2\2\u027d\u027e") buf.write("\7\17\2\2\u027e\u027f\5\36\20\2\u027f\u0280\7.\2\2\u0280") buf.write("\u0284\7/\2\2\u0281\u0283\5X-\2\u0282\u0281\3\2\2\2\u0283") buf.write("\u0286\3\2\2\2\u0284\u0282\3\2\2\2\u0284\u0285\3\2\2\2") buf.write("\u0285\u0287\3\2\2\2\u0286\u0284\3\2\2\2\u0287\u0288\7") buf.write("\60\2\2\u0288i\3\2\2\2\u0289\u028a\7\n\2\2\u028a\u028b") buf.write("\7-\2\2\u028b\u028c\5\36\20\2\u028c\u028d\7.\2\2\u028d") buf.write("\u0291\7/\2\2\u028e\u0290\5X-\2\u028f\u028e\3\2\2\2\u0290") buf.write("\u0293\3\2\2\2\u0291\u028f\3\2\2\2\u0291\u0292\3\2\2\2") buf.write("\u0292\u0294\3\2\2\2\u0293\u0291\3\2\2\2\u0294\u0295\7") buf.write("\60\2\2\u0295k\3\2\2\2\u0296\u0297\7\20\2\2\u0297\u029b") buf.write("\7/\2\2\u0298\u029a\5\20\t\2\u0299\u0298\3\2\2\2\u029a") buf.write("\u029d\3\2\2\2\u029b\u0299\3\2\2\2\u029b\u029c\3\2\2\2") buf.write("\u029c\u029e\3\2\2\2\u029d\u029b\3\2\2\2\u029e\u029f\7") buf.write("\60\2\2\u029fm\3\2\2\2\u02a0\u02a1\7\21\2\2\u02a1\u02a5") buf.write("\7/\2\2\u02a2\u02a4\5\16\b\2\u02a3\u02a2\3\2\2\2\u02a4") buf.write("\u02a7\3\2\2\2\u02a5\u02a3\3\2\2\2\u02a5\u02a6\3\2\2\2") buf.write("\u02a6\u02a8\3\2\2\2\u02a7\u02a5\3\2\2\2\u02a8\u02a9\7") buf.write("\60\2\2\u02a9o\3\2\2\2\u02aa\u02b0\5l\67\2\u02ab\u02b0") buf.write("\5n8\2\u02ac\u02b0\5X-\2\u02ad\u02b0\5<\37\2\u02ae\u02b0") buf.write("\5> \2\u02af\u02aa\3\2\2\2\u02af\u02ab\3\2\2\2\u02af\u02ac") buf.write("\3\2\2\2\u02af\u02ad\3\2\2\2\u02af\u02ae\3\2\2\2\u02b0") buf.write("q\3\2\2\2\u02b1\u02b2\7\5\2\2\u02b2\u02b3\7N\2\2\u02b3") buf.write("\u02b7\7/\2\2\u02b4\u02b6\5p9\2\u02b5\u02b4\3\2\2\2\u02b6") buf.write("\u02b9\3\2\2\2\u02b7\u02b5\3\2\2\2\u02b7\u02b8\3\2\2\2") buf.write("\u02b8\u02ba\3\2\2\2\u02b9\u02b7\3\2\2\2\u02ba\u02bb\7") buf.write("\60\2\2\u02bbs\3\2\2\2\u02bc\u02c1\5\66\34\2\u02bd\u02c1") buf.write("\58\35\2\u02be\u02c1\5V,\2\u02bf\u02c1\5r:\2\u02c0\u02bc") buf.write("\3\2\2\2\u02c0\u02bd\3\2\2\2\u02c0\u02be\3\2\2\2\u02c0") buf.write("\u02bf\3\2\2\2\u02c1u\3\2\2\2\u02c2\u02c6\5\60\31\2\u02c3") buf.write("\u02c5\5t;\2\u02c4\u02c3\3\2\2\2\u02c5\u02c8\3\2\2\2\u02c6") buf.write("\u02c4\3\2\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02d0\3\2\2\2") buf.write("\u02c8\u02c6\3\2\2\2\u02c9\u02cd\5r:\2\u02ca\u02cc\5t") buf.write(";\2\u02cb\u02ca\3\2\2\2\u02cc\u02cf\3\2\2\2\u02cd\u02cb") buf.write("\3\2\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02d1\3\2\2\2\u02cf") buf.write("\u02cd\3\2\2\2\u02d0\u02c9\3\2\2\2\u02d0\u02d1\3\2\2\2") buf.write("\u02d1\u02d2\3\2\2\2\u02d2\u02d3\7\2\2\3\u02d3w\3\2\2") buf.write("\2?\u0084\u0091\u0097\u00a3\u00aa\u00b9\u00c3\u00c8\u00cf") buf.write("\u00dd\u00e8\u0100\u0102\u010e\u0110\u011f\u0121\u012e") buf.write("\u0131\u013a\u013f\u0154\u0159\u0168\u016d\u0182\u018c") buf.write("\u018e\u019f\u01a4\u01ad\u01bb\u01c5\u01df\u01e6\u01f4") buf.write("\u01fe\u0208\u0212\u021c\u0221\u0226\u0238\u0240\u0248") buf.write("\u0258\u025d\u0269\u026f\u0274\u0278\u0284\u0291\u029b") buf.write("\u02a5\u02af\u02b7\u02c0\u02c6\u02cd\u02d0") return buf.getvalue() class WdlParser ( Parser ): grammarFileName = "WdlParser.g4" atn = ATNDeserializer().deserialize(serializedATN()) decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] sharedContextCache = PredictionContextCache() literalNames = [ "", "'version'", "'import'", "'workflow'", "'task'", "'struct'", "'scatter'", "'call'", "'if'", "'then'", "'else'", "'alias'", "'as'", "'in'", "'input'", "'output'", "'parameter_meta'", "'meta'", "'hints'", "'runtime'", "'cpu'", "'container'", "'memory'", "'gpu'", "'disks'", "'maxRetries'", "'returnCodes'", "'Boolean'", "'Int'", "'Float'", "'String'", "'File'", "'Directory'", "'Array'", "'Map'", "'Pair'", "'after'", "", "", "'None'", "", "", "", "'('", "')'", "", "", "'['", "']'", "'\\'", "':'", "'<'", "'>'", "'>='", "'<='", "'=='", "'!='", "'='", "'&&'", "'||'", "'?'", "'*'", "'+'", "'-'", "", "','", "';'", "'.'", "'!'", "", "'/'", "'%'", "", "", "", "", "", "", "", "", "", "", "", "", "", "'\\>>>'", "'>>>'" ] symbolicNames = [ "", "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "HINTS", "RUNTIME", "RUNTIMECPU", "RUNTIMECONTAINER", "RUNTIMEMEMORY", "RUNTIMEGPU", "RUNTIMEDISKS", "RUNTIMEMAXRETRIES", "RUNTIMERETURNCODES", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "DIRECTORY", "ARRAY", "MAP", "PAIR", "AFTER", "HEREDOC_COMMAND", "COMMAND", "NONELITERAL", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "COMMENT", "Identifier", "StringPart", "HereDocUnicodeEscape", "CommandUnicodeEscape", "StringCommandStart", "EndCommand", "CommandStringPart", "VERSION_WHITESPACE", "RELEASE_VERSION", "HereDocEscapedEnd", "EndHereDocCommand" ] RULE_map_type = 0 RULE_array_type = 1 RULE_pair_type = 2 RULE_type_base = 3 RULE_wdl_type = 4 RULE_unbound_decls = 5 RULE_bound_decls = 6 RULE_any_decls = 7 RULE_number = 8 RULE_string_part = 9 RULE_string_expr_part = 10 RULE_string_expr_with_string_part = 11 RULE_string = 12 RULE_primitive_literal = 13 RULE_expr = 14 RULE_expr_infix = 15 RULE_expr_infix0 = 16 RULE_expr_infix1 = 17 RULE_expr_infix2 = 18 RULE_expr_infix3 = 19 RULE_expr_infix4 = 20 RULE_expr_infix5 = 21 RULE_expr_core = 22 RULE_version = 23 RULE_import_alias = 24 RULE_import_as = 25 RULE_import_doc = 26 RULE_struct = 27 RULE_meta_kv = 28 RULE_parameter_meta = 29 RULE_meta = 30 RULE_task_runtime_kv = 31 RULE_task_runtime = 32 RULE_task_hints_kv = 33 RULE_task_hints = 34 RULE_task_input = 35 RULE_task_output = 36 RULE_task_command = 37 RULE_task_command_string_part = 38 RULE_task_command_expr_part = 39 RULE_task_command_expr_with_string = 40 RULE_task_element = 41 RULE_task = 42 RULE_inner_workflow_element = 43 RULE_call_alias = 44 RULE_call_input = 45 RULE_call_inputs = 46 RULE_call_body = 47 RULE_call_afters = 48 RULE_call_name = 49 RULE_call = 50 RULE_scatter = 51 RULE_conditional = 52 RULE_workflow_input = 53 RULE_workflow_output = 54 RULE_workflow_element = 55 RULE_workflow = 56 RULE_document_element = 57 RULE_document = 58 ruleNames = [ "map_type", "array_type", "pair_type", "type_base", "wdl_type", "unbound_decls", "bound_decls", "any_decls", "number", "string_part", "string_expr_part", "string_expr_with_string_part", "string", "primitive_literal", "expr", "expr_infix", "expr_infix0", "expr_infix1", "expr_infix2", "expr_infix3", "expr_infix4", "expr_infix5", "expr_core", "version", "import_alias", "import_as", "import_doc", "struct", "meta_kv", "parameter_meta", "meta", "task_runtime_kv", "task_runtime", "task_hints_kv", "task_hints", "task_input", "task_output", "task_command", "task_command_string_part", "task_command_expr_part", "task_command_expr_with_string", "task_element", "task", "inner_workflow_element", "call_alias", "call_input", "call_inputs", "call_body", "call_afters", "call_name", "call", "scatter", "conditional", "workflow_input", "workflow_output", "workflow_element", "workflow", "document_element", "document" ] EOF = Token.EOF VERSION=1 IMPORT=2 WORKFLOW=3 TASK=4 STRUCT=5 SCATTER=6 CALL=7 IF=8 THEN=9 ELSE=10 ALIAS=11 AS=12 In=13 INPUT=14 OUTPUT=15 PARAMETERMETA=16 META=17 HINTS=18 RUNTIME=19 RUNTIMECPU=20 RUNTIMECONTAINER=21 RUNTIMEMEMORY=22 RUNTIMEGPU=23 RUNTIMEDISKS=24 RUNTIMEMAXRETRIES=25 RUNTIMERETURNCODES=26 BOOLEAN=27 INT=28 FLOAT=29 STRING=30 FILE=31 DIRECTORY=32 ARRAY=33 MAP=34 PAIR=35 AFTER=36 HEREDOC_COMMAND=37 COMMAND=38 NONELITERAL=39 IntLiteral=40 FloatLiteral=41 BoolLiteral=42 LPAREN=43 RPAREN=44 LBRACE=45 RBRACE=46 LBRACK=47 RBRACK=48 ESC=49 COLON=50 LT=51 GT=52 GTE=53 LTE=54 EQUALITY=55 NOTEQUAL=56 EQUAL=57 AND=58 OR=59 OPTIONAL=60 STAR=61 PLUS=62 MINUS=63 DOLLAR=64 COMMA=65 SEMI=66 DOT=67 NOT=68 TILDE=69 DIVIDE=70 MOD=71 SQUOTE=72 DQUOTE=73 WHITESPACE=74 COMMENT=75 Identifier=76 StringPart=77 HereDocUnicodeEscape=78 CommandUnicodeEscape=79 StringCommandStart=80 EndCommand=81 CommandStringPart=82 VERSION_WHITESPACE=83 RELEASE_VERSION=84 HereDocEscapedEnd=85 EndHereDocCommand=86 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.8") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None class Map_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MAP(self): return self.getToken(WdlParser.MAP, 0) def LBRACK(self): return self.getToken(WdlParser.LBRACK, 0) def wdl_type(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Wdl_typeContext) else: return self.getTypedRuleContext(WdlParser.Wdl_typeContext,i) def COMMA(self): return self.getToken(WdlParser.COMMA, 0) def RBRACK(self): return self.getToken(WdlParser.RBRACK, 0) def getRuleIndex(self): return WdlParser.RULE_map_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMap_type" ): listener.enterMap_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMap_type" ): listener.exitMap_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMap_type" ): return visitor.visitMap_type(self) else: return visitor.visitChildren(self) def map_type(self): localctx = WdlParser.Map_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_map_type) try: self.enterOuterAlt(localctx, 1) self.state = 118 self.match(WdlParser.MAP) self.state = 119 self.match(WdlParser.LBRACK) self.state = 120 self.wdl_type() self.state = 121 self.match(WdlParser.COMMA) self.state = 122 self.wdl_type() self.state = 123 self.match(WdlParser.RBRACK) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Array_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def ARRAY(self): return self.getToken(WdlParser.ARRAY, 0) def LBRACK(self): return self.getToken(WdlParser.LBRACK, 0) def wdl_type(self): return self.getTypedRuleContext(WdlParser.Wdl_typeContext,0) def RBRACK(self): return self.getToken(WdlParser.RBRACK, 0) def PLUS(self): return self.getToken(WdlParser.PLUS, 0) def getRuleIndex(self): return WdlParser.RULE_array_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterArray_type" ): listener.enterArray_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_type" ): listener.exitArray_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitArray_type" ): return visitor.visitArray_type(self) else: return visitor.visitChildren(self) def array_type(self): localctx = WdlParser.Array_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_array_type) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 125 self.match(WdlParser.ARRAY) self.state = 126 self.match(WdlParser.LBRACK) self.state = 127 self.wdl_type() self.state = 128 self.match(WdlParser.RBRACK) self.state = 130 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.PLUS: self.state = 129 self.match(WdlParser.PLUS) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Pair_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def PAIR(self): return self.getToken(WdlParser.PAIR, 0) def LBRACK(self): return self.getToken(WdlParser.LBRACK, 0) def wdl_type(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Wdl_typeContext) else: return self.getTypedRuleContext(WdlParser.Wdl_typeContext,i) def COMMA(self): return self.getToken(WdlParser.COMMA, 0) def RBRACK(self): return self.getToken(WdlParser.RBRACK, 0) def getRuleIndex(self): return WdlParser.RULE_pair_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPair_type" ): listener.enterPair_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPair_type" ): listener.exitPair_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPair_type" ): return visitor.visitPair_type(self) else: return visitor.visitChildren(self) def pair_type(self): localctx = WdlParser.Pair_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 4, self.RULE_pair_type) try: self.enterOuterAlt(localctx, 1) self.state = 132 self.match(WdlParser.PAIR) self.state = 133 self.match(WdlParser.LBRACK) self.state = 134 self.wdl_type() self.state = 135 self.match(WdlParser.COMMA) self.state = 136 self.wdl_type() self.state = 137 self.match(WdlParser.RBRACK) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Type_baseContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def array_type(self): return self.getTypedRuleContext(WdlParser.Array_typeContext,0) def map_type(self): return self.getTypedRuleContext(WdlParser.Map_typeContext,0) def pair_type(self): return self.getTypedRuleContext(WdlParser.Pair_typeContext,0) def STRING(self): return self.getToken(WdlParser.STRING, 0) def FILE(self): return self.getToken(WdlParser.FILE, 0) def DIRECTORY(self): return self.getToken(WdlParser.DIRECTORY, 0) def BOOLEAN(self): return self.getToken(WdlParser.BOOLEAN, 0) def INT(self): return self.getToken(WdlParser.INT, 0) def FLOAT(self): return self.getToken(WdlParser.FLOAT, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_type_base def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterType_base" ): listener.enterType_base(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_base" ): listener.exitType_base(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitType_base" ): return visitor.visitType_base(self) else: return visitor.visitChildren(self) def type_base(self): localctx = WdlParser.Type_baseContext(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_type_base) self._la = 0 # Token type try: self.state = 143 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.ARRAY]: self.enterOuterAlt(localctx, 1) self.state = 139 self.array_type() pass elif token in [WdlParser.MAP]: self.enterOuterAlt(localctx, 2) self.state = 140 self.map_type() pass elif token in [WdlParser.PAIR]: self.enterOuterAlt(localctx, 3) self.state = 141 self.pair_type() pass elif token in [WdlParser.BOOLEAN, WdlParser.INT, WdlParser.FLOAT, WdlParser.STRING, WdlParser.FILE, WdlParser.DIRECTORY, WdlParser.Identifier]: self.enterOuterAlt(localctx, 4) self.state = 142 _la = self._input.LA(1) if not(((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Wdl_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def type_base(self): return self.getTypedRuleContext(WdlParser.Type_baseContext,0) def OPTIONAL(self): return self.getToken(WdlParser.OPTIONAL, 0) def getRuleIndex(self): return WdlParser.RULE_wdl_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWdl_type" ): listener.enterWdl_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWdl_type" ): listener.exitWdl_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWdl_type" ): return visitor.visitWdl_type(self) else: return visitor.visitChildren(self) def wdl_type(self): localctx = WdlParser.Wdl_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_wdl_type) try: self.enterOuterAlt(localctx, 1) self.state = 149 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: self.state = 145 self.type_base() self.state = 146 self.match(WdlParser.OPTIONAL) pass elif la_ == 2: self.state = 148 self.type_base() pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Unbound_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def wdl_type(self): return self.getTypedRuleContext(WdlParser.Wdl_typeContext,0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_unbound_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterUnbound_decls" ): listener.enterUnbound_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnbound_decls" ): listener.exitUnbound_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitUnbound_decls" ): return visitor.visitUnbound_decls(self) else: return visitor.visitChildren(self) def unbound_decls(self): localctx = WdlParser.Unbound_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 10, self.RULE_unbound_decls) try: self.enterOuterAlt(localctx, 1) self.state = 151 self.wdl_type() self.state = 152 self.match(WdlParser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Bound_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def wdl_type(self): return self.getTypedRuleContext(WdlParser.Wdl_typeContext,0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def EQUAL(self): return self.getToken(WdlParser.EQUAL, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def getRuleIndex(self): return WdlParser.RULE_bound_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterBound_decls" ): listener.enterBound_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBound_decls" ): listener.exitBound_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitBound_decls" ): return visitor.visitBound_decls(self) else: return visitor.visitChildren(self) def bound_decls(self): localctx = WdlParser.Bound_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_bound_decls) try: self.enterOuterAlt(localctx, 1) self.state = 154 self.wdl_type() self.state = 155 self.match(WdlParser.Identifier) self.state = 156 self.match(WdlParser.EQUAL) self.state = 157 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Any_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def unbound_decls(self): return self.getTypedRuleContext(WdlParser.Unbound_declsContext,0) def bound_decls(self): return self.getTypedRuleContext(WdlParser.Bound_declsContext,0) def getRuleIndex(self): return WdlParser.RULE_any_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAny_decls" ): listener.enterAny_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAny_decls" ): listener.exitAny_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAny_decls" ): return visitor.visitAny_decls(self) else: return visitor.visitChildren(self) def any_decls(self): localctx = WdlParser.Any_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_any_decls) try: self.state = 161 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 159 self.unbound_decls() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) self.state = 160 self.bound_decls() pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class NumberContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IntLiteral(self): return self.getToken(WdlParser.IntLiteral, 0) def FloatLiteral(self): return self.getToken(WdlParser.FloatLiteral, 0) def getRuleIndex(self): return WdlParser.RULE_number def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNumber" ): listener.enterNumber(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNumber" ): listener.exitNumber(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNumber" ): return visitor.visitNumber(self) else: return visitor.visitChildren(self) def number(self): localctx = WdlParser.NumberContext(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_number) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 163 _la = self._input.LA(1) if not(_la==WdlParser.IntLiteral or _la==WdlParser.FloatLiteral): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringPart(self, i:int=None): if i is None: return self.getTokens(WdlParser.StringPart) else: return self.getToken(WdlParser.StringPart, i) def getRuleIndex(self): return WdlParser.RULE_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_part" ): listener.enterString_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_part" ): listener.exitString_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_part" ): return visitor.visitString_part(self) else: return visitor.visitChildren(self) def string_part(self): localctx = WdlParser.String_partContext(self, self._ctx, self.state) self.enterRule(localctx, 18, self.RULE_string_part) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 168 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.StringPart: self.state = 165 self.match(WdlParser.StringPart) self.state = 170 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_expr_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringCommandStart(self): return self.getToken(WdlParser.StringCommandStart, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def getRuleIndex(self): return WdlParser.RULE_string_expr_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_expr_part" ): listener.enterString_expr_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_expr_part" ): listener.exitString_expr_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_expr_part" ): return visitor.visitString_expr_part(self) else: return visitor.visitChildren(self) def string_expr_part(self): localctx = WdlParser.String_expr_partContext(self, self._ctx, self.state) self.enterRule(localctx, 20, self.RULE_string_expr_part) try: self.enterOuterAlt(localctx, 1) self.state = 171 self.match(WdlParser.StringCommandStart) self.state = 172 self.expr() self.state = 173 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_expr_with_string_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def string_expr_part(self): return self.getTypedRuleContext(WdlParser.String_expr_partContext,0) def string_part(self): return self.getTypedRuleContext(WdlParser.String_partContext,0) def getRuleIndex(self): return WdlParser.RULE_string_expr_with_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_expr_with_string_part" ): listener.enterString_expr_with_string_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_expr_with_string_part" ): listener.exitString_expr_with_string_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_expr_with_string_part" ): return visitor.visitString_expr_with_string_part(self) else: return visitor.visitChildren(self) def string_expr_with_string_part(self): localctx = WdlParser.String_expr_with_string_partContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_string_expr_with_string_part) try: self.enterOuterAlt(localctx, 1) self.state = 175 self.string_expr_part() self.state = 176 self.string_part() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class StringContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def DQUOTE(self, i:int=None): if i is None: return self.getTokens(WdlParser.DQUOTE) else: return self.getToken(WdlParser.DQUOTE, i) def string_part(self): return self.getTypedRuleContext(WdlParser.String_partContext,0) def string_expr_with_string_part(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.String_expr_with_string_partContext) else: return self.getTypedRuleContext(WdlParser.String_expr_with_string_partContext,i) def SQUOTE(self, i:int=None): if i is None: return self.getTokens(WdlParser.SQUOTE) else: return self.getToken(WdlParser.SQUOTE, i) def getRuleIndex(self): return WdlParser.RULE_string def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString" ): listener.enterString(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString" ): listener.exitString(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString" ): return visitor.visitString(self) else: return visitor.visitChildren(self) def string(self): localctx = WdlParser.StringContext(self, self._ctx, self.state) self.enterRule(localctx, 24, self.RULE_string) self._la = 0 # Token type try: self.state = 198 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.DQUOTE]: self.enterOuterAlt(localctx, 1) self.state = 178 self.match(WdlParser.DQUOTE) self.state = 179 self.string_part() self.state = 183 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.StringCommandStart: self.state = 180 self.string_expr_with_string_part() self.state = 185 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 186 self.match(WdlParser.DQUOTE) pass elif token in [WdlParser.SQUOTE]: self.enterOuterAlt(localctx, 2) self.state = 188 self.match(WdlParser.SQUOTE) self.state = 189 self.string_part() self.state = 193 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.StringCommandStart: self.state = 190 self.string_expr_with_string_part() self.state = 195 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 196 self.match(WdlParser.SQUOTE) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Primitive_literalContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def BoolLiteral(self): return self.getToken(WdlParser.BoolLiteral, 0) def number(self): return self.getTypedRuleContext(WdlParser.NumberContext,0) def string(self): return self.getTypedRuleContext(WdlParser.StringContext,0) def NONELITERAL(self): return self.getToken(WdlParser.NONELITERAL, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_primitive_literal def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPrimitive_literal" ): listener.enterPrimitive_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimitive_literal" ): listener.exitPrimitive_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPrimitive_literal" ): return visitor.visitPrimitive_literal(self) else: return visitor.visitChildren(self) def primitive_literal(self): localctx = WdlParser.Primitive_literalContext(self, self._ctx, self.state) self.enterRule(localctx, 26, self.RULE_primitive_literal) try: self.state = 205 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.BoolLiteral]: self.enterOuterAlt(localctx, 1) self.state = 200 self.match(WdlParser.BoolLiteral) pass elif token in [WdlParser.IntLiteral, WdlParser.FloatLiteral]: self.enterOuterAlt(localctx, 2) self.state = 201 self.number() pass elif token in [WdlParser.SQUOTE, WdlParser.DQUOTE]: self.enterOuterAlt(localctx, 3) self.state = 202 self.string() pass elif token in [WdlParser.NONELITERAL]: self.enterOuterAlt(localctx, 4) self.state = 203 self.match(WdlParser.NONELITERAL) pass elif token in [WdlParser.Identifier]: self.enterOuterAlt(localctx, 5) self.state = 204 self.match(WdlParser.Identifier) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ExprContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def expr_infix(self): return self.getTypedRuleContext(WdlParser.Expr_infixContext,0) def getRuleIndex(self): return WdlParser.RULE_expr def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpr" ): listener.enterExpr(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpr" ): listener.exitExpr(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpr" ): return visitor.visitExpr(self) else: return visitor.visitChildren(self) def expr(self): localctx = WdlParser.ExprContext(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_expr) try: self.enterOuterAlt(localctx, 1) self.state = 207 self.expr_infix() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_infixContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix0Context(Expr_infixContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infixContext super().__init__(parser) self.copyFrom(ctx) def expr_infix0(self): return self.getTypedRuleContext(WdlParser.Expr_infix0Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix0" ): listener.enterInfix0(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix0" ): listener.exitInfix0(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix0" ): return visitor.visitInfix0(self) else: return visitor.visitChildren(self) def expr_infix(self): localctx = WdlParser.Expr_infixContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_expr_infix) try: localctx = WdlParser.Infix0Context(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 209 self.expr_infix0(0) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_infix0Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix0 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix1Context(Expr_infix0Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix0Context super().__init__(parser) self.copyFrom(ctx) def expr_infix1(self): return self.getTypedRuleContext(WdlParser.Expr_infix1Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix1" ): listener.enterInfix1(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix1" ): listener.exitInfix1(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix1" ): return visitor.visitInfix1(self) else: return visitor.visitChildren(self) class LorContext(Expr_infix0Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix0Context super().__init__(parser) self.copyFrom(ctx) def expr_infix0(self): return self.getTypedRuleContext(WdlParser.Expr_infix0Context,0) def OR(self): return self.getToken(WdlParser.OR, 0) def expr_infix1(self): return self.getTypedRuleContext(WdlParser.Expr_infix1Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLor" ): listener.enterLor(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLor" ): listener.exitLor(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLor" ): return visitor.visitLor(self) else: return visitor.visitChildren(self) def expr_infix0(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_infix0Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 32 self.enterRecursionRule(localctx, 32, self.RULE_expr_infix0, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlParser.Infix1Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 212 self.expr_infix1(0) self._ctx.stop = self._input.LT(-1) self.state = 219 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,9,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx localctx = WdlParser.LorContext(self, WdlParser.Expr_infix0Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix0) self.state = 214 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 215 self.match(WdlParser.OR) self.state = 216 self.expr_infix1(0) self.state = 221 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,9,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix1Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix1 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix2Context(Expr_infix1Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix1Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix2" ): listener.enterInfix2(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix2" ): listener.exitInfix2(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix2" ): return visitor.visitInfix2(self) else: return visitor.visitChildren(self) class LandContext(Expr_infix1Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix1Context super().__init__(parser) self.copyFrom(ctx) def expr_infix1(self): return self.getTypedRuleContext(WdlParser.Expr_infix1Context,0) def AND(self): return self.getToken(WdlParser.AND, 0) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLand" ): listener.enterLand(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLand" ): listener.exitLand(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLand" ): return visitor.visitLand(self) else: return visitor.visitChildren(self) def expr_infix1(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_infix1Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 34 self.enterRecursionRule(localctx, 34, self.RULE_expr_infix1, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlParser.Infix2Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 223 self.expr_infix2(0) self._ctx.stop = self._input.LT(-1) self.state = 230 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,10,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx localctx = WdlParser.LandContext(self, WdlParser.Expr_infix1Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix1) self.state = 225 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 226 self.match(WdlParser.AND) self.state = 227 self.expr_infix2(0) self.state = 232 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,10,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix2Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix2 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class EqeqContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def EQUALITY(self): return self.getToken(WdlParser.EQUALITY, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterEqeq" ): listener.enterEqeq(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEqeq" ): listener.exitEqeq(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitEqeq" ): return visitor.visitEqeq(self) else: return visitor.visitChildren(self) class LtContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def LT(self): return self.getToken(WdlParser.LT, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLt" ): listener.enterLt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLt" ): listener.exitLt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLt" ): return visitor.visitLt(self) else: return visitor.visitChildren(self) class Infix3Context(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix3" ): listener.enterInfix3(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix3" ): listener.exitInfix3(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix3" ): return visitor.visitInfix3(self) else: return visitor.visitChildren(self) class GteContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def GTE(self): return self.getToken(WdlParser.GTE, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGte" ): listener.enterGte(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGte" ): listener.exitGte(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGte" ): return visitor.visitGte(self) else: return visitor.visitChildren(self) class NeqContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def NOTEQUAL(self): return self.getToken(WdlParser.NOTEQUAL, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNeq" ): listener.enterNeq(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNeq" ): listener.exitNeq(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNeq" ): return visitor.visitNeq(self) else: return visitor.visitChildren(self) class LteContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def LTE(self): return self.getToken(WdlParser.LTE, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLte" ): listener.enterLte(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLte" ): listener.exitLte(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLte" ): return visitor.visitLte(self) else: return visitor.visitChildren(self) class GtContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlParser.Expr_infix2Context,0) def GT(self): return self.getToken(WdlParser.GT, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGt" ): listener.enterGt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGt" ): listener.exitGt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGt" ): return visitor.visitGt(self) else: return visitor.visitChildren(self) def expr_infix2(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_infix2Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 36 self.enterRecursionRule(localctx, 36, self.RULE_expr_infix2, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlParser.Infix3Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 234 self.expr_infix3(0) self._ctx.stop = self._input.LT(-1) self.state = 256 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,12,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 254 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: localctx = WdlParser.EqeqContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 236 if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") self.state = 237 self.match(WdlParser.EQUALITY) self.state = 238 self.expr_infix3(0) pass elif la_ == 2: localctx = WdlParser.NeqContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 239 if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") self.state = 240 self.match(WdlParser.NOTEQUAL) self.state = 241 self.expr_infix3(0) pass elif la_ == 3: localctx = WdlParser.LteContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 242 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") self.state = 243 self.match(WdlParser.LTE) self.state = 244 self.expr_infix3(0) pass elif la_ == 4: localctx = WdlParser.GteContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 245 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 246 self.match(WdlParser.GTE) self.state = 247 self.expr_infix3(0) pass elif la_ == 5: localctx = WdlParser.LtContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 248 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 249 self.match(WdlParser.LT) self.state = 250 self.expr_infix3(0) pass elif la_ == 6: localctx = WdlParser.GtContext(self, WdlParser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 251 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 252 self.match(WdlParser.GT) self.state = 253 self.expr_infix3(0) pass self.state = 258 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,12,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix3Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix3 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class AddContext(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def PLUS(self): return self.getToken(WdlParser.PLUS, 0) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAdd" ): listener.enterAdd(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAdd" ): listener.exitAdd(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAdd" ): return visitor.visitAdd(self) else: return visitor.visitChildren(self) class SubContext(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlParser.Expr_infix3Context,0) def MINUS(self): return self.getToken(WdlParser.MINUS, 0) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterSub" ): listener.enterSub(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSub" ): listener.exitSub(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitSub" ): return visitor.visitSub(self) else: return visitor.visitChildren(self) class Infix4Context(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix4" ): listener.enterInfix4(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix4" ): listener.exitInfix4(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix4" ): return visitor.visitInfix4(self) else: return visitor.visitChildren(self) def expr_infix3(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_infix3Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 38 self.enterRecursionRule(localctx, 38, self.RULE_expr_infix3, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlParser.Infix4Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 260 self.expr_infix4(0) self._ctx.stop = self._input.LT(-1) self.state = 270 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,14,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 268 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,13,self._ctx) if la_ == 1: localctx = WdlParser.AddContext(self, WdlParser.Expr_infix3Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix3) self.state = 262 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 263 self.match(WdlParser.PLUS) self.state = 264 self.expr_infix4(0) pass elif la_ == 2: localctx = WdlParser.SubContext(self, WdlParser.Expr_infix3Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix3) self.state = 265 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 266 self.match(WdlParser.MINUS) self.state = 267 self.expr_infix4(0) pass self.state = 272 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,14,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix4Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_infix4 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class ModContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def MOD(self): return self.getToken(WdlParser.MOD, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlParser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMod" ): listener.enterMod(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMod" ): listener.exitMod(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMod" ): return visitor.visitMod(self) else: return visitor.visitChildren(self) class MulContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def STAR(self): return self.getToken(WdlParser.STAR, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlParser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMul" ): listener.enterMul(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMul" ): listener.exitMul(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMul" ): return visitor.visitMul(self) else: return visitor.visitChildren(self) class DivideContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlParser.Expr_infix4Context,0) def DIVIDE(self): return self.getToken(WdlParser.DIVIDE, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlParser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDivide" ): listener.enterDivide(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDivide" ): listener.exitDivide(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDivide" ): return visitor.visitDivide(self) else: return visitor.visitChildren(self) class Infix5Context(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix5(self): return self.getTypedRuleContext(WdlParser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix5" ): listener.enterInfix5(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix5" ): listener.exitInfix5(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix5" ): return visitor.visitInfix5(self) else: return visitor.visitChildren(self) def expr_infix4(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_infix4Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 40 self.enterRecursionRule(localctx, 40, self.RULE_expr_infix4, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlParser.Infix5Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 274 self.expr_infix5() self._ctx.stop = self._input.LT(-1) self.state = 287 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,16,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 285 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,15,self._ctx) if la_ == 1: localctx = WdlParser.MulContext(self, WdlParser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 276 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 277 self.match(WdlParser.STAR) self.state = 278 self.expr_infix5() pass elif la_ == 2: localctx = WdlParser.DivideContext(self, WdlParser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 279 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 280 self.match(WdlParser.DIVIDE) self.state = 281 self.expr_infix5() pass elif la_ == 3: localctx = WdlParser.ModContext(self, WdlParser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 282 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 283 self.match(WdlParser.MOD) self.state = 284 self.expr_infix5() pass self.state = 289 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,16,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix5Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def expr_core(self): return self.getTypedRuleContext(WdlParser.Expr_coreContext,0) def getRuleIndex(self): return WdlParser.RULE_expr_infix5 def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpr_infix5" ): listener.enterExpr_infix5(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpr_infix5" ): listener.exitExpr_infix5(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpr_infix5" ): return visitor.visitExpr_infix5(self) else: return visitor.visitChildren(self) def expr_infix5(self): localctx = WdlParser.Expr_infix5Context(self, self._ctx, self.state) self.enterRule(localctx, 42, self.RULE_expr_infix5) try: self.enterOuterAlt(localctx, 1) self.state = 290 self.expr_core(0) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_coreContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_expr_core def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Pair_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(WdlParser.LPAREN, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def COMMA(self): return self.getToken(WdlParser.COMMA, 0) def RPAREN(self): return self.getToken(WdlParser.RPAREN, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPair_literal" ): listener.enterPair_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPair_literal" ): listener.exitPair_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPair_literal" ): return visitor.visitPair_literal(self) else: return visitor.visitChildren(self) class ApplyContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def LPAREN(self): return self.getToken(WdlParser.LPAREN, 0) def RPAREN(self): return self.getToken(WdlParser.RPAREN, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlParser.COMMA) else: return self.getToken(WdlParser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterApply" ): listener.enterApply(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitApply" ): listener.exitApply(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitApply" ): return visitor.visitApply(self) else: return visitor.visitChildren(self) class Expression_groupContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(WdlParser.LPAREN, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RPAREN(self): return self.getToken(WdlParser.RPAREN, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpression_group" ): listener.enterExpression_group(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpression_group" ): listener.exitExpression_group(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpression_group" ): return visitor.visitExpression_group(self) else: return visitor.visitChildren(self) class PrimitivesContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def primitive_literal(self): return self.getTypedRuleContext(WdlParser.Primitive_literalContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPrimitives" ): listener.enterPrimitives(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimitives" ): listener.exitPrimitives(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPrimitives" ): return visitor.visitPrimitives(self) else: return visitor.visitChildren(self) class Left_nameContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLeft_name" ): listener.enterLeft_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLeft_name" ): listener.exitLeft_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLeft_name" ): return visitor.visitLeft_name(self) else: return visitor.visitChildren(self) class AtContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr_core(self): return self.getTypedRuleContext(WdlParser.Expr_coreContext,0) def LBRACK(self): return self.getToken(WdlParser.LBRACK, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RBRACK(self): return self.getToken(WdlParser.RBRACK, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAt" ): listener.enterAt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAt" ): listener.exitAt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAt" ): return visitor.visitAt(self) else: return visitor.visitChildren(self) class NegateContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def NOT(self): return self.getToken(WdlParser.NOT, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNegate" ): listener.enterNegate(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNegate" ): listener.exitNegate(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNegate" ): return visitor.visitNegate(self) else: return visitor.visitChildren(self) class UnirarysignedContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def PLUS(self): return self.getToken(WdlParser.PLUS, 0) def MINUS(self): return self.getToken(WdlParser.MINUS, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterUnirarysigned" ): listener.enterUnirarysigned(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnirarysigned" ): listener.exitUnirarysigned(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitUnirarysigned" ): return visitor.visitUnirarysigned(self) else: return visitor.visitChildren(self) class Map_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def COLON(self, i:int=None): if i is None: return self.getTokens(WdlParser.COLON) else: return self.getToken(WdlParser.COLON, i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlParser.COMMA) else: return self.getToken(WdlParser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMap_literal" ): listener.enterMap_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMap_literal" ): listener.exitMap_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMap_literal" ): return visitor.visitMap_literal(self) else: return visitor.visitChildren(self) class IfthenelseContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def IF(self): return self.getToken(WdlParser.IF, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def THEN(self): return self.getToken(WdlParser.THEN, 0) def ELSE(self): return self.getToken(WdlParser.ELSE, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterIfthenelse" ): listener.enterIfthenelse(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIfthenelse" ): listener.exitIfthenelse(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitIfthenelse" ): return visitor.visitIfthenelse(self) else: return visitor.visitChildren(self) class Get_nameContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr_core(self): return self.getTypedRuleContext(WdlParser.Expr_coreContext,0) def DOT(self): return self.getToken(WdlParser.DOT, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGet_name" ): listener.enterGet_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGet_name" ): listener.exitGet_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGet_name" ): return visitor.visitGet_name(self) else: return visitor.visitChildren(self) class Array_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LBRACK(self): return self.getToken(WdlParser.LBRACK, 0) def RBRACK(self): return self.getToken(WdlParser.RBRACK, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlParser.COMMA) else: return self.getToken(WdlParser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterArray_literal" ): listener.enterArray_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_literal" ): listener.exitArray_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitArray_literal" ): return visitor.visitArray_literal(self) else: return visitor.visitChildren(self) class Struct_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlParser.Identifier) else: return self.getToken(WdlParser.Identifier, i) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def COLON(self, i:int=None): if i is None: return self.getTokens(WdlParser.COLON) else: return self.getToken(WdlParser.COLON, i) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.ExprContext) else: return self.getTypedRuleContext(WdlParser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlParser.COMMA) else: return self.getToken(WdlParser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterStruct_literal" ): listener.enterStruct_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct_literal" ): listener.exitStruct_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitStruct_literal" ): return visitor.visitStruct_literal(self) else: return visitor.visitChildren(self) def expr_core(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlParser.Expr_coreContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 44 self.enterRecursionRule(localctx, 44, self.RULE_expr_core, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 384 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,25,self._ctx) if la_ == 1: localctx = WdlParser.ApplyContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 293 self.match(WdlParser.Identifier) self.state = 294 self.match(WdlParser.LPAREN) self.state = 303 self._errHandler.sync(self) _la = self._input.LA(1) if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.IF) | (1 << WdlParser.NONELITERAL) | (1 << WdlParser.IntLiteral) | (1 << WdlParser.FloatLiteral) | (1 << WdlParser.BoolLiteral) | (1 << WdlParser.LPAREN) | (1 << WdlParser.LBRACE) | (1 << WdlParser.LBRACK) | (1 << WdlParser.PLUS) | (1 << WdlParser.MINUS))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (WdlParser.NOT - 68)) | (1 << (WdlParser.SQUOTE - 68)) | (1 << (WdlParser.DQUOTE - 68)) | (1 << (WdlParser.Identifier - 68)))) != 0): self.state = 295 self.expr() self.state = 300 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.COMMA: self.state = 296 self.match(WdlParser.COMMA) self.state = 297 self.expr() self.state = 302 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 305 self.match(WdlParser.RPAREN) pass elif la_ == 2: localctx = WdlParser.Array_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 306 self.match(WdlParser.LBRACK) self.state = 317 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.IF) | (1 << WdlParser.NONELITERAL) | (1 << WdlParser.IntLiteral) | (1 << WdlParser.FloatLiteral) | (1 << WdlParser.BoolLiteral) | (1 << WdlParser.LPAREN) | (1 << WdlParser.LBRACE) | (1 << WdlParser.LBRACK) | (1 << WdlParser.PLUS) | (1 << WdlParser.MINUS))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (WdlParser.NOT - 68)) | (1 << (WdlParser.SQUOTE - 68)) | (1 << (WdlParser.DQUOTE - 68)) | (1 << (WdlParser.Identifier - 68)))) != 0): self.state = 307 self.expr() self.state = 312 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.COMMA: self.state = 308 self.match(WdlParser.COMMA) self.state = 309 self.expr() self.state = 314 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 319 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 320 self.match(WdlParser.RBRACK) pass elif la_ == 3: localctx = WdlParser.Pair_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 321 self.match(WdlParser.LPAREN) self.state = 322 self.expr() self.state = 323 self.match(WdlParser.COMMA) self.state = 324 self.expr() self.state = 325 self.match(WdlParser.RPAREN) pass elif la_ == 4: localctx = WdlParser.Map_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 327 self.match(WdlParser.LBRACE) self.state = 343 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.IF) | (1 << WdlParser.NONELITERAL) | (1 << WdlParser.IntLiteral) | (1 << WdlParser.FloatLiteral) | (1 << WdlParser.BoolLiteral) | (1 << WdlParser.LPAREN) | (1 << WdlParser.LBRACE) | (1 << WdlParser.LBRACK) | (1 << WdlParser.PLUS) | (1 << WdlParser.MINUS))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (WdlParser.NOT - 68)) | (1 << (WdlParser.SQUOTE - 68)) | (1 << (WdlParser.DQUOTE - 68)) | (1 << (WdlParser.Identifier - 68)))) != 0): self.state = 328 self.expr() self.state = 329 self.match(WdlParser.COLON) self.state = 330 self.expr() self.state = 338 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.COMMA: self.state = 331 self.match(WdlParser.COMMA) self.state = 332 self.expr() self.state = 333 self.match(WdlParser.COLON) self.state = 334 self.expr() self.state = 340 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 345 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 346 self.match(WdlParser.RBRACE) pass elif la_ == 5: localctx = WdlParser.Struct_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 347 self.match(WdlParser.Identifier) self.state = 348 self.match(WdlParser.LBRACE) self.state = 363 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.Identifier: self.state = 349 self.match(WdlParser.Identifier) self.state = 350 self.match(WdlParser.COLON) self.state = 351 self.expr() self.state = 358 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.COMMA: self.state = 352 self.match(WdlParser.COMMA) self.state = 353 self.match(WdlParser.Identifier) self.state = 354 self.match(WdlParser.COLON) self.state = 355 self.expr() self.state = 360 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 365 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 366 self.match(WdlParser.RBRACE) pass elif la_ == 6: localctx = WdlParser.IfthenelseContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 367 self.match(WdlParser.IF) self.state = 368 self.expr() self.state = 369 self.match(WdlParser.THEN) self.state = 370 self.expr() self.state = 371 self.match(WdlParser.ELSE) self.state = 372 self.expr() pass elif la_ == 7: localctx = WdlParser.Expression_groupContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 374 self.match(WdlParser.LPAREN) self.state = 375 self.expr() self.state = 376 self.match(WdlParser.RPAREN) pass elif la_ == 8: localctx = WdlParser.NegateContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 378 self.match(WdlParser.NOT) self.state = 379 self.expr() pass elif la_ == 9: localctx = WdlParser.UnirarysignedContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 380 _la = self._input.LA(1) if not(_la==WdlParser.PLUS or _la==WdlParser.MINUS): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() self.state = 381 self.expr() pass elif la_ == 10: localctx = WdlParser.PrimitivesContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 382 self.primitive_literal() pass elif la_ == 11: localctx = WdlParser.Left_nameContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 383 self.match(WdlParser.Identifier) pass self._ctx.stop = self._input.LT(-1) self.state = 396 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,27,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 394 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,26,self._ctx) if la_ == 1: localctx = WdlParser.AtContext(self, WdlParser.Expr_coreContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_core) self.state = 386 if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") self.state = 387 self.match(WdlParser.LBRACK) self.state = 388 self.expr() self.state = 389 self.match(WdlParser.RBRACK) pass elif la_ == 2: localctx = WdlParser.Get_nameContext(self, WdlParser.Expr_coreContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_core) self.state = 391 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") self.state = 392 self.match(WdlParser.DOT) self.state = 393 self.match(WdlParser.Identifier) pass self.state = 398 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,27,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class VersionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def VERSION(self): return self.getToken(WdlParser.VERSION, 0) def RELEASE_VERSION(self): return self.getToken(WdlParser.RELEASE_VERSION, 0) def getRuleIndex(self): return WdlParser.RULE_version def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterVersion" ): listener.enterVersion(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVersion" ): listener.exitVersion(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitVersion" ): return visitor.visitVersion(self) else: return visitor.visitChildren(self) def version(self): localctx = WdlParser.VersionContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_version) try: self.enterOuterAlt(localctx, 1) self.state = 399 self.match(WdlParser.VERSION) self.state = 400 self.match(WdlParser.RELEASE_VERSION) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_aliasContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def ALIAS(self): return self.getToken(WdlParser.ALIAS, 0) def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlParser.Identifier) else: return self.getToken(WdlParser.Identifier, i) def AS(self): return self.getToken(WdlParser.AS, 0) def getRuleIndex(self): return WdlParser.RULE_import_alias def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_alias" ): listener.enterImport_alias(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_alias" ): listener.exitImport_alias(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_alias" ): return visitor.visitImport_alias(self) else: return visitor.visitChildren(self) def import_alias(self): localctx = WdlParser.Import_aliasContext(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_import_alias) try: self.enterOuterAlt(localctx, 1) self.state = 402 self.match(WdlParser.ALIAS) self.state = 403 self.match(WdlParser.Identifier) self.state = 404 self.match(WdlParser.AS) self.state = 405 self.match(WdlParser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_asContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def AS(self): return self.getToken(WdlParser.AS, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_import_as def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_as" ): listener.enterImport_as(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_as" ): listener.exitImport_as(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_as" ): return visitor.visitImport_as(self) else: return visitor.visitChildren(self) def import_as(self): localctx = WdlParser.Import_asContext(self, self._ctx, self.state) self.enterRule(localctx, 50, self.RULE_import_as) try: self.enterOuterAlt(localctx, 1) self.state = 407 self.match(WdlParser.AS) self.state = 408 self.match(WdlParser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_docContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IMPORT(self): return self.getToken(WdlParser.IMPORT, 0) def string(self): return self.getTypedRuleContext(WdlParser.StringContext,0) def import_as(self): return self.getTypedRuleContext(WdlParser.Import_asContext,0) def import_alias(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Import_aliasContext) else: return self.getTypedRuleContext(WdlParser.Import_aliasContext,i) def getRuleIndex(self): return WdlParser.RULE_import_doc def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_doc" ): listener.enterImport_doc(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_doc" ): listener.exitImport_doc(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_doc" ): return visitor.visitImport_doc(self) else: return visitor.visitChildren(self) def import_doc(self): localctx = WdlParser.Import_docContext(self, self._ctx, self.state) self.enterRule(localctx, 52, self.RULE_import_doc) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 410 self.match(WdlParser.IMPORT) self.state = 411 self.string() self.state = 413 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.AS: self.state = 412 self.import_as() self.state = 418 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.ALIAS: self.state = 415 self.import_alias() self.state = 420 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class StructContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def STRUCT(self): return self.getToken(WdlParser.STRUCT, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def unbound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Unbound_declsContext) else: return self.getTypedRuleContext(WdlParser.Unbound_declsContext,i) def getRuleIndex(self): return WdlParser.RULE_struct def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterStruct" ): listener.enterStruct(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct" ): listener.exitStruct(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitStruct" ): return visitor.visitStruct(self) else: return visitor.visitChildren(self) def struct(self): localctx = WdlParser.StructContext(self, self._ctx, self.state) self.enterRule(localctx, 54, self.RULE_struct) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 421 self.match(WdlParser.STRUCT) self.state = 422 self.match(WdlParser.Identifier) self.state = 423 self.match(WdlParser.LBRACE) self.state = 427 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.ARRAY - 27)) | (1 << (WdlParser.MAP - 27)) | (1 << (WdlParser.PAIR - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0): self.state = 424 self.unbound_decls() self.state = 429 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 430 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def COLON(self): return self.getToken(WdlParser.COLON, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def getRuleIndex(self): return WdlParser.RULE_meta_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_kv" ): listener.enterMeta_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_kv" ): listener.exitMeta_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_kv" ): return visitor.visitMeta_kv(self) else: return visitor.visitChildren(self) def meta_kv(self): localctx = WdlParser.Meta_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 56, self.RULE_meta_kv) try: self.enterOuterAlt(localctx, 1) self.state = 432 self.match(WdlParser.Identifier) self.state = 433 self.match(WdlParser.COLON) self.state = 434 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Parameter_metaContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def PARAMETERMETA(self): return self.getToken(WdlParser.PARAMETERMETA, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def meta_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Meta_kvContext) else: return self.getTypedRuleContext(WdlParser.Meta_kvContext,i) def getRuleIndex(self): return WdlParser.RULE_parameter_meta def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterParameter_meta" ): listener.enterParameter_meta(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_meta" ): listener.exitParameter_meta(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitParameter_meta" ): return visitor.visitParameter_meta(self) else: return visitor.visitChildren(self) def parameter_meta(self): localctx = WdlParser.Parameter_metaContext(self, self._ctx, self.state) self.enterRule(localctx, 58, self.RULE_parameter_meta) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 436 self.match(WdlParser.PARAMETERMETA) self.state = 437 self.match(WdlParser.LBRACE) self.state = 441 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.Identifier: self.state = 438 self.meta_kv() self.state = 443 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 444 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class MetaContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def META(self): return self.getToken(WdlParser.META, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def meta_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Meta_kvContext) else: return self.getTypedRuleContext(WdlParser.Meta_kvContext,i) def getRuleIndex(self): return WdlParser.RULE_meta def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta" ): listener.enterMeta(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta" ): listener.exitMeta(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta" ): return visitor.visitMeta(self) else: return visitor.visitChildren(self) def meta(self): localctx = WdlParser.MetaContext(self, self._ctx, self.state) self.enterRule(localctx, 60, self.RULE_meta) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 446 self.match(WdlParser.META) self.state = 447 self.match(WdlParser.LBRACE) self.state = 451 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.Identifier: self.state = 448 self.meta_kv() self.state = 453 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 454 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_runtime_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def RUNTIMECPU(self): return self.getToken(WdlParser.RUNTIMECPU, 0) def COLON(self): return self.getToken(WdlParser.COLON, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RUNTIMECONTAINER(self): return self.getToken(WdlParser.RUNTIMECONTAINER, 0) def RUNTIMEMEMORY(self): return self.getToken(WdlParser.RUNTIMEMEMORY, 0) def RUNTIMEGPU(self): return self.getToken(WdlParser.RUNTIMEGPU, 0) def RUNTIMEDISKS(self): return self.getToken(WdlParser.RUNTIMEDISKS, 0) def RUNTIMEMAXRETRIES(self): return self.getToken(WdlParser.RUNTIMEMAXRETRIES, 0) def RUNTIMERETURNCODES(self): return self.getToken(WdlParser.RUNTIMERETURNCODES, 0) def getRuleIndex(self): return WdlParser.RULE_task_runtime_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_runtime_kv" ): listener.enterTask_runtime_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_runtime_kv" ): listener.exitTask_runtime_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_runtime_kv" ): return visitor.visitTask_runtime_kv(self) else: return visitor.visitChildren(self) def task_runtime_kv(self): localctx = WdlParser.Task_runtime_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 62, self.RULE_task_runtime_kv) try: self.state = 477 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.RUNTIMECPU]: self.enterOuterAlt(localctx, 1) self.state = 456 self.match(WdlParser.RUNTIMECPU) self.state = 457 self.match(WdlParser.COLON) self.state = 458 self.expr() pass elif token in [WdlParser.RUNTIMECONTAINER]: self.enterOuterAlt(localctx, 2) self.state = 459 self.match(WdlParser.RUNTIMECONTAINER) self.state = 460 self.match(WdlParser.COLON) self.state = 461 self.expr() pass elif token in [WdlParser.RUNTIMEMEMORY]: self.enterOuterAlt(localctx, 3) self.state = 462 self.match(WdlParser.RUNTIMEMEMORY) self.state = 463 self.match(WdlParser.COLON) self.state = 464 self.expr() pass elif token in [WdlParser.RUNTIMEGPU]: self.enterOuterAlt(localctx, 4) self.state = 465 self.match(WdlParser.RUNTIMEGPU) self.state = 466 self.match(WdlParser.COLON) self.state = 467 self.expr() pass elif token in [WdlParser.RUNTIMEDISKS]: self.enterOuterAlt(localctx, 5) self.state = 468 self.match(WdlParser.RUNTIMEDISKS) self.state = 469 self.match(WdlParser.COLON) self.state = 470 self.expr() pass elif token in [WdlParser.RUNTIMEMAXRETRIES]: self.enterOuterAlt(localctx, 6) self.state = 471 self.match(WdlParser.RUNTIMEMAXRETRIES) self.state = 472 self.match(WdlParser.COLON) self.state = 473 self.expr() pass elif token in [WdlParser.RUNTIMERETURNCODES]: self.enterOuterAlt(localctx, 7) self.state = 474 self.match(WdlParser.RUNTIMERETURNCODES) self.state = 475 self.match(WdlParser.COLON) self.state = 476 self.expr() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_runtimeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def RUNTIME(self): return self.getToken(WdlParser.RUNTIME, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def task_runtime_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Task_runtime_kvContext) else: return self.getTypedRuleContext(WdlParser.Task_runtime_kvContext,i) def getRuleIndex(self): return WdlParser.RULE_task_runtime def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_runtime" ): listener.enterTask_runtime(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_runtime" ): listener.exitTask_runtime(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_runtime" ): return visitor.visitTask_runtime(self) else: return visitor.visitChildren(self) def task_runtime(self): localctx = WdlParser.Task_runtimeContext(self, self._ctx, self.state) self.enterRule(localctx, 64, self.RULE_task_runtime) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 479 self.match(WdlParser.RUNTIME) self.state = 480 self.match(WdlParser.LBRACE) self.state = 484 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.RUNTIMECPU) | (1 << WdlParser.RUNTIMECONTAINER) | (1 << WdlParser.RUNTIMEMEMORY) | (1 << WdlParser.RUNTIMEGPU) | (1 << WdlParser.RUNTIMEDISKS) | (1 << WdlParser.RUNTIMEMAXRETRIES) | (1 << WdlParser.RUNTIMERETURNCODES))) != 0): self.state = 481 self.task_runtime_kv() self.state = 486 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 487 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_hints_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def COLON(self): return self.getToken(WdlParser.COLON, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def getRuleIndex(self): return WdlParser.RULE_task_hints_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_hints_kv" ): listener.enterTask_hints_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_hints_kv" ): listener.exitTask_hints_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_hints_kv" ): return visitor.visitTask_hints_kv(self) else: return visitor.visitChildren(self) def task_hints_kv(self): localctx = WdlParser.Task_hints_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 66, self.RULE_task_hints_kv) try: self.enterOuterAlt(localctx, 1) self.state = 489 self.match(WdlParser.Identifier) self.state = 490 self.match(WdlParser.COLON) self.state = 491 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_hintsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def HINTS(self): return self.getToken(WdlParser.HINTS, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def task_hints_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Task_hints_kvContext) else: return self.getTypedRuleContext(WdlParser.Task_hints_kvContext,i) def getRuleIndex(self): return WdlParser.RULE_task_hints def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_hints" ): listener.enterTask_hints(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_hints" ): listener.exitTask_hints(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_hints" ): return visitor.visitTask_hints(self) else: return visitor.visitChildren(self) def task_hints(self): localctx = WdlParser.Task_hintsContext(self, self._ctx, self.state) self.enterRule(localctx, 68, self.RULE_task_hints) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 493 self.match(WdlParser.HINTS) self.state = 494 self.match(WdlParser.LBRACE) self.state = 498 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.Identifier: self.state = 495 self.task_hints_kv() self.state = 500 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 501 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlParser.INPUT, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def any_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Any_declsContext) else: return self.getTypedRuleContext(WdlParser.Any_declsContext,i) def getRuleIndex(self): return WdlParser.RULE_task_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_input" ): listener.enterTask_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_input" ): listener.exitTask_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_input" ): return visitor.visitTask_input(self) else: return visitor.visitChildren(self) def task_input(self): localctx = WdlParser.Task_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 70, self.RULE_task_input) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 503 self.match(WdlParser.INPUT) self.state = 504 self.match(WdlParser.LBRACE) self.state = 508 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.ARRAY - 27)) | (1 << (WdlParser.MAP - 27)) | (1 << (WdlParser.PAIR - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0): self.state = 505 self.any_decls() self.state = 510 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 511 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_outputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def OUTPUT(self): return self.getToken(WdlParser.OUTPUT, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def bound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Bound_declsContext) else: return self.getTypedRuleContext(WdlParser.Bound_declsContext,i) def getRuleIndex(self): return WdlParser.RULE_task_output def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_output" ): listener.enterTask_output(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_output" ): listener.exitTask_output(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_output" ): return visitor.visitTask_output(self) else: return visitor.visitChildren(self) def task_output(self): localctx = WdlParser.Task_outputContext(self, self._ctx, self.state) self.enterRule(localctx, 72, self.RULE_task_output) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 513 self.match(WdlParser.OUTPUT) self.state = 514 self.match(WdlParser.LBRACE) self.state = 518 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.ARRAY - 27)) | (1 << (WdlParser.MAP - 27)) | (1 << (WdlParser.PAIR - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0): self.state = 515 self.bound_decls() self.state = 520 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 521 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_commandContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def COMMAND(self): return self.getToken(WdlParser.COMMAND, 0) def task_command_string_part(self): return self.getTypedRuleContext(WdlParser.Task_command_string_partContext,0) def EndCommand(self): return self.getToken(WdlParser.EndCommand, 0) def task_command_expr_with_string(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Task_command_expr_with_stringContext) else: return self.getTypedRuleContext(WdlParser.Task_command_expr_with_stringContext,i) def HEREDOC_COMMAND(self): return self.getToken(WdlParser.HEREDOC_COMMAND, 0) def getRuleIndex(self): return WdlParser.RULE_task_command def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command" ): listener.enterTask_command(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command" ): listener.exitTask_command(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command" ): return visitor.visitTask_command(self) else: return visitor.visitChildren(self) def task_command(self): localctx = WdlParser.Task_commandContext(self, self._ctx, self.state) self.enterRule(localctx, 74, self.RULE_task_command) self._la = 0 # Token type try: self.state = 543 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.COMMAND]: self.enterOuterAlt(localctx, 1) self.state = 523 self.match(WdlParser.COMMAND) self.state = 524 self.task_command_string_part() self.state = 528 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.StringCommandStart: self.state = 525 self.task_command_expr_with_string() self.state = 530 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 531 self.match(WdlParser.EndCommand) pass elif token in [WdlParser.HEREDOC_COMMAND]: self.enterOuterAlt(localctx, 2) self.state = 533 self.match(WdlParser.HEREDOC_COMMAND) self.state = 534 self.task_command_string_part() self.state = 538 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.StringCommandStart: self.state = 535 self.task_command_expr_with_string() self.state = 540 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 541 self.match(WdlParser.EndCommand) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_string_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def CommandStringPart(self, i:int=None): if i is None: return self.getTokens(WdlParser.CommandStringPart) else: return self.getToken(WdlParser.CommandStringPart, i) def getRuleIndex(self): return WdlParser.RULE_task_command_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_string_part" ): listener.enterTask_command_string_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_string_part" ): listener.exitTask_command_string_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_string_part" ): return visitor.visitTask_command_string_part(self) else: return visitor.visitChildren(self) def task_command_string_part(self): localctx = WdlParser.Task_command_string_partContext(self, self._ctx, self.state) self.enterRule(localctx, 76, self.RULE_task_command_string_part) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 548 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.CommandStringPart: self.state = 545 self.match(WdlParser.CommandStringPart) self.state = 550 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_expr_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringCommandStart(self): return self.getToken(WdlParser.StringCommandStart, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def getRuleIndex(self): return WdlParser.RULE_task_command_expr_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_expr_part" ): listener.enterTask_command_expr_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_expr_part" ): listener.exitTask_command_expr_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_expr_part" ): return visitor.visitTask_command_expr_part(self) else: return visitor.visitChildren(self) def task_command_expr_part(self): localctx = WdlParser.Task_command_expr_partContext(self, self._ctx, self.state) self.enterRule(localctx, 78, self.RULE_task_command_expr_part) try: self.enterOuterAlt(localctx, 1) self.state = 551 self.match(WdlParser.StringCommandStart) self.state = 552 self.expr() self.state = 553 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_expr_with_stringContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def task_command_expr_part(self): return self.getTypedRuleContext(WdlParser.Task_command_expr_partContext,0) def task_command_string_part(self): return self.getTypedRuleContext(WdlParser.Task_command_string_partContext,0) def getRuleIndex(self): return WdlParser.RULE_task_command_expr_with_string def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_expr_with_string" ): listener.enterTask_command_expr_with_string(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_expr_with_string" ): listener.exitTask_command_expr_with_string(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_expr_with_string" ): return visitor.visitTask_command_expr_with_string(self) else: return visitor.visitChildren(self) def task_command_expr_with_string(self): localctx = WdlParser.Task_command_expr_with_stringContext(self, self._ctx, self.state) self.enterRule(localctx, 80, self.RULE_task_command_expr_with_string) try: self.enterOuterAlt(localctx, 1) self.state = 555 self.task_command_expr_part() self.state = 556 self.task_command_string_part() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def task_input(self): return self.getTypedRuleContext(WdlParser.Task_inputContext,0) def task_output(self): return self.getTypedRuleContext(WdlParser.Task_outputContext,0) def task_command(self): return self.getTypedRuleContext(WdlParser.Task_commandContext,0) def task_runtime(self): return self.getTypedRuleContext(WdlParser.Task_runtimeContext,0) def task_hints(self): return self.getTypedRuleContext(WdlParser.Task_hintsContext,0) def bound_decls(self): return self.getTypedRuleContext(WdlParser.Bound_declsContext,0) def parameter_meta(self): return self.getTypedRuleContext(WdlParser.Parameter_metaContext,0) def meta(self): return self.getTypedRuleContext(WdlParser.MetaContext,0) def getRuleIndex(self): return WdlParser.RULE_task_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_element" ): listener.enterTask_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_element" ): listener.exitTask_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_element" ): return visitor.visitTask_element(self) else: return visitor.visitChildren(self) def task_element(self): localctx = WdlParser.Task_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 82, self.RULE_task_element) try: self.state = 566 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.INPUT]: self.enterOuterAlt(localctx, 1) self.state = 558 self.task_input() pass elif token in [WdlParser.OUTPUT]: self.enterOuterAlt(localctx, 2) self.state = 559 self.task_output() pass elif token in [WdlParser.HEREDOC_COMMAND, WdlParser.COMMAND]: self.enterOuterAlt(localctx, 3) self.state = 560 self.task_command() pass elif token in [WdlParser.RUNTIME]: self.enterOuterAlt(localctx, 4) self.state = 561 self.task_runtime() pass elif token in [WdlParser.HINTS]: self.enterOuterAlt(localctx, 5) self.state = 562 self.task_hints() pass elif token in [WdlParser.BOOLEAN, WdlParser.INT, WdlParser.FLOAT, WdlParser.STRING, WdlParser.FILE, WdlParser.DIRECTORY, WdlParser.ARRAY, WdlParser.MAP, WdlParser.PAIR, WdlParser.Identifier]: self.enterOuterAlt(localctx, 6) self.state = 563 self.bound_decls() pass elif token in [WdlParser.PARAMETERMETA]: self.enterOuterAlt(localctx, 7) self.state = 564 self.parameter_meta() pass elif token in [WdlParser.META]: self.enterOuterAlt(localctx, 8) self.state = 565 self.meta() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class TaskContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def TASK(self): return self.getToken(WdlParser.TASK, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def task_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Task_elementContext) else: return self.getTypedRuleContext(WdlParser.Task_elementContext,i) def getRuleIndex(self): return WdlParser.RULE_task def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask" ): listener.enterTask(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask" ): listener.exitTask(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask" ): return visitor.visitTask(self) else: return visitor.visitChildren(self) def task(self): localctx = WdlParser.TaskContext(self, self._ctx, self.state) self.enterRule(localctx, 84, self.RULE_task) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 568 self.match(WdlParser.TASK) self.state = 569 self.match(WdlParser.Identifier) self.state = 570 self.match(WdlParser.LBRACE) self.state = 572 self._errHandler.sync(self) _la = self._input.LA(1) while True: self.state = 571 self.task_element() self.state = 574 self._errHandler.sync(self) _la = self._input.LA(1) if not (((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & ((1 << (WdlParser.INPUT - 14)) | (1 << (WdlParser.OUTPUT - 14)) | (1 << (WdlParser.PARAMETERMETA - 14)) | (1 << (WdlParser.META - 14)) | (1 << (WdlParser.HINTS - 14)) | (1 << (WdlParser.RUNTIME - 14)) | (1 << (WdlParser.BOOLEAN - 14)) | (1 << (WdlParser.INT - 14)) | (1 << (WdlParser.FLOAT - 14)) | (1 << (WdlParser.STRING - 14)) | (1 << (WdlParser.FILE - 14)) | (1 << (WdlParser.DIRECTORY - 14)) | (1 << (WdlParser.ARRAY - 14)) | (1 << (WdlParser.MAP - 14)) | (1 << (WdlParser.PAIR - 14)) | (1 << (WdlParser.HEREDOC_COMMAND - 14)) | (1 << (WdlParser.COMMAND - 14)) | (1 << (WdlParser.Identifier - 14)))) != 0)): break self.state = 576 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Inner_workflow_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def bound_decls(self): return self.getTypedRuleContext(WdlParser.Bound_declsContext,0) def call(self): return self.getTypedRuleContext(WdlParser.CallContext,0) def scatter(self): return self.getTypedRuleContext(WdlParser.ScatterContext,0) def conditional(self): return self.getTypedRuleContext(WdlParser.ConditionalContext,0) def getRuleIndex(self): return WdlParser.RULE_inner_workflow_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInner_workflow_element" ): listener.enterInner_workflow_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInner_workflow_element" ): listener.exitInner_workflow_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInner_workflow_element" ): return visitor.visitInner_workflow_element(self) else: return visitor.visitChildren(self) def inner_workflow_element(self): localctx = WdlParser.Inner_workflow_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 86, self.RULE_inner_workflow_element) try: self.state = 582 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.BOOLEAN, WdlParser.INT, WdlParser.FLOAT, WdlParser.STRING, WdlParser.FILE, WdlParser.DIRECTORY, WdlParser.ARRAY, WdlParser.MAP, WdlParser.PAIR, WdlParser.Identifier]: self.enterOuterAlt(localctx, 1) self.state = 578 self.bound_decls() pass elif token in [WdlParser.CALL]: self.enterOuterAlt(localctx, 2) self.state = 579 self.call() pass elif token in [WdlParser.SCATTER]: self.enterOuterAlt(localctx, 3) self.state = 580 self.scatter() pass elif token in [WdlParser.IF]: self.enterOuterAlt(localctx, 4) self.state = 581 self.conditional() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_aliasContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def AS(self): return self.getToken(WdlParser.AS, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_call_alias def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_alias" ): listener.enterCall_alias(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_alias" ): listener.exitCall_alias(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_alias" ): return visitor.visitCall_alias(self) else: return visitor.visitChildren(self) def call_alias(self): localctx = WdlParser.Call_aliasContext(self, self._ctx, self.state) self.enterRule(localctx, 88, self.RULE_call_alias) try: self.enterOuterAlt(localctx, 1) self.state = 584 self.match(WdlParser.AS) self.state = 585 self.match(WdlParser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def EQUAL(self): return self.getToken(WdlParser.EQUAL, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def getRuleIndex(self): return WdlParser.RULE_call_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_input" ): listener.enterCall_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_input" ): listener.exitCall_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_input" ): return visitor.visitCall_input(self) else: return visitor.visitChildren(self) def call_input(self): localctx = WdlParser.Call_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 90, self.RULE_call_input) try: self.enterOuterAlt(localctx, 1) self.state = 587 self.match(WdlParser.Identifier) self.state = 588 self.match(WdlParser.EQUAL) self.state = 589 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_inputsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlParser.INPUT, 0) def COLON(self): return self.getToken(WdlParser.COLON, 0) def call_input(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Call_inputContext) else: return self.getTypedRuleContext(WdlParser.Call_inputContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlParser.COMMA) else: return self.getToken(WdlParser.COMMA, i) def getRuleIndex(self): return WdlParser.RULE_call_inputs def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_inputs" ): listener.enterCall_inputs(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_inputs" ): listener.exitCall_inputs(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_inputs" ): return visitor.visitCall_inputs(self) else: return visitor.visitChildren(self) def call_inputs(self): localctx = WdlParser.Call_inputsContext(self, self._ctx, self.state) self.enterRule(localctx, 92, self.RULE_call_inputs) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 591 self.match(WdlParser.INPUT) self.state = 592 self.match(WdlParser.COLON) self.state = 593 self.call_input() self.state = 598 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.COMMA: self.state = 594 self.match(WdlParser.COMMA) self.state = 595 self.call_input() self.state = 600 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_bodyContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def call_inputs(self): return self.getTypedRuleContext(WdlParser.Call_inputsContext,0) def getRuleIndex(self): return WdlParser.RULE_call_body def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_body" ): listener.enterCall_body(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_body" ): listener.exitCall_body(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_body" ): return visitor.visitCall_body(self) else: return visitor.visitChildren(self) def call_body(self): localctx = WdlParser.Call_bodyContext(self, self._ctx, self.state) self.enterRule(localctx, 94, self.RULE_call_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 601 self.match(WdlParser.LBRACE) self.state = 603 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.INPUT: self.state = 602 self.call_inputs() self.state = 605 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_aftersContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def AFTER(self): return self.getToken(WdlParser.AFTER, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def getRuleIndex(self): return WdlParser.RULE_call_afters def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_afters" ): listener.enterCall_afters(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_afters" ): listener.exitCall_afters(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_afters" ): return visitor.visitCall_afters(self) else: return visitor.visitChildren(self) def call_afters(self): localctx = WdlParser.Call_aftersContext(self, self._ctx, self.state) self.enterRule(localctx, 96, self.RULE_call_afters) try: self.enterOuterAlt(localctx, 1) self.state = 607 self.match(WdlParser.AFTER) self.state = 608 self.match(WdlParser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_nameContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlParser.Identifier) else: return self.getToken(WdlParser.Identifier, i) def DOT(self, i:int=None): if i is None: return self.getTokens(WdlParser.DOT) else: return self.getToken(WdlParser.DOT, i) def getRuleIndex(self): return WdlParser.RULE_call_name def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_name" ): listener.enterCall_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_name" ): listener.exitCall_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_name" ): return visitor.visitCall_name(self) else: return visitor.visitChildren(self) def call_name(self): localctx = WdlParser.Call_nameContext(self, self._ctx, self.state) self.enterRule(localctx, 98, self.RULE_call_name) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 610 self.match(WdlParser.Identifier) self.state = 615 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.DOT: self.state = 611 self.match(WdlParser.DOT) self.state = 612 self.match(WdlParser.Identifier) self.state = 617 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class CallContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def CALL(self): return self.getToken(WdlParser.CALL, 0) def call_name(self): return self.getTypedRuleContext(WdlParser.Call_nameContext,0) def call_alias(self): return self.getTypedRuleContext(WdlParser.Call_aliasContext,0) def call_afters(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Call_aftersContext) else: return self.getTypedRuleContext(WdlParser.Call_aftersContext,i) def call_body(self): return self.getTypedRuleContext(WdlParser.Call_bodyContext,0) def getRuleIndex(self): return WdlParser.RULE_call def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall" ): listener.enterCall(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall" ): listener.exitCall(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall" ): return visitor.visitCall(self) else: return visitor.visitChildren(self) def call(self): localctx = WdlParser.CallContext(self, self._ctx, self.state) self.enterRule(localctx, 100, self.RULE_call) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 618 self.match(WdlParser.CALL) self.state = 619 self.call_name() self.state = 621 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.AS: self.state = 620 self.call_alias() self.state = 626 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlParser.AFTER: self.state = 623 self.call_afters() self.state = 628 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 630 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.LBRACE: self.state = 629 self.call_body() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ScatterContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def SCATTER(self): return self.getToken(WdlParser.SCATTER, 0) def LPAREN(self): return self.getToken(WdlParser.LPAREN, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def In(self): return self.getToken(WdlParser.In, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RPAREN(self): return self.getToken(WdlParser.RPAREN, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def inner_workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Inner_workflow_elementContext) else: return self.getTypedRuleContext(WdlParser.Inner_workflow_elementContext,i) def getRuleIndex(self): return WdlParser.RULE_scatter def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterScatter" ): listener.enterScatter(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitScatter" ): listener.exitScatter(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitScatter" ): return visitor.visitScatter(self) else: return visitor.visitChildren(self) def scatter(self): localctx = WdlParser.ScatterContext(self, self._ctx, self.state) self.enterRule(localctx, 102, self.RULE_scatter) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 632 self.match(WdlParser.SCATTER) self.state = 633 self.match(WdlParser.LPAREN) self.state = 634 self.match(WdlParser.Identifier) self.state = 635 self.match(WdlParser.In) self.state = 636 self.expr() self.state = 637 self.match(WdlParser.RPAREN) self.state = 638 self.match(WdlParser.LBRACE) self.state = 642 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.SCATTER) | (1 << WdlParser.CALL) | (1 << WdlParser.IF) | (1 << WdlParser.BOOLEAN) | (1 << WdlParser.INT) | (1 << WdlParser.FLOAT) | (1 << WdlParser.STRING) | (1 << WdlParser.FILE) | (1 << WdlParser.DIRECTORY) | (1 << WdlParser.ARRAY) | (1 << WdlParser.MAP) | (1 << WdlParser.PAIR))) != 0) or _la==WdlParser.Identifier: self.state = 639 self.inner_workflow_element() self.state = 644 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 645 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ConditionalContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IF(self): return self.getToken(WdlParser.IF, 0) def LPAREN(self): return self.getToken(WdlParser.LPAREN, 0) def expr(self): return self.getTypedRuleContext(WdlParser.ExprContext,0) def RPAREN(self): return self.getToken(WdlParser.RPAREN, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def inner_workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Inner_workflow_elementContext) else: return self.getTypedRuleContext(WdlParser.Inner_workflow_elementContext,i) def getRuleIndex(self): return WdlParser.RULE_conditional def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterConditional" ): listener.enterConditional(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConditional" ): listener.exitConditional(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitConditional" ): return visitor.visitConditional(self) else: return visitor.visitChildren(self) def conditional(self): localctx = WdlParser.ConditionalContext(self, self._ctx, self.state) self.enterRule(localctx, 104, self.RULE_conditional) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 647 self.match(WdlParser.IF) self.state = 648 self.match(WdlParser.LPAREN) self.state = 649 self.expr() self.state = 650 self.match(WdlParser.RPAREN) self.state = 651 self.match(WdlParser.LBRACE) self.state = 655 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.SCATTER) | (1 << WdlParser.CALL) | (1 << WdlParser.IF) | (1 << WdlParser.BOOLEAN) | (1 << WdlParser.INT) | (1 << WdlParser.FLOAT) | (1 << WdlParser.STRING) | (1 << WdlParser.FILE) | (1 << WdlParser.DIRECTORY) | (1 << WdlParser.ARRAY) | (1 << WdlParser.MAP) | (1 << WdlParser.PAIR))) != 0) or _la==WdlParser.Identifier: self.state = 652 self.inner_workflow_element() self.state = 657 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 658 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlParser.INPUT, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def any_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Any_declsContext) else: return self.getTypedRuleContext(WdlParser.Any_declsContext,i) def getRuleIndex(self): return WdlParser.RULE_workflow_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow_input" ): listener.enterWorkflow_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow_input" ): listener.exitWorkflow_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow_input" ): return visitor.visitWorkflow_input(self) else: return visitor.visitChildren(self) def workflow_input(self): localctx = WdlParser.Workflow_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_workflow_input) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 660 self.match(WdlParser.INPUT) self.state = 661 self.match(WdlParser.LBRACE) self.state = 665 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.ARRAY - 27)) | (1 << (WdlParser.MAP - 27)) | (1 << (WdlParser.PAIR - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0): self.state = 662 self.any_decls() self.state = 667 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 668 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_outputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def OUTPUT(self): return self.getToken(WdlParser.OUTPUT, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def bound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Bound_declsContext) else: return self.getTypedRuleContext(WdlParser.Bound_declsContext,i) def getRuleIndex(self): return WdlParser.RULE_workflow_output def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow_output" ): listener.enterWorkflow_output(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow_output" ): listener.exitWorkflow_output(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow_output" ): return visitor.visitWorkflow_output(self) else: return visitor.visitChildren(self) def workflow_output(self): localctx = WdlParser.Workflow_outputContext(self, self._ctx, self.state) self.enterRule(localctx, 108, self.RULE_workflow_output) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 670 self.match(WdlParser.OUTPUT) self.state = 671 self.match(WdlParser.LBRACE) self.state = 675 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 27)) & ~0x3f) == 0 and ((1 << (_la - 27)) & ((1 << (WdlParser.BOOLEAN - 27)) | (1 << (WdlParser.INT - 27)) | (1 << (WdlParser.FLOAT - 27)) | (1 << (WdlParser.STRING - 27)) | (1 << (WdlParser.FILE - 27)) | (1 << (WdlParser.DIRECTORY - 27)) | (1 << (WdlParser.ARRAY - 27)) | (1 << (WdlParser.MAP - 27)) | (1 << (WdlParser.PAIR - 27)) | (1 << (WdlParser.Identifier - 27)))) != 0): self.state = 672 self.bound_decls() self.state = 677 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 678 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlParser.RULE_workflow_element def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class OutputContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def workflow_output(self): return self.getTypedRuleContext(WdlParser.Workflow_outputContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterOutput" ): listener.enterOutput(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOutput" ): listener.exitOutput(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitOutput" ): return visitor.visitOutput(self) else: return visitor.visitChildren(self) class InputContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def workflow_input(self): return self.getTypedRuleContext(WdlParser.Workflow_inputContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInput" ): listener.enterInput(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInput" ): listener.exitInput(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInput" ): return visitor.visitInput(self) else: return visitor.visitChildren(self) class Parameter_meta_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def parameter_meta(self): return self.getTypedRuleContext(WdlParser.Parameter_metaContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterParameter_meta_element" ): listener.enterParameter_meta_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_meta_element" ): listener.exitParameter_meta_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitParameter_meta_element" ): return visitor.visitParameter_meta_element(self) else: return visitor.visitChildren(self) class Meta_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def meta(self): return self.getTypedRuleContext(WdlParser.MetaContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_element" ): listener.enterMeta_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_element" ): listener.exitMeta_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_element" ): return visitor.visitMeta_element(self) else: return visitor.visitChildren(self) class Inner_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlParser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def inner_workflow_element(self): return self.getTypedRuleContext(WdlParser.Inner_workflow_elementContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInner_element" ): listener.enterInner_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInner_element" ): listener.exitInner_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInner_element" ): return visitor.visitInner_element(self) else: return visitor.visitChildren(self) def workflow_element(self): localctx = WdlParser.Workflow_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 110, self.RULE_workflow_element) try: self.state = 685 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.INPUT]: localctx = WdlParser.InputContext(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 680 self.workflow_input() pass elif token in [WdlParser.OUTPUT]: localctx = WdlParser.OutputContext(self, localctx) self.enterOuterAlt(localctx, 2) self.state = 681 self.workflow_output() pass elif token in [WdlParser.SCATTER, WdlParser.CALL, WdlParser.IF, WdlParser.BOOLEAN, WdlParser.INT, WdlParser.FLOAT, WdlParser.STRING, WdlParser.FILE, WdlParser.DIRECTORY, WdlParser.ARRAY, WdlParser.MAP, WdlParser.PAIR, WdlParser.Identifier]: localctx = WdlParser.Inner_elementContext(self, localctx) self.enterOuterAlt(localctx, 3) self.state = 682 self.inner_workflow_element() pass elif token in [WdlParser.PARAMETERMETA]: localctx = WdlParser.Parameter_meta_elementContext(self, localctx) self.enterOuterAlt(localctx, 4) self.state = 683 self.parameter_meta() pass elif token in [WdlParser.META]: localctx = WdlParser.Meta_elementContext(self, localctx) self.enterOuterAlt(localctx, 5) self.state = 684 self.meta() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class WorkflowContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def WORKFLOW(self): return self.getToken(WdlParser.WORKFLOW, 0) def Identifier(self): return self.getToken(WdlParser.Identifier, 0) def LBRACE(self): return self.getToken(WdlParser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlParser.RBRACE, 0) def workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Workflow_elementContext) else: return self.getTypedRuleContext(WdlParser.Workflow_elementContext,i) def getRuleIndex(self): return WdlParser.RULE_workflow def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow" ): listener.enterWorkflow(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow" ): listener.exitWorkflow(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow" ): return visitor.visitWorkflow(self) else: return visitor.visitChildren(self) def workflow(self): localctx = WdlParser.WorkflowContext(self, self._ctx, self.state) self.enterRule(localctx, 112, self.RULE_workflow) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 687 self.match(WdlParser.WORKFLOW) self.state = 688 self.match(WdlParser.Identifier) self.state = 689 self.match(WdlParser.LBRACE) self.state = 693 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.SCATTER) | (1 << WdlParser.CALL) | (1 << WdlParser.IF) | (1 << WdlParser.INPUT) | (1 << WdlParser.OUTPUT) | (1 << WdlParser.PARAMETERMETA) | (1 << WdlParser.META) | (1 << WdlParser.BOOLEAN) | (1 << WdlParser.INT) | (1 << WdlParser.FLOAT) | (1 << WdlParser.STRING) | (1 << WdlParser.FILE) | (1 << WdlParser.DIRECTORY) | (1 << WdlParser.ARRAY) | (1 << WdlParser.MAP) | (1 << WdlParser.PAIR))) != 0) or _la==WdlParser.Identifier: self.state = 690 self.workflow_element() self.state = 695 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 696 self.match(WdlParser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Document_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def import_doc(self): return self.getTypedRuleContext(WdlParser.Import_docContext,0) def struct(self): return self.getTypedRuleContext(WdlParser.StructContext,0) def task(self): return self.getTypedRuleContext(WdlParser.TaskContext,0) def workflow(self): return self.getTypedRuleContext(WdlParser.WorkflowContext,0) def getRuleIndex(self): return WdlParser.RULE_document_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDocument_element" ): listener.enterDocument_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDocument_element" ): listener.exitDocument_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDocument_element" ): return visitor.visitDocument_element(self) else: return visitor.visitChildren(self) def document_element(self): localctx = WdlParser.Document_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 114, self.RULE_document_element) try: self.state = 702 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlParser.IMPORT]: self.enterOuterAlt(localctx, 1) self.state = 698 self.import_doc() pass elif token in [WdlParser.STRUCT]: self.enterOuterAlt(localctx, 2) self.state = 699 self.struct() pass elif token in [WdlParser.TASK]: self.enterOuterAlt(localctx, 3) self.state = 700 self.task() pass elif token in [WdlParser.WORKFLOW]: self.enterOuterAlt(localctx, 4) self.state = 701 self.workflow() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class DocumentContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def version(self): return self.getTypedRuleContext(WdlParser.VersionContext,0) def EOF(self): return self.getToken(WdlParser.EOF, 0) def document_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlParser.Document_elementContext) else: return self.getTypedRuleContext(WdlParser.Document_elementContext,i) def workflow(self): return self.getTypedRuleContext(WdlParser.WorkflowContext,0) def getRuleIndex(self): return WdlParser.RULE_document def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDocument" ): listener.enterDocument(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDocument" ): listener.exitDocument(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDocument" ): return visitor.visitDocument(self) else: return visitor.visitChildren(self) def document(self): localctx = WdlParser.DocumentContext(self, self._ctx, self.state) self.enterRule(localctx, 116, self.RULE_document) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 704 self.version() self.state = 708 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,58,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 705 self.document_element() self.state = 710 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,58,self._ctx) self.state = 718 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlParser.WORKFLOW: self.state = 711 self.workflow() self.state = 715 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlParser.IMPORT) | (1 << WdlParser.WORKFLOW) | (1 << WdlParser.TASK) | (1 << WdlParser.STRUCT))) != 0): self.state = 712 self.document_element() self.state = 717 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 720 self.match(WdlParser.EOF) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() self._predicates[16] = self.expr_infix0_sempred self._predicates[17] = self.expr_infix1_sempred self._predicates[18] = self.expr_infix2_sempred self._predicates[19] = self.expr_infix3_sempred self._predicates[20] = self.expr_infix4_sempred self._predicates[22] = self.expr_core_sempred pred = self._predicates.get(ruleIndex, None) if pred is None: raise Exception("No predicate with index:" + str(ruleIndex)) else: return pred(localctx, predIndex) def expr_infix0_sempred(self, localctx:Expr_infix0Context, predIndex:int): if predIndex == 0: return self.precpred(self._ctx, 2) def expr_infix1_sempred(self, localctx:Expr_infix1Context, predIndex:int): if predIndex == 1: return self.precpred(self._ctx, 2) def expr_infix2_sempred(self, localctx:Expr_infix2Context, predIndex:int): if predIndex == 2: return self.precpred(self._ctx, 7) if predIndex == 3: return self.precpred(self._ctx, 6) if predIndex == 4: return self.precpred(self._ctx, 5) if predIndex == 5: return self.precpred(self._ctx, 4) if predIndex == 6: return self.precpred(self._ctx, 3) if predIndex == 7: return self.precpred(self._ctx, 2) def expr_infix3_sempred(self, localctx:Expr_infix3Context, predIndex:int): if predIndex == 8: return self.precpred(self._ctx, 3) if predIndex == 9: return self.precpred(self._ctx, 2) def expr_infix4_sempred(self, localctx:Expr_infix4Context, predIndex:int): if predIndex == 10: return self.precpred(self._ctx, 4) if predIndex == 11: return self.precpred(self._ctx, 3) if predIndex == 12: return self.precpred(self._ctx, 2) def expr_core_sempred(self, localctx:Expr_coreContext, predIndex:int): if predIndex == 13: return self.precpred(self._ctx, 6) if predIndex == 14: return self.precpred(self._ctx, 5) wdlparse-0.1.0/wdlparse/dev/WdlParserListener.py0000644000076500000240000005714713770744640022201 0ustar wlgaostaff00000000000000# Generated from WdlParser.g4 by ANTLR 4.8 from antlr4 import * if __name__ is not None and "." in __name__: from .WdlParser import WdlParser else: from WdlParser import WdlParser # This class defines a complete listener for a parse tree produced by WdlParser. class WdlParserListener(ParseTreeListener): # Enter a parse tree produced by WdlParser#map_type. def enterMap_type(self, ctx:WdlParser.Map_typeContext): pass # Exit a parse tree produced by WdlParser#map_type. def exitMap_type(self, ctx:WdlParser.Map_typeContext): pass # Enter a parse tree produced by WdlParser#array_type. def enterArray_type(self, ctx:WdlParser.Array_typeContext): pass # Exit a parse tree produced by WdlParser#array_type. def exitArray_type(self, ctx:WdlParser.Array_typeContext): pass # Enter a parse tree produced by WdlParser#pair_type. def enterPair_type(self, ctx:WdlParser.Pair_typeContext): pass # Exit a parse tree produced by WdlParser#pair_type. def exitPair_type(self, ctx:WdlParser.Pair_typeContext): pass # Enter a parse tree produced by WdlParser#type_base. def enterType_base(self, ctx:WdlParser.Type_baseContext): pass # Exit a parse tree produced by WdlParser#type_base. def exitType_base(self, ctx:WdlParser.Type_baseContext): pass # Enter a parse tree produced by WdlParser#wdl_type. def enterWdl_type(self, ctx:WdlParser.Wdl_typeContext): pass # Exit a parse tree produced by WdlParser#wdl_type. def exitWdl_type(self, ctx:WdlParser.Wdl_typeContext): pass # Enter a parse tree produced by WdlParser#unbound_decls. def enterUnbound_decls(self, ctx:WdlParser.Unbound_declsContext): pass # Exit a parse tree produced by WdlParser#unbound_decls. def exitUnbound_decls(self, ctx:WdlParser.Unbound_declsContext): pass # Enter a parse tree produced by WdlParser#bound_decls. def enterBound_decls(self, ctx:WdlParser.Bound_declsContext): pass # Exit a parse tree produced by WdlParser#bound_decls. def exitBound_decls(self, ctx:WdlParser.Bound_declsContext): pass # Enter a parse tree produced by WdlParser#any_decls. def enterAny_decls(self, ctx:WdlParser.Any_declsContext): pass # Exit a parse tree produced by WdlParser#any_decls. def exitAny_decls(self, ctx:WdlParser.Any_declsContext): pass # Enter a parse tree produced by WdlParser#number. def enterNumber(self, ctx:WdlParser.NumberContext): pass # Exit a parse tree produced by WdlParser#number. def exitNumber(self, ctx:WdlParser.NumberContext): pass # Enter a parse tree produced by WdlParser#string_part. def enterString_part(self, ctx:WdlParser.String_partContext): pass # Exit a parse tree produced by WdlParser#string_part. def exitString_part(self, ctx:WdlParser.String_partContext): pass # Enter a parse tree produced by WdlParser#string_expr_part. def enterString_expr_part(self, ctx:WdlParser.String_expr_partContext): pass # Exit a parse tree produced by WdlParser#string_expr_part. def exitString_expr_part(self, ctx:WdlParser.String_expr_partContext): pass # Enter a parse tree produced by WdlParser#string_expr_with_string_part. def enterString_expr_with_string_part(self, ctx:WdlParser.String_expr_with_string_partContext): pass # Exit a parse tree produced by WdlParser#string_expr_with_string_part. def exitString_expr_with_string_part(self, ctx:WdlParser.String_expr_with_string_partContext): pass # Enter a parse tree produced by WdlParser#string. def enterString(self, ctx:WdlParser.StringContext): pass # Exit a parse tree produced by WdlParser#string. def exitString(self, ctx:WdlParser.StringContext): pass # Enter a parse tree produced by WdlParser#primitive_literal. def enterPrimitive_literal(self, ctx:WdlParser.Primitive_literalContext): pass # Exit a parse tree produced by WdlParser#primitive_literal. def exitPrimitive_literal(self, ctx:WdlParser.Primitive_literalContext): pass # Enter a parse tree produced by WdlParser#expr. def enterExpr(self, ctx:WdlParser.ExprContext): pass # Exit a parse tree produced by WdlParser#expr. def exitExpr(self, ctx:WdlParser.ExprContext): pass # Enter a parse tree produced by WdlParser#infix0. def enterInfix0(self, ctx:WdlParser.Infix0Context): pass # Exit a parse tree produced by WdlParser#infix0. def exitInfix0(self, ctx:WdlParser.Infix0Context): pass # Enter a parse tree produced by WdlParser#infix1. def enterInfix1(self, ctx:WdlParser.Infix1Context): pass # Exit a parse tree produced by WdlParser#infix1. def exitInfix1(self, ctx:WdlParser.Infix1Context): pass # Enter a parse tree produced by WdlParser#lor. def enterLor(self, ctx:WdlParser.LorContext): pass # Exit a parse tree produced by WdlParser#lor. def exitLor(self, ctx:WdlParser.LorContext): pass # Enter a parse tree produced by WdlParser#infix2. def enterInfix2(self, ctx:WdlParser.Infix2Context): pass # Exit a parse tree produced by WdlParser#infix2. def exitInfix2(self, ctx:WdlParser.Infix2Context): pass # Enter a parse tree produced by WdlParser#land. def enterLand(self, ctx:WdlParser.LandContext): pass # Exit a parse tree produced by WdlParser#land. def exitLand(self, ctx:WdlParser.LandContext): pass # Enter a parse tree produced by WdlParser#eqeq. def enterEqeq(self, ctx:WdlParser.EqeqContext): pass # Exit a parse tree produced by WdlParser#eqeq. def exitEqeq(self, ctx:WdlParser.EqeqContext): pass # Enter a parse tree produced by WdlParser#lt. def enterLt(self, ctx:WdlParser.LtContext): pass # Exit a parse tree produced by WdlParser#lt. def exitLt(self, ctx:WdlParser.LtContext): pass # Enter a parse tree produced by WdlParser#infix3. def enterInfix3(self, ctx:WdlParser.Infix3Context): pass # Exit a parse tree produced by WdlParser#infix3. def exitInfix3(self, ctx:WdlParser.Infix3Context): pass # Enter a parse tree produced by WdlParser#gte. def enterGte(self, ctx:WdlParser.GteContext): pass # Exit a parse tree produced by WdlParser#gte. def exitGte(self, ctx:WdlParser.GteContext): pass # Enter a parse tree produced by WdlParser#neq. def enterNeq(self, ctx:WdlParser.NeqContext): pass # Exit a parse tree produced by WdlParser#neq. def exitNeq(self, ctx:WdlParser.NeqContext): pass # Enter a parse tree produced by WdlParser#lte. def enterLte(self, ctx:WdlParser.LteContext): pass # Exit a parse tree produced by WdlParser#lte. def exitLte(self, ctx:WdlParser.LteContext): pass # Enter a parse tree produced by WdlParser#gt. def enterGt(self, ctx:WdlParser.GtContext): pass # Exit a parse tree produced by WdlParser#gt. def exitGt(self, ctx:WdlParser.GtContext): pass # Enter a parse tree produced by WdlParser#add. def enterAdd(self, ctx:WdlParser.AddContext): pass # Exit a parse tree produced by WdlParser#add. def exitAdd(self, ctx:WdlParser.AddContext): pass # Enter a parse tree produced by WdlParser#sub. def enterSub(self, ctx:WdlParser.SubContext): pass # Exit a parse tree produced by WdlParser#sub. def exitSub(self, ctx:WdlParser.SubContext): pass # Enter a parse tree produced by WdlParser#infix4. def enterInfix4(self, ctx:WdlParser.Infix4Context): pass # Exit a parse tree produced by WdlParser#infix4. def exitInfix4(self, ctx:WdlParser.Infix4Context): pass # Enter a parse tree produced by WdlParser#mod. def enterMod(self, ctx:WdlParser.ModContext): pass # Exit a parse tree produced by WdlParser#mod. def exitMod(self, ctx:WdlParser.ModContext): pass # Enter a parse tree produced by WdlParser#mul. def enterMul(self, ctx:WdlParser.MulContext): pass # Exit a parse tree produced by WdlParser#mul. def exitMul(self, ctx:WdlParser.MulContext): pass # Enter a parse tree produced by WdlParser#divide. def enterDivide(self, ctx:WdlParser.DivideContext): pass # Exit a parse tree produced by WdlParser#divide. def exitDivide(self, ctx:WdlParser.DivideContext): pass # Enter a parse tree produced by WdlParser#infix5. def enterInfix5(self, ctx:WdlParser.Infix5Context): pass # Exit a parse tree produced by WdlParser#infix5. def exitInfix5(self, ctx:WdlParser.Infix5Context): pass # Enter a parse tree produced by WdlParser#expr_infix5. def enterExpr_infix5(self, ctx:WdlParser.Expr_infix5Context): pass # Exit a parse tree produced by WdlParser#expr_infix5. def exitExpr_infix5(self, ctx:WdlParser.Expr_infix5Context): pass # Enter a parse tree produced by WdlParser#pair_literal. def enterPair_literal(self, ctx:WdlParser.Pair_literalContext): pass # Exit a parse tree produced by WdlParser#pair_literal. def exitPair_literal(self, ctx:WdlParser.Pair_literalContext): pass # Enter a parse tree produced by WdlParser#apply. def enterApply(self, ctx:WdlParser.ApplyContext): pass # Exit a parse tree produced by WdlParser#apply. def exitApply(self, ctx:WdlParser.ApplyContext): pass # Enter a parse tree produced by WdlParser#expression_group. def enterExpression_group(self, ctx:WdlParser.Expression_groupContext): pass # Exit a parse tree produced by WdlParser#expression_group. def exitExpression_group(self, ctx:WdlParser.Expression_groupContext): pass # Enter a parse tree produced by WdlParser#primitives. def enterPrimitives(self, ctx:WdlParser.PrimitivesContext): pass # Exit a parse tree produced by WdlParser#primitives. def exitPrimitives(self, ctx:WdlParser.PrimitivesContext): pass # Enter a parse tree produced by WdlParser#left_name. def enterLeft_name(self, ctx:WdlParser.Left_nameContext): pass # Exit a parse tree produced by WdlParser#left_name. def exitLeft_name(self, ctx:WdlParser.Left_nameContext): pass # Enter a parse tree produced by WdlParser#at. def enterAt(self, ctx:WdlParser.AtContext): pass # Exit a parse tree produced by WdlParser#at. def exitAt(self, ctx:WdlParser.AtContext): pass # Enter a parse tree produced by WdlParser#negate. def enterNegate(self, ctx:WdlParser.NegateContext): pass # Exit a parse tree produced by WdlParser#negate. def exitNegate(self, ctx:WdlParser.NegateContext): pass # Enter a parse tree produced by WdlParser#unirarysigned. def enterUnirarysigned(self, ctx:WdlParser.UnirarysignedContext): pass # Exit a parse tree produced by WdlParser#unirarysigned. def exitUnirarysigned(self, ctx:WdlParser.UnirarysignedContext): pass # Enter a parse tree produced by WdlParser#map_literal. def enterMap_literal(self, ctx:WdlParser.Map_literalContext): pass # Exit a parse tree produced by WdlParser#map_literal. def exitMap_literal(self, ctx:WdlParser.Map_literalContext): pass # Enter a parse tree produced by WdlParser#ifthenelse. def enterIfthenelse(self, ctx:WdlParser.IfthenelseContext): pass # Exit a parse tree produced by WdlParser#ifthenelse. def exitIfthenelse(self, ctx:WdlParser.IfthenelseContext): pass # Enter a parse tree produced by WdlParser#get_name. def enterGet_name(self, ctx:WdlParser.Get_nameContext): pass # Exit a parse tree produced by WdlParser#get_name. def exitGet_name(self, ctx:WdlParser.Get_nameContext): pass # Enter a parse tree produced by WdlParser#array_literal. def enterArray_literal(self, ctx:WdlParser.Array_literalContext): pass # Exit a parse tree produced by WdlParser#array_literal. def exitArray_literal(self, ctx:WdlParser.Array_literalContext): pass # Enter a parse tree produced by WdlParser#struct_literal. def enterStruct_literal(self, ctx:WdlParser.Struct_literalContext): pass # Exit a parse tree produced by WdlParser#struct_literal. def exitStruct_literal(self, ctx:WdlParser.Struct_literalContext): pass # Enter a parse tree produced by WdlParser#version. def enterVersion(self, ctx:WdlParser.VersionContext): pass # Exit a parse tree produced by WdlParser#version. def exitVersion(self, ctx:WdlParser.VersionContext): pass # Enter a parse tree produced by WdlParser#import_alias. def enterImport_alias(self, ctx:WdlParser.Import_aliasContext): pass # Exit a parse tree produced by WdlParser#import_alias. def exitImport_alias(self, ctx:WdlParser.Import_aliasContext): pass # Enter a parse tree produced by WdlParser#import_as. def enterImport_as(self, ctx:WdlParser.Import_asContext): pass # Exit a parse tree produced by WdlParser#import_as. def exitImport_as(self, ctx:WdlParser.Import_asContext): pass # Enter a parse tree produced by WdlParser#import_doc. def enterImport_doc(self, ctx:WdlParser.Import_docContext): pass # Exit a parse tree produced by WdlParser#import_doc. def exitImport_doc(self, ctx:WdlParser.Import_docContext): pass # Enter a parse tree produced by WdlParser#struct. def enterStruct(self, ctx:WdlParser.StructContext): pass # Exit a parse tree produced by WdlParser#struct. def exitStruct(self, ctx:WdlParser.StructContext): pass # Enter a parse tree produced by WdlParser#meta_kv. def enterMeta_kv(self, ctx:WdlParser.Meta_kvContext): pass # Exit a parse tree produced by WdlParser#meta_kv. def exitMeta_kv(self, ctx:WdlParser.Meta_kvContext): pass # Enter a parse tree produced by WdlParser#parameter_meta. def enterParameter_meta(self, ctx:WdlParser.Parameter_metaContext): pass # Exit a parse tree produced by WdlParser#parameter_meta. def exitParameter_meta(self, ctx:WdlParser.Parameter_metaContext): pass # Enter a parse tree produced by WdlParser#meta. def enterMeta(self, ctx:WdlParser.MetaContext): pass # Exit a parse tree produced by WdlParser#meta. def exitMeta(self, ctx:WdlParser.MetaContext): pass # Enter a parse tree produced by WdlParser#task_runtime_kv. def enterTask_runtime_kv(self, ctx:WdlParser.Task_runtime_kvContext): pass # Exit a parse tree produced by WdlParser#task_runtime_kv. def exitTask_runtime_kv(self, ctx:WdlParser.Task_runtime_kvContext): pass # Enter a parse tree produced by WdlParser#task_runtime. def enterTask_runtime(self, ctx:WdlParser.Task_runtimeContext): pass # Exit a parse tree produced by WdlParser#task_runtime. def exitTask_runtime(self, ctx:WdlParser.Task_runtimeContext): pass # Enter a parse tree produced by WdlParser#task_hints_kv. def enterTask_hints_kv(self, ctx:WdlParser.Task_hints_kvContext): pass # Exit a parse tree produced by WdlParser#task_hints_kv. def exitTask_hints_kv(self, ctx:WdlParser.Task_hints_kvContext): pass # Enter a parse tree produced by WdlParser#task_hints. def enterTask_hints(self, ctx:WdlParser.Task_hintsContext): pass # Exit a parse tree produced by WdlParser#task_hints. def exitTask_hints(self, ctx:WdlParser.Task_hintsContext): pass # Enter a parse tree produced by WdlParser#task_input. def enterTask_input(self, ctx:WdlParser.Task_inputContext): pass # Exit a parse tree produced by WdlParser#task_input. def exitTask_input(self, ctx:WdlParser.Task_inputContext): pass # Enter a parse tree produced by WdlParser#task_output. def enterTask_output(self, ctx:WdlParser.Task_outputContext): pass # Exit a parse tree produced by WdlParser#task_output. def exitTask_output(self, ctx:WdlParser.Task_outputContext): pass # Enter a parse tree produced by WdlParser#task_command. def enterTask_command(self, ctx:WdlParser.Task_commandContext): pass # Exit a parse tree produced by WdlParser#task_command. def exitTask_command(self, ctx:WdlParser.Task_commandContext): pass # Enter a parse tree produced by WdlParser#task_command_string_part. def enterTask_command_string_part(self, ctx:WdlParser.Task_command_string_partContext): pass # Exit a parse tree produced by WdlParser#task_command_string_part. def exitTask_command_string_part(self, ctx:WdlParser.Task_command_string_partContext): pass # Enter a parse tree produced by WdlParser#task_command_expr_part. def enterTask_command_expr_part(self, ctx:WdlParser.Task_command_expr_partContext): pass # Exit a parse tree produced by WdlParser#task_command_expr_part. def exitTask_command_expr_part(self, ctx:WdlParser.Task_command_expr_partContext): pass # Enter a parse tree produced by WdlParser#task_command_expr_with_string. def enterTask_command_expr_with_string(self, ctx:WdlParser.Task_command_expr_with_stringContext): pass # Exit a parse tree produced by WdlParser#task_command_expr_with_string. def exitTask_command_expr_with_string(self, ctx:WdlParser.Task_command_expr_with_stringContext): pass # Enter a parse tree produced by WdlParser#task_element. def enterTask_element(self, ctx:WdlParser.Task_elementContext): pass # Exit a parse tree produced by WdlParser#task_element. def exitTask_element(self, ctx:WdlParser.Task_elementContext): pass # Enter a parse tree produced by WdlParser#task. def enterTask(self, ctx:WdlParser.TaskContext): pass # Exit a parse tree produced by WdlParser#task. def exitTask(self, ctx:WdlParser.TaskContext): pass # Enter a parse tree produced by WdlParser#inner_workflow_element. def enterInner_workflow_element(self, ctx:WdlParser.Inner_workflow_elementContext): pass # Exit a parse tree produced by WdlParser#inner_workflow_element. def exitInner_workflow_element(self, ctx:WdlParser.Inner_workflow_elementContext): pass # Enter a parse tree produced by WdlParser#call_alias. def enterCall_alias(self, ctx:WdlParser.Call_aliasContext): pass # Exit a parse tree produced by WdlParser#call_alias. def exitCall_alias(self, ctx:WdlParser.Call_aliasContext): pass # Enter a parse tree produced by WdlParser#call_input. def enterCall_input(self, ctx:WdlParser.Call_inputContext): pass # Exit a parse tree produced by WdlParser#call_input. def exitCall_input(self, ctx:WdlParser.Call_inputContext): pass # Enter a parse tree produced by WdlParser#call_inputs. def enterCall_inputs(self, ctx:WdlParser.Call_inputsContext): pass # Exit a parse tree produced by WdlParser#call_inputs. def exitCall_inputs(self, ctx:WdlParser.Call_inputsContext): pass # Enter a parse tree produced by WdlParser#call_body. def enterCall_body(self, ctx:WdlParser.Call_bodyContext): pass # Exit a parse tree produced by WdlParser#call_body. def exitCall_body(self, ctx:WdlParser.Call_bodyContext): pass # Enter a parse tree produced by WdlParser#call_afters. def enterCall_afters(self, ctx:WdlParser.Call_aftersContext): pass # Exit a parse tree produced by WdlParser#call_afters. def exitCall_afters(self, ctx:WdlParser.Call_aftersContext): pass # Enter a parse tree produced by WdlParser#call_name. def enterCall_name(self, ctx:WdlParser.Call_nameContext): pass # Exit a parse tree produced by WdlParser#call_name. def exitCall_name(self, ctx:WdlParser.Call_nameContext): pass # Enter a parse tree produced by WdlParser#call. def enterCall(self, ctx:WdlParser.CallContext): pass # Exit a parse tree produced by WdlParser#call. def exitCall(self, ctx:WdlParser.CallContext): pass # Enter a parse tree produced by WdlParser#scatter. def enterScatter(self, ctx:WdlParser.ScatterContext): pass # Exit a parse tree produced by WdlParser#scatter. def exitScatter(self, ctx:WdlParser.ScatterContext): pass # Enter a parse tree produced by WdlParser#conditional. def enterConditional(self, ctx:WdlParser.ConditionalContext): pass # Exit a parse tree produced by WdlParser#conditional. def exitConditional(self, ctx:WdlParser.ConditionalContext): pass # Enter a parse tree produced by WdlParser#workflow_input. def enterWorkflow_input(self, ctx:WdlParser.Workflow_inputContext): pass # Exit a parse tree produced by WdlParser#workflow_input. def exitWorkflow_input(self, ctx:WdlParser.Workflow_inputContext): pass # Enter a parse tree produced by WdlParser#workflow_output. def enterWorkflow_output(self, ctx:WdlParser.Workflow_outputContext): pass # Exit a parse tree produced by WdlParser#workflow_output. def exitWorkflow_output(self, ctx:WdlParser.Workflow_outputContext): pass # Enter a parse tree produced by WdlParser#input. def enterInput(self, ctx:WdlParser.InputContext): pass # Exit a parse tree produced by WdlParser#input. def exitInput(self, ctx:WdlParser.InputContext): pass # Enter a parse tree produced by WdlParser#output. def enterOutput(self, ctx:WdlParser.OutputContext): pass # Exit a parse tree produced by WdlParser#output. def exitOutput(self, ctx:WdlParser.OutputContext): pass # Enter a parse tree produced by WdlParser#inner_element. def enterInner_element(self, ctx:WdlParser.Inner_elementContext): pass # Exit a parse tree produced by WdlParser#inner_element. def exitInner_element(self, ctx:WdlParser.Inner_elementContext): pass # Enter a parse tree produced by WdlParser#parameter_meta_element. def enterParameter_meta_element(self, ctx:WdlParser.Parameter_meta_elementContext): pass # Exit a parse tree produced by WdlParser#parameter_meta_element. def exitParameter_meta_element(self, ctx:WdlParser.Parameter_meta_elementContext): pass # Enter a parse tree produced by WdlParser#meta_element. def enterMeta_element(self, ctx:WdlParser.Meta_elementContext): pass # Exit a parse tree produced by WdlParser#meta_element. def exitMeta_element(self, ctx:WdlParser.Meta_elementContext): pass # Enter a parse tree produced by WdlParser#workflow. def enterWorkflow(self, ctx:WdlParser.WorkflowContext): pass # Exit a parse tree produced by WdlParser#workflow. def exitWorkflow(self, ctx:WdlParser.WorkflowContext): pass # Enter a parse tree produced by WdlParser#document_element. def enterDocument_element(self, ctx:WdlParser.Document_elementContext): pass # Exit a parse tree produced by WdlParser#document_element. def exitDocument_element(self, ctx:WdlParser.Document_elementContext): pass # Enter a parse tree produced by WdlParser#document. def enterDocument(self, ctx:WdlParser.DocumentContext): pass # Exit a parse tree produced by WdlParser#document. def exitDocument(self, ctx:WdlParser.DocumentContext): pass del WdlParserwdlparse-0.1.0/wdlparse/dev/WdlParserVisitor.py0000644000076500000240000003452213770744640022043 0ustar wlgaostaff00000000000000# Generated from WdlParser.g4 by ANTLR 4.8 from antlr4 import * if __name__ is not None and "." in __name__: from .WdlParser import WdlParser else: from WdlParser import WdlParser # This class defines a complete generic visitor for a parse tree produced by WdlParser. class WdlParserVisitor(ParseTreeVisitor): # Visit a parse tree produced by WdlParser#map_type. def visitMap_type(self, ctx:WdlParser.Map_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#array_type. def visitArray_type(self, ctx:WdlParser.Array_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#pair_type. def visitPair_type(self, ctx:WdlParser.Pair_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#type_base. def visitType_base(self, ctx:WdlParser.Type_baseContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#wdl_type. def visitWdl_type(self, ctx:WdlParser.Wdl_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#unbound_decls. def visitUnbound_decls(self, ctx:WdlParser.Unbound_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#bound_decls. def visitBound_decls(self, ctx:WdlParser.Bound_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#any_decls. def visitAny_decls(self, ctx:WdlParser.Any_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#number. def visitNumber(self, ctx:WdlParser.NumberContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#string_part. def visitString_part(self, ctx:WdlParser.String_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#string_expr_part. def visitString_expr_part(self, ctx:WdlParser.String_expr_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#string_expr_with_string_part. def visitString_expr_with_string_part(self, ctx:WdlParser.String_expr_with_string_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#string. def visitString(self, ctx:WdlParser.StringContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#primitive_literal. def visitPrimitive_literal(self, ctx:WdlParser.Primitive_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#expr. def visitExpr(self, ctx:WdlParser.ExprContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix0. def visitInfix0(self, ctx:WdlParser.Infix0Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix1. def visitInfix1(self, ctx:WdlParser.Infix1Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#lor. def visitLor(self, ctx:WdlParser.LorContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix2. def visitInfix2(self, ctx:WdlParser.Infix2Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#land. def visitLand(self, ctx:WdlParser.LandContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#eqeq. def visitEqeq(self, ctx:WdlParser.EqeqContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#lt. def visitLt(self, ctx:WdlParser.LtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix3. def visitInfix3(self, ctx:WdlParser.Infix3Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#gte. def visitGte(self, ctx:WdlParser.GteContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#neq. def visitNeq(self, ctx:WdlParser.NeqContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#lte. def visitLte(self, ctx:WdlParser.LteContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#gt. def visitGt(self, ctx:WdlParser.GtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#add. def visitAdd(self, ctx:WdlParser.AddContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#sub. def visitSub(self, ctx:WdlParser.SubContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix4. def visitInfix4(self, ctx:WdlParser.Infix4Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#mod. def visitMod(self, ctx:WdlParser.ModContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#mul. def visitMul(self, ctx:WdlParser.MulContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#divide. def visitDivide(self, ctx:WdlParser.DivideContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#infix5. def visitInfix5(self, ctx:WdlParser.Infix5Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#expr_infix5. def visitExpr_infix5(self, ctx:WdlParser.Expr_infix5Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#pair_literal. def visitPair_literal(self, ctx:WdlParser.Pair_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#apply. def visitApply(self, ctx:WdlParser.ApplyContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#expression_group. def visitExpression_group(self, ctx:WdlParser.Expression_groupContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#primitives. def visitPrimitives(self, ctx:WdlParser.PrimitivesContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#left_name. def visitLeft_name(self, ctx:WdlParser.Left_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#at. def visitAt(self, ctx:WdlParser.AtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#negate. def visitNegate(self, ctx:WdlParser.NegateContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#unirarysigned. def visitUnirarysigned(self, ctx:WdlParser.UnirarysignedContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#map_literal. def visitMap_literal(self, ctx:WdlParser.Map_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#ifthenelse. def visitIfthenelse(self, ctx:WdlParser.IfthenelseContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#get_name. def visitGet_name(self, ctx:WdlParser.Get_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#array_literal. def visitArray_literal(self, ctx:WdlParser.Array_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#struct_literal. def visitStruct_literal(self, ctx:WdlParser.Struct_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#version. def visitVersion(self, ctx:WdlParser.VersionContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#import_alias. def visitImport_alias(self, ctx:WdlParser.Import_aliasContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#import_as. def visitImport_as(self, ctx:WdlParser.Import_asContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#import_doc. def visitImport_doc(self, ctx:WdlParser.Import_docContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#struct. def visitStruct(self, ctx:WdlParser.StructContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#meta_kv. def visitMeta_kv(self, ctx:WdlParser.Meta_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#parameter_meta. def visitParameter_meta(self, ctx:WdlParser.Parameter_metaContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#meta. def visitMeta(self, ctx:WdlParser.MetaContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_runtime_kv. def visitTask_runtime_kv(self, ctx:WdlParser.Task_runtime_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_runtime. def visitTask_runtime(self, ctx:WdlParser.Task_runtimeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_hints_kv. def visitTask_hints_kv(self, ctx:WdlParser.Task_hints_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_hints. def visitTask_hints(self, ctx:WdlParser.Task_hintsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_input. def visitTask_input(self, ctx:WdlParser.Task_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_output. def visitTask_output(self, ctx:WdlParser.Task_outputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_command. def visitTask_command(self, ctx:WdlParser.Task_commandContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_command_string_part. def visitTask_command_string_part(self, ctx:WdlParser.Task_command_string_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_command_expr_part. def visitTask_command_expr_part(self, ctx:WdlParser.Task_command_expr_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_command_expr_with_string. def visitTask_command_expr_with_string(self, ctx:WdlParser.Task_command_expr_with_stringContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task_element. def visitTask_element(self, ctx:WdlParser.Task_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#task. def visitTask(self, ctx:WdlParser.TaskContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#inner_workflow_element. def visitInner_workflow_element(self, ctx:WdlParser.Inner_workflow_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_alias. def visitCall_alias(self, ctx:WdlParser.Call_aliasContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_input. def visitCall_input(self, ctx:WdlParser.Call_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_inputs. def visitCall_inputs(self, ctx:WdlParser.Call_inputsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_body. def visitCall_body(self, ctx:WdlParser.Call_bodyContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_afters. def visitCall_afters(self, ctx:WdlParser.Call_aftersContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call_name. def visitCall_name(self, ctx:WdlParser.Call_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#call. def visitCall(self, ctx:WdlParser.CallContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#scatter. def visitScatter(self, ctx:WdlParser.ScatterContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#conditional. def visitConditional(self, ctx:WdlParser.ConditionalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#workflow_input. def visitWorkflow_input(self, ctx:WdlParser.Workflow_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#workflow_output. def visitWorkflow_output(self, ctx:WdlParser.Workflow_outputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#input. def visitInput(self, ctx:WdlParser.InputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#output. def visitOutput(self, ctx:WdlParser.OutputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#inner_element. def visitInner_element(self, ctx:WdlParser.Inner_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#parameter_meta_element. def visitParameter_meta_element(self, ctx:WdlParser.Parameter_meta_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#meta_element. def visitMeta_element(self, ctx:WdlParser.Meta_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#workflow. def visitWorkflow(self, ctx:WdlParser.WorkflowContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#document_element. def visitDocument_element(self, ctx:WdlParser.Document_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlParser#document. def visitDocument(self, ctx:WdlParser.DocumentContext): return self.visitChildren(ctx) del WdlParserwdlparse-0.1.0/wdlparse/dev/__init__.py0000644000076500000240000000300013770744630020301 0ustar wlgaostaff00000000000000# Copyright (c) 2015, Broad Institute, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Broad Institute, Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. wdlparse-0.1.0/wdlparse/draft2/0000755000076500000240000000000013770744643016607 5ustar wlgaostaff00000000000000wdlparse-0.1.0/wdlparse/draft2/__init__.py0000644000076500000240000000300013770744630020705 0ustar wlgaostaff00000000000000# Copyright (c) 2015, Broad Institute, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Broad Institute, Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. wdlparse-0.1.0/wdlparse/draft2/wdl_parser.py0000644000076500000240000045470413770744634021341 0ustar wlgaostaff00000000000000 # This file was generated by Hermes Parser Generator on Wed Dec 23 14:50:03 2020 # # Hermes command: hermes generate grammar.hgr --language=python --name=wdl --header --directory wdlparse/draft2 # Run from: ../.. (relative to this file) # Hermes version: hermes-parser 2.0rc6 # # !!! DO NOT CHANGE THIS FILE DIRECTLY !!! # # If you wish to change something in this file, either change the grammar and # re-generate this file, or change the templates in Hermes and regenerate. # See the Hermes repository: http://github.com/scottfrazer/hermes import sys import os import re import base64 import argparse from collections import OrderedDict # Common Code # def parse_tree_string(parsetree, indent=None, b64_source=True, indent_level=0, debug=False): indent_str = (' ' * indent * indent_level) if indent else '' if isinstance(parsetree, ParseTree): children = [parse_tree_string(child, indent, b64_source, indent_level+1, debug) for child in parsetree.children] debug_str = parsetree.debug_str() if debug else '' if indent is None or len(children) == 0: return '{0}({1}: {2}{3})'.format(indent_str, parsetree.nonterminal, debug_str, ', '.join(children)) else: return '{0}({1}:{2}\n{3}\n{4})'.format( indent_str, parsetree.nonterminal, debug_str, ',\n'.join(children), indent_str ) elif isinstance(parsetree, Terminal): return indent_str + parsetree.dumps(b64_source=b64_source) def ast_string(ast, indent=None, b64_source=True, indent_level=0): indent_str = (' ' * indent * indent_level) if indent else '' next_indent_str = (' ' * indent * (indent_level+1)) if indent else '' if isinstance(ast, Ast): children = OrderedDict([(k, ast_string(v, indent, b64_source, indent_level+1)) for k, v in ast.attributes.items()]) if indent is None: return '({0}: {1})'.format( ast.name, ', '.join('{0}={1}'.format(k, v) for k, v in children.items()) ) else: return '({0}:\n{1}\n{2})'.format( ast.name, ',\n'.join(['{0}{1}={2}'.format(next_indent_str, k, v) for k, v in children.items()]), indent_str ) elif isinstance(ast, list): children = [ast_string(element, indent, b64_source, indent_level+1) for element in ast] if indent is None or len(children) == 0: return '[{0}]'.format(', '.join(children)) else: return '[\n{1}\n{0}]'.format( indent_str, ',\n'.join(['{0}{1}'.format(next_indent_str, child) for child in children]), ) elif isinstance(ast, Terminal): return ast.dumps(b64_source=b64_source) class Terminal: def __init__(self, id, str, source_string, resource, line, col): self.__dict__.update(locals()) def getId(self): return self.id def ast(self): return self def dumps(self, b64_source=True, **kwargs): source_string = base64.b64encode(self.source_string.encode('utf-8')).decode('utf-8') if b64_source else self.source_string return '<{resource}:{line}:{col} {terminal} "{source}">'.format( resource=self.resource, line=self.line, col=self.col, terminal=self.str, source=source_string ) def __str__(self): return self.dumps() class NonTerminal(): def __init__(self, id, str): self.__dict__.update(locals()) self.list = False def __str__(self): return self.str class AstTransform: pass class AstTransformSubstitution(AstTransform): def __init__(self, idx): self.__dict__.update(locals()) def __repr__(self): return '$' + str(self.idx) def __str__(self): return self.__repr__() class AstTransformNodeCreator(AstTransform): def __init__( self, name, parameters ): self.__dict__.update(locals()) def __repr__( self ): return self.name + '( ' + ', '.join(['%s=$%s' % (k,str(v)) for k,v in self.parameters.items()]) + ' )' def __str__(self): return self.__repr__() class AstList(list): def ast(self): retval = [] for ast in self: retval.append(ast.ast()) return retval def dumps(self, indent=None, b64_source=True): args = locals() del args['self'] return ast_string(self, **args) class ParseTree(): def __init__(self, nonterminal): self.__dict__.update(locals()) self.children = [] self.astTransform = None self.isExpr = False self.isNud = False self.isPrefix = False self.isInfix = False self.nudMorphemeCount = 0 self.isExprNud = False # true for rules like _expr := {_expr} + {...} self.list_separator_id = None self.list = False def debug_str(self): from copy import deepcopy def h(v): if v == False or v is None: return str(v) from xtermcolor import colorize return colorize(str(v), ansi=190) d = deepcopy(self.__dict__) for key in ['self', 'nonterminal', 'children']: del d[key] f = {k: v for k, v in d.items() if v != False and v is not None} return ' [{}]'.format(', '.join(['{}={}'.format(k,h(v)) for k,v in f.items()])) def add(self, tree): self.children.append( tree ) def is_compound_nud(self): return isinstance(self.children[0], ParseTree) and \ self.children[0].isNud and \ not self.children[0].isPrefix and \ not self.isExprNud and \ not self.isInfix def ast(self): if self.list == True: r = AstList() if len(self.children) == 0: return r for child in self.children: if isinstance(child, Terminal) and self.list_separator_id is not None and child.id == self.list_separator_id: continue r.append(child.ast()) return r elif self.isExpr: if isinstance(self.astTransform, AstTransformSubstitution): return self.children[self.astTransform.idx].ast() elif isinstance(self.astTransform, AstTransformNodeCreator): parameters = OrderedDict() for name, idx in self.astTransform.parameters.items(): if idx == '$': child = self.children[0] elif self.is_compound_nud(): if idx < self.children[0].nudMorphemeCount: child = self.children[0].children[idx] else: index = idx - self.children[0].nudMorphemeCount + 1 child = self.children[index] elif len(self.children) == 1 and not isinstance(self.children[0], ParseTree) and not isinstance(self.children[0], list): return self.children[0] else: child = self.children[idx] parameters[name] = child.ast() return Ast(self.astTransform.name, parameters) else: if isinstance(self.astTransform, AstTransformSubstitution): return self.children[self.astTransform.idx].ast() elif isinstance(self.astTransform, AstTransformNodeCreator): parameters = OrderedDict() for name, idx in self.astTransform.parameters.items(): parameters[name] = self.children[idx].ast() return Ast(self.astTransform.name, parameters) elif len(self.children): return self.children[0].ast() else: return None def dumps(self, indent=None, b64_source=True, debug=False): args = locals() del args['self'] return parse_tree_string(self, **args) class Ast(): def __init__(self, name, attributes): self.__dict__.update(locals()) def attr(self, attr): return self.attributes[attr] def dumps(self, indent=None, b64_source=True): args = locals() del args['self'] return ast_string(self, **args) class SyntaxError(Exception): def __init__(self, message): self.__dict__.update(locals()) def __str__(self): return self.message class TokenStream(list): def __init__(self, arg=[]): super(TokenStream, self).__init__(arg) self.index = 0 def advance(self): self.index += 1 return self.current() def last(self): return self[-1] def current(self): try: return self[self.index] except IndexError: return None class DefaultSyntaxErrorHandler: def __init__(self): self.errors = [] def _error(self, string): error = SyntaxError(string) self.errors.append(error) return error def unexpected_eof(self): return self._error("Error: unexpected end of file") def excess_tokens(self): return self._error("Finished parsing without consuming all tokens.") def unexpected_symbol(self, nonterminal, actual_terminal, expected_terminals, rule): return self._error("Unexpected symbol (line {line}, col {col}) when parsing parse_{nt}. Expected {expected}, got {actual}.".format( line=actual_terminal.line, col=actual_terminal.col, nt=nonterminal, expected=', '.join(expected_terminals), actual=actual_terminal )) def no_more_tokens(self, nonterminal, expected_terminal, last_terminal): return self._error("No more tokens. Expecting " + expected_terminal) def invalid_terminal(self, nonterminal, invalid_terminal): return self._error("Invalid symbol ID: {} ({})".format(invalid_terminal.id, invalid_terminal.string)) def unrecognized_token(self, string, line, col): lines = string.split('\n') bad_line = lines[line-1] return self._error('Unrecognized token on line {}, column {}:\n\n{}\n{}'.format( line, col, bad_line, ''.join([' ' for x in range(col-1)]) + '^' )) def missing_list_items(self, method, required, found, last): return self._error("List for {} requires {} items but only {} were found.".format(method, required, found)) def missing_terminator(self, method, terminator, last): return self._error("List for "+method+" is missing a terminator") class ParserContext: def __init__(self, tokens, errors): self.__dict__.update(locals()) self.nonterminal_string = None self.rule_string = None # Parser Code # terminals = { 0: 'dot', 1: 'scatter', 2: 'import', 3: 'lteq', 4: 'in', 5: 'cmd_param_end', 6: 'double_pipe', 7: 'fqn', 8: 'lbrace', 9: 'asterisk', 10: 'lsquare', 11: 'plus', 12: 'task', 13: 'if', 14: 'float', 15: 'lparen', 16: 'while', 17: 'rbrace', 18: 'runtime', 19: 'cmd_param_start', 20: 'double_ampersand', 21: 'integer', 22: 'rparen', 23: 'raw_cmd_end', 24: 'call', 25: 'input', 26: 'type_e', 27: 'double_equal', 28: 'lt', 29: 'not', 30: 'gteq', 31: 'gt', 32: 'output', 33: 'identifier', 34: 'then', 35: 'else', 36: 'slash', 37: 'cmd_attr_hint', 38: 'e', 39: 'boolean', 40: 'equal', 41: 'object', 42: 'meta', 43: 'raw_command', 44: 'raw_cmd_start', 45: 'cmd_part', 46: 'rsquare', 47: 'as', 48: 'not_equal', 49: 'parameter_meta', 50: 'qmark', 51: 'dash', 52: 'percent', 53: 'workflow', 54: 'type', 55: 'string', 56: 'colon', 57: 'comma', 'dot': 0, 'scatter': 1, 'import': 2, 'lteq': 3, 'in': 4, 'cmd_param_end': 5, 'double_pipe': 6, 'fqn': 7, 'lbrace': 8, 'asterisk': 9, 'lsquare': 10, 'plus': 11, 'task': 12, 'if': 13, 'float': 14, 'lparen': 15, 'while': 16, 'rbrace': 17, 'runtime': 18, 'cmd_param_start': 19, 'double_ampersand': 20, 'integer': 21, 'rparen': 22, 'raw_cmd_end': 23, 'call': 24, 'input': 25, 'type_e': 26, 'double_equal': 27, 'lt': 28, 'not': 29, 'gteq': 30, 'gt': 31, 'output': 32, 'identifier': 33, 'then': 34, 'else': 35, 'slash': 36, 'cmd_attr_hint': 37, 'e': 38, 'boolean': 39, 'equal': 40, 'object': 41, 'meta': 42, 'raw_command': 43, 'raw_cmd_start': 44, 'cmd_part': 45, 'rsquare': 46, 'as': 47, 'not_equal': 48, 'parameter_meta': 49, 'qmark': 50, 'dash': 51, 'percent': 52, 'workflow': 53, 'type': 54, 'string': 55, 'colon': 56, 'comma': 57, } # table[nonterminal][terminal] = rule table = [ [-1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, 35, -1, -1, 35, 35, 35, -1, -1, -1, -1, -1, 35, 35, 35, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, 34, -1, 35, 35, -1, -1, -1, -1, -1, 35, -1, -1, -1, 35, 35, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, 13, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, 52, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, 52, -1, -1, 52, 52, -1, -1, -1, -1, -1, -1, 52, -1, 52, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, 52, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, 38, -1, 38, 38, -1, 38, 38, 38, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, 38, -1, -1, -1, -1, 38, 38, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, 38, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, 7, 7, -1, -1, -1], [-1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, 41, -1, 42, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, 42, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [65, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 5, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, 50, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 50, -1, -1, 50, 50, -1, -1, -1, -1, -1, -1, 50, -1, 50, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 49, -1, 50, -1, -1, -1, -1, 50, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1], [-1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1], [68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], ] nonterminal_first = { 58: [40, -1], 59: [32, 42, 43, 18, 49], 60: [8], 61: [7], 62: [47], 63: [2], 64: [32], 65: [12], 66: [45, 19], 67: [8, -1], 68: [26, 54], 69: [13, 33, 15, 14, 10, 21, 51, 41, 38, 29, 39, 8, 55, 11], 70: [33, -1], 71: [37, -1], 72: [26, 54], 73: [-1, 26, 53, 54, 12], 74: [33, 38, 39, 8, 10, 11, 41, 13, 14, 15, -1, 21, 51, 29, 55], 75: [42], 76: [47, -1], 77: [13, 32, 42, 16, 1, 49, 24, 26, 54], 78: [26, -1, 54], 79: [8], 80: [0, -1], 81: [7, 26, -1, 54], 82: [47], 83: [26, 53, 54, 12], 84: [40], 85: [33, -1], 86: [47, -1], 87: [2, -1], 88: [32, 42, 43, -1, 18, 49], 89: [43], 90: [-1, 45, 19], 91: [18], 92: [26, 54], 93: [26, -1, 54], 94: [37], 95: [33], 96: [24], 97: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 98: [25, -1], 99: [33], 100: [26, 12, 53, -1, 2, 54], 101: [49], 102: [33, -1], 103: [32], 104: [16], 105: [33], 106: [13], 107: [53], 108: [26, 54], 109: [1], 110: [42], 111: [26, -1, 54], 112: [33, 38, 39, 8, 10, 11, 41, 13, 14, 15, -1, 21, 51, 29, 55], 113: [19], 114: [49], 115: [25], 116: [7, 26, 54], 117: [0], 118: [13, 32, 42, 16, 1, -1, 49, 24, 26, 54], } nonterminal_follow = { 58: [32, 1, 12, 13, 42, 16, 43, 17, 18, 49, 24, 25, 26, 53, 54, -1], 59: [32, 42, 43, 17, 18, 49], 60: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 61: [7, 26, 54, 17], 62: [32, 1, 8, 13, 42, 16, 17, 49, 24, 26, 54], 63: [26, 53, 54, 2, -1, 12], 64: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 65: [26, 53, 54, -1, 12], 66: [23, 45, 19], 67: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 68: [7, 26, 54, 17], 69: [17, 57], 70: [17], 71: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 72: [46, 33, 57], 73: [-1], 74: [46, 22], 75: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 76: [26, 53, 54, 2, -1, 12], 77: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 78: [32, 42, 25, 43, 18, 49], 79: [32, 42, 13, 43, 16, 1, 17, 18, 49, 24, 26, 54], 80: [7, 26, 54, 17], 81: [17], 82: [26, 53, 54, 2, -1, 12], 83: [26, 53, 54, -1, 12], 84: [32, 1, 12, 13, 42, 16, 43, 17, 18, 49, 24, 25, 26, 53, 54, -1], 85: [25, 17], 86: [32, 1, 8, 13, 42, 16, 17, 49, 24, 26, 54], 87: [26, 53, 54, -1, 12], 88: [17], 89: [32, 42, 43, 17, 18, 49], 90: [23], 91: [32, 42, 43, 17, 18, 49], 92: [26, 54, 17], 93: [17], 94: [33, 37, 38, 39, 8, 10, 41, 11, 13, 14, 15, 21, 51, 29, 55], 95: [17, 57], 96: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 97: [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 24, 27, 25, 26, 28, 29, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 46, 51, 48, 49, 52, 53, 54, 55, 56, 57], 98: [17], 99: [33, 17], 100: [-1], 101: [32, 42, 43, 17, 18, 49], 102: [17], 103: [32, 42, 43, 17, 18, 49], 104: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 105: [25, 17, 57], 106: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 107: [26, 53, 54, -1, 12], 108: [32, 1, 12, 13, 42, 16, 43, 17, 18, 49, 24, 25, 26, 53, 54, -1], 109: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 110: [32, 42, 43, 17, 18, 49], 111: [46], 112: [17], 113: [23, 45, 19], 114: [32, 1, 13, 42, 16, 17, 49, 24, 26, 54], 115: [25, 17], 116: [7, 26, 54, 17], 117: [7, 26, 54, 17], 118: [17], } rule_first = { 0: [2, -1], 1: [-1, 26, 53, 54, 12], 2: [26, -1, 53, 54, 2, 12], 3: [53], 4: [12], 5: [26, 54], 6: [47], 7: [-1], 8: [2], 9: [47], 10: [26, -1, 54], 11: [32, 42, 43, -1, 18, 49], 12: [12], 13: [43], 14: [32], 15: [18], 16: [49], 17: [42], 18: [45, 19, -1], 19: [43], 20: [45], 21: [19], 22: [37, -1], 23: [19], 24: [37], 25: [26, -1, 54], 26: [32], 27: [26, 54], 28: [18], 29: [49], 30: [42], 31: [33, -1], 32: [8], 33: [33], 34: [40], 35: [-1], 36: [26, 54], 37: [40], 38: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 39: [13, 32, 42, 16, 1, -1, 49, 24, 26, 54], 40: [53], 41: [24], 42: [26, 54], 43: [16], 44: [13], 45: [1], 46: [32], 47: [49], 48: [42], 49: [47], 50: [-1], 51: [8], 52: [-1], 53: [24], 54: [25, -1], 55: [8], 56: [33, -1], 57: [25], 58: [33], 59: [47], 60: [7, 26, -1, 54], 61: [32], 62: [26, 54], 63: [7], 64: [26, 54], 65: [0], 66: [-1], 67: [7], 68: [0], 69: [49], 70: [42], 71: [16], 72: [13], 73: [1], 74: [33], 75: [26, -1, 54], 76: [54], 77: [54], 78: [54], 79: [54], 80: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 81: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 82: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 83: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 84: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 85: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 86: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 87: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 88: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 89: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 90: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 91: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 92: [13, 33, 15, 14, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 93: [29], 94: [11], 95: [51], 96: [13, 33, 15, 14, -1, 55, 21, 51, 38, 29, 39, 8, 10, 11, 41], 97: [33], 98: [33], 99: [33], 100: [33, -1], 101: [41], 102: [10], 103: [13, 33, 15, 14, 10, -1, 21, 51, 41, 38, 29, 39, 8, 55, 11], 104: [8], 105: [15], 106: [13], 107: [55], 108: [33], 109: [39], 110: [21], 111: [14], } nonterminal_rules = { 58: [ "$_gen9 = $setter", "$_gen9 = :_empty", ], 59: [ "$sections = $command", "$sections = $outputs", "$sections = $runtime", "$sections = $parameter_meta", "$sections = $meta", ], 60: [ "$call_body = :lbrace $_gen3 $_gen13 :rbrace -> CallBody( declarations=$1, io=$2 )", ], 61: [ "$wf_output_wildcard_syntax = :fqn $_gen16 -> WorkflowOutputWildcard( fqn=$0, wildcard=$1 )", ], 62: [ "$alias = :as :identifier -> $1", ], 63: [ "$import = :import :string $_gen2 -> Import( uri=$1, namespace=$2 )", ], 64: [ "$wf_outputs = :output :lbrace $_gen15 :rbrace -> WorkflowOutputs( outputs=$2 )", ], 65: [ "$task = :task :identifier :lbrace $_gen3 $_gen4 :rbrace -> Task( name=$1, declarations=$3, sections=$4 )", ], 66: [ "$command_part = :cmd_part", "$command_part = $cmd_param", ], 67: [ "$_gen12 = $call_body", "$_gen12 = :_empty", ], 68: [ "$wf_output_declaration_syntax = $type_e :identifier :equal $e -> WorkflowOutputDeclaration( type=$0, name=$1, expression=$3 )", ], 69: [ "$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )", ], 70: [ "$_gen19 = list($object_kv, :comma)", ], 71: [ "$_gen6 = list($cmd_param_kv)", ], 72: [ "$type_e = :type <=> :lsquare $_gen17 :rsquare -> Type( name=$0, subtype=$2 )", "$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )", "$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )", "$type_e = :type", ], 73: [ "$_gen1 = list($workflow_or_task_or_decl)", ], 74: [ "$_gen18 = list($e, :comma)", ], 75: [ "$wf_meta = :meta $map -> Meta( map=$1 )", ], 76: [ "$_gen2 = $import_namespace", "$_gen2 = :_empty", ], 77: [ "$wf_body_element = $call", "$wf_body_element = $declaration", "$wf_body_element = $while_loop", "$wf_body_element = $if_stmt", "$wf_body_element = $scatter", "$wf_body_element = $wf_outputs", "$wf_body_element = $wf_parameter_meta", "$wf_body_element = $wf_meta", ], 78: [ "$_gen3 = list($declaration)", ], 79: [ "$map = :lbrace $_gen8 :rbrace -> $1", ], 80: [ "$_gen16 = $wf_output_wildcard", "$_gen16 = :_empty", ], 81: [ "$_gen15 = list($wf_output)", ], 82: [ "$import_namespace = :as :identifier -> $1", ], 83: [ "$workflow_or_task_or_decl = $workflow", "$workflow_or_task_or_decl = $task", "$workflow_or_task_or_decl = $declaration", ], 84: [ "$setter = :equal $e -> $1", ], 85: [ "$_gen14 = list($mapping, :comma)", ], 86: [ "$_gen11 = $alias", "$_gen11 = :_empty", ], 87: [ "$_gen0 = list($import)", ], 88: [ "$_gen4 = list($sections)", ], 89: [ "$command = :raw_command :raw_cmd_start $_gen5 :raw_cmd_end -> RawCommand( parts=$2 )", ], 90: [ "$_gen5 = list($command_part)", ], 91: [ "$runtime = :runtime $map -> Runtime( map=$1 )", ], 92: [ "$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )", ], 93: [ "$_gen7 = list($output_kv)", ], 94: [ "$cmd_param_kv = :cmd_attr_hint :identifier :equal $e -> CommandParameterAttr( key=$1, value=$3 )", ], 95: [ "$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )", ], 96: [ "$call = :call :fqn $_gen11 $_gen12 -> Call( task=$1, alias=$2, body=$3 )", ], 97: [ "$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )", "$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )", "$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )", "$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )", "$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )", "$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )", "$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )", "$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )", "$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )", "$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )", "$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )", "$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )", "$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )", "$e = :not $e -> LogicalNot( expression=$1 )", "$e = :plus $e -> UnaryPlus( expression=$1 )", "$e = :dash $e -> UnaryNegation( expression=$1 )", "$e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 )", "$e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )", "$e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 )", "$e = :object :lbrace $_gen19 :rbrace -> ObjectLiteral( map=$2 )", "$e = :lsquare $_gen18 :rsquare -> ArrayLiteral( values=$1 )", "$e = :lbrace $_gen20 :rbrace -> MapLiteral( map=$1 )", "$e = :lparen $_gen18 :rparen -> TupleLiteral( values=$1 )", "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )", "$e = :string", "$e = :identifier", "$e = :boolean", "$e = :integer", "$e = :float", ], 98: [ "$_gen13 = list($call_input)", ], 99: [ "$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )", ], 100: [ "$document = $_gen0 $_gen1 -> Namespace( imports=$0, body=$1 )", ], 101: [ "$parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 )", ], 102: [ "$_gen8 = list($kv)", ], 103: [ "$outputs = :output :lbrace $_gen7 :rbrace -> Outputs( attributes=$2 )", ], 104: [ "$while_loop = :while :lparen $e :rparen :lbrace $_gen10 :rbrace -> WhileLoop( expression=$2, body=$5 )", ], 105: [ "$mapping = :identifier :equal $e -> IOMapping( key=$0, value=$2 )", ], 106: [ "$if_stmt = :if :lparen $e :rparen :lbrace $_gen10 :rbrace -> If( expression=$2, body=$5 )", ], 107: [ "$workflow = :workflow :identifier :lbrace $_gen10 :rbrace -> Workflow( name=$1, body=$3 )", ], 108: [ "$declaration = $type_e :identifier $_gen9 -> Declaration( type=$0, name=$1, expression=$2 )", ], 109: [ "$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen10 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )", ], 110: [ "$meta = :meta $map -> Meta( map=$1 )", ], 111: [ "$_gen17 = list($type_e, :comma)", ], 112: [ "$_gen20 = list($map_kv, :comma)", ], 113: [ "$cmd_param = :cmd_param_start $_gen6 $e :cmd_param_end -> CommandParameter( attributes=$1, expr=$2 )", ], 114: [ "$wf_parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 )", ], 115: [ "$call_input = :input :colon $_gen14 -> Inputs( map=$2 )", ], 116: [ "$wf_output = $wf_output_declaration_syntax", "$wf_output = $wf_output_wildcard_syntax", ], 117: [ "$wf_output_wildcard = :dot :asterisk -> $1", ], 118: [ "$_gen10 = list($wf_body_element)", ], } rules = { 0: "$_gen0 = list($import)", 1: "$_gen1 = list($workflow_or_task_or_decl)", 2: "$document = $_gen0 $_gen1 -> Namespace( imports=$0, body=$1 )", 3: "$workflow_or_task_or_decl = $workflow", 4: "$workflow_or_task_or_decl = $task", 5: "$workflow_or_task_or_decl = $declaration", 6: "$_gen2 = $import_namespace", 7: "$_gen2 = :_empty", 8: "$import = :import :string $_gen2 -> Import( uri=$1, namespace=$2 )", 9: "$import_namespace = :as :identifier -> $1", 10: "$_gen3 = list($declaration)", 11: "$_gen4 = list($sections)", 12: "$task = :task :identifier :lbrace $_gen3 $_gen4 :rbrace -> Task( name=$1, declarations=$3, sections=$4 )", 13: "$sections = $command", 14: "$sections = $outputs", 15: "$sections = $runtime", 16: "$sections = $parameter_meta", 17: "$sections = $meta", 18: "$_gen5 = list($command_part)", 19: "$command = :raw_command :raw_cmd_start $_gen5 :raw_cmd_end -> RawCommand( parts=$2 )", 20: "$command_part = :cmd_part", 21: "$command_part = $cmd_param", 22: "$_gen6 = list($cmd_param_kv)", 23: "$cmd_param = :cmd_param_start $_gen6 $e :cmd_param_end -> CommandParameter( attributes=$1, expr=$2 )", 24: "$cmd_param_kv = :cmd_attr_hint :identifier :equal $e -> CommandParameterAttr( key=$1, value=$3 )", 25: "$_gen7 = list($output_kv)", 26: "$outputs = :output :lbrace $_gen7 :rbrace -> Outputs( attributes=$2 )", 27: "$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )", 28: "$runtime = :runtime $map -> Runtime( map=$1 )", 29: "$parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 )", 30: "$meta = :meta $map -> Meta( map=$1 )", 31: "$_gen8 = list($kv)", 32: "$map = :lbrace $_gen8 :rbrace -> $1", 33: "$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )", 34: "$_gen9 = $setter", 35: "$_gen9 = :_empty", 36: "$declaration = $type_e :identifier $_gen9 -> Declaration( type=$0, name=$1, expression=$2 )", 37: "$setter = :equal $e -> $1", 38: "$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )", 39: "$_gen10 = list($wf_body_element)", 40: "$workflow = :workflow :identifier :lbrace $_gen10 :rbrace -> Workflow( name=$1, body=$3 )", 41: "$wf_body_element = $call", 42: "$wf_body_element = $declaration", 43: "$wf_body_element = $while_loop", 44: "$wf_body_element = $if_stmt", 45: "$wf_body_element = $scatter", 46: "$wf_body_element = $wf_outputs", 47: "$wf_body_element = $wf_parameter_meta", 48: "$wf_body_element = $wf_meta", 49: "$_gen11 = $alias", 50: "$_gen11 = :_empty", 51: "$_gen12 = $call_body", 52: "$_gen12 = :_empty", 53: "$call = :call :fqn $_gen11 $_gen12 -> Call( task=$1, alias=$2, body=$3 )", 54: "$_gen13 = list($call_input)", 55: "$call_body = :lbrace $_gen3 $_gen13 :rbrace -> CallBody( declarations=$1, io=$2 )", 56: "$_gen14 = list($mapping, :comma)", 57: "$call_input = :input :colon $_gen14 -> Inputs( map=$2 )", 58: "$mapping = :identifier :equal $e -> IOMapping( key=$0, value=$2 )", 59: "$alias = :as :identifier -> $1", 60: "$_gen15 = list($wf_output)", 61: "$wf_outputs = :output :lbrace $_gen15 :rbrace -> WorkflowOutputs( outputs=$2 )", 62: "$wf_output = $wf_output_declaration_syntax", 63: "$wf_output = $wf_output_wildcard_syntax", 64: "$wf_output_declaration_syntax = $type_e :identifier :equal $e -> WorkflowOutputDeclaration( type=$0, name=$1, expression=$3 )", 65: "$_gen16 = $wf_output_wildcard", 66: "$_gen16 = :_empty", 67: "$wf_output_wildcard_syntax = :fqn $_gen16 -> WorkflowOutputWildcard( fqn=$0, wildcard=$1 )", 68: "$wf_output_wildcard = :dot :asterisk -> $1", 69: "$wf_parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 )", 70: "$wf_meta = :meta $map -> Meta( map=$1 )", 71: "$while_loop = :while :lparen $e :rparen :lbrace $_gen10 :rbrace -> WhileLoop( expression=$2, body=$5 )", 72: "$if_stmt = :if :lparen $e :rparen :lbrace $_gen10 :rbrace -> If( expression=$2, body=$5 )", 73: "$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen10 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )", 74: "$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )", 75: "$_gen17 = list($type_e, :comma)", 76: "$type_e = :type <=> :lsquare $_gen17 :rsquare -> Type( name=$0, subtype=$2 )", 77: "$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )", 78: "$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )", 79: "$type_e = :type", 80: "$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )", 81: "$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )", 82: "$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )", 83: "$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )", 84: "$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )", 85: "$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )", 86: "$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )", 87: "$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )", 88: "$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )", 89: "$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )", 90: "$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )", 91: "$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )", 92: "$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )", 93: "$e = :not $e -> LogicalNot( expression=$1 )", 94: "$e = :plus $e -> UnaryPlus( expression=$1 )", 95: "$e = :dash $e -> UnaryNegation( expression=$1 )", 96: "$_gen18 = list($e, :comma)", 97: "$e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 )", 98: "$e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )", 99: "$e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 )", 100: "$_gen19 = list($object_kv, :comma)", 101: "$e = :object :lbrace $_gen19 :rbrace -> ObjectLiteral( map=$2 )", 102: "$e = :lsquare $_gen18 :rsquare -> ArrayLiteral( values=$1 )", 103: "$_gen20 = list($map_kv, :comma)", 104: "$e = :lbrace $_gen20 :rbrace -> MapLiteral( map=$1 )", 105: "$e = :lparen $_gen18 :rparen -> TupleLiteral( values=$1 )", 106: "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )", 107: "$e = :string", 108: "$e = :identifier", 109: "$e = :boolean", 110: "$e = :integer", 111: "$e = :float", } def is_terminal(id): return isinstance(id, int) and 0 <= id <= 57 def parse(tokens, errors=None, start=None): if errors is None: errors = DefaultSyntaxErrorHandler() if isinstance(tokens, str): tokens = lex(tokens, 'string', errors) ctx = ParserContext(tokens, errors) tree = parse_document(ctx) if tokens.current() != None: raise ctx.errors.excess_tokens() return tree def expect(ctx, terminal_id): current = ctx.tokens.current() if not current: raise ctx.errors.no_more_tokens(ctx.nonterminal, terminals[terminal_id], ctx.tokens.last()) if current.id != terminal_id: raise ctx.errors.unexpected_symbol(ctx.nonterminal, current, [terminals[terminal_id]], ctx.rule) next = ctx.tokens.advance() if next and not is_terminal(next.id): raise ctx.errors.invalid_terminal(ctx.nonterminal, next) return current # START definitions for expression parser: e infix_binding_power_e = { 6: 4000, # $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) 20: 5000, # $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) 27: 6000, # $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) 48: 6000, # $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) 28: 7000, # $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) 3: 7000, # $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) 31: 7000, # $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) 30: 7000, # $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) 11: 8000, # $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) 51: 8000, # $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) 9: 9000, # $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) 36: 9000, # $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) 52: 9000, # $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) 15: 11000, # $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall( name=$0, params=$2 ) 10: 12000, # $e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) 0: 13000, # $e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 ) } prefix_binding_power_e = { 29: 10000, # $e = :not $e -> LogicalNot( expression=$1 ) 11: 10000, # $e = :plus $e -> UnaryPlus( expression=$1 ) 51: 10000, # $e = :dash $e -> UnaryNegation( expression=$1 ) } def get_infix_binding_power_e(terminal_id): try: return infix_binding_power_e[terminal_id] except: return 0 def get_prefix_binding_power_e(terminal_id): try: return prefix_binding_power_e[terminal_id] except: return 0 def parse_e(ctx): return parse_e_internal(ctx, rbp=0) def parse_e_internal(ctx, rbp=0): left = nud_e(ctx) if isinstance(left, ParseTree): left.isExpr = True left.isNud = True while ctx.tokens.current() and rbp < get_infix_binding_power_e(ctx.tokens.current().id): left = led_e(left, ctx) if left: left.isExpr = True return left def nud_e(ctx): tree = ParseTree(NonTerminal(97, 'e')) current = ctx.tokens.current() ctx.nonterminal = "e" if not current: return tree elif current.id in rule_first[93]: # rule first == not # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :not $e -> LogicalNot( expression=$1 ) ctx.rule = rules[93] ast_parameters = OrderedDict([ ('expression', 1), ]) tree.astTransform = AstTransformNodeCreator('LogicalNot', ast_parameters) tree.nudMorphemeCount = 2 tree.add(expect(ctx, 29)) tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(29))) tree.isPrefix = True elif current.id in rule_first[94]: # rule first == plus # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :plus $e -> UnaryPlus( expression=$1 ) ctx.rule = rules[94] ast_parameters = OrderedDict([ ('expression', 1), ]) tree.astTransform = AstTransformNodeCreator('UnaryPlus', ast_parameters) tree.nudMorphemeCount = 2 tree.add(expect(ctx, 11)) tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(11))) tree.isPrefix = True elif current.id in rule_first[95]: # rule first == dash # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :dash $e -> UnaryNegation( expression=$1 ) ctx.rule = rules[95] ast_parameters = OrderedDict([ ('expression', 1), ]) tree.astTransform = AstTransformNodeCreator('UnaryNegation', ast_parameters) tree.nudMorphemeCount = 2 tree.add(expect(ctx, 51)) tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(51))) tree.isPrefix = True elif current.id in rule_first[97]: # rule first == identifier # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 ) ctx.rule = rules[97] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 33)) elif current.id in rule_first[98]: # rule first == identifier # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) ctx.rule = rules[98] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 33)) elif current.id in rule_first[99]: # rule first == identifier # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 ) ctx.rule = rules[99] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 33)) elif current.id in rule_first[101]: # rule first == object # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :object :lbrace $_gen19 :rbrace -> ObjectLiteral( map=$2 ) ctx.rule = rules[101] ast_parameters = OrderedDict([ ('map', 2), ]) tree.astTransform = AstTransformNodeCreator('ObjectLiteral', ast_parameters) tree.nudMorphemeCount = 4 tree.add(expect(ctx, 41)) tree.add(expect(ctx, 8)) tree.add(parse__gen19(ctx)) tree.add(expect(ctx, 17)) elif current.id in rule_first[102]: # rule first == lsquare # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :lsquare $_gen18 :rsquare -> ArrayLiteral( values=$1 ) ctx.rule = rules[102] ast_parameters = OrderedDict([ ('values', 1), ]) tree.astTransform = AstTransformNodeCreator('ArrayLiteral', ast_parameters) tree.nudMorphemeCount = 3 tree.add(expect(ctx, 10)) tree.add(parse__gen18(ctx)) tree.add(expect(ctx, 46)) elif current.id in rule_first[104]: # rule first == lbrace # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :lbrace $_gen20 :rbrace -> MapLiteral( map=$1 ) ctx.rule = rules[104] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('MapLiteral', ast_parameters) tree.nudMorphemeCount = 3 tree.add(expect(ctx, 8)) tree.add(parse__gen20(ctx)) tree.add(expect(ctx, 17)) elif current.id in rule_first[105]: # rule first == lparen # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :lparen $_gen18 :rparen -> TupleLiteral( values=$1 ) ctx.rule = rules[105] ast_parameters = OrderedDict([ ('values', 1), ]) tree.astTransform = AstTransformNodeCreator('TupleLiteral', ast_parameters) tree.nudMorphemeCount = 3 tree.add(expect(ctx, 15)) tree.add(parse__gen18(ctx)) tree.add(expect(ctx, 22)) elif current.id in rule_first[106]: # rule first == if # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 ) ctx.rule = rules[106] ast_parameters = OrderedDict([ ('cond', 1), ('iftrue', 3), ('iffalse', 5), ]) tree.astTransform = AstTransformNodeCreator('TernaryIf', ast_parameters) tree.nudMorphemeCount = 6 tree.add(expect(ctx, 13)) tree.add(parse_e(ctx)) tree.add(expect(ctx, 34)) tree.add(parse_e(ctx)) tree.add(expect(ctx, 35)) tree.add(parse_e(ctx)) elif current.id in rule_first[107]: # rule first == string # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :string ctx.rule = rules[107] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 55)) elif current.id in rule_first[108]: # rule first == identifier # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :identifier ctx.rule = rules[108] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 33)) elif current.id in rule_first[109]: # rule first == boolean # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :boolean ctx.rule = rules[109] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 39)) elif current.id in rule_first[110]: # rule first == integer # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :integer ctx.rule = rules[110] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 21)) elif current.id in rule_first[111]: # rule first == float # e first == if, identifier, lparen, float, string, integer, dash, e, not, boolean, lbrace, lsquare, plus, object # $e = :float ctx.rule = rules[111] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 14)) return tree def led_e(left, ctx): tree = ParseTree(NonTerminal(97, 'e')) current = ctx.tokens.current() ctx.nonterminal = "e" if current.id == 6: # :double_pipe # $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) ctx.rule = rules[80] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('LogicalOr', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 6)) # :double_pipe modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(6) - modifier)) if current.id == 20: # :double_ampersand # $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) ctx.rule = rules[81] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('LogicalAnd', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 20)) # :double_ampersand modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(20) - modifier)) if current.id == 27: # :double_equal # $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) ctx.rule = rules[82] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Equals', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 27)) # :double_equal modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(27) - modifier)) if current.id == 48: # :not_equal # $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) ctx.rule = rules[83] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('NotEquals', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 48)) # :not_equal modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(48) - modifier)) if current.id == 28: # :lt # $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) ctx.rule = rules[84] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('LessThan', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 28)) # :lt modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(28) - modifier)) if current.id == 3: # :lteq # $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) ctx.rule = rules[85] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('LessThanOrEqual', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 3)) # :lteq modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(3) - modifier)) if current.id == 31: # :gt # $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) ctx.rule = rules[86] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('GreaterThan', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 31)) # :gt modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(31) - modifier)) if current.id == 30: # :gteq # $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) ctx.rule = rules[87] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('GreaterThanOrEqual', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 30)) # :gteq modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(30) - modifier)) if current.id == 11: # :plus # $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) ctx.rule = rules[88] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Add', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 11)) # :plus modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(11) - modifier)) if current.id == 51: # :dash # $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) ctx.rule = rules[89] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Subtract', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 51)) # :dash modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(51) - modifier)) if current.id == 9: # :asterisk # $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) ctx.rule = rules[90] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Multiply', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 9)) # :asterisk modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(9) - modifier)) if current.id == 36: # :slash # $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) ctx.rule = rules[91] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Divide', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 36)) # :slash modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(36) - modifier)) if current.id == 52: # :percent # $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) ctx.rule = rules[92] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('Remainder', ast_parameters) tree.isExprNud = True tree.add(left) tree.add(expect(ctx, 52)) # :percent modifier = 0 tree.isInfix = True tree.add(parse_e_internal(ctx, get_infix_binding_power_e(52) - modifier)) if current.id == 15: # :lparen # $e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 ) ctx.rule = rules[97] ast_parameters = OrderedDict([ ('name', 0), ('params', 2), ]) tree.astTransform = AstTransformNodeCreator('FunctionCall', ast_parameters) tree.add(left) tree.add(expect(ctx, 15)) # :lparen tree.add(parse__gen18(ctx)) tree.add(expect(ctx, 22)) # :rparen if current.id == 10: # :lsquare # $e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) ctx.rule = rules[98] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('ArrayOrMapLookup', ast_parameters) tree.add(left) tree.add(expect(ctx, 10)) # :lsquare modifier = 0 tree.add(parse_e_internal(ctx, get_infix_binding_power_e(10) - modifier)) tree.add(expect(ctx, 46)) # :rsquare if current.id == 0: # :dot # $e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 ) ctx.rule = rules[99] ast_parameters = OrderedDict([ ('lhs', 0), ('rhs', 2), ]) tree.astTransform = AstTransformNodeCreator('MemberAccess', ast_parameters) tree.add(left) tree.add(expect(ctx, 0)) # :dot tree.add(expect(ctx, 33)) # :identifier return tree # END definitions for expression parser: e # START definitions for expression parser: type_e infix_binding_power_type_e = { 10: 1000, # $type_e = :type <=> :lsquare list($type_e, :comma) :rsquare -> Type( name=$0, subtype=$2 ) 50: 2000, # $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) 11: 3000, # $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) } prefix_binding_power_type_e = { } def get_infix_binding_power_type_e(terminal_id): try: return infix_binding_power_type_e[terminal_id] except: return 0 def get_prefix_binding_power_type_e(terminal_id): try: return prefix_binding_power_type_e[terminal_id] except: return 0 def parse_type_e(ctx): return parse_type_e_internal(ctx, rbp=0) def parse_type_e_internal(ctx, rbp=0): left = nud_type_e(ctx) if isinstance(left, ParseTree): left.isExpr = True left.isNud = True while ctx.tokens.current() and rbp < get_infix_binding_power_type_e(ctx.tokens.current().id): left = led_type_e(left, ctx) if left: left.isExpr = True return left def nud_type_e(ctx): tree = ParseTree(NonTerminal(72, 'type_e')) current = ctx.tokens.current() ctx.nonterminal = "type_e" if not current: return tree if current.id in rule_first[76]: # rule first == type # e first == type_e, type # $type_e = :type <=> :lsquare $_gen17 :rsquare -> Type( name=$0, subtype=$2 ) ctx.rule = rules[76] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 54)) elif current.id in rule_first[77]: # rule first == type # e first == type_e, type # $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) ctx.rule = rules[77] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 54)) elif current.id in rule_first[78]: # rule first == type # e first == type_e, type # $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) ctx.rule = rules[78] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 54)) elif current.id in rule_first[79]: # rule first == type # e first == type_e, type # $type_e = :type ctx.rule = rules[79] tree.astTransform = AstTransformSubstitution(0) tree.nudMorphemeCount = 1 tree.add(expect(ctx, 54)) return tree def led_type_e(left, ctx): tree = ParseTree(NonTerminal(72, 'type_e')) current = ctx.tokens.current() ctx.nonterminal = "type_e" if current.id == 10: # :lsquare # $type_e = :type <=> :lsquare $_gen17 :rsquare -> Type( name=$0, subtype=$2 ) ctx.rule = rules[76] ast_parameters = OrderedDict([ ('name', 0), ('subtype', 2), ]) tree.astTransform = AstTransformNodeCreator('Type', ast_parameters) tree.add(left) tree.add(expect(ctx, 10)) # :lsquare tree.add(parse__gen17(ctx)) tree.add(expect(ctx, 46)) # :rsquare if current.id == 50: # :qmark # $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) ctx.rule = rules[77] ast_parameters = OrderedDict([ ('innerType', 0), ]) tree.astTransform = AstTransformNodeCreator('OptionalType', ast_parameters) tree.add(left) tree.add(expect(ctx, 50)) # :qmark if current.id == 11: # :plus # $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) ctx.rule = rules[78] ast_parameters = OrderedDict([ ('innerType', 0), ]) tree.astTransform = AstTransformNodeCreator('NonEmptyType', ast_parameters) tree.add(left) tree.add(expect(ctx, 11)) # :plus return tree # END definitions for expression parser: type_e def parse__gen0(ctx): tree = ParseTree(NonTerminal(87, '_gen0')) tree.list = True ctx.nonterminal = "_gen0" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[87] and \ ctx.tokens.current().id in nonterminal_follow[87]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(87)): tree.add(parse_import(ctx)) ctx.nonterminal = "_gen0" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen1(ctx): tree = ParseTree(NonTerminal(73, '_gen1')) tree.list = True ctx.nonterminal = "_gen1" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[73] and \ ctx.tokens.current().id in nonterminal_follow[73]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(73)): tree.add(parse_workflow_or_task_or_decl(ctx)) ctx.nonterminal = "_gen1" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen10(ctx): tree = ParseTree(NonTerminal(118, '_gen10')) tree.list = True ctx.nonterminal = "_gen10" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[118] and \ ctx.tokens.current().id in nonterminal_follow[118]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(118)): tree.add(parse_wf_body_element(ctx)) ctx.nonterminal = "_gen10" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen13(ctx): tree = ParseTree(NonTerminal(98, '_gen13')) tree.list = True ctx.nonterminal = "_gen13" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[98] and \ ctx.tokens.current().id in nonterminal_follow[98]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(98)): tree.add(parse_call_input(ctx)) ctx.nonterminal = "_gen13" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen14(ctx): tree = ParseTree(NonTerminal(85, '_gen14')) tree.list = True tree.list_separator_id = 57 ctx.nonterminal = "_gen14" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[85] and \ ctx.tokens.current().id in nonterminal_follow[85]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(85)): tree.add(parse_mapping(ctx)) ctx.nonterminal = "_gen14" # Horrible -- because parse_* can reset this if ctx.tokens.current() is not None and ctx.tokens.current().id == 57: tree.add(expect(ctx, 57)); else: break minimum = max(minimum - 1, 0) return tree def parse__gen15(ctx): tree = ParseTree(NonTerminal(81, '_gen15')) tree.list = True ctx.nonterminal = "_gen15" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[81] and \ ctx.tokens.current().id in nonterminal_follow[81]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(81)): tree.add(parse_wf_output(ctx)) ctx.nonterminal = "_gen15" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen17(ctx): tree = ParseTree(NonTerminal(111, '_gen17')) tree.list = True tree.list_separator_id = 57 ctx.nonterminal = "_gen17" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[111] and \ ctx.tokens.current().id in nonterminal_follow[111]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(111)): tree.add(parse_type_e(ctx)) ctx.nonterminal = "_gen17" # Horrible -- because parse_* can reset this if ctx.tokens.current() is not None and ctx.tokens.current().id == 57: tree.add(expect(ctx, 57)); else: break minimum = max(minimum - 1, 0) return tree def parse__gen18(ctx): tree = ParseTree(NonTerminal(74, '_gen18')) tree.list = True tree.list_separator_id = 57 ctx.nonterminal = "_gen18" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[74] and \ ctx.tokens.current().id in nonterminal_follow[74]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(74)): tree.add(parse_e(ctx)) ctx.nonterminal = "_gen18" # Horrible -- because parse_* can reset this if ctx.tokens.current() is not None and ctx.tokens.current().id == 57: tree.add(expect(ctx, 57)); else: break minimum = max(minimum - 1, 0) return tree def parse__gen19(ctx): tree = ParseTree(NonTerminal(70, '_gen19')) tree.list = True tree.list_separator_id = 57 ctx.nonterminal = "_gen19" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[70] and \ ctx.tokens.current().id in nonterminal_follow[70]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(70)): tree.add(parse_object_kv(ctx)) ctx.nonterminal = "_gen19" # Horrible -- because parse_* can reset this if ctx.tokens.current() is not None and ctx.tokens.current().id == 57: tree.add(expect(ctx, 57)); else: break minimum = max(minimum - 1, 0) return tree def parse__gen20(ctx): tree = ParseTree(NonTerminal(112, '_gen20')) tree.list = True tree.list_separator_id = 57 ctx.nonterminal = "_gen20" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[112] and \ ctx.tokens.current().id in nonterminal_follow[112]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(112)): tree.add(parse_map_kv(ctx)) ctx.nonterminal = "_gen20" # Horrible -- because parse_* can reset this if ctx.tokens.current() is not None and ctx.tokens.current().id == 57: tree.add(expect(ctx, 57)); else: break minimum = max(minimum - 1, 0) return tree def parse__gen3(ctx): tree = ParseTree(NonTerminal(78, '_gen3')) tree.list = True ctx.nonterminal = "_gen3" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[78] and \ ctx.tokens.current().id in nonterminal_follow[78]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(78)): tree.add(parse_declaration(ctx)) ctx.nonterminal = "_gen3" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen4(ctx): tree = ParseTree(NonTerminal(88, '_gen4')) tree.list = True ctx.nonterminal = "_gen4" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[88] and \ ctx.tokens.current().id in nonterminal_follow[88]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(88)): tree.add(parse_sections(ctx)) ctx.nonterminal = "_gen4" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen5(ctx): tree = ParseTree(NonTerminal(90, '_gen5')) tree.list = True ctx.nonterminal = "_gen5" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[90] and \ ctx.tokens.current().id in nonterminal_follow[90]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(90)): tree.add(parse_command_part(ctx)) ctx.nonterminal = "_gen5" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen6(ctx): tree = ParseTree(NonTerminal(71, '_gen6')) tree.list = True ctx.nonterminal = "_gen6" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[71] and \ ctx.tokens.current().id in nonterminal_follow[71]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(71)): tree.add(parse_cmd_param_kv(ctx)) ctx.nonterminal = "_gen6" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen7(ctx): tree = ParseTree(NonTerminal(93, '_gen7')) tree.list = True ctx.nonterminal = "_gen7" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[93] and \ ctx.tokens.current().id in nonterminal_follow[93]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(93)): tree.add(parse_output_kv(ctx)) ctx.nonterminal = "_gen7" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen8(ctx): tree = ParseTree(NonTerminal(102, '_gen8')) tree.list = True ctx.nonterminal = "_gen8" if ctx.tokens.current() is not None and \ ctx.tokens.current().id not in nonterminal_first[102] and \ ctx.tokens.current().id in nonterminal_follow[102]: return tree if ctx.tokens.current() is None: return tree minimum = 0 while minimum > 0 or \ (ctx.tokens.current() is not None and \ ctx.tokens.current().id in nonterminal_first.get(102)): tree.add(parse_kv(ctx)) ctx.nonterminal = "_gen8" # Horrible -- because parse_* can reset this minimum = max(minimum - 1, 0) return tree def parse__gen11(ctx): current = ctx.tokens.current() rule = table[28][current.id] if current else -1 tree = ParseTree(NonTerminal(86, '_gen11')) ctx.nonterminal = "_gen11" if current != None and current.id in nonterminal_follow[86] and current.id not in nonterminal_first[86]: return tree if current == None: return tree if rule == 49: # $_gen11 = $alias ctx.rule = rules[49] tree.astTransform = AstTransformSubstitution(0) subtree = parse_alias(ctx) tree.add(subtree) return tree return tree def parse__gen12(ctx): current = ctx.tokens.current() rule = table[9][current.id] if current else -1 tree = ParseTree(NonTerminal(67, '_gen12')) ctx.nonterminal = "_gen12" if current != None and current.id in nonterminal_follow[67] and current.id not in nonterminal_first[67]: return tree if current == None: return tree if rule == 51: # $_gen12 = $call_body ctx.rule = rules[51] tree.astTransform = AstTransformSubstitution(0) subtree = parse_call_body(ctx) tree.add(subtree) return tree return tree def parse__gen16(ctx): current = ctx.tokens.current() rule = table[22][current.id] if current else -1 tree = ParseTree(NonTerminal(80, '_gen16')) ctx.nonterminal = "_gen16" if current != None and current.id in nonterminal_follow[80] and current.id not in nonterminal_first[80]: return tree if current == None: return tree if rule == 65: # $_gen16 = $wf_output_wildcard ctx.rule = rules[65] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_output_wildcard(ctx) tree.add(subtree) return tree return tree def parse__gen2(ctx): current = ctx.tokens.current() rule = table[18][current.id] if current else -1 tree = ParseTree(NonTerminal(76, '_gen2')) ctx.nonterminal = "_gen2" if current != None and current.id in nonterminal_follow[76] and current.id not in nonterminal_first[76]: return tree if current == None: return tree if rule == 6: # $_gen2 = $import_namespace ctx.rule = rules[6] tree.astTransform = AstTransformSubstitution(0) subtree = parse_import_namespace(ctx) tree.add(subtree) return tree return tree def parse__gen9(ctx): current = ctx.tokens.current() rule = table[0][current.id] if current else -1 tree = ParseTree(NonTerminal(58, '_gen9')) ctx.nonterminal = "_gen9" if current != None and current.id in nonterminal_follow[58] and current.id not in nonterminal_first[58]: return tree if current == None: return tree if rule == 34: # $_gen9 = $setter ctx.rule = rules[34] tree.astTransform = AstTransformSubstitution(0) subtree = parse_setter(ctx) tree.add(subtree) return tree return tree def parse_alias(ctx): current = ctx.tokens.current() rule = table[4][current.id] if current else -1 tree = ParseTree(NonTerminal(62, 'alias')) ctx.nonterminal = "alias" if current == None: raise ctx.errors.unexpected_eof() if rule == 59: # $alias = :as :identifier -> $1 ctx.rule = rules[59] tree.astTransform = AstTransformSubstitution(1) t = expect(ctx, 47) # :as tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[62] if x >=0], rules[59] ) def parse_call(ctx): current = ctx.tokens.current() rule = table[38][current.id] if current else -1 tree = ParseTree(NonTerminal(96, 'call')) ctx.nonterminal = "call" if current == None: raise ctx.errors.unexpected_eof() if rule == 53: # $call = :call :fqn $_gen11 $_gen12 -> Call( task=$1, alias=$2, body=$3 ) ctx.rule = rules[53] ast_parameters = OrderedDict([ ('task', 1), ('alias', 2), ('body', 3), ]) tree.astTransform = AstTransformNodeCreator('Call', ast_parameters) t = expect(ctx, 24) # :call tree.add(t) t = expect(ctx, 7) # :fqn tree.add(t) subtree = parse__gen11(ctx) tree.add(subtree) subtree = parse__gen12(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[96] if x >=0], rules[53] ) def parse_call_body(ctx): current = ctx.tokens.current() rule = table[2][current.id] if current else -1 tree = ParseTree(NonTerminal(60, 'call_body')) ctx.nonterminal = "call_body" if current == None: raise ctx.errors.unexpected_eof() if rule == 55: # $call_body = :lbrace $_gen3 $_gen13 :rbrace -> CallBody( declarations=$1, io=$2 ) ctx.rule = rules[55] ast_parameters = OrderedDict([ ('declarations', 1), ('io', 2), ]) tree.astTransform = AstTransformNodeCreator('CallBody', ast_parameters) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen3(ctx) tree.add(subtree) subtree = parse__gen13(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[60] if x >=0], rules[55] ) def parse_call_input(ctx): current = ctx.tokens.current() rule = table[57][current.id] if current else -1 tree = ParseTree(NonTerminal(115, 'call_input')) ctx.nonterminal = "call_input" if current == None: raise ctx.errors.unexpected_eof() if rule == 57: # $call_input = :input :colon $_gen14 -> Inputs( map=$2 ) ctx.rule = rules[57] ast_parameters = OrderedDict([ ('map', 2), ]) tree.astTransform = AstTransformNodeCreator('Inputs', ast_parameters) t = expect(ctx, 25) # :input tree.add(t) t = expect(ctx, 56) # :colon tree.add(t) subtree = parse__gen14(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[115] if x >=0], rules[57] ) def parse_cmd_param(ctx): current = ctx.tokens.current() rule = table[55][current.id] if current else -1 tree = ParseTree(NonTerminal(113, 'cmd_param')) ctx.nonterminal = "cmd_param" if current == None: raise ctx.errors.unexpected_eof() if rule == 23: # $cmd_param = :cmd_param_start $_gen6 $e :cmd_param_end -> CommandParameter( attributes=$1, expr=$2 ) ctx.rule = rules[23] ast_parameters = OrderedDict([ ('attributes', 1), ('expr', 2), ]) tree.astTransform = AstTransformNodeCreator('CommandParameter', ast_parameters) t = expect(ctx, 19) # :cmd_param_start tree.add(t) subtree = parse__gen6(ctx) tree.add(subtree) subtree = parse_e(ctx) tree.add(subtree) t = expect(ctx, 5) # :cmd_param_end tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[113] if x >=0], rules[23] ) def parse_cmd_param_kv(ctx): current = ctx.tokens.current() rule = table[36][current.id] if current else -1 tree = ParseTree(NonTerminal(94, 'cmd_param_kv')) ctx.nonterminal = "cmd_param_kv" if current == None: raise ctx.errors.unexpected_eof() if rule == 24: # $cmd_param_kv = :cmd_attr_hint :identifier :equal $e -> CommandParameterAttr( key=$1, value=$3 ) ctx.rule = rules[24] ast_parameters = OrderedDict([ ('key', 1), ('value', 3), ]) tree.astTransform = AstTransformNodeCreator('CommandParameterAttr', ast_parameters) t = expect(ctx, 37) # :cmd_attr_hint tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 40) # :equal tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[94] if x >=0], rules[24] ) def parse_command(ctx): current = ctx.tokens.current() rule = table[31][current.id] if current else -1 tree = ParseTree(NonTerminal(89, 'command')) ctx.nonterminal = "command" if current == None: raise ctx.errors.unexpected_eof() if rule == 19: # $command = :raw_command :raw_cmd_start $_gen5 :raw_cmd_end -> RawCommand( parts=$2 ) ctx.rule = rules[19] ast_parameters = OrderedDict([ ('parts', 2), ]) tree.astTransform = AstTransformNodeCreator('RawCommand', ast_parameters) t = expect(ctx, 43) # :raw_command tree.add(t) t = expect(ctx, 44) # :raw_cmd_start tree.add(t) subtree = parse__gen5(ctx) tree.add(subtree) t = expect(ctx, 23) # :raw_cmd_end tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[89] if x >=0], rules[19] ) def parse_command_part(ctx): current = ctx.tokens.current() rule = table[8][current.id] if current else -1 tree = ParseTree(NonTerminal(66, 'command_part')) ctx.nonterminal = "command_part" if current == None: raise ctx.errors.unexpected_eof() if rule == 20: # $command_part = :cmd_part ctx.rule = rules[20] tree.astTransform = AstTransformSubstitution(0) t = expect(ctx, 45) # :cmd_part tree.add(t) return tree elif rule == 21: # $command_part = $cmd_param ctx.rule = rules[21] tree.astTransform = AstTransformSubstitution(0) subtree = parse_cmd_param(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[66] if x >=0], rules[21] ) def parse_declaration(ctx): current = ctx.tokens.current() rule = table[50][current.id] if current else -1 tree = ParseTree(NonTerminal(108, 'declaration')) ctx.nonterminal = "declaration" if current == None: raise ctx.errors.unexpected_eof() if rule == 36: # $declaration = $type_e :identifier $_gen9 -> Declaration( type=$0, name=$1, expression=$2 ) ctx.rule = rules[36] ast_parameters = OrderedDict([ ('type', 0), ('name', 1), ('expression', 2), ]) tree.astTransform = AstTransformNodeCreator('Declaration', ast_parameters) subtree = parse_type_e(ctx) tree.add(subtree) t = expect(ctx, 33) # :identifier tree.add(t) subtree = parse__gen9(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[108] if x >=0], rules[36] ) def parse_document(ctx): current = ctx.tokens.current() rule = table[42][current.id] if current else -1 tree = ParseTree(NonTerminal(100, 'document')) ctx.nonterminal = "document" if current != None and current.id in nonterminal_follow[100] and current.id not in nonterminal_first[100]: return tree if current == None: return tree if rule == 2: # $document = $_gen0 $_gen1 -> Namespace( imports=$0, body=$1 ) ctx.rule = rules[2] ast_parameters = OrderedDict([ ('imports', 0), ('body', 1), ]) tree.astTransform = AstTransformNodeCreator('Namespace', ast_parameters) subtree = parse__gen0(ctx) tree.add(subtree) subtree = parse__gen1(ctx) tree.add(subtree) return tree return tree def parse_if_stmt(ctx): current = ctx.tokens.current() rule = table[48][current.id] if current else -1 tree = ParseTree(NonTerminal(106, 'if_stmt')) ctx.nonterminal = "if_stmt" if current == None: raise ctx.errors.unexpected_eof() if rule == 72: # $if_stmt = :if :lparen $e :rparen :lbrace $_gen10 :rbrace -> If( expression=$2, body=$5 ) ctx.rule = rules[72] ast_parameters = OrderedDict([ ('expression', 2), ('body', 5), ]) tree.astTransform = AstTransformNodeCreator('If', ast_parameters) t = expect(ctx, 13) # :if tree.add(t) t = expect(ctx, 15) # :lparen tree.add(t) subtree = parse_e(ctx) tree.add(subtree) t = expect(ctx, 22) # :rparen tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen10(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[106] if x >=0], rules[72] ) def parse_import(ctx): current = ctx.tokens.current() rule = table[5][current.id] if current else -1 tree = ParseTree(NonTerminal(63, 'import')) ctx.nonterminal = "import" if current == None: raise ctx.errors.unexpected_eof() if rule == 8: # $import = :import :string $_gen2 -> Import( uri=$1, namespace=$2 ) ctx.rule = rules[8] ast_parameters = OrderedDict([ ('uri', 1), ('namespace', 2), ]) tree.astTransform = AstTransformNodeCreator('Import', ast_parameters) t = expect(ctx, 2) # :import tree.add(t) t = expect(ctx, 55) # :string tree.add(t) subtree = parse__gen2(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[63] if x >=0], rules[8] ) def parse_import_namespace(ctx): current = ctx.tokens.current() rule = table[24][current.id] if current else -1 tree = ParseTree(NonTerminal(82, 'import_namespace')) ctx.nonterminal = "import_namespace" if current == None: raise ctx.errors.unexpected_eof() if rule == 9: # $import_namespace = :as :identifier -> $1 ctx.rule = rules[9] tree.astTransform = AstTransformSubstitution(1) t = expect(ctx, 47) # :as tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[82] if x >=0], rules[9] ) def parse_kv(ctx): current = ctx.tokens.current() rule = table[41][current.id] if current else -1 tree = ParseTree(NonTerminal(99, 'kv')) ctx.nonterminal = "kv" if current == None: raise ctx.errors.unexpected_eof() if rule == 33: # $kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 ) ctx.rule = rules[33] ast_parameters = OrderedDict([ ('key', 0), ('value', 2), ]) tree.astTransform = AstTransformNodeCreator('RuntimeAttribute', ast_parameters) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 56) # :colon tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[99] if x >=0], rules[33] ) def parse_map(ctx): current = ctx.tokens.current() rule = table[21][current.id] if current else -1 tree = ParseTree(NonTerminal(79, 'map')) ctx.nonterminal = "map" if current == None: raise ctx.errors.unexpected_eof() if rule == 32: # $map = :lbrace $_gen8 :rbrace -> $1 ctx.rule = rules[32] tree.astTransform = AstTransformSubstitution(1) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen8(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[79] if x >=0], rules[32] ) def parse_map_kv(ctx): current = ctx.tokens.current() rule = table[11][current.id] if current else -1 tree = ParseTree(NonTerminal(69, 'map_kv')) ctx.nonterminal = "map_kv" if current == None: raise ctx.errors.unexpected_eof() if rule == 38: # $map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 ) ctx.rule = rules[38] ast_parameters = OrderedDict([ ('key', 0), ('value', 2), ]) tree.astTransform = AstTransformNodeCreator('MapLiteralKv', ast_parameters) subtree = parse_e(ctx) tree.add(subtree) t = expect(ctx, 56) # :colon tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[69] if x >=0], rules[38] ) def parse_mapping(ctx): current = ctx.tokens.current() rule = table[47][current.id] if current else -1 tree = ParseTree(NonTerminal(105, 'mapping')) ctx.nonterminal = "mapping" if current == None: raise ctx.errors.unexpected_eof() if rule == 58: # $mapping = :identifier :equal $e -> IOMapping( key=$0, value=$2 ) ctx.rule = rules[58] ast_parameters = OrderedDict([ ('key', 0), ('value', 2), ]) tree.astTransform = AstTransformNodeCreator('IOMapping', ast_parameters) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 40) # :equal tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[105] if x >=0], rules[58] ) def parse_meta(ctx): current = ctx.tokens.current() rule = table[52][current.id] if current else -1 tree = ParseTree(NonTerminal(110, 'meta')) ctx.nonterminal = "meta" if current == None: raise ctx.errors.unexpected_eof() if rule == 30: # $meta = :meta $map -> Meta( map=$1 ) ctx.rule = rules[30] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('Meta', ast_parameters) t = expect(ctx, 42) # :meta tree.add(t) subtree = parse_map(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[110] if x >=0], rules[30] ) def parse_object_kv(ctx): current = ctx.tokens.current() rule = table[37][current.id] if current else -1 tree = ParseTree(NonTerminal(95, 'object_kv')) ctx.nonterminal = "object_kv" if current == None: raise ctx.errors.unexpected_eof() if rule == 74: # $object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 ) ctx.rule = rules[74] ast_parameters = OrderedDict([ ('key', 0), ('value', 2), ]) tree.astTransform = AstTransformNodeCreator('ObjectKV', ast_parameters) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 56) # :colon tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[95] if x >=0], rules[74] ) def parse_output_kv(ctx): current = ctx.tokens.current() rule = table[34][current.id] if current else -1 tree = ParseTree(NonTerminal(92, 'output_kv')) ctx.nonterminal = "output_kv" if current == None: raise ctx.errors.unexpected_eof() if rule == 27: # $output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 ) ctx.rule = rules[27] ast_parameters = OrderedDict([ ('type', 0), ('name', 1), ('expression', 3), ]) tree.astTransform = AstTransformNodeCreator('Output', ast_parameters) subtree = parse_type_e(ctx) tree.add(subtree) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 40) # :equal tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[92] if x >=0], rules[27] ) def parse_outputs(ctx): current = ctx.tokens.current() rule = table[45][current.id] if current else -1 tree = ParseTree(NonTerminal(103, 'outputs')) ctx.nonterminal = "outputs" if current == None: raise ctx.errors.unexpected_eof() if rule == 26: # $outputs = :output :lbrace $_gen7 :rbrace -> Outputs( attributes=$2 ) ctx.rule = rules[26] ast_parameters = OrderedDict([ ('attributes', 2), ]) tree.astTransform = AstTransformNodeCreator('Outputs', ast_parameters) t = expect(ctx, 32) # :output tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen7(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[103] if x >=0], rules[26] ) def parse_parameter_meta(ctx): current = ctx.tokens.current() rule = table[43][current.id] if current else -1 tree = ParseTree(NonTerminal(101, 'parameter_meta')) ctx.nonterminal = "parameter_meta" if current == None: raise ctx.errors.unexpected_eof() if rule == 29: # $parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 ) ctx.rule = rules[29] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('ParameterMeta', ast_parameters) t = expect(ctx, 49) # :parameter_meta tree.add(t) subtree = parse_map(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[101] if x >=0], rules[29] ) def parse_runtime(ctx): current = ctx.tokens.current() rule = table[33][current.id] if current else -1 tree = ParseTree(NonTerminal(91, 'runtime')) ctx.nonterminal = "runtime" if current == None: raise ctx.errors.unexpected_eof() if rule == 28: # $runtime = :runtime $map -> Runtime( map=$1 ) ctx.rule = rules[28] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('Runtime', ast_parameters) t = expect(ctx, 18) # :runtime tree.add(t) subtree = parse_map(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[91] if x >=0], rules[28] ) def parse_scatter(ctx): current = ctx.tokens.current() rule = table[51][current.id] if current else -1 tree = ParseTree(NonTerminal(109, 'scatter')) ctx.nonterminal = "scatter" if current == None: raise ctx.errors.unexpected_eof() if rule == 73: # $scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen10 :rbrace -> Scatter( item=$2, collection=$4, body=$7 ) ctx.rule = rules[73] ast_parameters = OrderedDict([ ('item', 2), ('collection', 4), ('body', 7), ]) tree.astTransform = AstTransformNodeCreator('Scatter', ast_parameters) t = expect(ctx, 1) # :scatter tree.add(t) t = expect(ctx, 15) # :lparen tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 4) # :in tree.add(t) subtree = parse_e(ctx) tree.add(subtree) t = expect(ctx, 22) # :rparen tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen10(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[109] if x >=0], rules[73] ) def parse_sections(ctx): current = ctx.tokens.current() rule = table[1][current.id] if current else -1 tree = ParseTree(NonTerminal(59, 'sections')) ctx.nonterminal = "sections" if current == None: raise ctx.errors.unexpected_eof() if rule == 13: # $sections = $command ctx.rule = rules[13] tree.astTransform = AstTransformSubstitution(0) subtree = parse_command(ctx) tree.add(subtree) return tree elif rule == 14: # $sections = $outputs ctx.rule = rules[14] tree.astTransform = AstTransformSubstitution(0) subtree = parse_outputs(ctx) tree.add(subtree) return tree elif rule == 15: # $sections = $runtime ctx.rule = rules[15] tree.astTransform = AstTransformSubstitution(0) subtree = parse_runtime(ctx) tree.add(subtree) return tree elif rule == 16: # $sections = $parameter_meta ctx.rule = rules[16] tree.astTransform = AstTransformSubstitution(0) subtree = parse_parameter_meta(ctx) tree.add(subtree) return tree elif rule == 17: # $sections = $meta ctx.rule = rules[17] tree.astTransform = AstTransformSubstitution(0) subtree = parse_meta(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[59] if x >=0], rules[17] ) def parse_setter(ctx): current = ctx.tokens.current() rule = table[26][current.id] if current else -1 tree = ParseTree(NonTerminal(84, 'setter')) ctx.nonterminal = "setter" if current == None: raise ctx.errors.unexpected_eof() if rule == 37: # $setter = :equal $e -> $1 ctx.rule = rules[37] tree.astTransform = AstTransformSubstitution(1) t = expect(ctx, 40) # :equal tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[84] if x >=0], rules[37] ) def parse_task(ctx): current = ctx.tokens.current() rule = table[7][current.id] if current else -1 tree = ParseTree(NonTerminal(65, 'task')) ctx.nonterminal = "task" if current == None: raise ctx.errors.unexpected_eof() if rule == 12: # $task = :task :identifier :lbrace $_gen3 $_gen4 :rbrace -> Task( name=$1, declarations=$3, sections=$4 ) ctx.rule = rules[12] ast_parameters = OrderedDict([ ('name', 1), ('declarations', 3), ('sections', 4), ]) tree.astTransform = AstTransformNodeCreator('Task', ast_parameters) t = expect(ctx, 12) # :task tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen3(ctx) tree.add(subtree) subtree = parse__gen4(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[65] if x >=0], rules[12] ) def parse_wf_body_element(ctx): current = ctx.tokens.current() rule = table[19][current.id] if current else -1 tree = ParseTree(NonTerminal(77, 'wf_body_element')) ctx.nonterminal = "wf_body_element" if current == None: raise ctx.errors.unexpected_eof() if rule == 41: # $wf_body_element = $call ctx.rule = rules[41] tree.astTransform = AstTransformSubstitution(0) subtree = parse_call(ctx) tree.add(subtree) return tree elif rule == 42: # $wf_body_element = $declaration ctx.rule = rules[42] tree.astTransform = AstTransformSubstitution(0) subtree = parse_declaration(ctx) tree.add(subtree) return tree elif rule == 43: # $wf_body_element = $while_loop ctx.rule = rules[43] tree.astTransform = AstTransformSubstitution(0) subtree = parse_while_loop(ctx) tree.add(subtree) return tree elif rule == 44: # $wf_body_element = $if_stmt ctx.rule = rules[44] tree.astTransform = AstTransformSubstitution(0) subtree = parse_if_stmt(ctx) tree.add(subtree) return tree elif rule == 45: # $wf_body_element = $scatter ctx.rule = rules[45] tree.astTransform = AstTransformSubstitution(0) subtree = parse_scatter(ctx) tree.add(subtree) return tree elif rule == 46: # $wf_body_element = $wf_outputs ctx.rule = rules[46] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_outputs(ctx) tree.add(subtree) return tree elif rule == 47: # $wf_body_element = $wf_parameter_meta ctx.rule = rules[47] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_parameter_meta(ctx) tree.add(subtree) return tree elif rule == 48: # $wf_body_element = $wf_meta ctx.rule = rules[48] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_meta(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[77] if x >=0], rules[48] ) def parse_wf_meta(ctx): current = ctx.tokens.current() rule = table[17][current.id] if current else -1 tree = ParseTree(NonTerminal(75, 'wf_meta')) ctx.nonterminal = "wf_meta" if current == None: raise ctx.errors.unexpected_eof() if rule == 70: # $wf_meta = :meta $map -> Meta( map=$1 ) ctx.rule = rules[70] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('Meta', ast_parameters) t = expect(ctx, 42) # :meta tree.add(t) subtree = parse_map(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[75] if x >=0], rules[70] ) def parse_wf_output(ctx): current = ctx.tokens.current() rule = table[58][current.id] if current else -1 tree = ParseTree(NonTerminal(116, 'wf_output')) ctx.nonterminal = "wf_output" if current == None: raise ctx.errors.unexpected_eof() if rule == 62: # $wf_output = $wf_output_declaration_syntax ctx.rule = rules[62] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_output_declaration_syntax(ctx) tree.add(subtree) return tree elif rule == 63: # $wf_output = $wf_output_wildcard_syntax ctx.rule = rules[63] tree.astTransform = AstTransformSubstitution(0) subtree = parse_wf_output_wildcard_syntax(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[116] if x >=0], rules[63] ) def parse_wf_output_declaration_syntax(ctx): current = ctx.tokens.current() rule = table[10][current.id] if current else -1 tree = ParseTree(NonTerminal(68, 'wf_output_declaration_syntax')) ctx.nonterminal = "wf_output_declaration_syntax" if current == None: raise ctx.errors.unexpected_eof() if rule == 64: # $wf_output_declaration_syntax = $type_e :identifier :equal $e -> WorkflowOutputDeclaration( type=$0, name=$1, expression=$3 ) ctx.rule = rules[64] ast_parameters = OrderedDict([ ('type', 0), ('name', 1), ('expression', 3), ]) tree.astTransform = AstTransformNodeCreator('WorkflowOutputDeclaration', ast_parameters) subtree = parse_type_e(ctx) tree.add(subtree) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 40) # :equal tree.add(t) subtree = parse_e(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[68] if x >=0], rules[64] ) def parse_wf_output_wildcard(ctx): current = ctx.tokens.current() rule = table[59][current.id] if current else -1 tree = ParseTree(NonTerminal(117, 'wf_output_wildcard')) ctx.nonterminal = "wf_output_wildcard" if current == None: raise ctx.errors.unexpected_eof() if rule == 68: # $wf_output_wildcard = :dot :asterisk -> $1 ctx.rule = rules[68] tree.astTransform = AstTransformSubstitution(1) t = expect(ctx, 0) # :dot tree.add(t) t = expect(ctx, 9) # :asterisk tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[117] if x >=0], rules[68] ) def parse_wf_output_wildcard_syntax(ctx): current = ctx.tokens.current() rule = table[3][current.id] if current else -1 tree = ParseTree(NonTerminal(61, 'wf_output_wildcard_syntax')) ctx.nonterminal = "wf_output_wildcard_syntax" if current == None: raise ctx.errors.unexpected_eof() if rule == 67: # $wf_output_wildcard_syntax = :fqn $_gen16 -> WorkflowOutputWildcard( fqn=$0, wildcard=$1 ) ctx.rule = rules[67] ast_parameters = OrderedDict([ ('fqn', 0), ('wildcard', 1), ]) tree.astTransform = AstTransformNodeCreator('WorkflowOutputWildcard', ast_parameters) t = expect(ctx, 7) # :fqn tree.add(t) subtree = parse__gen16(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[61] if x >=0], rules[67] ) def parse_wf_outputs(ctx): current = ctx.tokens.current() rule = table[6][current.id] if current else -1 tree = ParseTree(NonTerminal(64, 'wf_outputs')) ctx.nonterminal = "wf_outputs" if current == None: raise ctx.errors.unexpected_eof() if rule == 61: # $wf_outputs = :output :lbrace $_gen15 :rbrace -> WorkflowOutputs( outputs=$2 ) ctx.rule = rules[61] ast_parameters = OrderedDict([ ('outputs', 2), ]) tree.astTransform = AstTransformNodeCreator('WorkflowOutputs', ast_parameters) t = expect(ctx, 32) # :output tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen15(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[64] if x >=0], rules[61] ) def parse_wf_parameter_meta(ctx): current = ctx.tokens.current() rule = table[56][current.id] if current else -1 tree = ParseTree(NonTerminal(114, 'wf_parameter_meta')) ctx.nonterminal = "wf_parameter_meta" if current == None: raise ctx.errors.unexpected_eof() if rule == 69: # $wf_parameter_meta = :parameter_meta $map -> ParameterMeta( map=$1 ) ctx.rule = rules[69] ast_parameters = OrderedDict([ ('map', 1), ]) tree.astTransform = AstTransformNodeCreator('ParameterMeta', ast_parameters) t = expect(ctx, 49) # :parameter_meta tree.add(t) subtree = parse_map(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[114] if x >=0], rules[69] ) def parse_while_loop(ctx): current = ctx.tokens.current() rule = table[46][current.id] if current else -1 tree = ParseTree(NonTerminal(104, 'while_loop')) ctx.nonterminal = "while_loop" if current == None: raise ctx.errors.unexpected_eof() if rule == 71: # $while_loop = :while :lparen $e :rparen :lbrace $_gen10 :rbrace -> WhileLoop( expression=$2, body=$5 ) ctx.rule = rules[71] ast_parameters = OrderedDict([ ('expression', 2), ('body', 5), ]) tree.astTransform = AstTransformNodeCreator('WhileLoop', ast_parameters) t = expect(ctx, 16) # :while tree.add(t) t = expect(ctx, 15) # :lparen tree.add(t) subtree = parse_e(ctx) tree.add(subtree) t = expect(ctx, 22) # :rparen tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen10(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[104] if x >=0], rules[71] ) def parse_workflow(ctx): current = ctx.tokens.current() rule = table[49][current.id] if current else -1 tree = ParseTree(NonTerminal(107, 'workflow')) ctx.nonterminal = "workflow" if current == None: raise ctx.errors.unexpected_eof() if rule == 40: # $workflow = :workflow :identifier :lbrace $_gen10 :rbrace -> Workflow( name=$1, body=$3 ) ctx.rule = rules[40] ast_parameters = OrderedDict([ ('name', 1), ('body', 3), ]) tree.astTransform = AstTransformNodeCreator('Workflow', ast_parameters) t = expect(ctx, 53) # :workflow tree.add(t) t = expect(ctx, 33) # :identifier tree.add(t) t = expect(ctx, 8) # :lbrace tree.add(t) subtree = parse__gen10(ctx) tree.add(subtree) t = expect(ctx, 17) # :rbrace tree.add(t) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[107] if x >=0], rules[40] ) def parse_workflow_or_task_or_decl(ctx): current = ctx.tokens.current() rule = table[25][current.id] if current else -1 tree = ParseTree(NonTerminal(83, 'workflow_or_task_or_decl')) ctx.nonterminal = "workflow_or_task_or_decl" if current == None: raise ctx.errors.unexpected_eof() if rule == 3: # $workflow_or_task_or_decl = $workflow ctx.rule = rules[3] tree.astTransform = AstTransformSubstitution(0) subtree = parse_workflow(ctx) tree.add(subtree) return tree elif rule == 4: # $workflow_or_task_or_decl = $task ctx.rule = rules[4] tree.astTransform = AstTransformSubstitution(0) subtree = parse_task(ctx) tree.add(subtree) return tree elif rule == 5: # $workflow_or_task_or_decl = $declaration ctx.rule = rules[5] tree.astTransform = AstTransformSubstitution(0) subtree = parse_declaration(ctx) tree.add(subtree) return tree raise ctx.errors.unexpected_symbol( ctx.nonterminal, ctx.tokens.current(), [terminals[x] for x in nonterminal_first[83] if x >=0], rules[5] ) # Lexer Code # # START USER CODE def init(): return { 'context': None, 'replacements': { re.compile(r"\\n"): 0x000A, re.compile(r"\\r"): 0x000D, re.compile(r"\\b"): 0x0008, re.compile(r"\\t"): 0x0009, re.compile(r"\\a"): 0x0007, re.compile(r"\\v"): 0x000B, re.compile(r'\\"'): 0x0022, re.compile(r"\\'"): 0x0027, re.compile(r"\\\?"): 0x003F }, 'escapes': { re.compile(r'(\\([0-7]{1,3}))'): 8, re.compile(r'(\\[xX]([0-9a-fA-F]{1,4}))'): 16, re.compile(r'(\\[uU]([0-9a-fA-F]{4}))'): 16 } } def workflow(ctx, terminal, source_string, line, col): ctx.user_context['context'] = 'workflow' default_action(ctx, terminal, source_string, line, col) def task(ctx, terminal, source_string, line, col): ctx.user_context['context'] = 'task' default_action(ctx, terminal, source_string, line, col) def output(ctx, terminal, source_string, line, col): if ctx.user_context['context'] == 'workflow': ctx.stack.append('wf_output') default_action(ctx, terminal, source_string, line, col) def wdl_unescape(ctx, terminal, source_string, line, col): for regex, c in ctx.user_context['replacements'].items(): source_string = regex.sub(chr(c), source_string) source_string = source_string.replace("\u005C\u005C", "\u005C") for regex, base in ctx.user_context['escapes'].items(): for escape_sequence, number in regex.findall(source_string): source_string = source_string.replace(escape_sequence, chr(int(number, base))) default_action(ctx, terminal, source_string[1:-1], line, col) # END USER CODE def emit(ctx, terminal, source_string, line, col): if terminal: ctx.tokens.append(Terminal(terminals[terminal], terminal, source_string, ctx.resource, line, col)) def default_action(ctx, terminal, source_string, line, col): emit(ctx, terminal, source_string, line, col) def post_filter(tokens): return tokens def destroy(context): pass class LexerStackPush: def __init__(self, mode): self.mode = mode class LexerAction: def __init__(self, action): self.action = action class LexerContext: def __init__(self, string, resource, errors, user_context): self.__dict__.update(locals()) self.stack = ['default'] self.line = 1 self.col = 1 self.tokens = [] self.user_context = user_context self.re_match = None # https://docs.python.org/3/library/re.html#match-objects class HermesLexer: regex = { 'default': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'/\*(.*?)\*/', re.DOTALL), [ # (terminal, group, function) ]), (re.compile(r'#.*'), [ # (terminal, group, function) ]), (re.compile(r'task(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('task', 0, task), ]), (re.compile(r'(call)\s+'), [ # (terminal, group, function) ('call', 1, None), LexerStackPush('task_fqn'), ]), (re.compile(r'workflow(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('workflow', 0, workflow), ]), (re.compile(r'import(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('import', 0, None), ]), (re.compile(r'input(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('input', 0, None), ]), (re.compile(r'output(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('output', 0, output), ]), (re.compile(r'as(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('as', 0, None), ]), (re.compile(r'if(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('if', 0, None), ]), (re.compile(r'then(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('then', 0, None), ]), (re.compile(r'else(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('else', 0, None), ]), (re.compile(r'while(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('while', 0, None), ]), (re.compile(r'runtime(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('runtime', 0, None), ]), (re.compile(r'scatter(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('scatter', 0, None), LexerStackPush('scatter'), ]), (re.compile(r'command\s*(?=<<<)'), [ # (terminal, group, function) ('raw_command', 0, None), LexerStackPush('raw_command2'), ]), (re.compile(r'command\s*(?=\{)'), [ # (terminal, group, function) ('raw_command', 0, None), LexerStackPush('raw_command'), ]), (re.compile(r'parameter_meta(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('parameter_meta', 0, None), ]), (re.compile(r'meta(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('meta', 0, None), ]), (re.compile(r'(true|false)(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('boolean', 0, None), ]), (re.compile(r'(object)\s*(\{)'), [ # (terminal, group, function) ('object', 0, None), ('lbrace', 0, None), ]), (re.compile(r'(Array|Map|Object|Pair|Boolean|Int|Float|Uri|File|String)(?![a-zA-Z0-9_])(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('type', 0, None), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*'), [ # (terminal, group, function) ('identifier', 0, None), ]), (re.compile(r'"([^\\\"\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*"'), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r'\'([^\\\'\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*\''), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r':'), [ # (terminal, group, function) ('colon', 0, None), ]), (re.compile(r','), [ # (terminal, group, function) ('comma', 0, None), ]), (re.compile(r'=='), [ # (terminal, group, function) ('double_equal', 0, None), ]), (re.compile(r'\|\|'), [ # (terminal, group, function) ('double_pipe', 0, None), ]), (re.compile(r'\&\&'), [ # (terminal, group, function) ('double_ampersand', 0, None), ]), (re.compile(r'!='), [ # (terminal, group, function) ('not_equal', 0, None), ]), (re.compile(r'='), [ # (terminal, group, function) ('equal', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'\{'), [ # (terminal, group, function) ('lbrace', 0, None), ]), (re.compile(r'\}'), [ # (terminal, group, function) ('rbrace', 0, None), ]), (re.compile(r'\('), [ # (terminal, group, function) ('lparen', 0, None), ]), (re.compile(r'\)'), [ # (terminal, group, function) ('rparen', 0, None), ]), (re.compile(r'\['), [ # (terminal, group, function) ('lsquare', 0, None), ]), (re.compile(r'\]'), [ # (terminal, group, function) ('rsquare', 0, None), ]), (re.compile(r'\+'), [ # (terminal, group, function) ('plus', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'-'), [ # (terminal, group, function) ('dash', 0, None), ]), (re.compile(r'/'), [ # (terminal, group, function) ('slash', 0, None), ]), (re.compile(r'%'), [ # (terminal, group, function) ('percent', 0, None), ]), (re.compile(r'<='), [ # (terminal, group, function) ('lteq', 0, None), ]), (re.compile(r'<'), [ # (terminal, group, function) ('lt', 0, None), ]), (re.compile(r'>='), [ # (terminal, group, function) ('gteq', 0, None), ]), (re.compile(r'>'), [ # (terminal, group, function) ('gt', 0, None), ]), (re.compile(r'!'), [ # (terminal, group, function) ('not', 0, None), ]), (re.compile(r'\?'), [ # (terminal, group, function) ('qmark', 0, None), ]), (re.compile(r'-?[0-9]+\.[0-9]+'), [ # (terminal, group, function) ('float', 0, None), ]), (re.compile(r'[0-9]+'), [ # (terminal, group, function) ('integer', 0, None), ]), ]), 'wf_output': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'#.*'), [ # (terminal, group, function) ]), (re.compile(r'(Array|Map|Object|Pair|Boolean|Int|Float|Uri|File|String)(?![a-zA-Z0-9_])(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('type', 0, None), LexerAction('pop'), LexerStackPush('wf_output_declaration'), ]), (re.compile(r'\{'), [ # (terminal, group, function) ('lbrace', 0, None), ]), (re.compile(r'\}'), [ # (terminal, group, function) ('rbrace', 0, None), LexerAction('pop'), ]), (re.compile(r','), [ # (terminal, group, function) ('comma', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*(\.[a-zA-Z]([a-zA-Z0-9_])*)*'), [ # (terminal, group, function) ('fqn', 0, None), ]), ]), 'wf_output_declaration': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'#.*'), [ # (terminal, group, function) ]), (re.compile(r'\}'), [ # (terminal, group, function) ('rbrace', 0, None), LexerAction('pop'), ]), (re.compile(r'\['), [ # (terminal, group, function) ('lsquare', 0, None), ]), (re.compile(r'\]'), [ # (terminal, group, function) ('rsquare', 0, None), ]), (re.compile(r'\+'), [ # (terminal, group, function) ('plus', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'[0-9]+'), [ # (terminal, group, function) ('integer', 0, None), ]), (re.compile(r'(true|false)(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('boolean', 0, None), ]), (re.compile(r'if'), [ # (terminal, group, function) ('if', 0, None), ]), (re.compile(r'else'), [ # (terminal, group, function) ('else', 0, None), ]), (re.compile(r'then'), [ # (terminal, group, function) ('then', 0, None), ]), (re.compile(r'(Array|Map|Object|Pair|Boolean|Int|Float|Uri|File|String)(?![a-zA-Z0-9_])(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('type', 0, None), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*'), [ # (terminal, group, function) ('identifier', 0, None), ]), (re.compile(r':'), [ # (terminal, group, function) ('colon', 0, None), ]), (re.compile(r','), [ # (terminal, group, function) ('comma', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'=='), [ # (terminal, group, function) ('double_equal', 0, None), ]), (re.compile(r'='), [ # (terminal, group, function) ('equal', 0, None), ]), (re.compile(r'\|\|'), [ # (terminal, group, function) ('double_pipe', 0, None), ]), (re.compile(r'\&\&'), [ # (terminal, group, function) ('double_ampersand', 0, None), ]), (re.compile(r'!='), [ # (terminal, group, function) ('not_equal', 0, None), ]), (re.compile(r'='), [ # (terminal, group, function) ('equal', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'\{'), [ # (terminal, group, function) ('lbrace', 0, None), ]), (re.compile(r'\('), [ # (terminal, group, function) ('lparen', 0, None), ]), (re.compile(r'\)'), [ # (terminal, group, function) ('rparen', 0, None), ]), (re.compile(r'\['), [ # (terminal, group, function) ('lsquare', 0, None), ]), (re.compile(r'\]'), [ # (terminal, group, function) ('rsquare', 0, None), ]), (re.compile(r'\+'), [ # (terminal, group, function) ('plus', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'-'), [ # (terminal, group, function) ('dash', 0, None), ]), (re.compile(r'/'), [ # (terminal, group, function) ('slash', 0, None), ]), (re.compile(r'%'), [ # (terminal, group, function) ('percent', 0, None), ]), (re.compile(r'<='), [ # (terminal, group, function) ('lteq', 0, None), ]), (re.compile(r'<'), [ # (terminal, group, function) ('lt', 0, None), ]), (re.compile(r'>='), [ # (terminal, group, function) ('gteq', 0, None), ]), (re.compile(r'>'), [ # (terminal, group, function) ('gt', 0, None), ]), (re.compile(r'!'), [ # (terminal, group, function) ('not', 0, None), ]), (re.compile(r'\?'), [ # (terminal, group, function) ('qmark', 0, None), ]), (re.compile(r'"([^\\\"\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*"'), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r'\'([^\\\'\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*\''), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r'-?[0-9]+\.[0-9]+'), [ # (terminal, group, function) ('float', 0, None), ]), (re.compile(r'[0-9]+'), [ # (terminal, group, function) ('integer', 0, None), ]), ]), 'task_fqn': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*(\.[a-zA-Z]([a-zA-Z0-9_])*)*'), [ # (terminal, group, function) ('fqn', 0, None), LexerAction('pop'), ]), ]), 'scatter': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'\('), [ # (terminal, group, function) ('lparen', 0, None), ]), (re.compile(r'in(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('in', 0, None), LexerAction('pop'), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*'), [ # (terminal, group, function) ('identifier', 0, None), ]), ]), 'raw_command': OrderedDict([ (re.compile(r'\{'), [ # (terminal, group, function) ('raw_cmd_start', 0, None), ]), (re.compile(r'\}'), [ # (terminal, group, function) ('raw_cmd_end', 0, None), LexerAction('pop'), ]), (re.compile(r'\$\{'), [ # (terminal, group, function) ('cmd_param_start', 0, None), LexerStackPush('cmd_param'), ]), (re.compile(r'(.*?)(?=\$\{|\})', re.DOTALL), [ # (terminal, group, function) ('cmd_part', 0, None), ]), ]), 'raw_command2': OrderedDict([ (re.compile(r'<<<'), [ # (terminal, group, function) ('raw_cmd_start', 0, None), ]), (re.compile(r'>>>'), [ # (terminal, group, function) ('raw_cmd_end', 0, None), LexerAction('pop'), ]), (re.compile(r'\$\{'), [ # (terminal, group, function) ('cmd_param_start', 0, None), LexerStackPush('cmd_param'), ]), (re.compile(r'(.*?)(?=\$\{|>>>)', re.DOTALL), [ # (terminal, group, function) ('cmd_part', 0, None), ]), ]), 'cmd_param': OrderedDict([ (re.compile(r'\s+'), [ # (terminal, group, function) ]), (re.compile(r'\}'), [ # (terminal, group, function) ('cmd_param_end', 0, None), LexerAction('pop'), ]), (re.compile(r'\['), [ # (terminal, group, function) ('lsquare', 0, None), ]), (re.compile(r'\]'), [ # (terminal, group, function) ('rsquare', 0, None), ]), (re.compile(r'='), [ # (terminal, group, function) ('equal', 0, None), ]), (re.compile(r'\+'), [ # (terminal, group, function) ('plus', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'[0-9]+'), [ # (terminal, group, function) ('integer', 0, None), ]), (re.compile(r'if'), [ # (terminal, group, function) ('if', 0, None), ]), (re.compile(r'else'), [ # (terminal, group, function) ('else', 0, None), ]), (re.compile(r'then'), [ # (terminal, group, function) ('then', 0, None), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*(?=\s*=)'), [ # (terminal, group, function) ('cmd_attr_hint', None, None), ('identifier', 0, None), ]), (re.compile(r'(true|false)(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('boolean', 0, None), ]), (re.compile(r'(Array|Map|Object|Pair|Boolean|Int|Float|Uri|File|String)(?![a-zA-Z0-9_])(?![a-zA-Z0-9_])'), [ # (terminal, group, function) ('type', 0, None), ]), (re.compile(r'[a-zA-Z]([a-zA-Z0-9_])*'), [ # (terminal, group, function) ('identifier', 0, None), ]), (re.compile(r':'), [ # (terminal, group, function) ('colon', 0, None), ]), (re.compile(r','), [ # (terminal, group, function) ('comma', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'=='), [ # (terminal, group, function) ('double_equal', 0, None), ]), (re.compile(r'\|\|'), [ # (terminal, group, function) ('double_pipe', 0, None), ]), (re.compile(r'\&\&'), [ # (terminal, group, function) ('double_ampersand', 0, None), ]), (re.compile(r'!='), [ # (terminal, group, function) ('not_equal', 0, None), ]), (re.compile(r'='), [ # (terminal, group, function) ('equal', 0, None), ]), (re.compile(r'\.'), [ # (terminal, group, function) ('dot', 0, None), ]), (re.compile(r'\{'), [ # (terminal, group, function) ('lbrace', 0, None), ]), (re.compile(r'\('), [ # (terminal, group, function) ('lparen', 0, None), ]), (re.compile(r'\)'), [ # (terminal, group, function) ('rparen', 0, None), ]), (re.compile(r'\['), [ # (terminal, group, function) ('lsquare', 0, None), ]), (re.compile(r'\]'), [ # (terminal, group, function) ('rsquare', 0, None), ]), (re.compile(r'\+'), [ # (terminal, group, function) ('plus', 0, None), ]), (re.compile(r'\*'), [ # (terminal, group, function) ('asterisk', 0, None), ]), (re.compile(r'-'), [ # (terminal, group, function) ('dash', 0, None), ]), (re.compile(r'/'), [ # (terminal, group, function) ('slash', 0, None), ]), (re.compile(r'%'), [ # (terminal, group, function) ('percent', 0, None), ]), (re.compile(r'<='), [ # (terminal, group, function) ('lteq', 0, None), ]), (re.compile(r'<'), [ # (terminal, group, function) ('lt', 0, None), ]), (re.compile(r'>='), [ # (terminal, group, function) ('gteq', 0, None), ]), (re.compile(r'>'), [ # (terminal, group, function) ('gt', 0, None), ]), (re.compile(r'!'), [ # (terminal, group, function) ('not', 0, None), ]), (re.compile(r'"([^\\\"\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*"'), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r'\'([^\\\'\n]|\\[\\"\'nrbtfav\?]|\\[0-7]{1,3}|\\x[0-9a-fA-F]+|\\[uU]([0-9a-fA-F]{4})([0-9a-fA-F]{4})?)*\''), [ # (terminal, group, function) ('string', 0, wdl_unescape), ]), (re.compile(r'-?[0-9]+\.[0-9]+'), [ # (terminal, group, function) ('float', 0, None), ]), (re.compile(r'[0-9]+'), [ # (terminal, group, function) ('integer', 0, None), ]), ]), } def _advance_line_col(self, string, length, line, col): for i in range(length): if string[i] == '\n': line += 1 col = 1 else: col += 1 return (line, col) def _advance_string(self, ctx, string): (ctx.line, ctx.col) = self._advance_line_col(string, len(string), ctx.line, ctx.col) ctx.string = ctx.string[len(string):] def _next(self, ctx, debug=False): for regex, outputs in self.regex[ctx.stack[-1]].items(): if debug: from xtermcolor import colorize token_count = len(ctx.tokens) print('{1} ({2}, {3}) regex: {0}'.format( colorize(regex.pattern, ansi=40), colorize(ctx.string[:20].replace('\n', '\\n'), ansi=15), ctx.line, ctx.col) ) match = regex.match(ctx.string) if match: ctx.re_match = match for output in outputs: if isinstance(output, tuple): (terminal, group, function) = output function = function if function else default_action source_string = match.group(group) if group is not None else '' (group_line, group_col) = self._advance_line_col(ctx.string, match.start(group) if group else 0, ctx.line, ctx.col) function( ctx, terminal, source_string, group_line, group_col ) if debug: print(' matched: {}'.format(colorize(match.group(0).replace('\n', '\\n'), ansi=3))) for token in ctx.tokens[token_count:]: print(' emit: [{}] [{}, {}] [{}] stack:{} context:{}'.format( colorize(token.str, ansi=9), colorize(str(token.line), ansi=5), colorize(str(token.col), ansi=5), colorize(token.source_string, ansi=3), colorize(str(ctx.stack), ansi=4), colorize(str(ctx.user_context), ansi=13) )) token_count = len(ctx.tokens) if isinstance(output, LexerStackPush): ctx.stack.append(output.mode) if debug: print(' push on stack: {}'.format(colorize(output.mode, ansi=4))) if isinstance(output, LexerAction): if output.action == 'pop': mode = ctx.stack.pop() if debug: print(' pop off stack: {}'.format(colorize(mode, ansi=4))) self._advance_string(ctx, match.group(0)) return len(match.group(0)) > 0 return False def lex(self, string, resource, errors=None, debug=False): if errors is None: errors = DefaultSyntaxErrorHandler() string_copy = string user_context = init() ctx = LexerContext(string, resource, errors, user_context) while len(ctx.string): matched = self._next(ctx, debug) if matched == False: raise ctx.errors.unrecognized_token(string_copy, ctx.line, ctx.col) destroy(ctx.user_context) filtered = post_filter(ctx.tokens) return filtered def lex(source, resource, errors=None, debug=False): return TokenStream(HermesLexer().lex(source, resource, errors, debug)) wdlparse-0.1.0/wdlparse/v1/0000755000076500000240000000000013770744643015753 5ustar wlgaostaff00000000000000wdlparse-0.1.0/wdlparse/v1/WdlV1Lexer.py0000644000076500000240000015320713770744635020273 0ustar wlgaostaff00000000000000# Generated from WdlV1Lexer.g4 by ANTLR 4.8 from antlr4 import * from io import StringIO from typing.io import TextIO import sys def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2r") buf.write("\u04d5\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1") buf.write("\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t") buf.write("\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4") buf.write("\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c") buf.write("\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f") buf.write("\3\2\3\2\7\2\u014f\n\2\f\2\16\2\u0152\13\2\3\2\3\2\3\3") buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3") buf.write("\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6") buf.write("\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3") buf.write("\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\13") buf.write("\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3") buf.write("\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\20\3\20\3\20") buf.write("\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22") buf.write("\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22") buf.write("\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23") buf.write("\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24") buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26") buf.write("\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\30\3\30") buf.write("\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31") buf.write("\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33") buf.write("\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\36\3\36") buf.write("\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37") buf.write("\3\37\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3#\3") buf.write("#\3$\3$\3$\3$\3$\3$\3$\3$\3$\5$\u022d\n$\3%\3%\3&\3&\3") buf.write("\'\3\'\3\'\3\'\3(\3(\3(\3(\3)\3)\3*\3*\3+\3+\3,\3,\3-") buf.write("\3-\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\62") buf.write("\3\62\3\62\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\65\3\66") buf.write("\3\66\3\67\3\67\38\38\39\39\3:\3:\3;\3;\3<\3<\3=\3=\3") buf.write(">\3>\3?\3?\3@\3@\3A\3A\3B\3B\3B\3B\3C\3C\3C\3C\3D\6D\u027c") buf.write("\nD\rD\16D\u027d\3D\3D\3E\3E\3F\3F\3F\3F\3F\3G\3G\3G\3") buf.write("G\3H\3H\3H\3H\3I\3I\3I\3I\3J\3J\3J\3J\5J\u0299\nJ\3J\3") buf.write("J\3J\3K\3K\3K\3K\3K\3K\3K\5K\u02a5\nK\5K\u02a7\nK\5K\u02a9") buf.write("\nK\5K\u02ab\nK\3K\3K\3L\3L\3L\3L\3L\3M\6M\u02b5\nM\r") buf.write("M\16M\u02b6\3N\3N\3N\3N\3N\3O\3O\3O\3O\3P\3P\3P\3P\3Q") buf.write("\3Q\3Q\3Q\3R\3R\3R\3R\5R\u02ce\nR\3R\3R\3R\3S\3S\3S\3") buf.write("S\3S\3S\3S\5S\u02da\nS\5S\u02dc\nS\5S\u02de\nS\3S\3S\3") buf.write("T\3T\3T\3T\3T\3U\6U\u02e8\nU\rU\16U\u02e9\3U\3U\3V\7V") buf.write("\u02ef\nV\fV\16V\u02f2\13V\3V\3V\3W\3W\3W\3W\3W\3W\3X") buf.write("\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0307\nY\5Y\u0309\n") buf.write("Y\5Y\u030b\nY\5Y\u030d\nY\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3") buf.write("\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3]\3^\3^\3^\3^\3^\3^\3^") buf.write("\3_\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3`\7`\u0339") buf.write("\n`\f`\16`\u033c\13`\5`\u033e\n`\3`\3`\3a\6a\u0343\na") buf.write("\ra\16a\u0344\3a\3a\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3") buf.write("c\5c\u0355\nc\5c\u0357\nc\5c\u0359\nc\5c\u035b\nc\3d\3") buf.write("d\3d\3d\3e\3e\3e\3e\3f\3f\3f\3f\3g\3g\3g\3g\5g\u036d\n") buf.write("g\3g\3g\3h\3h\3h\3h\3i\6i\u0376\ni\ri\16i\u0377\3j\6j") buf.write("\u037b\nj\rj\16j\u037c\3j\3j\3k\6k\u0382\nk\rk\16k\u0383") buf.write("\3k\3k\3l\3l\3l\3l\3m\6m\u038d\nm\rm\16m\u038e\3m\3m\3") buf.write("n\3n\7n\u0395\nn\fn\16n\u0398\13n\3n\3n\3o\3o\3p\3p\3") buf.write("p\3p\3q\3q\3q\3q\3q\3r\6r\u03a8\nr\rr\16r\u03a9\3r\3r") buf.write("\3s\3s\7s\u03b0\ns\fs\16s\u03b3\13s\3s\3s\3t\3t\3t\3t") buf.write("\3u\3u\3u\3u\3v\3v\3v\3v\3w\3w\3w\3w\3w\3w\3w\3x\3x\3") buf.write("x\3x\3y\3y\3y\3y\3z\3z\7z\u03d4\nz\fz\16z\u03d7\13z\3") buf.write("z\3z\3z\3z\3{\3{\7{\u03df\n{\f{\16{\u03e2\13{\3{\3{\3") buf.write("{\3{\3|\3|\3|\3|\3|\3}\3}\3}\3}\3~\6~\u03f2\n~\r~\16~") buf.write("\u03f3\3~\3~\3\177\3\177\3\177\3\177\3\177\3\u0080\3\u0080") buf.write("\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\5\u0080\u0404") buf.write("\n\u0080\5\u0080\u0406\n\u0080\5\u0080\u0408\n\u0080\5") buf.write("\u0080\u040a\n\u0080\3\u0080\3\u0080\3\u0081\3\u0081\3") buf.write("\u0081\3\u0081\3\u0081\3\u0081\3\u0082\6\u0082\u0415\n") buf.write("\u0082\r\u0082\16\u0082\u0416\3\u0083\3\u0083\3\u0083") buf.write("\3\u0083\3\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084") buf.write("\3\u0084\3\u0084\5\u0084\u0425\n\u0084\5\u0084\u0427\n") buf.write("\u0084\5\u0084\u0429\n\u0084\3\u0084\3\u0084\3\u0085\3") buf.write("\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0086\6\u0086") buf.write("\u0434\n\u0086\r\u0086\16\u0086\u0435\3\u0086\3\u0086") buf.write("\3\u0087\3\u0087\7\u0087\u043c\n\u0087\f\u0087\16\u0087") buf.write("\u043f\13\u0087\3\u0087\3\u0087\3\u0088\3\u0088\7\u0088") buf.write("\u0445\n\u0088\f\u0088\16\u0088\u0448\13\u0088\3\u0088") buf.write("\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089") buf.write("\3\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008b") buf.write("\6\u008b\u0459\n\u008b\r\u008b\16\u008b\u045a\3\u008b") buf.write("\3\u008b\3\u008c\3\u008c\7\u008c\u0461\n\u008c\f\u008c") buf.write("\16\u008c\u0464\13\u008c\3\u008c\3\u008c\3\u008d\3\u008d") buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008f\3\u008f\7\u008f") buf.write("\u0470\n\u008f\f\u008f\16\u008f\u0473\13\u008f\3\u008f") buf.write("\3\u008f\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0091") buf.write("\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\6\u0092\u0482") buf.write("\n\u0092\r\u0092\16\u0092\u0483\3\u0092\3\u0092\3\u0093") buf.write("\3\u0093\7\u0093\u048a\n\u0093\f\u0093\16\u0093\u048d") buf.write("\13\u0093\3\u0094\3\u0094\3\u0095\6\u0095\u0492\n\u0095") buf.write("\r\u0095\16\u0095\u0493\3\u0096\3\u0096\3\u0096\3\u0096") buf.write("\5\u0096\u049a\n\u0096\3\u0096\5\u0096\u049d\n\u0096\3") buf.write("\u0096\3\u0096\3\u0096\5\u0096\u04a2\n\u0096\3\u0097\3") buf.write("\u0097\3\u0097\3\u0097\3\u0097\5\u0097\u04a9\n\u0097\5") buf.write("\u0097\u04ab\n\u0097\5\u0097\u04ad\n\u0097\5\u0097\u04af") buf.write("\n\u0097\3\u0098\3\u0098\3\u0099\3\u0099\3\u009a\6\u009a") buf.write("\u04b6\n\u009a\r\u009a\16\u009a\u04b7\3\u009b\3\u009b") buf.write("\3\u009b\5\u009b\u04bd\n\u009b\3\u009b\3\u009b\5\u009b") buf.write("\u04c1\n\u009b\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d") buf.write("\5\u009d\u04c8\n\u009d\3\u009d\3\u009d\5\u009d\u04cc\n") buf.write("\u009d\5\u009d\u04ce\n\u009d\3\u009e\3\u009e\3\u009e\3") buf.write("\u009f\3\u009f\3\u009f\2\2\u00a0\20\3\22\4\24\5\26\6\30") buf.write("\7\32\b\34\t\36\n \13\"\f$\r&\16(\17*\20,\21.\22\60\23") buf.write("\62\24\64\25\66\268\27:\30<\31>\32@\33B\34D\35F\36H\37") buf.write("J L!N\"P#R$T%V&X\'Z(\\)^*`+b,d-f.h/j\60l\61n\62p\63r\64") buf.write("t\65v\66x\67z8|9~:\u0080;\u0082<\u0084=\u0086>\u0088?") buf.write("\u008a@\u008cA\u008eB\u0090C\u0092D\u0094E\u0096F\u0098") buf.write("\2\u009a\2\u009c\2\u009e\2\u00a0\2\u00a2\2\u00a4\2\u00a6") buf.write("G\u00a8\2\u00aa\2\u00ac\2\u00ae\2\u00b0\2\u00b2\2\u00b4") buf.write("\2\u00b6\2\u00b8H\u00baI\u00bcJ\u00beK\u00c0\2\u00c2\2") buf.write("\u00c4\2\u00c6\2\u00c8r\u00ca\2\u00cc\2\u00ce\2\u00d0") buf.write("\2\u00d2L\u00d4\2\u00d6\2\u00d8\2\u00daM\u00dcN\u00de") buf.write("O\u00e0P\u00e2Q\u00e4R\u00e6S\u00e8T\u00eaU\u00ecV\u00ee") buf.write("W\u00f0X\u00f2Y\u00f4Z\u00f6[\u00f8\\\u00fa]\u00fc^\u00fe") buf.write("_\u0100`\u0102a\u0104b\u0106c\u0108d\u010a\2\u010c\2\u010e") buf.write("\2\u0110e\u0112\2\u0114\2\u0116\2\u0118\2\u011af\u011c") buf.write("g\u011eh\u0120i\u0122j\u0124k\u0126l\u0128m\u012an\u012c") buf.write("o\u012ep\u0130q\u0132\2\u0134\2\u0136\2\u0138\2\u013a") buf.write("\2\u013c\2\u013e\2\u0140\2\u0142\2\u0144\2\u0146\2\u0148") buf.write("\2\u014a\2\20\2\3\4\5\6\7\b\t\n\13\f\r\16\17\26\4\2\f") buf.write("\f\17\17\5\2\13\f\17\17\"\"\b\2\f\f\17\17&&))}}\u0080") buf.write("\u0080\b\2\f\f\17\17$$&&}}\u0080\u0080\5\2@@}}\u0080\u0080") buf.write("\5\2&&}}\177\u0080\4\2\13\13\"\"\6\2/\60\62;C\\c|\5\2") buf.write("\f\f\17\17))\5\2\f\f\17\17$$\4\2C\\c|\6\2\62;C\\aac|\n") buf.write("\2$$))^^ddhhppttvv\3\2\62\65\3\2\629\5\2\62;CHch\3\2\62") buf.write(";\4\2--//\4\2--gg\4\2GGgg\2\u04ff\2\20\3\2\2\2\2\22\3") buf.write("\2\2\2\2\24\3\2\2\2\2\26\3\2\2\2\2\30\3\2\2\2\2\32\3\2") buf.write("\2\2\2\34\3\2\2\2\2\36\3\2\2\2\2 \3\2\2\2\2\"\3\2\2\2") buf.write("\2$\3\2\2\2\2&\3\2\2\2\2(\3\2\2\2\2*\3\2\2\2\2,\3\2\2") buf.write("\2\2.\3\2\2\2\2\60\3\2\2\2\2\62\3\2\2\2\2\64\3\2\2\2\2") buf.write("\66\3\2\2\2\28\3\2\2\2\2:\3\2\2\2\2<\3\2\2\2\2>\3\2\2") buf.write("\2\2@\3\2\2\2\2B\3\2\2\2\2D\3\2\2\2\2F\3\2\2\2\2H\3\2") buf.write("\2\2\2J\3\2\2\2\2L\3\2\2\2\2N\3\2\2\2\2P\3\2\2\2\2R\3") buf.write("\2\2\2\2T\3\2\2\2\2V\3\2\2\2\2X\3\2\2\2\2Z\3\2\2\2\2\\") buf.write("\3\2\2\2\2^\3\2\2\2\2`\3\2\2\2\2b\3\2\2\2\2d\3\2\2\2\2") buf.write("f\3\2\2\2\2h\3\2\2\2\2j\3\2\2\2\2l\3\2\2\2\2n\3\2\2\2") buf.write("\2p\3\2\2\2\2r\3\2\2\2\2t\3\2\2\2\2v\3\2\2\2\2x\3\2\2") buf.write("\2\2z\3\2\2\2\2|\3\2\2\2\2~\3\2\2\2\2\u0080\3\2\2\2\2") buf.write("\u0082\3\2\2\2\2\u0084\3\2\2\2\2\u0086\3\2\2\2\2\u0088") buf.write("\3\2\2\2\2\u008a\3\2\2\2\2\u008c\3\2\2\2\2\u008e\3\2\2") buf.write("\2\2\u0090\3\2\2\2\2\u0092\3\2\2\2\2\u0094\3\2\2\2\2\u0096") buf.write("\3\2\2\2\3\u0098\3\2\2\2\3\u009a\3\2\2\2\3\u009c\3\2\2") buf.write("\2\3\u009e\3\2\2\2\3\u00a0\3\2\2\2\3\u00a2\3\2\2\2\3\u00a4") buf.write("\3\2\2\2\3\u00a6\3\2\2\2\4\u00a8\3\2\2\2\4\u00aa\3\2\2") buf.write("\2\4\u00ac\3\2\2\2\4\u00ae\3\2\2\2\4\u00b0\3\2\2\2\4\u00b2") buf.write("\3\2\2\2\4\u00b4\3\2\2\2\4\u00b6\3\2\2\2\5\u00b8\3\2\2") buf.write("\2\5\u00ba\3\2\2\2\5\u00bc\3\2\2\2\6\u00be\3\2\2\2\6\u00c0") buf.write("\3\2\2\2\6\u00c2\3\2\2\2\6\u00c4\3\2\2\2\6\u00c6\3\2\2") buf.write("\2\6\u00c8\3\2\2\2\6\u00ca\3\2\2\2\6\u00cc\3\2\2\2\6\u00ce") buf.write("\3\2\2\2\7\u00d0\3\2\2\2\7\u00d2\3\2\2\2\7\u00d4\3\2\2") buf.write("\2\7\u00d6\3\2\2\2\7\u00d8\3\2\2\2\7\u00da\3\2\2\2\7\u00dc") buf.write("\3\2\2\2\7\u00de\3\2\2\2\b\u00e0\3\2\2\2\b\u00e2\3\2\2") buf.write("\2\t\u00e4\3\2\2\2\t\u00e6\3\2\2\2\n\u00e8\3\2\2\2\n\u00ea") buf.write("\3\2\2\2\n\u00ec\3\2\2\2\n\u00ee\3\2\2\2\n\u00f0\3\2\2") buf.write("\2\13\u00f2\3\2\2\2\13\u00f4\3\2\2\2\13\u00f6\3\2\2\2") buf.write("\13\u00f8\3\2\2\2\13\u00fa\3\2\2\2\13\u00fc\3\2\2\2\13") buf.write("\u00fe\3\2\2\2\13\u0100\3\2\2\2\13\u0102\3\2\2\2\13\u0104") buf.write("\3\2\2\2\13\u0106\3\2\2\2\13\u0108\3\2\2\2\f\u010a\3\2") buf.write("\2\2\f\u010c\3\2\2\2\f\u010e\3\2\2\2\f\u0110\3\2\2\2\r") buf.write("\u0112\3\2\2\2\r\u0114\3\2\2\2\r\u0116\3\2\2\2\r\u0118") buf.write("\3\2\2\2\16\u011a\3\2\2\2\16\u011c\3\2\2\2\16\u011e\3") buf.write("\2\2\2\16\u0120\3\2\2\2\16\u0122\3\2\2\2\17\u0124\3\2") buf.write("\2\2\17\u0126\3\2\2\2\17\u0128\3\2\2\2\17\u012a\3\2\2") buf.write("\2\17\u012c\3\2\2\2\17\u012e\3\2\2\2\17\u0130\3\2\2\2") buf.write("\20\u014c\3\2\2\2\22\u0155\3\2\2\2\24\u015f\3\2\2\2\26") buf.write("\u0166\3\2\2\2\30\u016f\3\2\2\2\32\u0174\3\2\2\2\34\u017b") buf.write("\3\2\2\2\36\u0183\3\2\2\2 \u0188\3\2\2\2\"\u018b\3\2\2") buf.write("\2$\u0190\3\2\2\2&\u0195\3\2\2\2(\u019b\3\2\2\2*\u019e") buf.write("\3\2\2\2,\u01a1\3\2\2\2.\u01a7\3\2\2\2\60\u01ae\3\2\2") buf.write("\2\62\u01bf\3\2\2\2\64\u01c6\3\2\2\2\66\u01d0\3\2\2\2") buf.write("8\u01d8\3\2\2\2:\u01e0\3\2\2\2<\u01e4\3\2\2\2>\u01ea\3") buf.write("\2\2\2@\u01f1\3\2\2\2B\u01f6\3\2\2\2D\u01fc\3\2\2\2F\u0200") buf.write("\3\2\2\2H\u0205\3\2\2\2J\u020c\3\2\2\2L\u0213\3\2\2\2") buf.write("N\u0217\3\2\2\2P\u021f\3\2\2\2R\u0221\3\2\2\2T\u022c\3") buf.write("\2\2\2V\u022e\3\2\2\2X\u0230\3\2\2\2Z\u0232\3\2\2\2\\") buf.write("\u0236\3\2\2\2^\u023a\3\2\2\2`\u023c\3\2\2\2b\u023e\3") buf.write("\2\2\2d\u0240\3\2\2\2f\u0242\3\2\2\2h\u0244\3\2\2\2j\u0246") buf.write("\3\2\2\2l\u0249\3\2\2\2n\u024c\3\2\2\2p\u024f\3\2\2\2") buf.write("r\u0252\3\2\2\2t\u0254\3\2\2\2v\u0257\3\2\2\2x\u025a\3") buf.write("\2\2\2z\u025c\3\2\2\2|\u025e\3\2\2\2~\u0260\3\2\2\2\u0080") buf.write("\u0262\3\2\2\2\u0082\u0264\3\2\2\2\u0084\u0266\3\2\2\2") buf.write("\u0086\u0268\3\2\2\2\u0088\u026a\3\2\2\2\u008a\u026c\3") buf.write("\2\2\2\u008c\u026e\3\2\2\2\u008e\u0270\3\2\2\2\u0090\u0272") buf.write("\3\2\2\2\u0092\u0276\3\2\2\2\u0094\u027b\3\2\2\2\u0096") buf.write("\u0281\3\2\2\2\u0098\u0283\3\2\2\2\u009a\u0288\3\2\2\2") buf.write("\u009c\u028c\3\2\2\2\u009e\u0290\3\2\2\2\u00a0\u0298\3") buf.write("\2\2\2\u00a2\u029d\3\2\2\2\u00a4\u02ae\3\2\2\2\u00a6\u02b4") buf.write("\3\2\2\2\u00a8\u02b8\3\2\2\2\u00aa\u02bd\3\2\2\2\u00ac") buf.write("\u02c1\3\2\2\2\u00ae\u02c5\3\2\2\2\u00b0\u02cd\3\2\2\2") buf.write("\u00b2\u02d2\3\2\2\2\u00b4\u02e1\3\2\2\2\u00b6\u02e7\3") buf.write("\2\2\2\u00b8\u02f0\3\2\2\2\u00ba\u02f5\3\2\2\2\u00bc\u02fb") buf.write("\3\2\2\2\u00be\u02ff\3\2\2\2\u00c0\u030e\3\2\2\2\u00c2") buf.write("\u0313\3\2\2\2\u00c4\u0317\3\2\2\2\u00c6\u031b\3\2\2\2") buf.write("\u00c8\u0321\3\2\2\2\u00ca\u0328\3\2\2\2\u00cc\u033d\3") buf.write("\2\2\2\u00ce\u0342\3\2\2\2\u00d0\u0348\3\2\2\2\u00d2\u034d") buf.write("\3\2\2\2\u00d4\u035c\3\2\2\2\u00d6\u0360\3\2\2\2\u00d8") buf.write("\u0364\3\2\2\2\u00da\u036c\3\2\2\2\u00dc\u0370\3\2\2\2") buf.write("\u00de\u0375\3\2\2\2\u00e0\u037a\3\2\2\2\u00e2\u0381\3") buf.write("\2\2\2\u00e4\u0387\3\2\2\2\u00e6\u038c\3\2\2\2\u00e8\u0392") buf.write("\3\2\2\2\u00ea\u039b\3\2\2\2\u00ec\u039d\3\2\2\2\u00ee") buf.write("\u03a1\3\2\2\2\u00f0\u03a7\3\2\2\2\u00f2\u03ad\3\2\2\2") buf.write("\u00f4\u03b6\3\2\2\2\u00f6\u03ba\3\2\2\2\u00f8\u03be\3") buf.write("\2\2\2\u00fa\u03c2\3\2\2\2\u00fc\u03c9\3\2\2\2\u00fe\u03cd") buf.write("\3\2\2\2\u0100\u03d1\3\2\2\2\u0102\u03dc\3\2\2\2\u0104") buf.write("\u03e7\3\2\2\2\u0106\u03ec\3\2\2\2\u0108\u03f1\3\2\2\2") buf.write("\u010a\u03f7\3\2\2\2\u010c\u03fc\3\2\2\2\u010e\u040d\3") buf.write("\2\2\2\u0110\u0414\3\2\2\2\u0112\u0418\3\2\2\2\u0114\u041d") buf.write("\3\2\2\2\u0116\u042c\3\2\2\2\u0118\u0433\3\2\2\2\u011a") buf.write("\u0439\3\2\2\2\u011c\u0442\3\2\2\2\u011e\u044e\3\2\2\2") buf.write("\u0120\u0452\3\2\2\2\u0122\u0458\3\2\2\2\u0124\u045e\3") buf.write("\2\2\2\u0126\u0467\3\2\2\2\u0128\u0469\3\2\2\2\u012a\u046d") buf.write("\3\2\2\2\u012c\u0479\3\2\2\2\u012e\u047b\3\2\2\2\u0130") buf.write("\u0481\3\2\2\2\u0132\u0487\3\2\2\2\u0134\u048e\3\2\2\2") buf.write("\u0136\u0491\3\2\2\2\u0138\u04a1\3\2\2\2\u013a\u04a3\3") buf.write("\2\2\2\u013c\u04b0\3\2\2\2\u013e\u04b2\3\2\2\2\u0140\u04b5") buf.write("\3\2\2\2\u0142\u04c0\3\2\2\2\u0144\u04c2\3\2\2\2\u0146") buf.write("\u04cd\3\2\2\2\u0148\u04cf\3\2\2\2\u014a\u04d2\3\2\2\2") buf.write("\u014c\u0150\7%\2\2\u014d\u014f\n\2\2\2\u014e\u014d\3") buf.write("\2\2\2\u014f\u0152\3\2\2\2\u0150\u014e\3\2\2\2\u0150\u0151") buf.write("\3\2\2\2\u0151\u0153\3\2\2\2\u0152\u0150\3\2\2\2\u0153") buf.write("\u0154\b\2\2\2\u0154\21\3\2\2\2\u0155\u0156\7x\2\2\u0156") buf.write("\u0157\7g\2\2\u0157\u0158\7t\2\2\u0158\u0159\7u\2\2\u0159") buf.write("\u015a\7k\2\2\u015a\u015b\7q\2\2\u015b\u015c\7p\2\2\u015c") buf.write("\u015d\3\2\2\2\u015d\u015e\b\3\3\2\u015e\23\3\2\2\2\u015f") buf.write("\u0160\7k\2\2\u0160\u0161\7o\2\2\u0161\u0162\7r\2\2\u0162") buf.write("\u0163\7q\2\2\u0163\u0164\7t\2\2\u0164\u0165\7v\2\2\u0165") buf.write("\25\3\2\2\2\u0166\u0167\7y\2\2\u0167\u0168\7q\2\2\u0168") buf.write("\u0169\7t\2\2\u0169\u016a\7m\2\2\u016a\u016b\7h\2\2\u016b") buf.write("\u016c\7n\2\2\u016c\u016d\7q\2\2\u016d\u016e\7y\2\2\u016e") buf.write("\27\3\2\2\2\u016f\u0170\7v\2\2\u0170\u0171\7c\2\2\u0171") buf.write("\u0172\7u\2\2\u0172\u0173\7m\2\2\u0173\31\3\2\2\2\u0174") buf.write("\u0175\7u\2\2\u0175\u0176\7v\2\2\u0176\u0177\7t\2\2\u0177") buf.write("\u0178\7w\2\2\u0178\u0179\7e\2\2\u0179\u017a\7v\2\2\u017a") buf.write("\33\3\2\2\2\u017b\u017c\7u\2\2\u017c\u017d\7e\2\2\u017d") buf.write("\u017e\7c\2\2\u017e\u017f\7v\2\2\u017f\u0180\7v\2\2\u0180") buf.write("\u0181\7g\2\2\u0181\u0182\7t\2\2\u0182\35\3\2\2\2\u0183") buf.write("\u0184\7e\2\2\u0184\u0185\7c\2\2\u0185\u0186\7n\2\2\u0186") buf.write("\u0187\7n\2\2\u0187\37\3\2\2\2\u0188\u0189\7k\2\2\u0189") buf.write("\u018a\7h\2\2\u018a!\3\2\2\2\u018b\u018c\7v\2\2\u018c") buf.write("\u018d\7j\2\2\u018d\u018e\7g\2\2\u018e\u018f\7p\2\2\u018f") buf.write("#\3\2\2\2\u0190\u0191\7g\2\2\u0191\u0192\7n\2\2\u0192") buf.write("\u0193\7u\2\2\u0193\u0194\7g\2\2\u0194%\3\2\2\2\u0195") buf.write("\u0196\7c\2\2\u0196\u0197\7n\2\2\u0197\u0198\7k\2\2\u0198") buf.write("\u0199\7c\2\2\u0199\u019a\7u\2\2\u019a\'\3\2\2\2\u019b") buf.write("\u019c\7c\2\2\u019c\u019d\7u\2\2\u019d)\3\2\2\2\u019e") buf.write("\u019f\7k\2\2\u019f\u01a0\7p\2\2\u01a0+\3\2\2\2\u01a1") buf.write("\u01a2\7k\2\2\u01a2\u01a3\7p\2\2\u01a3\u01a4\7r\2\2\u01a4") buf.write("\u01a5\7w\2\2\u01a5\u01a6\7v\2\2\u01a6-\3\2\2\2\u01a7") buf.write("\u01a8\7q\2\2\u01a8\u01a9\7w\2\2\u01a9\u01aa\7v\2\2\u01aa") buf.write("\u01ab\7r\2\2\u01ab\u01ac\7w\2\2\u01ac\u01ad\7v\2\2\u01ad") buf.write("/\3\2\2\2\u01ae\u01af\7r\2\2\u01af\u01b0\7c\2\2\u01b0") buf.write("\u01b1\7t\2\2\u01b1\u01b2\7c\2\2\u01b2\u01b3\7o\2\2\u01b3") buf.write("\u01b4\7g\2\2\u01b4\u01b5\7v\2\2\u01b5\u01b6\7g\2\2\u01b6") buf.write("\u01b7\7t\2\2\u01b7\u01b8\7a\2\2\u01b8\u01b9\7o\2\2\u01b9") buf.write("\u01ba\7g\2\2\u01ba\u01bb\7v\2\2\u01bb\u01bc\7c\2\2\u01bc") buf.write("\u01bd\3\2\2\2\u01bd\u01be\b\22\4\2\u01be\61\3\2\2\2\u01bf") buf.write("\u01c0\7o\2\2\u01c0\u01c1\7g\2\2\u01c1\u01c2\7v\2\2\u01c2") buf.write("\u01c3\7c\2\2\u01c3\u01c4\3\2\2\2\u01c4\u01c5\b\23\4\2") buf.write("\u01c5\63\3\2\2\2\u01c6\u01c7\7e\2\2\u01c7\u01c8\7q\2") buf.write("\2\u01c8\u01c9\7o\2\2\u01c9\u01ca\7o\2\2\u01ca\u01cb\7") buf.write("c\2\2\u01cb\u01cc\7p\2\2\u01cc\u01cd\7f\2\2\u01cd\u01ce") buf.write("\3\2\2\2\u01ce\u01cf\b\24\5\2\u01cf\65\3\2\2\2\u01d0\u01d1") buf.write("\7t\2\2\u01d1\u01d2\7w\2\2\u01d2\u01d3\7p\2\2\u01d3\u01d4") buf.write("\7v\2\2\u01d4\u01d5\7k\2\2\u01d5\u01d6\7o\2\2\u01d6\u01d7") buf.write("\7g\2\2\u01d7\67\3\2\2\2\u01d8\u01d9\7D\2\2\u01d9\u01da") buf.write("\7q\2\2\u01da\u01db\7q\2\2\u01db\u01dc\7n\2\2\u01dc\u01dd") buf.write("\7g\2\2\u01dd\u01de\7c\2\2\u01de\u01df\7p\2\2\u01df9\3") buf.write("\2\2\2\u01e0\u01e1\7K\2\2\u01e1\u01e2\7p\2\2\u01e2\u01e3") buf.write("\7v\2\2\u01e3;\3\2\2\2\u01e4\u01e5\7H\2\2\u01e5\u01e6") buf.write("\7n\2\2\u01e6\u01e7\7q\2\2\u01e7\u01e8\7c\2\2\u01e8\u01e9") buf.write("\7v\2\2\u01e9=\3\2\2\2\u01ea\u01eb\7U\2\2\u01eb\u01ec") buf.write("\7v\2\2\u01ec\u01ed\7t\2\2\u01ed\u01ee\7k\2\2\u01ee\u01ef") buf.write("\7p\2\2\u01ef\u01f0\7i\2\2\u01f0?\3\2\2\2\u01f1\u01f2") buf.write("\7H\2\2\u01f2\u01f3\7k\2\2\u01f3\u01f4\7n\2\2\u01f4\u01f5") buf.write("\7g\2\2\u01f5A\3\2\2\2\u01f6\u01f7\7C\2\2\u01f7\u01f8") buf.write("\7t\2\2\u01f8\u01f9\7t\2\2\u01f9\u01fa\7c\2\2\u01fa\u01fb") buf.write("\7{\2\2\u01fbC\3\2\2\2\u01fc\u01fd\7O\2\2\u01fd\u01fe") buf.write("\7c\2\2\u01fe\u01ff\7r\2\2\u01ffE\3\2\2\2\u0200\u0201") buf.write("\7R\2\2\u0201\u0202\7c\2\2\u0202\u0203\7k\2\2\u0203\u0204") buf.write("\7t\2\2\u0204G\3\2\2\2\u0205\u0206\7Q\2\2\u0206\u0207") buf.write("\7d\2\2\u0207\u0208\7l\2\2\u0208\u0209\7g\2\2\u0209\u020a") buf.write("\7e\2\2\u020a\u020b\7v\2\2\u020bI\3\2\2\2\u020c\u020d") buf.write("\7q\2\2\u020d\u020e\7d\2\2\u020e\u020f\7l\2\2\u020f\u0210") buf.write("\7g\2\2\u0210\u0211\7e\2\2\u0211\u0212\7v\2\2\u0212K\3") buf.write("\2\2\2\u0213\u0214\7u\2\2\u0214\u0215\7g\2\2\u0215\u0216") buf.write("\7r\2\2\u0216M\3\2\2\2\u0217\u0218\7f\2\2\u0218\u0219") buf.write("\7g\2\2\u0219\u021a\7h\2\2\u021a\u021b\7c\2\2\u021b\u021c") buf.write("\7w\2\2\u021c\u021d\7n\2\2\u021d\u021e\7v\2\2\u021eO\3") buf.write("\2\2\2\u021f\u0220\5\u0140\u009a\2\u0220Q\3\2\2\2\u0221") buf.write("\u0222\5\u0146\u009d\2\u0222S\3\2\2\2\u0223\u0224\7v\2") buf.write("\2\u0224\u0225\7t\2\2\u0225\u0226\7w\2\2\u0226\u022d\7") buf.write("g\2\2\u0227\u0228\7h\2\2\u0228\u0229\7c\2\2\u0229\u022a") buf.write("\7n\2\2\u022a\u022b\7u\2\2\u022b\u022d\7g\2\2\u022c\u0223") buf.write("\3\2\2\2\u022c\u0227\3\2\2\2\u022dU\3\2\2\2\u022e\u022f") buf.write("\7*\2\2\u022fW\3\2\2\2\u0230\u0231\7+\2\2\u0231Y\3\2\2") buf.write("\2\u0232\u0233\7}\2\2\u0233\u0234\3\2\2\2\u0234\u0235") buf.write("\b\'\6\2\u0235[\3\2\2\2\u0236\u0237\7\177\2\2\u0237\u0238") buf.write("\3\2\2\2\u0238\u0239\b(\7\2\u0239]\3\2\2\2\u023a\u023b") buf.write("\7]\2\2\u023b_\3\2\2\2\u023c\u023d\7_\2\2\u023da\3\2\2") buf.write("\2\u023e\u023f\7^\2\2\u023fc\3\2\2\2\u0240\u0241\7<\2") buf.write("\2\u0241e\3\2\2\2\u0242\u0243\7>\2\2\u0243g\3\2\2\2\u0244") buf.write("\u0245\7@\2\2\u0245i\3\2\2\2\u0246\u0247\7@\2\2\u0247") buf.write("\u0248\7?\2\2\u0248k\3\2\2\2\u0249\u024a\7>\2\2\u024a") buf.write("\u024b\7?\2\2\u024bm\3\2\2\2\u024c\u024d\7?\2\2\u024d") buf.write("\u024e\7?\2\2\u024eo\3\2\2\2\u024f\u0250\7#\2\2\u0250") buf.write("\u0251\7?\2\2\u0251q\3\2\2\2\u0252\u0253\7?\2\2\u0253") buf.write("s\3\2\2\2\u0254\u0255\7(\2\2\u0255\u0256\7(\2\2\u0256") buf.write("u\3\2\2\2\u0257\u0258\7~\2\2\u0258\u0259\7~\2\2\u0259") buf.write("w\3\2\2\2\u025a\u025b\7A\2\2\u025by\3\2\2\2\u025c\u025d") buf.write("\7,\2\2\u025d{\3\2\2\2\u025e\u025f\7-\2\2\u025f}\3\2\2") buf.write("\2\u0260\u0261\7/\2\2\u0261\177\3\2\2\2\u0262\u0263\7") buf.write("&\2\2\u0263\u0081\3\2\2\2\u0264\u0265\7.\2\2\u0265\u0083") buf.write("\3\2\2\2\u0266\u0267\7=\2\2\u0267\u0085\3\2\2\2\u0268") buf.write("\u0269\7\60\2\2\u0269\u0087\3\2\2\2\u026a\u026b\7#\2\2") buf.write("\u026b\u0089\3\2\2\2\u026c\u026d\7\u0080\2\2\u026d\u008b") buf.write("\3\2\2\2\u026e\u026f\7\61\2\2\u026f\u008d\3\2\2\2\u0270") buf.write("\u0271\7\'\2\2\u0271\u008f\3\2\2\2\u0272\u0273\7)\2\2") buf.write("\u0273\u0274\3\2\2\2\u0274\u0275\bB\b\2\u0275\u0091\3") buf.write("\2\2\2\u0276\u0277\7$\2\2\u0277\u0278\3\2\2\2\u0278\u0279") buf.write("\bC\t\2\u0279\u0093\3\2\2\2\u027a\u027c\t\3\2\2\u027b") buf.write("\u027a\3\2\2\2\u027c\u027d\3\2\2\2\u027d\u027b\3\2\2\2") buf.write("\u027d\u027e\3\2\2\2\u027e\u027f\3\2\2\2\u027f\u0280\b") buf.write("D\n\2\u0280\u0095\3\2\2\2\u0281\u0282\5\u0132\u0093\2") buf.write("\u0282\u0097\3\2\2\2\u0283\u0284\7^\2\2\u0284\u0285\13") buf.write("\2\2\2\u0285\u0286\3\2\2\2\u0286\u0287\bF\13\2\u0287\u0099") buf.write("\3\2\2\2\u0288\u0289\7&\2\2\u0289\u028a\3\2\2\2\u028a") buf.write("\u028b\bG\13\2\u028b\u009b\3\2\2\2\u028c\u028d\7\u0080") buf.write("\2\2\u028d\u028e\3\2\2\2\u028e\u028f\bH\13\2\u028f\u009d") buf.write("\3\2\2\2\u0290\u0291\7}\2\2\u0291\u0292\3\2\2\2\u0292") buf.write("\u0293\bI\13\2\u0293\u009f\3\2\2\2\u0294\u0295\7&\2\2") buf.write("\u0295\u0299\7}\2\2\u0296\u0297\7\u0080\2\2\u0297\u0299") buf.write("\7}\2\2\u0298\u0294\3\2\2\2\u0298\u0296\3\2\2\2\u0299") buf.write("\u029a\3\2\2\2\u029a\u029b\bJ\6\2\u029b\u029c\bJ\f\2\u029c") buf.write("\u00a1\3\2\2\2\u029d\u029e\7^\2\2\u029e\u029f\7w\2\2\u029f") buf.write("\u02aa\3\2\2\2\u02a0\u02a8\5\u013c\u0098\2\u02a1\u02a6") buf.write("\5\u013c\u0098\2\u02a2\u02a4\5\u013c\u0098\2\u02a3\u02a5") buf.write("\5\u013c\u0098\2\u02a4\u02a3\3\2\2\2\u02a4\u02a5\3\2\2") buf.write("\2\u02a5\u02a7\3\2\2\2\u02a6\u02a2\3\2\2\2\u02a6\u02a7") buf.write("\3\2\2\2\u02a7\u02a9\3\2\2\2\u02a8\u02a1\3\2\2\2\u02a8") buf.write("\u02a9\3\2\2\2\u02a9\u02ab\3\2\2\2\u02aa\u02a0\3\2\2\2") buf.write("\u02aa\u02ab\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac\u02ad\b") buf.write("K\13\2\u02ad\u00a3\3\2\2\2\u02ae\u02af\7)\2\2\u02af\u02b0") buf.write("\3\2\2\2\u02b0\u02b1\bL\7\2\u02b1\u02b2\bL\r\2\u02b2\u00a5") buf.write("\3\2\2\2\u02b3\u02b5\n\4\2\2\u02b4\u02b3\3\2\2\2\u02b5") buf.write("\u02b6\3\2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2") buf.write("\u02b7\u00a7\3\2\2\2\u02b8\u02b9\7^\2\2\u02b9\u02ba\13") buf.write("\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u02bc\bN\13\2\u02bc\u00a9") buf.write("\3\2\2\2\u02bd\u02be\7\u0080\2\2\u02be\u02bf\3\2\2\2\u02bf") buf.write("\u02c0\bO\13\2\u02c0\u00ab\3\2\2\2\u02c1\u02c2\7&\2\2") buf.write("\u02c2\u02c3\3\2\2\2\u02c3\u02c4\bP\13\2\u02c4\u00ad\3") buf.write("\2\2\2\u02c5\u02c6\7}\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02c8") buf.write("\bQ\13\2\u02c8\u00af\3\2\2\2\u02c9\u02ca\7&\2\2\u02ca") buf.write("\u02ce\7}\2\2\u02cb\u02cc\7\u0080\2\2\u02cc\u02ce\7}\2") buf.write("\2\u02cd\u02c9\3\2\2\2\u02cd\u02cb\3\2\2\2\u02ce\u02cf") buf.write("\3\2\2\2\u02cf\u02d0\bR\6\2\u02d0\u02d1\bR\f\2\u02d1\u00b1") buf.write("\3\2\2\2\u02d2\u02d3\7^\2\2\u02d3\u02d4\7w\2\2\u02d4\u02d5") buf.write("\3\2\2\2\u02d5\u02dd\5\u013c\u0098\2\u02d6\u02db\5\u013c") buf.write("\u0098\2\u02d7\u02d9\5\u013c\u0098\2\u02d8\u02da\5\u013c") buf.write("\u0098\2\u02d9\u02d8\3\2\2\2\u02d9\u02da\3\2\2\2\u02da") buf.write("\u02dc\3\2\2\2\u02db\u02d7\3\2\2\2\u02db\u02dc\3\2\2\2") buf.write("\u02dc\u02de\3\2\2\2\u02dd\u02d6\3\2\2\2\u02dd\u02de\3") buf.write("\2\2\2\u02de\u02df\3\2\2\2\u02df\u02e0\bS\13\2\u02e0\u00b3") buf.write("\3\2\2\2\u02e1\u02e2\7$\2\2\u02e2\u02e3\3\2\2\2\u02e3") buf.write("\u02e4\bT\7\2\u02e4\u02e5\bT\16\2\u02e5\u00b5\3\2\2\2") buf.write("\u02e6\u02e8\n\5\2\2\u02e7\u02e6\3\2\2\2\u02e8\u02e9\3") buf.write("\2\2\2\u02e9\u02e7\3\2\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02eb") buf.write("\3\2\2\2\u02eb\u02ec\bU\13\2\u02ec\u00b7\3\2\2\2\u02ed") buf.write("\u02ef\t\3\2\2\u02ee\u02ed\3\2\2\2\u02ef\u02f2\3\2\2\2") buf.write("\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f3\3") buf.write("\2\2\2\u02f2\u02f0\3\2\2\2\u02f3\u02f4\bV\n\2\u02f4\u00b9") buf.write("\3\2\2\2\u02f5\u02f6\7>\2\2\u02f6\u02f7\7>\2\2\u02f7\u02f8") buf.write("\7>\2\2\u02f8\u02f9\3\2\2\2\u02f9\u02fa\bW\17\2\u02fa") buf.write("\u00bb\3\2\2\2\u02fb\u02fc\7}\2\2\u02fc\u02fd\3\2\2\2") buf.write("\u02fd\u02fe\bX\20\2\u02fe\u00bd\3\2\2\2\u02ff\u0300\7") buf.write("^\2\2\u0300\u0301\7w\2\2\u0301\u030c\3\2\2\2\u0302\u030a") buf.write("\5\u013c\u0098\2\u0303\u0308\5\u013c\u0098\2\u0304\u0306") buf.write("\5\u013c\u0098\2\u0305\u0307\5\u013c\u0098\2\u0306\u0305") buf.write("\3\2\2\2\u0306\u0307\3\2\2\2\u0307\u0309\3\2\2\2\u0308") buf.write("\u0304\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030b\3\2\2\2") buf.write("\u030a\u0303\3\2\2\2\u030a\u030b\3\2\2\2\u030b\u030d\3") buf.write("\2\2\2\u030c\u0302\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u00bf") buf.write("\3\2\2\2\u030e\u030f\7^\2\2\u030f\u0310\13\2\2\2\u0310") buf.write("\u0311\3\2\2\2\u0311\u0312\bZ\21\2\u0312\u00c1\3\2\2\2") buf.write("\u0313\u0314\7\u0080\2\2\u0314\u0315\3\2\2\2\u0315\u0316") buf.write("\b[\21\2\u0316\u00c3\3\2\2\2\u0317\u0318\7}\2\2\u0318") buf.write("\u0319\3\2\2\2\u0319\u031a\b\\\21\2\u031a\u00c5\3\2\2") buf.write("\2\u031b\u031c\7\u0080\2\2\u031c\u031d\7}\2\2\u031d\u031e") buf.write("\3\2\2\2\u031e\u031f\b]\6\2\u031f\u0320\b]\f\2\u0320\u00c7") buf.write("\3\2\2\2\u0321\u0322\7^\2\2\u0322\u0323\7@\2\2\u0323\u0324") buf.write("\7@\2\2\u0324\u0325\7@\2\2\u0325\u0326\3\2\2\2\u0326\u0327") buf.write("\b^\21\2\u0327\u00c9\3\2\2\2\u0328\u0329\7@\2\2\u0329") buf.write("\u032a\7@\2\2\u032a\u032b\7@\2\2\u032b\u032c\3\2\2\2\u032c") buf.write("\u032d\b_\22\2\u032d\u032e\b_\23\2\u032e\u00cb\3\2\2\2") buf.write("\u032f\u033e\7@\2\2\u0330\u0331\7@\2\2\u0331\u033e\7@") buf.write("\2\2\u0332\u0333\7@\2\2\u0333\u0334\7@\2\2\u0334\u0335") buf.write("\7@\2\2\u0335\u0336\7@\2\2\u0336\u033a\3\2\2\2\u0337\u0339") buf.write("\7@\2\2\u0338\u0337\3\2\2\2\u0339\u033c\3\2\2\2\u033a") buf.write("\u0338\3\2\2\2\u033a\u033b\3\2\2\2\u033b\u033e\3\2\2\2") buf.write("\u033c\u033a\3\2\2\2\u033d\u032f\3\2\2\2\u033d\u0330\3") buf.write("\2\2\2\u033d\u0332\3\2\2\2\u033e\u033f\3\2\2\2\u033f\u0340") buf.write("\b`\21\2\u0340\u00cd\3\2\2\2\u0341\u0343\n\6\2\2\u0342") buf.write("\u0341\3\2\2\2\u0343\u0344\3\2\2\2\u0344\u0342\3\2\2\2") buf.write("\u0344\u0345\3\2\2\2\u0345\u0346\3\2\2\2\u0346\u0347\b") buf.write("a\21\2\u0347\u00cf\3\2\2\2\u0348\u0349\7^\2\2\u0349\u034a") buf.write("\13\2\2\2\u034a\u034b\3\2\2\2\u034b\u034c\bb\21\2\u034c") buf.write("\u00d1\3\2\2\2\u034d\u034e\7^\2\2\u034e\u034f\7w\2\2\u034f") buf.write("\u035a\3\2\2\2\u0350\u0358\5\u013c\u0098\2\u0351\u0356") buf.write("\5\u013c\u0098\2\u0352\u0354\5\u013c\u0098\2\u0353\u0355") buf.write("\5\u013c\u0098\2\u0354\u0353\3\2\2\2\u0354\u0355\3\2\2") buf.write("\2\u0355\u0357\3\2\2\2\u0356\u0352\3\2\2\2\u0356\u0357") buf.write("\3\2\2\2\u0357\u0359\3\2\2\2\u0358\u0351\3\2\2\2\u0358") buf.write("\u0359\3\2\2\2\u0359\u035b\3\2\2\2\u035a\u0350\3\2\2\2") buf.write("\u035a\u035b\3\2\2\2\u035b\u00d3\3\2\2\2\u035c\u035d\7") buf.write("\u0080\2\2\u035d\u035e\3\2\2\2\u035e\u035f\bd\21\2\u035f") buf.write("\u00d5\3\2\2\2\u0360\u0361\7&\2\2\u0361\u0362\3\2\2\2") buf.write("\u0362\u0363\be\21\2\u0363\u00d7\3\2\2\2\u0364\u0365\7") buf.write("}\2\2\u0365\u0366\3\2\2\2\u0366\u0367\bf\21\2\u0367\u00d9") buf.write("\3\2\2\2\u0368\u0369\7&\2\2\u0369\u036d\7}\2\2\u036a\u036b") buf.write("\7\u0080\2\2\u036b\u036d\7}\2\2\u036c\u0368\3\2\2\2\u036c") buf.write("\u036a\3\2\2\2\u036d\u036e\3\2\2\2\u036e\u036f\bg\6\2") buf.write("\u036f\u00db\3\2\2\2\u0370\u0371\7\177\2\2\u0371\u0372") buf.write("\3\2\2\2\u0372\u0373\bh\22\2\u0373\u00dd\3\2\2\2\u0374") buf.write("\u0376\n\7\2\2\u0375\u0374\3\2\2\2\u0376\u0377\3\2\2\2") buf.write("\u0377\u0375\3\2\2\2\u0377\u0378\3\2\2\2\u0378\u00df\3") buf.write("\2\2\2\u0379\u037b\t\b\2\2\u037a\u0379\3\2\2\2\u037b\u037c") buf.write("\3\2\2\2\u037c\u037a\3\2\2\2\u037c\u037d\3\2\2\2\u037d") buf.write("\u037e\3\2\2\2\u037e\u037f\bj\n\2\u037f\u00e1\3\2\2\2") buf.write("\u0380\u0382\t\t\2\2\u0381\u0380\3\2\2\2\u0382\u0383\3") buf.write("\2\2\2\u0383\u0381\3\2\2\2\u0383\u0384\3\2\2\2\u0384\u0385") buf.write("\3\2\2\2\u0385\u0386\bk\7\2\u0386\u00e3\3\2\2\2\u0387") buf.write("\u0388\7}\2\2\u0388\u0389\3\2\2\2\u0389\u038a\bl\24\2") buf.write("\u038a\u00e5\3\2\2\2\u038b\u038d\t\3\2\2\u038c\u038b\3") buf.write("\2\2\2\u038d\u038e\3\2\2\2\u038e\u038c\3\2\2\2\u038e\u038f") buf.write("\3\2\2\2\u038f\u0390\3\2\2\2\u0390\u0391\bm\n\2\u0391") buf.write("\u00e7\3\2\2\2\u0392\u0396\7%\2\2\u0393\u0395\n\2\2\2") buf.write("\u0394\u0393\3\2\2\2\u0395\u0398\3\2\2\2\u0396\u0394\3") buf.write("\2\2\2\u0396\u0397\3\2\2\2\u0397\u0399\3\2\2\2\u0398\u0396") buf.write("\3\2\2\2\u0399\u039a\bn\2\2\u039a\u00e9\3\2\2\2\u039b") buf.write("\u039c\5\u0096E\2\u039c\u00eb\3\2\2\2\u039d\u039e\7<\2") buf.write("\2\u039e\u039f\3\2\2\2\u039f\u03a0\bp\25\2\u03a0\u00ed") buf.write("\3\2\2\2\u03a1\u03a2\7\177\2\2\u03a2\u03a3\3\2\2\2\u03a3") buf.write("\u03a4\bq\7\2\u03a4\u03a5\bq\22\2\u03a5\u00ef\3\2\2\2") buf.write("\u03a6\u03a8\t\3\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03a9\3") buf.write("\2\2\2\u03a9\u03a7\3\2\2\2\u03a9\u03aa\3\2\2\2\u03aa\u03ab") buf.write("\3\2\2\2\u03ab\u03ac\br\n\2\u03ac\u00f1\3\2\2\2\u03ad") buf.write("\u03b1\7%\2\2\u03ae\u03b0\n\2\2\2\u03af\u03ae\3\2\2\2") buf.write("\u03b0\u03b3\3\2\2\2\u03b1\u03af\3\2\2\2\u03b1\u03b2\3") buf.write("\2\2\2\u03b2\u03b4\3\2\2\2\u03b3\u03b1\3\2\2\2\u03b4\u03b5") buf.write("\bs\2\2\u03b5\u00f3\3\2\2\2\u03b6\u03b7\5T$\2\u03b7\u03b8") buf.write("\3\2\2\2\u03b8\u03b9\bt\7\2\u03b9\u00f5\3\2\2\2\u03ba") buf.write("\u03bb\5P\"\2\u03bb\u03bc\3\2\2\2\u03bc\u03bd\bu\7\2\u03bd") buf.write("\u00f7\3\2\2\2\u03be\u03bf\5R#\2\u03bf\u03c0\3\2\2\2\u03c0") buf.write("\u03c1\bv\7\2\u03c1\u00f9\3\2\2\2\u03c2\u03c3\7p\2\2\u03c3") buf.write("\u03c4\7w\2\2\u03c4\u03c5\7n\2\2\u03c5\u03c6\7n\2\2\u03c6") buf.write("\u03c7\3\2\2\2\u03c7\u03c8\bw\7\2\u03c8\u00fb\3\2\2\2") buf.write("\u03c9\u03ca\7)\2\2\u03ca\u03cb\3\2\2\2\u03cb\u03cc\b") buf.write("x\26\2\u03cc\u00fd\3\2\2\2\u03cd\u03ce\7$\2\2\u03ce\u03cf") buf.write("\3\2\2\2\u03cf\u03d0\by\27\2\u03d0\u00ff\3\2\2\2\u03d1") buf.write("\u03d5\7}\2\2\u03d2\u03d4\t\3\2\2\u03d3\u03d2\3\2\2\2") buf.write("\u03d4\u03d7\3\2\2\2\u03d5\u03d3\3\2\2\2\u03d5\u03d6\3") buf.write("\2\2\2\u03d6\u03d8\3\2\2\2\u03d7\u03d5\3\2\2\2\u03d8\u03d9") buf.write("\7\177\2\2\u03d9\u03da\3\2\2\2\u03da\u03db\bz\7\2\u03db") buf.write("\u0101\3\2\2\2\u03dc\u03e0\7]\2\2\u03dd\u03df\t\3\2\2") buf.write("\u03de\u03dd\3\2\2\2\u03df\u03e2\3\2\2\2\u03e0\u03de\3") buf.write("\2\2\2\u03e0\u03e1\3\2\2\2\u03e1\u03e3\3\2\2\2\u03e2\u03e0") buf.write("\3\2\2\2\u03e3\u03e4\7_\2\2\u03e4\u03e5\3\2\2\2\u03e5") buf.write("\u03e6\b{\7\2\u03e6\u0103\3\2\2\2\u03e7\u03e8\7]\2\2\u03e8") buf.write("\u03e9\3\2\2\2\u03e9\u03ea\b|\30\2\u03ea\u03eb\b|\25\2") buf.write("\u03eb\u0105\3\2\2\2\u03ec\u03ed\7}\2\2\u03ed\u03ee\3") buf.write("\2\2\2\u03ee\u03ef\b}\31\2\u03ef\u0107\3\2\2\2\u03f0\u03f2") buf.write("\t\3\2\2\u03f1\u03f0\3\2\2\2\u03f2\u03f3\3\2\2\2\u03f3") buf.write("\u03f1\3\2\2\2\u03f3\u03f4\3\2\2\2\u03f4\u03f5\3\2\2\2") buf.write("\u03f5\u03f6\b~\n\2\u03f6\u0109\3\2\2\2\u03f7\u03f8\7") buf.write("^\2\2\u03f8\u03f9\13\2\2\2\u03f9\u03fa\3\2\2\2\u03fa\u03fb") buf.write("\b\177\32\2\u03fb\u010b\3\2\2\2\u03fc\u03fd\7^\2\2\u03fd") buf.write("\u03fe\7w\2\2\u03fe\u0409\3\2\2\2\u03ff\u0407\5\u013c") buf.write("\u0098\2\u0400\u0405\5\u013c\u0098\2\u0401\u0403\5\u013c") buf.write("\u0098\2\u0402\u0404\5\u013c\u0098\2\u0403\u0402\3\2\2") buf.write("\2\u0403\u0404\3\2\2\2\u0404\u0406\3\2\2\2\u0405\u0401") buf.write("\3\2\2\2\u0405\u0406\3\2\2\2\u0406\u0408\3\2\2\2\u0407") buf.write("\u0400\3\2\2\2\u0407\u0408\3\2\2\2\u0408\u040a\3\2\2\2") buf.write("\u0409\u03ff\3\2\2\2\u0409\u040a\3\2\2\2\u040a\u040b\3") buf.write("\2\2\2\u040b\u040c\b\u0080\32\2\u040c\u010d\3\2\2\2\u040d") buf.write("\u040e\7)\2\2\u040e\u040f\3\2\2\2\u040f\u0410\b\u0081") buf.write("\7\2\u0410\u0411\b\u0081\33\2\u0411\u0412\b\u0081\7\2") buf.write("\u0412\u010f\3\2\2\2\u0413\u0415\n\n\2\2\u0414\u0413\3") buf.write("\2\2\2\u0415\u0416\3\2\2\2\u0416\u0414\3\2\2\2\u0416\u0417") buf.write("\3\2\2\2\u0417\u0111\3\2\2\2\u0418\u0419\7^\2\2\u0419") buf.write("\u041a\13\2\2\2\u041a\u041b\3\2\2\2\u041b\u041c\b\u0083") buf.write("\32\2\u041c\u0113\3\2\2\2\u041d\u041e\7^\2\2\u041e\u041f") buf.write("\7w\2\2\u041f\u0420\3\2\2\2\u0420\u0428\5\u013c\u0098") buf.write("\2\u0421\u0426\5\u013c\u0098\2\u0422\u0424\5\u013c\u0098") buf.write("\2\u0423\u0425\5\u013c\u0098\2\u0424\u0423\3\2\2\2\u0424") buf.write("\u0425\3\2\2\2\u0425\u0427\3\2\2\2\u0426\u0422\3\2\2\2") buf.write("\u0426\u0427\3\2\2\2\u0427\u0429\3\2\2\2\u0428\u0421\3") buf.write("\2\2\2\u0428\u0429\3\2\2\2\u0429\u042a\3\2\2\2\u042a\u042b") buf.write("\b\u0084\32\2\u042b\u0115\3\2\2\2\u042c\u042d\7$\2\2\u042d") buf.write("\u042e\3\2\2\2\u042e\u042f\b\u0085\7\2\u042f\u0430\b\u0085") buf.write("\34\2\u0430\u0431\b\u0085\7\2\u0431\u0117\3\2\2\2\u0432") buf.write("\u0434\n\13\2\2\u0433\u0432\3\2\2\2\u0434\u0435\3\2\2") buf.write("\2\u0435\u0433\3\2\2\2\u0435\u0436\3\2\2\2\u0436\u0437") buf.write("\3\2\2\2\u0437\u0438\b\u0086\32\2\u0438\u0119\3\2\2\2") buf.write("\u0439\u043d\7%\2\2\u043a\u043c\n\2\2\2\u043b\u043a\3") buf.write("\2\2\2\u043c\u043f\3\2\2\2\u043d\u043b\3\2\2\2\u043d\u043e") buf.write("\3\2\2\2\u043e\u0440\3\2\2\2\u043f\u043d\3\2\2\2\u0440") buf.write("\u0441\b\u0087\2\2\u0441\u011b\3\2\2\2\u0442\u0446\7.") buf.write("\2\2\u0443\u0445\t\3\2\2\u0444\u0443\3\2\2\2\u0445\u0448") buf.write("\3\2\2\2\u0446\u0444\3\2\2\2\u0446\u0447\3\2\2\2\u0447") buf.write("\u0449\3\2\2\2\u0448\u0446\3\2\2\2\u0449\u044a\7_\2\2") buf.write("\u044a\u044b\3\2\2\2\u044b\u044c\b\u0088\7\2\u044c\u044d") buf.write("\b\u0088\7\2\u044d\u011d\3\2\2\2\u044e\u044f\7.\2\2\u044f") buf.write("\u0450\3\2\2\2\u0450\u0451\b\u0089\25\2\u0451\u011f\3") buf.write("\2\2\2\u0452\u0453\7_\2\2\u0453\u0454\3\2\2\2\u0454\u0455") buf.write("\b\u008a\7\2\u0455\u0456\b\u008a\7\2\u0456\u0121\3\2\2") buf.write("\2\u0457\u0459\t\3\2\2\u0458\u0457\3\2\2\2\u0459\u045a") buf.write("\3\2\2\2\u045a\u0458\3\2\2\2\u045a\u045b\3\2\2\2\u045b") buf.write("\u045c\3\2\2\2\u045c\u045d\b\u008b\n\2\u045d\u0123\3\2") buf.write("\2\2\u045e\u0462\7%\2\2\u045f\u0461\n\2\2\2\u0460\u045f") buf.write("\3\2\2\2\u0461\u0464\3\2\2\2\u0462\u0460\3\2\2\2\u0462") buf.write("\u0463\3\2\2\2\u0463\u0465\3\2\2\2\u0464\u0462\3\2\2\2") buf.write("\u0465\u0466\b\u008c\2\2\u0466\u0125\3\2\2\2\u0467\u0468") buf.write("\5\u0096E\2\u0468\u0127\3\2\2\2\u0469\u046a\7<\2\2\u046a") buf.write("\u046b\3\2\2\2\u046b\u046c\b\u008e\25\2\u046c\u0129\3") buf.write("\2\2\2\u046d\u0471\7.\2\2\u046e\u0470\t\3\2\2\u046f\u046e") buf.write("\3\2\2\2\u0470\u0473\3\2\2\2\u0471\u046f\3\2\2\2\u0471") buf.write("\u0472\3\2\2\2\u0472\u0474\3\2\2\2\u0473\u0471\3\2\2\2") buf.write("\u0474\u0475\7\177\2\2\u0475\u0476\3\2\2\2\u0476\u0477") buf.write("\b\u008f\7\2\u0477\u0478\b\u008f\7\2\u0478\u012b\3\2\2") buf.write("\2\u0479\u047a\7.\2\2\u047a\u012d\3\2\2\2\u047b\u047c") buf.write("\7\177\2\2\u047c\u047d\3\2\2\2\u047d\u047e\b\u0091\7\2") buf.write("\u047e\u047f\b\u0091\7\2\u047f\u012f\3\2\2\2\u0480\u0482") buf.write("\t\3\2\2\u0481\u0480\3\2\2\2\u0482\u0483\3\2\2\2\u0483") buf.write("\u0481\3\2\2\2\u0483\u0484\3\2\2\2\u0484\u0485\3\2\2\2") buf.write("\u0485\u0486\b\u0092\n\2\u0486\u0131\3\2\2\2\u0487\u048b") buf.write("\5\u0134\u0094\2\u0488\u048a\5\u0136\u0095\2\u0489\u0488") buf.write("\3\2\2\2\u048a\u048d\3\2\2\2\u048b\u0489\3\2\2\2\u048b") buf.write("\u048c\3\2\2\2\u048c\u0133\3\2\2\2\u048d\u048b\3\2\2\2") buf.write("\u048e\u048f\t\f\2\2\u048f\u0135\3\2\2\2\u0490\u0492\t") buf.write("\r\2\2\u0491\u0490\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0491") buf.write("\3\2\2\2\u0493\u0494\3\2\2\2\u0494\u0137\3\2\2\2\u0495") buf.write("\u0496\7^\2\2\u0496\u04a2\t\16\2\2\u0497\u049c\7^\2\2") buf.write("\u0498\u049a\t\17\2\2\u0499\u0498\3\2\2\2\u0499\u049a") buf.write("\3\2\2\2\u049a\u049b\3\2\2\2\u049b\u049d\t\20\2\2\u049c") buf.write("\u0499\3\2\2\2\u049c\u049d\3\2\2\2\u049d\u049e\3\2\2\2") buf.write("\u049e\u04a2\t\20\2\2\u049f\u04a0\7^\2\2\u04a0\u04a2\5") buf.write("\u013a\u0097\2\u04a1\u0495\3\2\2\2\u04a1\u0497\3\2\2\2") buf.write("\u04a1\u049f\3\2\2\2\u04a2\u0139\3\2\2\2\u04a3\u04ae\7") buf.write("w\2\2\u04a4\u04ac\5\u013c\u0098\2\u04a5\u04aa\5\u013c") buf.write("\u0098\2\u04a6\u04a8\5\u013c\u0098\2\u04a7\u04a9\5\u013c") buf.write("\u0098\2\u04a8\u04a7\3\2\2\2\u04a8\u04a9\3\2\2\2\u04a9") buf.write("\u04ab\3\2\2\2\u04aa\u04a6\3\2\2\2\u04aa\u04ab\3\2\2\2") buf.write("\u04ab\u04ad\3\2\2\2\u04ac\u04a5\3\2\2\2\u04ac\u04ad\3") buf.write("\2\2\2\u04ad\u04af\3\2\2\2\u04ae\u04a4\3\2\2\2\u04ae\u04af") buf.write("\3\2\2\2\u04af\u013b\3\2\2\2\u04b0\u04b1\t\21\2\2\u04b1") buf.write("\u013d\3\2\2\2\u04b2\u04b3\t\22\2\2\u04b3\u013f\3\2\2") buf.write("\2\u04b4\u04b6\5\u013e\u0099\2\u04b5\u04b4\3\2\2\2\u04b6") buf.write("\u04b7\3\2\2\2\u04b7\u04b5\3\2\2\2\u04b7\u04b8\3\2\2\2") buf.write("\u04b8\u0141\3\2\2\2\u04b9\u04ba\5\u0140\u009a\2\u04ba") buf.write("\u04bc\7\60\2\2\u04bb\u04bd\5\u0140\u009a\2\u04bc\u04bb") buf.write("\3\2\2\2\u04bc\u04bd\3\2\2\2\u04bd\u04c1\3\2\2\2\u04be") buf.write("\u04bf\7\60\2\2\u04bf\u04c1\5\u0140\u009a\2\u04c0\u04b9") buf.write("\3\2\2\2\u04c0\u04be\3\2\2\2\u04c1\u0143\3\2\2\2\u04c2") buf.write("\u04c3\t\23\2\2\u04c3\u04c4\5\u0140\u009a\2\u04c4\u0145") buf.write("\3\2\2\2\u04c5\u04c7\5\u0140\u009a\2\u04c6\u04c8\5\u014a") buf.write("\u009f\2\u04c7\u04c6\3\2\2\2\u04c7\u04c8\3\2\2\2\u04c8") buf.write("\u04ce\3\2\2\2\u04c9\u04cb\5\u0142\u009b\2\u04ca\u04cc") buf.write("\5\u014a\u009f\2\u04cb\u04ca\3\2\2\2\u04cb\u04cc\3\2\2") buf.write("\2\u04cc\u04ce\3\2\2\2\u04cd\u04c5\3\2\2\2\u04cd\u04c9") buf.write("\3\2\2\2\u04ce\u0147\3\2\2\2\u04cf\u04d0\t\24\2\2\u04d0") buf.write("\u04d1\5\u0146\u009d\2\u04d1\u0149\3\2\2\2\u04d2\u04d3") buf.write("\t\25\2\2\u04d3\u04d4\5\u0144\u009c\2\u04d4\u014b\3\2") buf.write("\2\2S\2\3\4\5\6\7\b\t\n\13\f\r\16\17\u0150\u022c\u027d") buf.write("\u0298\u02a4\u02a6\u02a8\u02aa\u02b6\u02cd\u02d9\u02db") buf.write("\u02dd\u02e9\u02f0\u0306\u0308\u030a\u030c\u033a\u033d") buf.write("\u0344\u0354\u0356\u0358\u035a\u036c\u0377\u037c\u0383") buf.write("\u038e\u0396\u03a9\u03b1\u03d5\u03e0\u03f3\u0403\u0405") buf.write("\u0407\u0409\u0416\u0424\u0426\u0428\u0435\u043d\u0446") buf.write("\u045a\u0462\u0471\u0483\u048b\u0493\u0499\u049c\u04a1") buf.write("\u04a8\u04aa\u04ac\u04ae\u04b7\u04bc\u04c0\u04c7\u04cb") buf.write("\u04cd\35\2\4\2\7\b\2\4\t\2\4\5\2\7\2\2\6\2\2\7\3\2\7") buf.write("\4\2\2\3\2\tG\2\tM\2\tC\2\tD\2\4\6\2\4\7\2\tO\2\4\2\2") buf.write("\tN\2\7\n\2\7\13\2\7\f\2\7\r\2\7\16\2\7\17\2\te\2\t^\2") buf.write("\t_\2") return buf.getvalue() class WdlV1Lexer(Lexer): atn = ATNDeserializer().deserialize(serializedATN()) decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] COMMENTS = 2 SquoteInterpolatedString = 1 DquoteInterpolatedString = 2 Command = 3 HereDocCommand = 4 CurlyCommand = 5 Version = 6 Meta = 7 MetaBody = 8 MetaValue = 9 MetaSquoteString = 10 MetaDquoteString = 11 MetaArray = 12 MetaObject = 13 LINE_COMMENT = 1 VERSION = 2 IMPORT = 3 WORKFLOW = 4 TASK = 5 STRUCT = 6 SCATTER = 7 CALL = 8 IF = 9 THEN = 10 ELSE = 11 ALIAS = 12 AS = 13 In = 14 INPUT = 15 OUTPUT = 16 PARAMETERMETA = 17 META = 18 COMMAND = 19 RUNTIME = 20 BOOLEAN = 21 INT = 22 FLOAT = 23 STRING = 24 FILE = 25 ARRAY = 26 MAP = 27 PAIR = 28 OBJECT = 29 OBJECT_LITERAL = 30 SEP = 31 DEFAULT = 32 IntLiteral = 33 FloatLiteral = 34 BoolLiteral = 35 LPAREN = 36 RPAREN = 37 LBRACE = 38 RBRACE = 39 LBRACK = 40 RBRACK = 41 ESC = 42 COLON = 43 LT = 44 GT = 45 GTE = 46 LTE = 47 EQUALITY = 48 NOTEQUAL = 49 EQUAL = 50 AND = 51 OR = 52 OPTIONAL = 53 STAR = 54 PLUS = 55 MINUS = 56 DOLLAR = 57 COMMA = 58 SEMI = 59 DOT = 60 NOT = 61 TILDE = 62 DIVIDE = 63 MOD = 64 SQUOTE = 65 DQUOTE = 66 WHITESPACE = 67 Identifier = 68 StringPart = 69 BeginWhitespace = 70 BeginHereDoc = 71 BeginLBrace = 72 HereDocUnicodeEscape = 73 CommandUnicodeEscape = 74 StringCommandStart = 75 EndCommand = 76 CommandStringPart = 77 VersionWhitespace = 78 ReleaseVersion = 79 BeginMeta = 80 MetaWhitespace = 81 MetaBodyComment = 82 MetaIdentifier = 83 MetaColon = 84 EndMeta = 85 MetaBodyWhitespace = 86 MetaValueComment = 87 MetaBool = 88 MetaInt = 89 MetaFloat = 90 MetaNull = 91 MetaSquote = 92 MetaDquote = 93 MetaEmptyObject = 94 MetaEmptyArray = 95 MetaLbrack = 96 MetaLbrace = 97 MetaValueWhitespace = 98 MetaStringPart = 99 MetaArrayComment = 100 MetaArrayCommaRbrack = 101 MetaArrayComma = 102 MetaRbrack = 103 MetaArrayWhitespace = 104 MetaObjectComment = 105 MetaObjectIdentifier = 106 MetaObjectColon = 107 MetaObjectCommaRbrace = 108 MetaObjectComma = 109 MetaRbrace = 110 MetaObjectWhitespace = 111 HereDocEscapedEnd = 112 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", u"COMMENTS" ] modeNames = [ "DEFAULT_MODE", "SquoteInterpolatedString", "DquoteInterpolatedString", "Command", "HereDocCommand", "CurlyCommand", "Version", "Meta", "MetaBody", "MetaValue", "MetaSquoteString", "MetaDquoteString", "MetaArray", "MetaObject" ] literalNames = [ "", "'version'", "'import'", "'workflow'", "'task'", "'struct'", "'scatter'", "'call'", "'if'", "'then'", "'else'", "'alias'", "'as'", "'in'", "'input'", "'output'", "'parameter_meta'", "'meta'", "'command'", "'runtime'", "'Boolean'", "'Int'", "'Float'", "'String'", "'File'", "'Array'", "'Map'", "'Pair'", "'Object'", "'object'", "'sep'", "'default'", "'('", "')'", "'['", "'\\'", "'<'", "'>'", "'>='", "'<='", "'=='", "'!='", "'='", "'&&'", "'||'", "'?'", "'*'", "'+'", "'-'", "';'", "'.'", "'!'", "'/'", "'%'", "'<<<'", "'null'", "'\\>>>'" ] symbolicNames = [ "", "LINE_COMMENT", "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "COMMAND", "RUNTIME", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "ARRAY", "MAP", "PAIR", "OBJECT", "OBJECT_LITERAL", "SEP", "DEFAULT", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "Identifier", "StringPart", "BeginWhitespace", "BeginHereDoc", "BeginLBrace", "HereDocUnicodeEscape", "CommandUnicodeEscape", "StringCommandStart", "EndCommand", "CommandStringPart", "VersionWhitespace", "ReleaseVersion", "BeginMeta", "MetaWhitespace", "MetaBodyComment", "MetaIdentifier", "MetaColon", "EndMeta", "MetaBodyWhitespace", "MetaValueComment", "MetaBool", "MetaInt", "MetaFloat", "MetaNull", "MetaSquote", "MetaDquote", "MetaEmptyObject", "MetaEmptyArray", "MetaLbrack", "MetaLbrace", "MetaValueWhitespace", "MetaStringPart", "MetaArrayComment", "MetaArrayCommaRbrack", "MetaArrayComma", "MetaRbrack", "MetaArrayWhitespace", "MetaObjectComment", "MetaObjectIdentifier", "MetaObjectColon", "MetaObjectCommaRbrace", "MetaObjectComma", "MetaRbrace", "MetaObjectWhitespace", "HereDocEscapedEnd" ] ruleNames = [ "LINE_COMMENT", "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "COMMAND", "RUNTIME", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "ARRAY", "MAP", "PAIR", "OBJECT", "OBJECT_LITERAL", "SEP", "DEFAULT", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "Identifier", "SQuoteEscapedChar", "SQuoteDollarString", "SQuoteTildeString", "SQuoteCurlyString", "SQuoteCommandStart", "SQuoteUnicodeEscape", "EndSquote", "StringPart", "DQuoteEscapedChar", "DQuoteTildeString", "DQuoteDollarString", "DQUoteCurlString", "DQuoteCommandStart", "DQuoteUnicodeEscape", "EndDQuote", "DQuoteStringPart", "BeginWhitespace", "BeginHereDoc", "BeginLBrace", "HereDocUnicodeEscape", "HereDocEscapedChar", "HereDocTildeString", "HereDocCurlyString", "HereDocCurlyStringCommand", "HereDocEscapedEnd", "EndHereDocCommand", "HereDocEscape", "HereDocStringPart", "CommandEscapedChar", "CommandUnicodeEscape", "CommandTildeString", "CommandDollarString", "CommandCurlyString", "StringCommandStart", "EndCommand", "CommandStringPart", "VersionWhitespace", "ReleaseVersion", "BeginMeta", "MetaWhitespace", "MetaBodyComment", "MetaIdentifier", "MetaColon", "EndMeta", "MetaBodyWhitespace", "MetaValueComment", "MetaBool", "MetaInt", "MetaFloat", "MetaNull", "MetaSquote", "MetaDquote", "MetaEmptyObject", "MetaEmptyArray", "MetaLbrack", "MetaLbrace", "MetaValueWhitespace", "MetaSquoteEscapedChar", "MetaSquoteUnicodeEscape", "MetaEndSquote", "MetaStringPart", "MetaDquoteEscapedChar", "MetaDquoteUnicodeEscape", "MetaEndDquote", "MetaDquoteStringPart", "MetaArrayComment", "MetaArrayCommaRbrack", "MetaArrayComma", "MetaRbrack", "MetaArrayWhitespace", "MetaObjectComment", "MetaObjectIdentifier", "MetaObjectColon", "MetaObjectCommaRbrace", "MetaObjectComma", "MetaRbrace", "MetaObjectWhitespace", "CompleteIdentifier", "IdentifierStart", "IdentifierFollow", "EscapeSequence", "UnicodeEsc", "HexDigit", "Digit", "Digits", "Decimals", "SignedDigits", "FloatFragment", "SignedFloatFragment", "EXP" ] grammarFileName = "WdlV1Lexer.g4" def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.8") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None wdlparse-0.1.0/wdlparse/v1/WdlV1Parser.py0000644000076500000240000077142213770744636020456 0ustar wlgaostaff00000000000000# Generated from WdlV1Parser.g4 by ANTLR 4.8 # encoding: utf-8 from antlr4 import * from io import StringIO import sys if sys.version_info[1] > 5: from typing import TextIO else: from typing.io import TextIO def serializedATN(): with StringIO() as buf: buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3r") buf.write("\u031f\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\3\2\3\2\3\2\3\2\3\2\3") buf.write("\2\3\2\3\3\3\3\3\3\3\3\3\3\5\3\u008d\n\3\3\4\3\4\3\4\3") buf.write("\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\5\5\u009a\n\5\3\6\3\6\3") buf.write("\6\3\6\5\6\u00a0\n\6\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3") buf.write("\t\3\t\5\t\u00ac\n\t\3\n\3\n\3\13\3\13\3\13\3\13\5\13") buf.write("\u00b4\n\13\3\13\3\13\3\13\3\13\5\13\u00ba\n\13\3\13\3") buf.write("\13\3\13\3\13\5\13\u00c0\n\13\5\13\u00c2\n\13\3\f\7\f") buf.write("\u00c5\n\f\f\f\16\f\u00c8\13\f\3\r\3\r\7\r\u00cc\n\r\f") buf.write("\r\16\r\u00cf\13\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17") buf.write("\3\17\7\17\u00da\n\17\f\17\16\17\u00dd\13\17\3\17\3\17") buf.write("\3\17\3\17\3\17\7\17\u00e4\n\17\f\17\16\17\u00e7\13\17") buf.write("\3\17\3\17\5\17\u00eb\n\17\3\20\3\20\3\20\3\20\5\20\u00f1") buf.write("\n\20\3\21\3\21\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23") buf.write("\7\23\u00fd\n\23\f\23\16\23\u0100\13\23\3\24\3\24\3\24") buf.write("\3\24\3\24\3\24\7\24\u0108\n\24\f\24\16\24\u010b\13\24") buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25") buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\7\25") buf.write("\u0122\n\25\f\25\16\25\u0125\13\25\3\26\3\26\3\26\3\26") buf.write("\3\26\3\26\3\26\3\26\3\26\7\26\u0130\n\26\f\26\16\26\u0133") buf.write("\13\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3") buf.write("\27\3\27\3\27\7\27\u0141\n\27\f\27\16\27\u0144\13\27\3") buf.write("\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u014e\n\31") buf.write("\f\31\16\31\u0151\13\31\3\31\5\31\u0154\n\31\5\31\u0156") buf.write("\n\31\3\31\3\31\3\31\3\31\3\31\7\31\u015d\n\31\f\31\16") buf.write("\31\u0160\13\31\3\31\5\31\u0163\n\31\7\31\u0165\n\31\f") buf.write("\31\16\31\u0168\13\31\3\31\3\31\3\31\3\31\3\31\3\31\3") buf.write("\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\7\31") buf.write("\u017a\n\31\f\31\16\31\u017d\13\31\3\31\5\31\u0180\n\31") buf.write("\7\31\u0182\n\31\f\31\16\31\u0185\13\31\3\31\3\31\3\31") buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u0191\n\31\f") buf.write("\31\16\31\u0194\13\31\3\31\5\31\u0197\n\31\7\31\u0199") buf.write("\n\31\f\31\16\31\u019c\13\31\3\31\3\31\3\31\3\31\3\31") buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") buf.write("\3\31\3\31\5\31\u01b0\n\31\3\31\3\31\3\31\3\31\3\31\3") buf.write("\31\3\31\3\31\7\31\u01ba\n\31\f\31\16\31\u01bd\13\31\3") buf.write("\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34") buf.write("\3\35\3\35\3\35\5\35\u01cd\n\35\3\35\7\35\u01d0\n\35\f") buf.write("\35\16\35\u01d3\13\35\3\36\3\36\3\36\3\36\7\36\u01d9\n") buf.write("\36\f\36\16\36\u01dc\13\36\3\36\3\36\3\37\3\37\3\37\3") buf.write("\37\3\37\3\37\3\37\5\37\u01e7\n\37\3 \7 \u01ea\n \f \16") buf.write(" \u01ed\13 \3!\3!\3!\3!\3!\3!\3!\3!\5!\u01f7\n!\3\"\3") buf.write("\"\3\"\3\"\3\"\7\"\u01fe\n\"\f\"\16\"\u0201\13\"\3\"\3") buf.write("\"\5\"\u0205\n\"\3#\3#\3#\3#\3#\7#\u020c\n#\f#\16#\u020f") buf.write("\13#\3#\3#\5#\u0213\n#\3$\3$\3$\3$\3%\3%\3%\3%\3&\3&\3") buf.write("&\7&\u0220\n&\f&\16&\u0223\13&\3&\3&\3\'\3\'\3\'\7\'\u022a") buf.write("\n\'\f\'\16\'\u022d\13\'\3\'\3\'\3(\3(\3(\3(\3)\3)\3)") buf.write("\7)\u0238\n)\f)\16)\u023b\13)\3)\3)\3*\3*\3*\7*\u0242") buf.write("\n*\f*\16*\u0245\13*\3*\3*\3+\3+\3+\7+\u024c\n+\f+\16") buf.write("+\u024f\13+\3+\3+\3,\7,\u0254\n,\f,\16,\u0257\13,\3-\3") buf.write("-\7-\u025b\n-\f-\16-\u025e\13-\3-\3-\3-\3.\3.\3.\3/\3") buf.write("/\3/\3/\7/\u026a\n/\f/\16/\u026d\13/\3/\3/\3/\3/\3/\3") buf.write("/\7/\u0275\n/\f/\16/\u0278\13/\3/\3/\5/\u027c\n/\3\60") buf.write("\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u0285\n\60\3\61\3") buf.write("\61\3\61\3\61\6\61\u028b\n\61\r\61\16\61\u028c\3\61\3") buf.write("\61\3\62\3\62\3\62\3\62\5\62\u0295\n\62\3\63\3\63\3\63") buf.write("\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\7\65\u02a3") buf.write("\n\65\f\65\16\65\u02a6\13\65\3\65\5\65\u02a9\n\65\7\65") buf.write("\u02ab\n\65\f\65\16\65\u02ae\13\65\3\66\3\66\5\66\u02b2") buf.write("\n\66\3\66\3\66\3\67\3\67\3\67\7\67\u02b9\n\67\f\67\16") buf.write("\67\u02bc\13\67\38\38\38\58\u02c1\n8\38\58\u02c4\n8\3") buf.write("9\39\39\39\39\39\39\39\79\u02ce\n9\f9\169\u02d1\139\3") buf.write("9\39\3:\3:\3:\3:\3:\3:\7:\u02db\n:\f:\16:\u02de\13:\3") buf.write(":\3:\3;\3;\3;\7;\u02e5\n;\f;\16;\u02e8\13;\3;\3;\3<\3") buf.write("<\3<\7<\u02ef\n<\f<\16<\u02f2\13<\3<\3<\3=\3=\3=\3=\3") buf.write("=\5=\u02fb\n=\3>\3>\3>\3>\7>\u0301\n>\f>\16>\u0304\13") buf.write(">\3>\3>\3?\3?\3?\5?\u030b\n?\3@\3@\7@\u030f\n@\f@\16@") buf.write("\u0312\13@\3@\3@\7@\u0316\n@\f@\16@\u0319\13@\5@\u031b") buf.write("\n@\3@\3@\3@\2\b$&(*,\60A\2\4\6\b\n\f\16\20\22\24\26\30") buf.write("\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`b") buf.write("dfhjlnprtvxz|~\2\7\5\2\27\33\37\37FF\3\2#$\3\29:\4\2g") buf.write("gii\4\2nnpp\2\u034f\2\u0080\3\2\2\2\4\u0087\3\2\2\2\6") buf.write("\u008e\3\2\2\2\b\u0099\3\2\2\2\n\u009f\3\2\2\2\f\u00a1") buf.write("\3\2\2\2\16\u00a4\3\2\2\2\20\u00ab\3\2\2\2\22\u00ad\3") buf.write("\2\2\2\24\u00c1\3\2\2\2\26\u00c6\3\2\2\2\30\u00c9\3\2") buf.write("\2\2\32\u00d3\3\2\2\2\34\u00ea\3\2\2\2\36\u00f0\3\2\2") buf.write("\2 \u00f2\3\2\2\2\"\u00f4\3\2\2\2$\u00f6\3\2\2\2&\u0101") buf.write("\3\2\2\2(\u010c\3\2\2\2*\u0126\3\2\2\2,\u0134\3\2\2\2") buf.write(".\u0145\3\2\2\2\60\u01af\3\2\2\2\62\u01be\3\2\2\2\64\u01c1") buf.write("\3\2\2\2\66\u01c6\3\2\2\28\u01c9\3\2\2\2:\u01d4\3\2\2") buf.write("\2<\u01e6\3\2\2\2>\u01eb\3\2\2\2@\u01f6\3\2\2\2B\u0204") buf.write("\3\2\2\2D\u0212\3\2\2\2F\u0214\3\2\2\2H\u0218\3\2\2\2") buf.write("J\u021c\3\2\2\2L\u0226\3\2\2\2N\u0230\3\2\2\2P\u0234\3") buf.write("\2\2\2R\u023e\3\2\2\2T\u0248\3\2\2\2V\u0255\3\2\2\2X\u0258") buf.write("\3\2\2\2Z\u0262\3\2\2\2\\\u027b\3\2\2\2^\u0284\3\2\2\2") buf.write("`\u0286\3\2\2\2b\u0294\3\2\2\2d\u0296\3\2\2\2f\u0299\3") buf.write("\2\2\2h\u029d\3\2\2\2j\u02af\3\2\2\2l\u02b5\3\2\2\2n\u02bd") buf.write("\3\2\2\2p\u02c5\3\2\2\2r\u02d4\3\2\2\2t\u02e1\3\2\2\2") buf.write("v\u02eb\3\2\2\2x\u02fa\3\2\2\2z\u02fc\3\2\2\2|\u030a\3") buf.write("\2\2\2~\u030c\3\2\2\2\u0080\u0081\7\35\2\2\u0081\u0082") buf.write("\7*\2\2\u0082\u0083\5\n\6\2\u0083\u0084\7<\2\2\u0084\u0085") buf.write("\5\n\6\2\u0085\u0086\7+\2\2\u0086\3\3\2\2\2\u0087\u0088") buf.write("\7\34\2\2\u0088\u0089\7*\2\2\u0089\u008a\5\n\6\2\u008a") buf.write("\u008c\7+\2\2\u008b\u008d\79\2\2\u008c\u008b\3\2\2\2\u008c") buf.write("\u008d\3\2\2\2\u008d\5\3\2\2\2\u008e\u008f\7\36\2\2\u008f") buf.write("\u0090\7*\2\2\u0090\u0091\5\n\6\2\u0091\u0092\7<\2\2\u0092") buf.write("\u0093\5\n\6\2\u0093\u0094\7+\2\2\u0094\7\3\2\2\2\u0095") buf.write("\u009a\5\4\3\2\u0096\u009a\5\2\2\2\u0097\u009a\5\6\4\2") buf.write("\u0098\u009a\t\2\2\2\u0099\u0095\3\2\2\2\u0099\u0096\3") buf.write("\2\2\2\u0099\u0097\3\2\2\2\u0099\u0098\3\2\2\2\u009a\t") buf.write("\3\2\2\2\u009b\u009c\5\b\5\2\u009c\u009d\7\67\2\2\u009d") buf.write("\u00a0\3\2\2\2\u009e\u00a0\5\b\5\2\u009f\u009b\3\2\2\2") buf.write("\u009f\u009e\3\2\2\2\u00a0\13\3\2\2\2\u00a1\u00a2\5\n") buf.write("\6\2\u00a2\u00a3\7F\2\2\u00a3\r\3\2\2\2\u00a4\u00a5\5") buf.write("\n\6\2\u00a5\u00a6\7F\2\2\u00a6\u00a7\7\64\2\2\u00a7\u00a8") buf.write("\5 \21\2\u00a8\17\3\2\2\2\u00a9\u00ac\5\f\7\2\u00aa\u00ac") buf.write("\5\16\b\2\u00ab\u00a9\3\2\2\2\u00ab\u00aa\3\2\2\2\u00ac") buf.write("\21\3\2\2\2\u00ad\u00ae\t\3\2\2\u00ae\23\3\2\2\2\u00af") buf.write("\u00b0\7%\2\2\u00b0\u00b3\7\64\2\2\u00b1\u00b4\5\34\17") buf.write("\2\u00b2\u00b4\5\22\n\2\u00b3\u00b1\3\2\2\2\u00b3\u00b2") buf.write("\3\2\2\2\u00b4\u00c2\3\2\2\2\u00b5\u00b6\7\"\2\2\u00b6") buf.write("\u00b9\7\64\2\2\u00b7\u00ba\5\34\17\2\u00b8\u00ba\5\22") buf.write("\n\2\u00b9\u00b7\3\2\2\2\u00b9\u00b8\3\2\2\2\u00ba\u00c2") buf.write("\3\2\2\2\u00bb\u00bc\7!\2\2\u00bc\u00bf\7\64\2\2\u00bd") buf.write("\u00c0\5\34\17\2\u00be\u00c0\5\22\n\2\u00bf\u00bd\3\2") buf.write("\2\2\u00bf\u00be\3\2\2\2\u00c0\u00c2\3\2\2\2\u00c1\u00af") buf.write("\3\2\2\2\u00c1\u00b5\3\2\2\2\u00c1\u00bb\3\2\2\2\u00c2") buf.write("\25\3\2\2\2\u00c3\u00c5\7G\2\2\u00c4\u00c3\3\2\2\2\u00c5") buf.write("\u00c8\3\2\2\2\u00c6\u00c4\3\2\2\2\u00c6\u00c7\3\2\2\2") buf.write("\u00c7\27\3\2\2\2\u00c8\u00c6\3\2\2\2\u00c9\u00cd\7M\2") buf.write("\2\u00ca\u00cc\5\24\13\2\u00cb\u00ca\3\2\2\2\u00cc\u00cf") buf.write("\3\2\2\2\u00cd\u00cb\3\2\2\2\u00cd\u00ce\3\2\2\2\u00ce") buf.write("\u00d0\3\2\2\2\u00cf\u00cd\3\2\2\2\u00d0\u00d1\5 \21\2") buf.write("\u00d1\u00d2\7)\2\2\u00d2\31\3\2\2\2\u00d3\u00d4\5\30") buf.write("\r\2\u00d4\u00d5\5\26\f\2\u00d5\33\3\2\2\2\u00d6\u00d7") buf.write("\7D\2\2\u00d7\u00db\5\26\f\2\u00d8\u00da\5\32\16\2\u00d9") buf.write("\u00d8\3\2\2\2\u00da\u00dd\3\2\2\2\u00db\u00d9\3\2\2\2") buf.write("\u00db\u00dc\3\2\2\2\u00dc\u00de\3\2\2\2\u00dd\u00db\3") buf.write("\2\2\2\u00de\u00df\7D\2\2\u00df\u00eb\3\2\2\2\u00e0\u00e1") buf.write("\7C\2\2\u00e1\u00e5\5\26\f\2\u00e2\u00e4\5\32\16\2\u00e3") buf.write("\u00e2\3\2\2\2\u00e4\u00e7\3\2\2\2\u00e5\u00e3\3\2\2\2") buf.write("\u00e5\u00e6\3\2\2\2\u00e6\u00e8\3\2\2\2\u00e7\u00e5\3") buf.write("\2\2\2\u00e8\u00e9\7C\2\2\u00e9\u00eb\3\2\2\2\u00ea\u00d6") buf.write("\3\2\2\2\u00ea\u00e0\3\2\2\2\u00eb\35\3\2\2\2\u00ec\u00f1") buf.write("\7%\2\2\u00ed\u00f1\5\22\n\2\u00ee\u00f1\5\34\17\2\u00ef") buf.write("\u00f1\7F\2\2\u00f0\u00ec\3\2\2\2\u00f0\u00ed\3\2\2\2") buf.write("\u00f0\u00ee\3\2\2\2\u00f0\u00ef\3\2\2\2\u00f1\37\3\2") buf.write("\2\2\u00f2\u00f3\5\"\22\2\u00f3!\3\2\2\2\u00f4\u00f5\5") buf.write("$\23\2\u00f5#\3\2\2\2\u00f6\u00f7\b\23\1\2\u00f7\u00f8") buf.write("\5&\24\2\u00f8\u00fe\3\2\2\2\u00f9\u00fa\f\4\2\2\u00fa") buf.write("\u00fb\7\66\2\2\u00fb\u00fd\5&\24\2\u00fc\u00f9\3\2\2") buf.write("\2\u00fd\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff") buf.write("\3\2\2\2\u00ff%\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102") buf.write("\b\24\1\2\u0102\u0103\5(\25\2\u0103\u0109\3\2\2\2\u0104") buf.write("\u0105\f\4\2\2\u0105\u0106\7\65\2\2\u0106\u0108\5(\25") buf.write("\2\u0107\u0104\3\2\2\2\u0108\u010b\3\2\2\2\u0109\u0107") buf.write("\3\2\2\2\u0109\u010a\3\2\2\2\u010a\'\3\2\2\2\u010b\u0109") buf.write("\3\2\2\2\u010c\u010d\b\25\1\2\u010d\u010e\5*\26\2\u010e") buf.write("\u0123\3\2\2\2\u010f\u0110\f\t\2\2\u0110\u0111\7\62\2") buf.write("\2\u0111\u0122\5*\26\2\u0112\u0113\f\b\2\2\u0113\u0114") buf.write("\7\63\2\2\u0114\u0122\5*\26\2\u0115\u0116\f\7\2\2\u0116") buf.write("\u0117\7\61\2\2\u0117\u0122\5*\26\2\u0118\u0119\f\6\2") buf.write("\2\u0119\u011a\7\60\2\2\u011a\u0122\5*\26\2\u011b\u011c") buf.write("\f\5\2\2\u011c\u011d\7.\2\2\u011d\u0122\5*\26\2\u011e") buf.write("\u011f\f\4\2\2\u011f\u0120\7/\2\2\u0120\u0122\5*\26\2") buf.write("\u0121\u010f\3\2\2\2\u0121\u0112\3\2\2\2\u0121\u0115\3") buf.write("\2\2\2\u0121\u0118\3\2\2\2\u0121\u011b\3\2\2\2\u0121\u011e") buf.write("\3\2\2\2\u0122\u0125\3\2\2\2\u0123\u0121\3\2\2\2\u0123") buf.write("\u0124\3\2\2\2\u0124)\3\2\2\2\u0125\u0123\3\2\2\2\u0126") buf.write("\u0127\b\26\1\2\u0127\u0128\5,\27\2\u0128\u0131\3\2\2") buf.write("\2\u0129\u012a\f\5\2\2\u012a\u012b\79\2\2\u012b\u0130") buf.write("\5,\27\2\u012c\u012d\f\4\2\2\u012d\u012e\7:\2\2\u012e") buf.write("\u0130\5,\27\2\u012f\u0129\3\2\2\2\u012f\u012c\3\2\2\2") buf.write("\u0130\u0133\3\2\2\2\u0131\u012f\3\2\2\2\u0131\u0132\3") buf.write("\2\2\2\u0132+\3\2\2\2\u0133\u0131\3\2\2\2\u0134\u0135") buf.write("\b\27\1\2\u0135\u0136\5.\30\2\u0136\u0142\3\2\2\2\u0137") buf.write("\u0138\f\6\2\2\u0138\u0139\78\2\2\u0139\u0141\5.\30\2") buf.write("\u013a\u013b\f\5\2\2\u013b\u013c\7A\2\2\u013c\u0141\5") buf.write(".\30\2\u013d\u013e\f\4\2\2\u013e\u013f\7B\2\2\u013f\u0141") buf.write("\5.\30\2\u0140\u0137\3\2\2\2\u0140\u013a\3\2\2\2\u0140") buf.write("\u013d\3\2\2\2\u0141\u0144\3\2\2\2\u0142\u0140\3\2\2\2") buf.write("\u0142\u0143\3\2\2\2\u0143-\3\2\2\2\u0144\u0142\3\2\2") buf.write("\2\u0145\u0146\5\60\31\2\u0146/\3\2\2\2\u0147\u0148\b") buf.write("\31\1\2\u0148\u0149\7F\2\2\u0149\u0155\7&\2\2\u014a\u014f") buf.write("\5 \21\2\u014b\u014c\7<\2\2\u014c\u014e\5 \21\2\u014d") buf.write("\u014b\3\2\2\2\u014e\u0151\3\2\2\2\u014f\u014d\3\2\2\2") buf.write("\u014f\u0150\3\2\2\2\u0150\u0153\3\2\2\2\u0151\u014f\3") buf.write("\2\2\2\u0152\u0154\7<\2\2\u0153\u0152\3\2\2\2\u0153\u0154") buf.write("\3\2\2\2\u0154\u0156\3\2\2\2\u0155\u014a\3\2\2\2\u0155") buf.write("\u0156\3\2\2\2\u0156\u0157\3\2\2\2\u0157\u01b0\7\'\2\2") buf.write("\u0158\u0166\7*\2\2\u0159\u015e\5 \21\2\u015a\u015b\7") buf.write("<\2\2\u015b\u015d\5 \21\2\u015c\u015a\3\2\2\2\u015d\u0160") buf.write("\3\2\2\2\u015e\u015c\3\2\2\2\u015e\u015f\3\2\2\2\u015f") buf.write("\u0162\3\2\2\2\u0160\u015e\3\2\2\2\u0161\u0163\7<\2\2") buf.write("\u0162\u0161\3\2\2\2\u0162\u0163\3\2\2\2\u0163\u0165\3") buf.write("\2\2\2\u0164\u0159\3\2\2\2\u0165\u0168\3\2\2\2\u0166\u0164") buf.write("\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u0169\3\2\2\2\u0168") buf.write("\u0166\3\2\2\2\u0169\u01b0\7+\2\2\u016a\u016b\7&\2\2\u016b") buf.write("\u016c\5 \21\2\u016c\u016d\7<\2\2\u016d\u016e\5 \21\2") buf.write("\u016e\u016f\7\'\2\2\u016f\u01b0\3\2\2\2\u0170\u0183\7") buf.write("(\2\2\u0171\u0172\5 \21\2\u0172\u0173\7-\2\2\u0173\u017b") buf.write("\5 \21\2\u0174\u0175\7<\2\2\u0175\u0176\5 \21\2\u0176") buf.write("\u0177\7-\2\2\u0177\u0178\5 \21\2\u0178\u017a\3\2\2\2") buf.write("\u0179\u0174\3\2\2\2\u017a\u017d\3\2\2\2\u017b\u0179\3") buf.write("\2\2\2\u017b\u017c\3\2\2\2\u017c\u017f\3\2\2\2\u017d\u017b") buf.write("\3\2\2\2\u017e\u0180\7<\2\2\u017f\u017e\3\2\2\2\u017f") buf.write("\u0180\3\2\2\2\u0180\u0182\3\2\2\2\u0181\u0171\3\2\2\2") buf.write("\u0182\u0185\3\2\2\2\u0183\u0181\3\2\2\2\u0183\u0184\3") buf.write("\2\2\2\u0184\u0186\3\2\2\2\u0185\u0183\3\2\2\2\u0186\u01b0") buf.write("\7)\2\2\u0187\u0188\7 \2\2\u0188\u019a\7(\2\2\u0189\u018a") buf.write("\7F\2\2\u018a\u018b\7-\2\2\u018b\u0192\5 \21\2\u018c\u018d") buf.write("\7<\2\2\u018d\u018e\7F\2\2\u018e\u018f\7-\2\2\u018f\u0191") buf.write("\5 \21\2\u0190\u018c\3\2\2\2\u0191\u0194\3\2\2\2\u0192") buf.write("\u0190\3\2\2\2\u0192\u0193\3\2\2\2\u0193\u0196\3\2\2\2") buf.write("\u0194\u0192\3\2\2\2\u0195\u0197\7<\2\2\u0196\u0195\3") buf.write("\2\2\2\u0196\u0197\3\2\2\2\u0197\u0199\3\2\2\2\u0198\u0189") buf.write("\3\2\2\2\u0199\u019c\3\2\2\2\u019a\u0198\3\2\2\2\u019a") buf.write("\u019b\3\2\2\2\u019b\u019d\3\2\2\2\u019c\u019a\3\2\2\2") buf.write("\u019d\u01b0\7)\2\2\u019e\u019f\7\13\2\2\u019f\u01a0\5") buf.write(" \21\2\u01a0\u01a1\7\f\2\2\u01a1\u01a2\5 \21\2\u01a2\u01a3") buf.write("\7\r\2\2\u01a3\u01a4\5 \21\2\u01a4\u01b0\3\2\2\2\u01a5") buf.write("\u01a6\7&\2\2\u01a6\u01a7\5 \21\2\u01a7\u01a8\7\'\2\2") buf.write("\u01a8\u01b0\3\2\2\2\u01a9\u01aa\7?\2\2\u01aa\u01b0\5") buf.write(" \21\2\u01ab\u01ac\t\4\2\2\u01ac\u01b0\5 \21\2\u01ad\u01b0") buf.write("\5\36\20\2\u01ae\u01b0\7F\2\2\u01af\u0147\3\2\2\2\u01af") buf.write("\u0158\3\2\2\2\u01af\u016a\3\2\2\2\u01af\u0170\3\2\2\2") buf.write("\u01af\u0187\3\2\2\2\u01af\u019e\3\2\2\2\u01af\u01a5\3") buf.write("\2\2\2\u01af\u01a9\3\2\2\2\u01af\u01ab\3\2\2\2\u01af\u01ad") buf.write("\3\2\2\2\u01af\u01ae\3\2\2\2\u01b0\u01bb\3\2\2\2\u01b1") buf.write("\u01b2\f\b\2\2\u01b2\u01b3\7*\2\2\u01b3\u01b4\5 \21\2") buf.write("\u01b4\u01b5\7+\2\2\u01b5\u01ba\3\2\2\2\u01b6\u01b7\f") buf.write("\7\2\2\u01b7\u01b8\7>\2\2\u01b8\u01ba\7F\2\2\u01b9\u01b1") buf.write("\3\2\2\2\u01b9\u01b6\3\2\2\2\u01ba\u01bd\3\2\2\2\u01bb") buf.write("\u01b9\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\61\3\2\2\2\u01bd") buf.write("\u01bb\3\2\2\2\u01be\u01bf\7\4\2\2\u01bf\u01c0\7Q\2\2") buf.write("\u01c0\63\3\2\2\2\u01c1\u01c2\7\16\2\2\u01c2\u01c3\7F") buf.write("\2\2\u01c3\u01c4\7\17\2\2\u01c4\u01c5\7F\2\2\u01c5\65") buf.write("\3\2\2\2\u01c6\u01c7\7\17\2\2\u01c7\u01c8\7F\2\2\u01c8") buf.write("\67\3\2\2\2\u01c9\u01ca\7\5\2\2\u01ca\u01cc\5\34\17\2") buf.write("\u01cb\u01cd\5\66\34\2\u01cc\u01cb\3\2\2\2\u01cc\u01cd") buf.write("\3\2\2\2\u01cd\u01d1\3\2\2\2\u01ce\u01d0\5\64\33\2\u01cf") buf.write("\u01ce\3\2\2\2\u01d0\u01d3\3\2\2\2\u01d1\u01cf\3\2\2\2") buf.write("\u01d1\u01d2\3\2\2\2\u01d29\3\2\2\2\u01d3\u01d1\3\2\2") buf.write("\2\u01d4\u01d5\7\b\2\2\u01d5\u01d6\7F\2\2\u01d6\u01da") buf.write("\7(\2\2\u01d7\u01d9\5\f\7\2\u01d8\u01d7\3\2\2\2\u01d9") buf.write("\u01dc\3\2\2\2\u01da\u01d8\3\2\2\2\u01da\u01db\3\2\2\2") buf.write("\u01db\u01dd\3\2\2\2\u01dc\u01da\3\2\2\2\u01dd\u01de\7") buf.write(")\2\2\u01de;\3\2\2\2\u01df\u01e7\7]\2\2\u01e0\u01e7\7") buf.write("Z\2\2\u01e1\u01e7\7[\2\2\u01e2\u01e7\7\\\2\2\u01e3\u01e7") buf.write("\5@!\2\u01e4\u01e7\5D#\2\u01e5\u01e7\5B\"\2\u01e6\u01df") buf.write("\3\2\2\2\u01e6\u01e0\3\2\2\2\u01e6\u01e1\3\2\2\2\u01e6") buf.write("\u01e2\3\2\2\2\u01e6\u01e3\3\2\2\2\u01e6\u01e4\3\2\2\2") buf.write("\u01e6\u01e5\3\2\2\2\u01e7=\3\2\2\2\u01e8\u01ea\7e\2\2") buf.write("\u01e9\u01e8\3\2\2\2\u01ea\u01ed\3\2\2\2\u01eb\u01e9\3") buf.write("\2\2\2\u01eb\u01ec\3\2\2\2\u01ec?\3\2\2\2\u01ed\u01eb") buf.write("\3\2\2\2\u01ee\u01ef\7_\2\2\u01ef\u01f0\5> \2\u01f0\u01f1") buf.write("\7_\2\2\u01f1\u01f7\3\2\2\2\u01f2\u01f3\7^\2\2\u01f3\u01f4") buf.write("\5> \2\u01f4\u01f5\7^\2\2\u01f5\u01f7\3\2\2\2\u01f6\u01ee") buf.write("\3\2\2\2\u01f6\u01f2\3\2\2\2\u01f7A\3\2\2\2\u01f8\u0205") buf.write("\7a\2\2\u01f9\u01fa\7b\2\2\u01fa\u01ff\5<\37\2\u01fb\u01fc") buf.write("\7h\2\2\u01fc\u01fe\5<\37\2\u01fd\u01fb\3\2\2\2\u01fe") buf.write("\u0201\3\2\2\2\u01ff\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2") buf.write("\u0200\u0202\3\2\2\2\u0201\u01ff\3\2\2\2\u0202\u0203\t") buf.write("\5\2\2\u0203\u0205\3\2\2\2\u0204\u01f8\3\2\2\2\u0204\u01f9") buf.write("\3\2\2\2\u0205C\3\2\2\2\u0206\u0213\7`\2\2\u0207\u0208") buf.write("\7c\2\2\u0208\u020d\5F$\2\u0209\u020a\7o\2\2\u020a\u020c") buf.write("\5F$\2\u020b\u0209\3\2\2\2\u020c\u020f\3\2\2\2\u020d\u020b") buf.write("\3\2\2\2\u020d\u020e\3\2\2\2\u020e\u0210\3\2\2\2\u020f") buf.write("\u020d\3\2\2\2\u0210\u0211\t\6\2\2\u0211\u0213\3\2\2\2") buf.write("\u0212\u0206\3\2\2\2\u0212\u0207\3\2\2\2\u0213E\3\2\2") buf.write("\2\u0214\u0215\7l\2\2\u0215\u0216\7m\2\2\u0216\u0217\5") buf.write("<\37\2\u0217G\3\2\2\2\u0218\u0219\7U\2\2\u0219\u021a\7") buf.write("V\2\2\u021a\u021b\5<\37\2\u021bI\3\2\2\2\u021c\u021d\7") buf.write("\23\2\2\u021d\u0221\7R\2\2\u021e\u0220\5H%\2\u021f\u021e") buf.write("\3\2\2\2\u0220\u0223\3\2\2\2\u0221\u021f\3\2\2\2\u0221") buf.write("\u0222\3\2\2\2\u0222\u0224\3\2\2\2\u0223\u0221\3\2\2\2") buf.write("\u0224\u0225\7W\2\2\u0225K\3\2\2\2\u0226\u0227\7\24\2") buf.write("\2\u0227\u022b\7R\2\2\u0228\u022a\5H%\2\u0229\u0228\3") buf.write("\2\2\2\u022a\u022d\3\2\2\2\u022b\u0229\3\2\2\2\u022b\u022c") buf.write("\3\2\2\2\u022c\u022e\3\2\2\2\u022d\u022b\3\2\2\2\u022e") buf.write("\u022f\7W\2\2\u022fM\3\2\2\2\u0230\u0231\7F\2\2\u0231") buf.write("\u0232\7-\2\2\u0232\u0233\5 \21\2\u0233O\3\2\2\2\u0234") buf.write("\u0235\7\26\2\2\u0235\u0239\7(\2\2\u0236\u0238\5N(\2\u0237") buf.write("\u0236\3\2\2\2\u0238\u023b\3\2\2\2\u0239\u0237\3\2\2\2") buf.write("\u0239\u023a\3\2\2\2\u023a\u023c\3\2\2\2\u023b\u0239\3") buf.write("\2\2\2\u023c\u023d\7)\2\2\u023dQ\3\2\2\2\u023e\u023f\7") buf.write("\21\2\2\u023f\u0243\7(\2\2\u0240\u0242\5\20\t\2\u0241") buf.write("\u0240\3\2\2\2\u0242\u0245\3\2\2\2\u0243\u0241\3\2\2\2") buf.write("\u0243\u0244\3\2\2\2\u0244\u0246\3\2\2\2\u0245\u0243\3") buf.write("\2\2\2\u0246\u0247\7)\2\2\u0247S\3\2\2\2\u0248\u0249\7") buf.write("\22\2\2\u0249\u024d\7(\2\2\u024a\u024c\5\16\b\2\u024b") buf.write("\u024a\3\2\2\2\u024c\u024f\3\2\2\2\u024d\u024b\3\2\2\2") buf.write("\u024d\u024e\3\2\2\2\u024e\u0250\3\2\2\2\u024f\u024d\3") buf.write("\2\2\2\u0250\u0251\7)\2\2\u0251U\3\2\2\2\u0252\u0254\7") buf.write("O\2\2\u0253\u0252\3\2\2\2\u0254\u0257\3\2\2\2\u0255\u0253") buf.write("\3\2\2\2\u0255\u0256\3\2\2\2\u0256W\3\2\2\2\u0257\u0255") buf.write("\3\2\2\2\u0258\u025c\7M\2\2\u0259\u025b\5\24\13\2\u025a") buf.write("\u0259\3\2\2\2\u025b\u025e\3\2\2\2\u025c\u025a\3\2\2\2") buf.write("\u025c\u025d\3\2\2\2\u025d\u025f\3\2\2\2\u025e\u025c\3") buf.write("\2\2\2\u025f\u0260\5 \21\2\u0260\u0261\7)\2\2\u0261Y\3") buf.write("\2\2\2\u0262\u0263\5X-\2\u0263\u0264\5V,\2\u0264[\3\2") buf.write("\2\2\u0265\u0266\7\25\2\2\u0266\u0267\7J\2\2\u0267\u026b") buf.write("\5V,\2\u0268\u026a\5Z.\2\u0269\u0268\3\2\2\2\u026a\u026d") buf.write("\3\2\2\2\u026b\u0269\3\2\2\2\u026b\u026c\3\2\2\2\u026c") buf.write("\u026e\3\2\2\2\u026d\u026b\3\2\2\2\u026e\u026f\7N\2\2") buf.write("\u026f\u027c\3\2\2\2\u0270\u0271\7\25\2\2\u0271\u0272") buf.write("\7I\2\2\u0272\u0276\5V,\2\u0273\u0275\5Z.\2\u0274\u0273") buf.write("\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2\2\u0276") buf.write("\u0277\3\2\2\2\u0277\u0279\3\2\2\2\u0278\u0276\3\2\2\2") buf.write("\u0279\u027a\7N\2\2\u027a\u027c\3\2\2\2\u027b\u0265\3") buf.write("\2\2\2\u027b\u0270\3\2\2\2\u027c]\3\2\2\2\u027d\u0285") buf.write("\5R*\2\u027e\u0285\5T+\2\u027f\u0285\5\\/\2\u0280\u0285") buf.write("\5P)\2\u0281\u0285\5\16\b\2\u0282\u0285\5J&\2\u0283\u0285") buf.write("\5L\'\2\u0284\u027d\3\2\2\2\u0284\u027e\3\2\2\2\u0284") buf.write("\u027f\3\2\2\2\u0284\u0280\3\2\2\2\u0284\u0281\3\2\2\2") buf.write("\u0284\u0282\3\2\2\2\u0284\u0283\3\2\2\2\u0285_\3\2\2") buf.write("\2\u0286\u0287\7\7\2\2\u0287\u0288\7F\2\2\u0288\u028a") buf.write("\7(\2\2\u0289\u028b\5^\60\2\u028a\u0289\3\2\2\2\u028b") buf.write("\u028c\3\2\2\2\u028c\u028a\3\2\2\2\u028c\u028d\3\2\2\2") buf.write("\u028d\u028e\3\2\2\2\u028e\u028f\7)\2\2\u028fa\3\2\2\2") buf.write("\u0290\u0295\5\16\b\2\u0291\u0295\5n8\2\u0292\u0295\5") buf.write("p9\2\u0293\u0295\5r:\2\u0294\u0290\3\2\2\2\u0294\u0291") buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0293\3\2\2\2\u0295") buf.write("c\3\2\2\2\u0296\u0297\7\17\2\2\u0297\u0298\7F\2\2\u0298") buf.write("e\3\2\2\2\u0299\u029a\7F\2\2\u029a\u029b\7\64\2\2\u029b") buf.write("\u029c\5 \21\2\u029cg\3\2\2\2\u029d\u029e\7\21\2\2\u029e") buf.write("\u02ac\7-\2\2\u029f\u02a4\5f\64\2\u02a0\u02a1\7<\2\2\u02a1") buf.write("\u02a3\5f\64\2\u02a2\u02a0\3\2\2\2\u02a3\u02a6\3\2\2\2") buf.write("\u02a4\u02a2\3\2\2\2\u02a4\u02a5\3\2\2\2\u02a5\u02a8\3") buf.write("\2\2\2\u02a6\u02a4\3\2\2\2\u02a7\u02a9\7<\2\2\u02a8\u02a7") buf.write("\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02ab\3\2\2\2\u02aa") buf.write("\u029f\3\2\2\2\u02ab\u02ae\3\2\2\2\u02ac\u02aa\3\2\2\2") buf.write("\u02ac\u02ad\3\2\2\2\u02adi\3\2\2\2\u02ae\u02ac\3\2\2") buf.write("\2\u02af\u02b1\7(\2\2\u02b0\u02b2\5h\65\2\u02b1\u02b0") buf.write("\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b3\3\2\2\2\u02b3") buf.write("\u02b4\7)\2\2\u02b4k\3\2\2\2\u02b5\u02ba\7F\2\2\u02b6") buf.write("\u02b7\7>\2\2\u02b7\u02b9\7F\2\2\u02b8\u02b6\3\2\2\2\u02b9") buf.write("\u02bc\3\2\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02bb\3\2\2\2") buf.write("\u02bbm\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bd\u02be\7\n\2") buf.write("\2\u02be\u02c0\5l\67\2\u02bf\u02c1\5d\63\2\u02c0\u02bf") buf.write("\3\2\2\2\u02c0\u02c1\3\2\2\2\u02c1\u02c3\3\2\2\2\u02c2") buf.write("\u02c4\5j\66\2\u02c3\u02c2\3\2\2\2\u02c3\u02c4\3\2\2\2") buf.write("\u02c4o\3\2\2\2\u02c5\u02c6\7\t\2\2\u02c6\u02c7\7&\2\2") buf.write("\u02c7\u02c8\7F\2\2\u02c8\u02c9\7\20\2\2\u02c9\u02ca\5") buf.write(" \21\2\u02ca\u02cb\7\'\2\2\u02cb\u02cf\7(\2\2\u02cc\u02ce") buf.write("\5b\62\2\u02cd\u02cc\3\2\2\2\u02ce\u02d1\3\2\2\2\u02cf") buf.write("\u02cd\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0\u02d2\3\2\2\2") buf.write("\u02d1\u02cf\3\2\2\2\u02d2\u02d3\7)\2\2\u02d3q\3\2\2\2") buf.write("\u02d4\u02d5\7\13\2\2\u02d5\u02d6\7&\2\2\u02d6\u02d7\5") buf.write(" \21\2\u02d7\u02d8\7\'\2\2\u02d8\u02dc\7(\2\2\u02d9\u02db") buf.write("\5b\62\2\u02da\u02d9\3\2\2\2\u02db\u02de\3\2\2\2\u02dc") buf.write("\u02da\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02df\3\2\2\2") buf.write("\u02de\u02dc\3\2\2\2\u02df\u02e0\7)\2\2\u02e0s\3\2\2\2") buf.write("\u02e1\u02e2\7\21\2\2\u02e2\u02e6\7(\2\2\u02e3\u02e5\5") buf.write("\20\t\2\u02e4\u02e3\3\2\2\2\u02e5\u02e8\3\2\2\2\u02e6") buf.write("\u02e4\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e9\3\2\2\2") buf.write("\u02e8\u02e6\3\2\2\2\u02e9\u02ea\7)\2\2\u02eau\3\2\2\2") buf.write("\u02eb\u02ec\7\22\2\2\u02ec\u02f0\7(\2\2\u02ed\u02ef\5") buf.write("\16\b\2\u02ee\u02ed\3\2\2\2\u02ef\u02f2\3\2\2\2\u02f0") buf.write("\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f3\3\2\2\2") buf.write("\u02f2\u02f0\3\2\2\2\u02f3\u02f4\7)\2\2\u02f4w\3\2\2\2") buf.write("\u02f5\u02fb\5t;\2\u02f6\u02fb\5v<\2\u02f7\u02fb\5b\62") buf.write("\2\u02f8\u02fb\5J&\2\u02f9\u02fb\5L\'\2\u02fa\u02f5\3") buf.write("\2\2\2\u02fa\u02f6\3\2\2\2\u02fa\u02f7\3\2\2\2\u02fa\u02f8") buf.write("\3\2\2\2\u02fa\u02f9\3\2\2\2\u02fby\3\2\2\2\u02fc\u02fd") buf.write("\7\6\2\2\u02fd\u02fe\7F\2\2\u02fe\u0302\7(\2\2\u02ff\u0301") buf.write("\5x=\2\u0300\u02ff\3\2\2\2\u0301\u0304\3\2\2\2\u0302\u0300") buf.write("\3\2\2\2\u0302\u0303\3\2\2\2\u0303\u0305\3\2\2\2\u0304") buf.write("\u0302\3\2\2\2\u0305\u0306\7)\2\2\u0306{\3\2\2\2\u0307") buf.write("\u030b\58\35\2\u0308\u030b\5:\36\2\u0309\u030b\5`\61\2") buf.write("\u030a\u0307\3\2\2\2\u030a\u0308\3\2\2\2\u030a\u0309\3") buf.write("\2\2\2\u030b}\3\2\2\2\u030c\u0310\5\62\32\2\u030d\u030f") buf.write("\5|?\2\u030e\u030d\3\2\2\2\u030f\u0312\3\2\2\2\u0310\u030e") buf.write("\3\2\2\2\u0310\u0311\3\2\2\2\u0311\u031a\3\2\2\2\u0312") buf.write("\u0310\3\2\2\2\u0313\u0317\5z>\2\u0314\u0316\5|?\2\u0315") buf.write("\u0314\3\2\2\2\u0316\u0319\3\2\2\2\u0317\u0315\3\2\2\2") buf.write("\u0317\u0318\3\2\2\2\u0318\u031b\3\2\2\2\u0319\u0317\3") buf.write("\2\2\2\u031a\u0313\3\2\2\2\u031a\u031b\3\2\2\2\u031b\u031c") buf.write("\3\2\2\2\u031c\u031d\7\2\2\3\u031d\177\3\2\2\2O\u008c") buf.write("\u0099\u009f\u00ab\u00b3\u00b9\u00bf\u00c1\u00c6\u00cd") buf.write("\u00db\u00e5\u00ea\u00f0\u00fe\u0109\u0121\u0123\u012f") buf.write("\u0131\u0140\u0142\u014f\u0153\u0155\u015e\u0162\u0166") buf.write("\u017b\u017f\u0183\u0192\u0196\u019a\u01af\u01b9\u01bb") buf.write("\u01cc\u01d1\u01da\u01e6\u01eb\u01f6\u01ff\u0204\u020d") buf.write("\u0212\u0221\u022b\u0239\u0243\u024d\u0255\u025c\u026b") buf.write("\u0276\u027b\u0284\u028c\u0294\u02a4\u02a8\u02ac\u02b1") buf.write("\u02ba\u02c0\u02c3\u02cf\u02dc\u02e6\u02f0\u02fa\u0302") buf.write("\u030a\u0310\u0317\u031a") return buf.getvalue() class WdlV1Parser ( Parser ): grammarFileName = "WdlV1Parser.g4" atn = ATNDeserializer().deserialize(serializedATN()) decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] sharedContextCache = PredictionContextCache() literalNames = [ "", "", "'version'", "'import'", "'workflow'", "'task'", "'struct'", "'scatter'", "'call'", "'if'", "'then'", "'else'", "'alias'", "'as'", "'in'", "'input'", "'output'", "'parameter_meta'", "'meta'", "'command'", "'runtime'", "'Boolean'", "'Int'", "'Float'", "'String'", "'File'", "'Array'", "'Map'", "'Pair'", "'Object'", "'object'", "'sep'", "'default'", "", "", "", "'('", "')'", "", "", "'['", "", "'\\'", "", "'<'", "'>'", "'>='", "'<='", "'=='", "'!='", "'='", "'&&'", "'||'", "'?'", "'*'", "'+'", "'-'", "", "", "';'", "'.'", "'!'", "", "'/'", "'%'", "", "", "", "", "", "", "'<<<'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'null'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'\\>>>'" ] symbolicNames = [ "", "LINE_COMMENT", "VERSION", "IMPORT", "WORKFLOW", "TASK", "STRUCT", "SCATTER", "CALL", "IF", "THEN", "ELSE", "ALIAS", "AS", "In", "INPUT", "OUTPUT", "PARAMETERMETA", "META", "COMMAND", "RUNTIME", "BOOLEAN", "INT", "FLOAT", "STRING", "FILE", "ARRAY", "MAP", "PAIR", "OBJECT", "OBJECT_LITERAL", "SEP", "DEFAULT", "IntLiteral", "FloatLiteral", "BoolLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "ESC", "COLON", "LT", "GT", "GTE", "LTE", "EQUALITY", "NOTEQUAL", "EQUAL", "AND", "OR", "OPTIONAL", "STAR", "PLUS", "MINUS", "DOLLAR", "COMMA", "SEMI", "DOT", "NOT", "TILDE", "DIVIDE", "MOD", "SQUOTE", "DQUOTE", "WHITESPACE", "Identifier", "StringPart", "BeginWhitespace", "BeginHereDoc", "BeginLBrace", "HereDocUnicodeEscape", "CommandUnicodeEscape", "StringCommandStart", "EndCommand", "CommandStringPart", "VersionWhitespace", "ReleaseVersion", "BeginMeta", "MetaWhitespace", "MetaBodyComment", "MetaIdentifier", "MetaColon", "EndMeta", "MetaBodyWhitespace", "MetaValueComment", "MetaBool", "MetaInt", "MetaFloat", "MetaNull", "MetaSquote", "MetaDquote", "MetaEmptyObject", "MetaEmptyArray", "MetaLbrack", "MetaLbrace", "MetaValueWhitespace", "MetaStringPart", "MetaArrayComment", "MetaArrayCommaRbrack", "MetaArrayComma", "MetaRbrack", "MetaArrayWhitespace", "MetaObjectComment", "MetaObjectIdentifier", "MetaObjectColon", "MetaObjectCommaRbrace", "MetaObjectComma", "MetaRbrace", "MetaObjectWhitespace", "HereDocEscapedEnd" ] RULE_map_type = 0 RULE_array_type = 1 RULE_pair_type = 2 RULE_type_base = 3 RULE_wdl_type = 4 RULE_unbound_decls = 5 RULE_bound_decls = 6 RULE_any_decls = 7 RULE_number = 8 RULE_expression_placeholder_option = 9 RULE_string_part = 10 RULE_string_expr_part = 11 RULE_string_expr_with_string_part = 12 RULE_string = 13 RULE_primitive_literal = 14 RULE_expr = 15 RULE_expr_infix = 16 RULE_expr_infix0 = 17 RULE_expr_infix1 = 18 RULE_expr_infix2 = 19 RULE_expr_infix3 = 20 RULE_expr_infix4 = 21 RULE_expr_infix5 = 22 RULE_expr_core = 23 RULE_version = 24 RULE_import_alias = 25 RULE_import_as = 26 RULE_import_doc = 27 RULE_struct = 28 RULE_meta_value = 29 RULE_meta_string_part = 30 RULE_meta_string = 31 RULE_meta_array = 32 RULE_meta_object = 33 RULE_meta_object_kv = 34 RULE_meta_kv = 35 RULE_parameter_meta = 36 RULE_meta = 37 RULE_task_runtime_kv = 38 RULE_task_runtime = 39 RULE_task_input = 40 RULE_task_output = 41 RULE_task_command_string_part = 42 RULE_task_command_expr_part = 43 RULE_task_command_expr_with_string = 44 RULE_task_command = 45 RULE_task_element = 46 RULE_task = 47 RULE_inner_workflow_element = 48 RULE_call_alias = 49 RULE_call_input = 50 RULE_call_inputs = 51 RULE_call_body = 52 RULE_call_name = 53 RULE_call = 54 RULE_scatter = 55 RULE_conditional = 56 RULE_workflow_input = 57 RULE_workflow_output = 58 RULE_workflow_element = 59 RULE_workflow = 60 RULE_document_element = 61 RULE_document = 62 ruleNames = [ "map_type", "array_type", "pair_type", "type_base", "wdl_type", "unbound_decls", "bound_decls", "any_decls", "number", "expression_placeholder_option", "string_part", "string_expr_part", "string_expr_with_string_part", "string", "primitive_literal", "expr", "expr_infix", "expr_infix0", "expr_infix1", "expr_infix2", "expr_infix3", "expr_infix4", "expr_infix5", "expr_core", "version", "import_alias", "import_as", "import_doc", "struct", "meta_value", "meta_string_part", "meta_string", "meta_array", "meta_object", "meta_object_kv", "meta_kv", "parameter_meta", "meta", "task_runtime_kv", "task_runtime", "task_input", "task_output", "task_command_string_part", "task_command_expr_part", "task_command_expr_with_string", "task_command", "task_element", "task", "inner_workflow_element", "call_alias", "call_input", "call_inputs", "call_body", "call_name", "call", "scatter", "conditional", "workflow_input", "workflow_output", "workflow_element", "workflow", "document_element", "document" ] EOF = Token.EOF LINE_COMMENT=1 VERSION=2 IMPORT=3 WORKFLOW=4 TASK=5 STRUCT=6 SCATTER=7 CALL=8 IF=9 THEN=10 ELSE=11 ALIAS=12 AS=13 In=14 INPUT=15 OUTPUT=16 PARAMETERMETA=17 META=18 COMMAND=19 RUNTIME=20 BOOLEAN=21 INT=22 FLOAT=23 STRING=24 FILE=25 ARRAY=26 MAP=27 PAIR=28 OBJECT=29 OBJECT_LITERAL=30 SEP=31 DEFAULT=32 IntLiteral=33 FloatLiteral=34 BoolLiteral=35 LPAREN=36 RPAREN=37 LBRACE=38 RBRACE=39 LBRACK=40 RBRACK=41 ESC=42 COLON=43 LT=44 GT=45 GTE=46 LTE=47 EQUALITY=48 NOTEQUAL=49 EQUAL=50 AND=51 OR=52 OPTIONAL=53 STAR=54 PLUS=55 MINUS=56 DOLLAR=57 COMMA=58 SEMI=59 DOT=60 NOT=61 TILDE=62 DIVIDE=63 MOD=64 SQUOTE=65 DQUOTE=66 WHITESPACE=67 Identifier=68 StringPart=69 BeginWhitespace=70 BeginHereDoc=71 BeginLBrace=72 HereDocUnicodeEscape=73 CommandUnicodeEscape=74 StringCommandStart=75 EndCommand=76 CommandStringPart=77 VersionWhitespace=78 ReleaseVersion=79 BeginMeta=80 MetaWhitespace=81 MetaBodyComment=82 MetaIdentifier=83 MetaColon=84 EndMeta=85 MetaBodyWhitespace=86 MetaValueComment=87 MetaBool=88 MetaInt=89 MetaFloat=90 MetaNull=91 MetaSquote=92 MetaDquote=93 MetaEmptyObject=94 MetaEmptyArray=95 MetaLbrack=96 MetaLbrace=97 MetaValueWhitespace=98 MetaStringPart=99 MetaArrayComment=100 MetaArrayCommaRbrack=101 MetaArrayComma=102 MetaRbrack=103 MetaArrayWhitespace=104 MetaObjectComment=105 MetaObjectIdentifier=106 MetaObjectColon=107 MetaObjectCommaRbrace=108 MetaObjectComma=109 MetaRbrace=110 MetaObjectWhitespace=111 HereDocEscapedEnd=112 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.8") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None class Map_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MAP(self): return self.getToken(WdlV1Parser.MAP, 0) def LBRACK(self): return self.getToken(WdlV1Parser.LBRACK, 0) def wdl_type(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Wdl_typeContext) else: return self.getTypedRuleContext(WdlV1Parser.Wdl_typeContext,i) def COMMA(self): return self.getToken(WdlV1Parser.COMMA, 0) def RBRACK(self): return self.getToken(WdlV1Parser.RBRACK, 0) def getRuleIndex(self): return WdlV1Parser.RULE_map_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMap_type" ): listener.enterMap_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMap_type" ): listener.exitMap_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMap_type" ): return visitor.visitMap_type(self) else: return visitor.visitChildren(self) def map_type(self): localctx = WdlV1Parser.Map_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_map_type) try: self.enterOuterAlt(localctx, 1) self.state = 126 self.match(WdlV1Parser.MAP) self.state = 127 self.match(WdlV1Parser.LBRACK) self.state = 128 self.wdl_type() self.state = 129 self.match(WdlV1Parser.COMMA) self.state = 130 self.wdl_type() self.state = 131 self.match(WdlV1Parser.RBRACK) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Array_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def ARRAY(self): return self.getToken(WdlV1Parser.ARRAY, 0) def LBRACK(self): return self.getToken(WdlV1Parser.LBRACK, 0) def wdl_type(self): return self.getTypedRuleContext(WdlV1Parser.Wdl_typeContext,0) def RBRACK(self): return self.getToken(WdlV1Parser.RBRACK, 0) def PLUS(self): return self.getToken(WdlV1Parser.PLUS, 0) def getRuleIndex(self): return WdlV1Parser.RULE_array_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterArray_type" ): listener.enterArray_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_type" ): listener.exitArray_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitArray_type" ): return visitor.visitArray_type(self) else: return visitor.visitChildren(self) def array_type(self): localctx = WdlV1Parser.Array_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_array_type) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 133 self.match(WdlV1Parser.ARRAY) self.state = 134 self.match(WdlV1Parser.LBRACK) self.state = 135 self.wdl_type() self.state = 136 self.match(WdlV1Parser.RBRACK) self.state = 138 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.PLUS: self.state = 137 self.match(WdlV1Parser.PLUS) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Pair_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def PAIR(self): return self.getToken(WdlV1Parser.PAIR, 0) def LBRACK(self): return self.getToken(WdlV1Parser.LBRACK, 0) def wdl_type(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Wdl_typeContext) else: return self.getTypedRuleContext(WdlV1Parser.Wdl_typeContext,i) def COMMA(self): return self.getToken(WdlV1Parser.COMMA, 0) def RBRACK(self): return self.getToken(WdlV1Parser.RBRACK, 0) def getRuleIndex(self): return WdlV1Parser.RULE_pair_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPair_type" ): listener.enterPair_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPair_type" ): listener.exitPair_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPair_type" ): return visitor.visitPair_type(self) else: return visitor.visitChildren(self) def pair_type(self): localctx = WdlV1Parser.Pair_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 4, self.RULE_pair_type) try: self.enterOuterAlt(localctx, 1) self.state = 140 self.match(WdlV1Parser.PAIR) self.state = 141 self.match(WdlV1Parser.LBRACK) self.state = 142 self.wdl_type() self.state = 143 self.match(WdlV1Parser.COMMA) self.state = 144 self.wdl_type() self.state = 145 self.match(WdlV1Parser.RBRACK) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Type_baseContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def array_type(self): return self.getTypedRuleContext(WdlV1Parser.Array_typeContext,0) def map_type(self): return self.getTypedRuleContext(WdlV1Parser.Map_typeContext,0) def pair_type(self): return self.getTypedRuleContext(WdlV1Parser.Pair_typeContext,0) def STRING(self): return self.getToken(WdlV1Parser.STRING, 0) def FILE(self): return self.getToken(WdlV1Parser.FILE, 0) def BOOLEAN(self): return self.getToken(WdlV1Parser.BOOLEAN, 0) def OBJECT(self): return self.getToken(WdlV1Parser.OBJECT, 0) def INT(self): return self.getToken(WdlV1Parser.INT, 0) def FLOAT(self): return self.getToken(WdlV1Parser.FLOAT, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def getRuleIndex(self): return WdlV1Parser.RULE_type_base def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterType_base" ): listener.enterType_base(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_base" ): listener.exitType_base(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitType_base" ): return visitor.visitType_base(self) else: return visitor.visitChildren(self) def type_base(self): localctx = WdlV1Parser.Type_baseContext(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_type_base) self._la = 0 # Token type try: self.state = 151 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.ARRAY]: self.enterOuterAlt(localctx, 1) self.state = 147 self.array_type() pass elif token in [WdlV1Parser.MAP]: self.enterOuterAlt(localctx, 2) self.state = 148 self.map_type() pass elif token in [WdlV1Parser.PAIR]: self.enterOuterAlt(localctx, 3) self.state = 149 self.pair_type() pass elif token in [WdlV1Parser.BOOLEAN, WdlV1Parser.INT, WdlV1Parser.FLOAT, WdlV1Parser.STRING, WdlV1Parser.FILE, WdlV1Parser.OBJECT, WdlV1Parser.Identifier]: self.enterOuterAlt(localctx, 4) self.state = 150 _la = self._input.LA(1) if not(((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Wdl_typeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def type_base(self): return self.getTypedRuleContext(WdlV1Parser.Type_baseContext,0) def OPTIONAL(self): return self.getToken(WdlV1Parser.OPTIONAL, 0) def getRuleIndex(self): return WdlV1Parser.RULE_wdl_type def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWdl_type" ): listener.enterWdl_type(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWdl_type" ): listener.exitWdl_type(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWdl_type" ): return visitor.visitWdl_type(self) else: return visitor.visitChildren(self) def wdl_type(self): localctx = WdlV1Parser.Wdl_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_wdl_type) try: self.enterOuterAlt(localctx, 1) self.state = 157 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: self.state = 153 self.type_base() self.state = 154 self.match(WdlV1Parser.OPTIONAL) pass elif la_ == 2: self.state = 156 self.type_base() pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Unbound_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def wdl_type(self): return self.getTypedRuleContext(WdlV1Parser.Wdl_typeContext,0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def getRuleIndex(self): return WdlV1Parser.RULE_unbound_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterUnbound_decls" ): listener.enterUnbound_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnbound_decls" ): listener.exitUnbound_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitUnbound_decls" ): return visitor.visitUnbound_decls(self) else: return visitor.visitChildren(self) def unbound_decls(self): localctx = WdlV1Parser.Unbound_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 10, self.RULE_unbound_decls) try: self.enterOuterAlt(localctx, 1) self.state = 159 self.wdl_type() self.state = 160 self.match(WdlV1Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Bound_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def wdl_type(self): return self.getTypedRuleContext(WdlV1Parser.Wdl_typeContext,0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def EQUAL(self): return self.getToken(WdlV1Parser.EQUAL, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_bound_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterBound_decls" ): listener.enterBound_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBound_decls" ): listener.exitBound_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitBound_decls" ): return visitor.visitBound_decls(self) else: return visitor.visitChildren(self) def bound_decls(self): localctx = WdlV1Parser.Bound_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_bound_decls) try: self.enterOuterAlt(localctx, 1) self.state = 162 self.wdl_type() self.state = 163 self.match(WdlV1Parser.Identifier) self.state = 164 self.match(WdlV1Parser.EQUAL) self.state = 165 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Any_declsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def unbound_decls(self): return self.getTypedRuleContext(WdlV1Parser.Unbound_declsContext,0) def bound_decls(self): return self.getTypedRuleContext(WdlV1Parser.Bound_declsContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_any_decls def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAny_decls" ): listener.enterAny_decls(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAny_decls" ): listener.exitAny_decls(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAny_decls" ): return visitor.visitAny_decls(self) else: return visitor.visitChildren(self) def any_decls(self): localctx = WdlV1Parser.Any_declsContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_any_decls) try: self.state = 169 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 167 self.unbound_decls() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) self.state = 168 self.bound_decls() pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class NumberContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IntLiteral(self): return self.getToken(WdlV1Parser.IntLiteral, 0) def FloatLiteral(self): return self.getToken(WdlV1Parser.FloatLiteral, 0) def getRuleIndex(self): return WdlV1Parser.RULE_number def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNumber" ): listener.enterNumber(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNumber" ): listener.exitNumber(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNumber" ): return visitor.visitNumber(self) else: return visitor.visitChildren(self) def number(self): localctx = WdlV1Parser.NumberContext(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_number) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 171 _la = self._input.LA(1) if not(_la==WdlV1Parser.IntLiteral or _la==WdlV1Parser.FloatLiteral): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expression_placeholder_optionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def BoolLiteral(self): return self.getToken(WdlV1Parser.BoolLiteral, 0) def EQUAL(self): return self.getToken(WdlV1Parser.EQUAL, 0) def string(self): return self.getTypedRuleContext(WdlV1Parser.StringContext,0) def number(self): return self.getTypedRuleContext(WdlV1Parser.NumberContext,0) def DEFAULT(self): return self.getToken(WdlV1Parser.DEFAULT, 0) def SEP(self): return self.getToken(WdlV1Parser.SEP, 0) def getRuleIndex(self): return WdlV1Parser.RULE_expression_placeholder_option def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpression_placeholder_option" ): listener.enterExpression_placeholder_option(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpression_placeholder_option" ): listener.exitExpression_placeholder_option(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpression_placeholder_option" ): return visitor.visitExpression_placeholder_option(self) else: return visitor.visitChildren(self) def expression_placeholder_option(self): localctx = WdlV1Parser.Expression_placeholder_optionContext(self, self._ctx, self.state) self.enterRule(localctx, 18, self.RULE_expression_placeholder_option) try: self.state = 191 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.BoolLiteral]: self.enterOuterAlt(localctx, 1) self.state = 173 self.match(WdlV1Parser.BoolLiteral) self.state = 174 self.match(WdlV1Parser.EQUAL) self.state = 177 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.SQUOTE, WdlV1Parser.DQUOTE]: self.state = 175 self.string() pass elif token in [WdlV1Parser.IntLiteral, WdlV1Parser.FloatLiteral]: self.state = 176 self.number() pass else: raise NoViableAltException(self) pass elif token in [WdlV1Parser.DEFAULT]: self.enterOuterAlt(localctx, 2) self.state = 179 self.match(WdlV1Parser.DEFAULT) self.state = 180 self.match(WdlV1Parser.EQUAL) self.state = 183 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.SQUOTE, WdlV1Parser.DQUOTE]: self.state = 181 self.string() pass elif token in [WdlV1Parser.IntLiteral, WdlV1Parser.FloatLiteral]: self.state = 182 self.number() pass else: raise NoViableAltException(self) pass elif token in [WdlV1Parser.SEP]: self.enterOuterAlt(localctx, 3) self.state = 185 self.match(WdlV1Parser.SEP) self.state = 186 self.match(WdlV1Parser.EQUAL) self.state = 189 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.SQUOTE, WdlV1Parser.DQUOTE]: self.state = 187 self.string() pass elif token in [WdlV1Parser.IntLiteral, WdlV1Parser.FloatLiteral]: self.state = 188 self.number() pass else: raise NoViableAltException(self) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringPart(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.StringPart) else: return self.getToken(WdlV1Parser.StringPart, i) def getRuleIndex(self): return WdlV1Parser.RULE_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_part" ): listener.enterString_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_part" ): listener.exitString_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_part" ): return visitor.visitString_part(self) else: return visitor.visitChildren(self) def string_part(self): localctx = WdlV1Parser.String_partContext(self, self._ctx, self.state) self.enterRule(localctx, 20, self.RULE_string_part) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 196 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.StringPart: self.state = 193 self.match(WdlV1Parser.StringPart) self.state = 198 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_expr_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringCommandStart(self): return self.getToken(WdlV1Parser.StringCommandStart, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def expression_placeholder_option(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Expression_placeholder_optionContext) else: return self.getTypedRuleContext(WdlV1Parser.Expression_placeholder_optionContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_string_expr_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_expr_part" ): listener.enterString_expr_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_expr_part" ): listener.exitString_expr_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_expr_part" ): return visitor.visitString_expr_part(self) else: return visitor.visitChildren(self) def string_expr_part(self): localctx = WdlV1Parser.String_expr_partContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_string_expr_part) try: self.enterOuterAlt(localctx, 1) self.state = 199 self.match(WdlV1Parser.StringCommandStart) self.state = 203 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,9,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 200 self.expression_placeholder_option() self.state = 205 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,9,self._ctx) self.state = 206 self.expr() self.state = 207 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class String_expr_with_string_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def string_expr_part(self): return self.getTypedRuleContext(WdlV1Parser.String_expr_partContext,0) def string_part(self): return self.getTypedRuleContext(WdlV1Parser.String_partContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_string_expr_with_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString_expr_with_string_part" ): listener.enterString_expr_with_string_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_expr_with_string_part" ): listener.exitString_expr_with_string_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString_expr_with_string_part" ): return visitor.visitString_expr_with_string_part(self) else: return visitor.visitChildren(self) def string_expr_with_string_part(self): localctx = WdlV1Parser.String_expr_with_string_partContext(self, self._ctx, self.state) self.enterRule(localctx, 24, self.RULE_string_expr_with_string_part) try: self.enterOuterAlt(localctx, 1) self.state = 209 self.string_expr_part() self.state = 210 self.string_part() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class StringContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def DQUOTE(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.DQUOTE) else: return self.getToken(WdlV1Parser.DQUOTE, i) def string_part(self): return self.getTypedRuleContext(WdlV1Parser.String_partContext,0) def string_expr_with_string_part(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.String_expr_with_string_partContext) else: return self.getTypedRuleContext(WdlV1Parser.String_expr_with_string_partContext,i) def SQUOTE(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.SQUOTE) else: return self.getToken(WdlV1Parser.SQUOTE, i) def getRuleIndex(self): return WdlV1Parser.RULE_string def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterString" ): listener.enterString(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString" ): listener.exitString(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitString" ): return visitor.visitString(self) else: return visitor.visitChildren(self) def string(self): localctx = WdlV1Parser.StringContext(self, self._ctx, self.state) self.enterRule(localctx, 26, self.RULE_string) self._la = 0 # Token type try: self.state = 232 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.DQUOTE]: self.enterOuterAlt(localctx, 1) self.state = 212 self.match(WdlV1Parser.DQUOTE) self.state = 213 self.string_part() self.state = 217 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.StringCommandStart: self.state = 214 self.string_expr_with_string_part() self.state = 219 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 220 self.match(WdlV1Parser.DQUOTE) pass elif token in [WdlV1Parser.SQUOTE]: self.enterOuterAlt(localctx, 2) self.state = 222 self.match(WdlV1Parser.SQUOTE) self.state = 223 self.string_part() self.state = 227 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.StringCommandStart: self.state = 224 self.string_expr_with_string_part() self.state = 229 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 230 self.match(WdlV1Parser.SQUOTE) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Primitive_literalContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def BoolLiteral(self): return self.getToken(WdlV1Parser.BoolLiteral, 0) def number(self): return self.getTypedRuleContext(WdlV1Parser.NumberContext,0) def string(self): return self.getTypedRuleContext(WdlV1Parser.StringContext,0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def getRuleIndex(self): return WdlV1Parser.RULE_primitive_literal def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPrimitive_literal" ): listener.enterPrimitive_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimitive_literal" ): listener.exitPrimitive_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPrimitive_literal" ): return visitor.visitPrimitive_literal(self) else: return visitor.visitChildren(self) def primitive_literal(self): localctx = WdlV1Parser.Primitive_literalContext(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_primitive_literal) try: self.state = 238 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.BoolLiteral]: self.enterOuterAlt(localctx, 1) self.state = 234 self.match(WdlV1Parser.BoolLiteral) pass elif token in [WdlV1Parser.IntLiteral, WdlV1Parser.FloatLiteral]: self.enterOuterAlt(localctx, 2) self.state = 235 self.number() pass elif token in [WdlV1Parser.SQUOTE, WdlV1Parser.DQUOTE]: self.enterOuterAlt(localctx, 3) self.state = 236 self.string() pass elif token in [WdlV1Parser.Identifier]: self.enterOuterAlt(localctx, 4) self.state = 237 self.match(WdlV1Parser.Identifier) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ExprContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def expr_infix(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infixContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_expr def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpr" ): listener.enterExpr(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpr" ): listener.exitExpr(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpr" ): return visitor.visitExpr(self) else: return visitor.visitChildren(self) def expr(self): localctx = WdlV1Parser.ExprContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_expr) try: self.enterOuterAlt(localctx, 1) self.state = 240 self.expr_infix() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_infixContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix0Context(Expr_infixContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infixContext super().__init__(parser) self.copyFrom(ctx) def expr_infix0(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix0Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix0" ): listener.enterInfix0(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix0" ): listener.exitInfix0(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix0" ): return visitor.visitInfix0(self) else: return visitor.visitChildren(self) def expr_infix(self): localctx = WdlV1Parser.Expr_infixContext(self, self._ctx, self.state) self.enterRule(localctx, 32, self.RULE_expr_infix) try: localctx = WdlV1Parser.Infix0Context(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 242 self.expr_infix0(0) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_infix0Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix0 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix1Context(Expr_infix0Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix0Context super().__init__(parser) self.copyFrom(ctx) def expr_infix1(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix1Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix1" ): listener.enterInfix1(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix1" ): listener.exitInfix1(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix1" ): return visitor.visitInfix1(self) else: return visitor.visitChildren(self) class LorContext(Expr_infix0Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix0Context super().__init__(parser) self.copyFrom(ctx) def expr_infix0(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix0Context,0) def OR(self): return self.getToken(WdlV1Parser.OR, 0) def expr_infix1(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix1Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLor" ): listener.enterLor(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLor" ): listener.exitLor(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLor" ): return visitor.visitLor(self) else: return visitor.visitChildren(self) def expr_infix0(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_infix0Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 34 self.enterRecursionRule(localctx, 34, self.RULE_expr_infix0, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlV1Parser.Infix1Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 245 self.expr_infix1(0) self._ctx.stop = self._input.LT(-1) self.state = 252 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,14,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx localctx = WdlV1Parser.LorContext(self, WdlV1Parser.Expr_infix0Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix0) self.state = 247 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 248 self.match(WdlV1Parser.OR) self.state = 249 self.expr_infix1(0) self.state = 254 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,14,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix1Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix1 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Infix2Context(Expr_infix1Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix1Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix2" ): listener.enterInfix2(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix2" ): listener.exitInfix2(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix2" ): return visitor.visitInfix2(self) else: return visitor.visitChildren(self) class LandContext(Expr_infix1Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix1Context super().__init__(parser) self.copyFrom(ctx) def expr_infix1(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix1Context,0) def AND(self): return self.getToken(WdlV1Parser.AND, 0) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLand" ): listener.enterLand(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLand" ): listener.exitLand(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLand" ): return visitor.visitLand(self) else: return visitor.visitChildren(self) def expr_infix1(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_infix1Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 36 self.enterRecursionRule(localctx, 36, self.RULE_expr_infix1, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlV1Parser.Infix2Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 256 self.expr_infix2(0) self._ctx.stop = self._input.LT(-1) self.state = 263 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,15,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx localctx = WdlV1Parser.LandContext(self, WdlV1Parser.Expr_infix1Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix1) self.state = 258 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 259 self.match(WdlV1Parser.AND) self.state = 260 self.expr_infix2(0) self.state = 265 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,15,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix2Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix2 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class EqeqContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def EQUALITY(self): return self.getToken(WdlV1Parser.EQUALITY, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterEqeq" ): listener.enterEqeq(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEqeq" ): listener.exitEqeq(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitEqeq" ): return visitor.visitEqeq(self) else: return visitor.visitChildren(self) class LtContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def LT(self): return self.getToken(WdlV1Parser.LT, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLt" ): listener.enterLt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLt" ): listener.exitLt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLt" ): return visitor.visitLt(self) else: return visitor.visitChildren(self) class Infix3Context(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix3" ): listener.enterInfix3(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix3" ): listener.exitInfix3(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix3" ): return visitor.visitInfix3(self) else: return visitor.visitChildren(self) class GteContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def GTE(self): return self.getToken(WdlV1Parser.GTE, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGte" ): listener.enterGte(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGte" ): listener.exitGte(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGte" ): return visitor.visitGte(self) else: return visitor.visitChildren(self) class NeqContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def NOTEQUAL(self): return self.getToken(WdlV1Parser.NOTEQUAL, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNeq" ): listener.enterNeq(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNeq" ): listener.exitNeq(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNeq" ): return visitor.visitNeq(self) else: return visitor.visitChildren(self) class LteContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def LTE(self): return self.getToken(WdlV1Parser.LTE, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLte" ): listener.enterLte(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLte" ): listener.exitLte(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLte" ): return visitor.visitLte(self) else: return visitor.visitChildren(self) class GtContext(Expr_infix2Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix2Context super().__init__(parser) self.copyFrom(ctx) def expr_infix2(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix2Context,0) def GT(self): return self.getToken(WdlV1Parser.GT, 0) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGt" ): listener.enterGt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGt" ): listener.exitGt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGt" ): return visitor.visitGt(self) else: return visitor.visitChildren(self) def expr_infix2(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_infix2Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 38 self.enterRecursionRule(localctx, 38, self.RULE_expr_infix2, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlV1Parser.Infix3Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 267 self.expr_infix3(0) self._ctx.stop = self._input.LT(-1) self.state = 289 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,17,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 287 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,16,self._ctx) if la_ == 1: localctx = WdlV1Parser.EqeqContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 269 if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") self.state = 270 self.match(WdlV1Parser.EQUALITY) self.state = 271 self.expr_infix3(0) pass elif la_ == 2: localctx = WdlV1Parser.NeqContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 272 if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") self.state = 273 self.match(WdlV1Parser.NOTEQUAL) self.state = 274 self.expr_infix3(0) pass elif la_ == 3: localctx = WdlV1Parser.LteContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 275 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") self.state = 276 self.match(WdlV1Parser.LTE) self.state = 277 self.expr_infix3(0) pass elif la_ == 4: localctx = WdlV1Parser.GteContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 278 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 279 self.match(WdlV1Parser.GTE) self.state = 280 self.expr_infix3(0) pass elif la_ == 5: localctx = WdlV1Parser.LtContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 281 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 282 self.match(WdlV1Parser.LT) self.state = 283 self.expr_infix3(0) pass elif la_ == 6: localctx = WdlV1Parser.GtContext(self, WdlV1Parser.Expr_infix2Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix2) self.state = 284 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 285 self.match(WdlV1Parser.GT) self.state = 286 self.expr_infix3(0) pass self.state = 291 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,17,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix3Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix3 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class AddContext(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def PLUS(self): return self.getToken(WdlV1Parser.PLUS, 0) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAdd" ): listener.enterAdd(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAdd" ): listener.exitAdd(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAdd" ): return visitor.visitAdd(self) else: return visitor.visitChildren(self) class SubContext(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix3(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix3Context,0) def MINUS(self): return self.getToken(WdlV1Parser.MINUS, 0) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterSub" ): listener.enterSub(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSub" ): listener.exitSub(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitSub" ): return visitor.visitSub(self) else: return visitor.visitChildren(self) class Infix4Context(Expr_infix3Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix3Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix4" ): listener.enterInfix4(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix4" ): listener.exitInfix4(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix4" ): return visitor.visitInfix4(self) else: return visitor.visitChildren(self) def expr_infix3(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_infix3Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 40 self.enterRecursionRule(localctx, 40, self.RULE_expr_infix3, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlV1Parser.Infix4Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 293 self.expr_infix4(0) self._ctx.stop = self._input.LT(-1) self.state = 303 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,19,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 301 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,18,self._ctx) if la_ == 1: localctx = WdlV1Parser.AddContext(self, WdlV1Parser.Expr_infix3Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix3) self.state = 295 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 296 self.match(WdlV1Parser.PLUS) self.state = 297 self.expr_infix4(0) pass elif la_ == 2: localctx = WdlV1Parser.SubContext(self, WdlV1Parser.Expr_infix3Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix3) self.state = 298 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 299 self.match(WdlV1Parser.MINUS) self.state = 300 self.expr_infix4(0) pass self.state = 305 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,19,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix4Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix4 def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class ModContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def MOD(self): return self.getToken(WdlV1Parser.MOD, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMod" ): listener.enterMod(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMod" ): listener.exitMod(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMod" ): return visitor.visitMod(self) else: return visitor.visitChildren(self) class MulContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def STAR(self): return self.getToken(WdlV1Parser.STAR, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMul" ): listener.enterMul(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMul" ): listener.exitMul(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMul" ): return visitor.visitMul(self) else: return visitor.visitChildren(self) class DivideContext(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix4(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix4Context,0) def DIVIDE(self): return self.getToken(WdlV1Parser.DIVIDE, 0) def expr_infix5(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDivide" ): listener.enterDivide(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDivide" ): listener.exitDivide(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDivide" ): return visitor.visitDivide(self) else: return visitor.visitChildren(self) class Infix5Context(Expr_infix4Context): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_infix4Context super().__init__(parser) self.copyFrom(ctx) def expr_infix5(self): return self.getTypedRuleContext(WdlV1Parser.Expr_infix5Context,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInfix5" ): listener.enterInfix5(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInfix5" ): listener.exitInfix5(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInfix5" ): return visitor.visitInfix5(self) else: return visitor.visitChildren(self) def expr_infix4(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_infix4Context(self, self._ctx, _parentState) _prevctx = localctx _startState = 42 self.enterRecursionRule(localctx, 42, self.RULE_expr_infix4, _p) try: self.enterOuterAlt(localctx, 1) localctx = WdlV1Parser.Infix5Context(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 307 self.expr_infix5() self._ctx.stop = self._input.LT(-1) self.state = 320 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,21,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 318 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,20,self._ctx) if la_ == 1: localctx = WdlV1Parser.MulContext(self, WdlV1Parser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 309 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 310 self.match(WdlV1Parser.STAR) self.state = 311 self.expr_infix5() pass elif la_ == 2: localctx = WdlV1Parser.DivideContext(self, WdlV1Parser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 312 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 313 self.match(WdlV1Parser.DIVIDE) self.state = 314 self.expr_infix5() pass elif la_ == 3: localctx = WdlV1Parser.ModContext(self, WdlV1Parser.Expr_infix4Context(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_infix4) self.state = 315 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 316 self.match(WdlV1Parser.MOD) self.state = 317 self.expr_infix5() pass self.state = 322 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,21,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class Expr_infix5Context(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def expr_core(self): return self.getTypedRuleContext(WdlV1Parser.Expr_coreContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_expr_infix5 def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpr_infix5" ): listener.enterExpr_infix5(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpr_infix5" ): listener.exitExpr_infix5(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpr_infix5" ): return visitor.visitExpr_infix5(self) else: return visitor.visitChildren(self) def expr_infix5(self): localctx = WdlV1Parser.Expr_infix5Context(self, self._ctx, self.state) self.enterRule(localctx, 44, self.RULE_expr_infix5) try: self.enterOuterAlt(localctx, 1) self.state = 323 self.expr_core(0) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Expr_coreContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_expr_core def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class Pair_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(WdlV1Parser.LPAREN, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def COMMA(self): return self.getToken(WdlV1Parser.COMMA, 0) def RPAREN(self): return self.getToken(WdlV1Parser.RPAREN, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPair_literal" ): listener.enterPair_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPair_literal" ): listener.exitPair_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPair_literal" ): return visitor.visitPair_literal(self) else: return visitor.visitChildren(self) class UnarysignedContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def PLUS(self): return self.getToken(WdlV1Parser.PLUS, 0) def MINUS(self): return self.getToken(WdlV1Parser.MINUS, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterUnarysigned" ): listener.enterUnarysigned(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnarysigned" ): listener.exitUnarysigned(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitUnarysigned" ): return visitor.visitUnarysigned(self) else: return visitor.visitChildren(self) class ApplyContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def LPAREN(self): return self.getToken(WdlV1Parser.LPAREN, 0) def RPAREN(self): return self.getToken(WdlV1Parser.RPAREN, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COMMA) else: return self.getToken(WdlV1Parser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterApply" ): listener.enterApply(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitApply" ): listener.exitApply(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitApply" ): return visitor.visitApply(self) else: return visitor.visitChildren(self) class Expression_groupContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(WdlV1Parser.LPAREN, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RPAREN(self): return self.getToken(WdlV1Parser.RPAREN, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterExpression_group" ): listener.enterExpression_group(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpression_group" ): listener.exitExpression_group(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitExpression_group" ): return visitor.visitExpression_group(self) else: return visitor.visitChildren(self) class PrimitivesContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def primitive_literal(self): return self.getTypedRuleContext(WdlV1Parser.Primitive_literalContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterPrimitives" ): listener.enterPrimitives(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimitives" ): listener.exitPrimitives(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitPrimitives" ): return visitor.visitPrimitives(self) else: return visitor.visitChildren(self) class Left_nameContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterLeft_name" ): listener.enterLeft_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLeft_name" ): listener.exitLeft_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitLeft_name" ): return visitor.visitLeft_name(self) else: return visitor.visitChildren(self) class AtContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr_core(self): return self.getTypedRuleContext(WdlV1Parser.Expr_coreContext,0) def LBRACK(self): return self.getToken(WdlV1Parser.LBRACK, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RBRACK(self): return self.getToken(WdlV1Parser.RBRACK, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterAt" ): listener.enterAt(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAt" ): listener.exitAt(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitAt" ): return visitor.visitAt(self) else: return visitor.visitChildren(self) class NegateContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def NOT(self): return self.getToken(WdlV1Parser.NOT, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterNegate" ): listener.enterNegate(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNegate" ): listener.exitNegate(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitNegate" ): return visitor.visitNegate(self) else: return visitor.visitChildren(self) class Map_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def COLON(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COLON) else: return self.getToken(WdlV1Parser.COLON, i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COMMA) else: return self.getToken(WdlV1Parser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMap_literal" ): listener.enterMap_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMap_literal" ): listener.exitMap_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMap_literal" ): return visitor.visitMap_literal(self) else: return visitor.visitChildren(self) class IfthenelseContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def IF(self): return self.getToken(WdlV1Parser.IF, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def THEN(self): return self.getToken(WdlV1Parser.THEN, 0) def ELSE(self): return self.getToken(WdlV1Parser.ELSE, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterIfthenelse" ): listener.enterIfthenelse(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIfthenelse" ): listener.exitIfthenelse(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitIfthenelse" ): return visitor.visitIfthenelse(self) else: return visitor.visitChildren(self) class Get_nameContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def expr_core(self): return self.getTypedRuleContext(WdlV1Parser.Expr_coreContext,0) def DOT(self): return self.getToken(WdlV1Parser.DOT, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterGet_name" ): listener.enterGet_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGet_name" ): listener.exitGet_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitGet_name" ): return visitor.visitGet_name(self) else: return visitor.visitChildren(self) class Object_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def OBJECT_LITERAL(self): return self.getToken(WdlV1Parser.OBJECT_LITERAL, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.Identifier) else: return self.getToken(WdlV1Parser.Identifier, i) def COLON(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COLON) else: return self.getToken(WdlV1Parser.COLON, i) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COMMA) else: return self.getToken(WdlV1Parser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterObject_literal" ): listener.enterObject_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitObject_literal" ): listener.exitObject_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitObject_literal" ): return visitor.visitObject_literal(self) else: return visitor.visitChildren(self) class Array_literalContext(Expr_coreContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Expr_coreContext super().__init__(parser) self.copyFrom(ctx) def LBRACK(self): return self.getToken(WdlV1Parser.LBRACK, 0) def RBRACK(self): return self.getToken(WdlV1Parser.RBRACK, 0) def expr(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.ExprContext) else: return self.getTypedRuleContext(WdlV1Parser.ExprContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COMMA) else: return self.getToken(WdlV1Parser.COMMA, i) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterArray_literal" ): listener.enterArray_literal(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_literal" ): listener.exitArray_literal(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitArray_literal" ): return visitor.visitArray_literal(self) else: return visitor.visitChildren(self) def expr_core(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = WdlV1Parser.Expr_coreContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 46 self.enterRecursionRule(localctx, 46, self.RULE_expr_core, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 429 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,34,self._ctx) if la_ == 1: localctx = WdlV1Parser.ApplyContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 326 self.match(WdlV1Parser.Identifier) self.state = 327 self.match(WdlV1Parser.LPAREN) self.state = 339 self._errHandler.sync(self) _la = self._input.LA(1) if ((((_la - 9)) & ~0x3f) == 0 and ((1 << (_la - 9)) & ((1 << (WdlV1Parser.IF - 9)) | (1 << (WdlV1Parser.OBJECT_LITERAL - 9)) | (1 << (WdlV1Parser.IntLiteral - 9)) | (1 << (WdlV1Parser.FloatLiteral - 9)) | (1 << (WdlV1Parser.BoolLiteral - 9)) | (1 << (WdlV1Parser.LPAREN - 9)) | (1 << (WdlV1Parser.LBRACE - 9)) | (1 << (WdlV1Parser.LBRACK - 9)) | (1 << (WdlV1Parser.PLUS - 9)) | (1 << (WdlV1Parser.MINUS - 9)) | (1 << (WdlV1Parser.NOT - 9)) | (1 << (WdlV1Parser.SQUOTE - 9)) | (1 << (WdlV1Parser.DQUOTE - 9)) | (1 << (WdlV1Parser.Identifier - 9)))) != 0): self.state = 328 self.expr() self.state = 333 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,22,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 329 self.match(WdlV1Parser.COMMA) self.state = 330 self.expr() self.state = 335 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,22,self._ctx) self.state = 337 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.COMMA: self.state = 336 self.match(WdlV1Parser.COMMA) self.state = 341 self.match(WdlV1Parser.RPAREN) pass elif la_ == 2: localctx = WdlV1Parser.Array_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 342 self.match(WdlV1Parser.LBRACK) self.state = 356 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 9)) & ~0x3f) == 0 and ((1 << (_la - 9)) & ((1 << (WdlV1Parser.IF - 9)) | (1 << (WdlV1Parser.OBJECT_LITERAL - 9)) | (1 << (WdlV1Parser.IntLiteral - 9)) | (1 << (WdlV1Parser.FloatLiteral - 9)) | (1 << (WdlV1Parser.BoolLiteral - 9)) | (1 << (WdlV1Parser.LPAREN - 9)) | (1 << (WdlV1Parser.LBRACE - 9)) | (1 << (WdlV1Parser.LBRACK - 9)) | (1 << (WdlV1Parser.PLUS - 9)) | (1 << (WdlV1Parser.MINUS - 9)) | (1 << (WdlV1Parser.NOT - 9)) | (1 << (WdlV1Parser.SQUOTE - 9)) | (1 << (WdlV1Parser.DQUOTE - 9)) | (1 << (WdlV1Parser.Identifier - 9)))) != 0): self.state = 343 self.expr() self.state = 348 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,25,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 344 self.match(WdlV1Parser.COMMA) self.state = 345 self.expr() self.state = 350 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,25,self._ctx) self.state = 352 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.COMMA: self.state = 351 self.match(WdlV1Parser.COMMA) self.state = 358 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 359 self.match(WdlV1Parser.RBRACK) pass elif la_ == 3: localctx = WdlV1Parser.Pair_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 360 self.match(WdlV1Parser.LPAREN) self.state = 361 self.expr() self.state = 362 self.match(WdlV1Parser.COMMA) self.state = 363 self.expr() self.state = 364 self.match(WdlV1Parser.RPAREN) pass elif la_ == 4: localctx = WdlV1Parser.Map_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 366 self.match(WdlV1Parser.LBRACE) self.state = 385 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 9)) & ~0x3f) == 0 and ((1 << (_la - 9)) & ((1 << (WdlV1Parser.IF - 9)) | (1 << (WdlV1Parser.OBJECT_LITERAL - 9)) | (1 << (WdlV1Parser.IntLiteral - 9)) | (1 << (WdlV1Parser.FloatLiteral - 9)) | (1 << (WdlV1Parser.BoolLiteral - 9)) | (1 << (WdlV1Parser.LPAREN - 9)) | (1 << (WdlV1Parser.LBRACE - 9)) | (1 << (WdlV1Parser.LBRACK - 9)) | (1 << (WdlV1Parser.PLUS - 9)) | (1 << (WdlV1Parser.MINUS - 9)) | (1 << (WdlV1Parser.NOT - 9)) | (1 << (WdlV1Parser.SQUOTE - 9)) | (1 << (WdlV1Parser.DQUOTE - 9)) | (1 << (WdlV1Parser.Identifier - 9)))) != 0): self.state = 367 self.expr() self.state = 368 self.match(WdlV1Parser.COLON) self.state = 369 self.expr() self.state = 377 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,28,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 370 self.match(WdlV1Parser.COMMA) self.state = 371 self.expr() self.state = 372 self.match(WdlV1Parser.COLON) self.state = 373 self.expr() self.state = 379 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,28,self._ctx) self.state = 381 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.COMMA: self.state = 380 self.match(WdlV1Parser.COMMA) self.state = 387 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 388 self.match(WdlV1Parser.RBRACE) pass elif la_ == 5: localctx = WdlV1Parser.Object_literalContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 389 self.match(WdlV1Parser.OBJECT_LITERAL) self.state = 390 self.match(WdlV1Parser.LBRACE) self.state = 408 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.Identifier: self.state = 391 self.match(WdlV1Parser.Identifier) self.state = 392 self.match(WdlV1Parser.COLON) self.state = 393 self.expr() self.state = 400 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,31,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 394 self.match(WdlV1Parser.COMMA) self.state = 395 self.match(WdlV1Parser.Identifier) self.state = 396 self.match(WdlV1Parser.COLON) self.state = 397 self.expr() self.state = 402 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,31,self._ctx) self.state = 404 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.COMMA: self.state = 403 self.match(WdlV1Parser.COMMA) self.state = 410 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 411 self.match(WdlV1Parser.RBRACE) pass elif la_ == 6: localctx = WdlV1Parser.IfthenelseContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 412 self.match(WdlV1Parser.IF) self.state = 413 self.expr() self.state = 414 self.match(WdlV1Parser.THEN) self.state = 415 self.expr() self.state = 416 self.match(WdlV1Parser.ELSE) self.state = 417 self.expr() pass elif la_ == 7: localctx = WdlV1Parser.Expression_groupContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 419 self.match(WdlV1Parser.LPAREN) self.state = 420 self.expr() self.state = 421 self.match(WdlV1Parser.RPAREN) pass elif la_ == 8: localctx = WdlV1Parser.NegateContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 423 self.match(WdlV1Parser.NOT) self.state = 424 self.expr() pass elif la_ == 9: localctx = WdlV1Parser.UnarysignedContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 425 _la = self._input.LA(1) if not(_la==WdlV1Parser.PLUS or _la==WdlV1Parser.MINUS): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() self.state = 426 self.expr() pass elif la_ == 10: localctx = WdlV1Parser.PrimitivesContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 427 self.primitive_literal() pass elif la_ == 11: localctx = WdlV1Parser.Left_nameContext(self, localctx) self._ctx = localctx _prevctx = localctx self.state = 428 self.match(WdlV1Parser.Identifier) pass self._ctx.stop = self._input.LT(-1) self.state = 441 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,36,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 439 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,35,self._ctx) if la_ == 1: localctx = WdlV1Parser.AtContext(self, WdlV1Parser.Expr_coreContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_core) self.state = 431 if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") self.state = 432 self.match(WdlV1Parser.LBRACK) self.state = 433 self.expr() self.state = 434 self.match(WdlV1Parser.RBRACK) pass elif la_ == 2: localctx = WdlV1Parser.Get_nameContext(self, WdlV1Parser.Expr_coreContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr_core) self.state = 436 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") self.state = 437 self.match(WdlV1Parser.DOT) self.state = 438 self.match(WdlV1Parser.Identifier) pass self.state = 443 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,36,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.unrollRecursionContexts(_parentctx) return localctx class VersionContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def VERSION(self): return self.getToken(WdlV1Parser.VERSION, 0) def ReleaseVersion(self): return self.getToken(WdlV1Parser.ReleaseVersion, 0) def getRuleIndex(self): return WdlV1Parser.RULE_version def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterVersion" ): listener.enterVersion(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVersion" ): listener.exitVersion(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitVersion" ): return visitor.visitVersion(self) else: return visitor.visitChildren(self) def version(self): localctx = WdlV1Parser.VersionContext(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_version) try: self.enterOuterAlt(localctx, 1) self.state = 444 self.match(WdlV1Parser.VERSION) self.state = 445 self.match(WdlV1Parser.ReleaseVersion) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_aliasContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def ALIAS(self): return self.getToken(WdlV1Parser.ALIAS, 0) def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.Identifier) else: return self.getToken(WdlV1Parser.Identifier, i) def AS(self): return self.getToken(WdlV1Parser.AS, 0) def getRuleIndex(self): return WdlV1Parser.RULE_import_alias def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_alias" ): listener.enterImport_alias(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_alias" ): listener.exitImport_alias(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_alias" ): return visitor.visitImport_alias(self) else: return visitor.visitChildren(self) def import_alias(self): localctx = WdlV1Parser.Import_aliasContext(self, self._ctx, self.state) self.enterRule(localctx, 50, self.RULE_import_alias) try: self.enterOuterAlt(localctx, 1) self.state = 447 self.match(WdlV1Parser.ALIAS) self.state = 448 self.match(WdlV1Parser.Identifier) self.state = 449 self.match(WdlV1Parser.AS) self.state = 450 self.match(WdlV1Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_asContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def AS(self): return self.getToken(WdlV1Parser.AS, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def getRuleIndex(self): return WdlV1Parser.RULE_import_as def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_as" ): listener.enterImport_as(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_as" ): listener.exitImport_as(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_as" ): return visitor.visitImport_as(self) else: return visitor.visitChildren(self) def import_as(self): localctx = WdlV1Parser.Import_asContext(self, self._ctx, self.state) self.enterRule(localctx, 52, self.RULE_import_as) try: self.enterOuterAlt(localctx, 1) self.state = 452 self.match(WdlV1Parser.AS) self.state = 453 self.match(WdlV1Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Import_docContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IMPORT(self): return self.getToken(WdlV1Parser.IMPORT, 0) def string(self): return self.getTypedRuleContext(WdlV1Parser.StringContext,0) def import_as(self): return self.getTypedRuleContext(WdlV1Parser.Import_asContext,0) def import_alias(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Import_aliasContext) else: return self.getTypedRuleContext(WdlV1Parser.Import_aliasContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_import_doc def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterImport_doc" ): listener.enterImport_doc(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImport_doc" ): listener.exitImport_doc(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitImport_doc" ): return visitor.visitImport_doc(self) else: return visitor.visitChildren(self) def import_doc(self): localctx = WdlV1Parser.Import_docContext(self, self._ctx, self.state) self.enterRule(localctx, 54, self.RULE_import_doc) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 455 self.match(WdlV1Parser.IMPORT) self.state = 456 self.string() self.state = 458 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.AS: self.state = 457 self.import_as() self.state = 463 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.ALIAS: self.state = 460 self.import_alias() self.state = 465 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class StructContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def STRUCT(self): return self.getToken(WdlV1Parser.STRUCT, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def unbound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Unbound_declsContext) else: return self.getTypedRuleContext(WdlV1Parser.Unbound_declsContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_struct def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterStruct" ): listener.enterStruct(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct" ): listener.exitStruct(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitStruct" ): return visitor.visitStruct(self) else: return visitor.visitChildren(self) def struct(self): localctx = WdlV1Parser.StructContext(self, self._ctx, self.state) self.enterRule(localctx, 56, self.RULE_struct) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 466 self.match(WdlV1Parser.STRUCT) self.state = 467 self.match(WdlV1Parser.Identifier) self.state = 468 self.match(WdlV1Parser.LBRACE) self.state = 472 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.ARRAY - 21)) | (1 << (WdlV1Parser.MAP - 21)) | (1 << (WdlV1Parser.PAIR - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0): self.state = 469 self.unbound_decls() self.state = 474 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 475 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_valueContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaNull(self): return self.getToken(WdlV1Parser.MetaNull, 0) def MetaBool(self): return self.getToken(WdlV1Parser.MetaBool, 0) def MetaInt(self): return self.getToken(WdlV1Parser.MetaInt, 0) def MetaFloat(self): return self.getToken(WdlV1Parser.MetaFloat, 0) def meta_string(self): return self.getTypedRuleContext(WdlV1Parser.Meta_stringContext,0) def meta_object(self): return self.getTypedRuleContext(WdlV1Parser.Meta_objectContext,0) def meta_array(self): return self.getTypedRuleContext(WdlV1Parser.Meta_arrayContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_meta_value def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_value" ): listener.enterMeta_value(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_value" ): listener.exitMeta_value(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_value" ): return visitor.visitMeta_value(self) else: return visitor.visitChildren(self) def meta_value(self): localctx = WdlV1Parser.Meta_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 58, self.RULE_meta_value) try: self.state = 484 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.MetaNull]: self.enterOuterAlt(localctx, 1) self.state = 477 self.match(WdlV1Parser.MetaNull) pass elif token in [WdlV1Parser.MetaBool]: self.enterOuterAlt(localctx, 2) self.state = 478 self.match(WdlV1Parser.MetaBool) pass elif token in [WdlV1Parser.MetaInt]: self.enterOuterAlt(localctx, 3) self.state = 479 self.match(WdlV1Parser.MetaInt) pass elif token in [WdlV1Parser.MetaFloat]: self.enterOuterAlt(localctx, 4) self.state = 480 self.match(WdlV1Parser.MetaFloat) pass elif token in [WdlV1Parser.MetaSquote, WdlV1Parser.MetaDquote]: self.enterOuterAlt(localctx, 5) self.state = 481 self.meta_string() pass elif token in [WdlV1Parser.MetaEmptyObject, WdlV1Parser.MetaLbrace]: self.enterOuterAlt(localctx, 6) self.state = 482 self.meta_object() pass elif token in [WdlV1Parser.MetaEmptyArray, WdlV1Parser.MetaLbrack]: self.enterOuterAlt(localctx, 7) self.state = 483 self.meta_array() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_string_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaStringPart(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.MetaStringPart) else: return self.getToken(WdlV1Parser.MetaStringPart, i) def getRuleIndex(self): return WdlV1Parser.RULE_meta_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_string_part" ): listener.enterMeta_string_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_string_part" ): listener.exitMeta_string_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_string_part" ): return visitor.visitMeta_string_part(self) else: return visitor.visitChildren(self) def meta_string_part(self): localctx = WdlV1Parser.Meta_string_partContext(self, self._ctx, self.state) self.enterRule(localctx, 60, self.RULE_meta_string_part) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 489 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.MetaStringPart: self.state = 486 self.match(WdlV1Parser.MetaStringPart) self.state = 491 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_stringContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaDquote(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.MetaDquote) else: return self.getToken(WdlV1Parser.MetaDquote, i) def meta_string_part(self): return self.getTypedRuleContext(WdlV1Parser.Meta_string_partContext,0) def MetaSquote(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.MetaSquote) else: return self.getToken(WdlV1Parser.MetaSquote, i) def getRuleIndex(self): return WdlV1Parser.RULE_meta_string def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_string" ): listener.enterMeta_string(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_string" ): listener.exitMeta_string(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_string" ): return visitor.visitMeta_string(self) else: return visitor.visitChildren(self) def meta_string(self): localctx = WdlV1Parser.Meta_stringContext(self, self._ctx, self.state) self.enterRule(localctx, 62, self.RULE_meta_string) try: self.state = 500 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.MetaDquote]: self.enterOuterAlt(localctx, 1) self.state = 492 self.match(WdlV1Parser.MetaDquote) self.state = 493 self.meta_string_part() self.state = 494 self.match(WdlV1Parser.MetaDquote) pass elif token in [WdlV1Parser.MetaSquote]: self.enterOuterAlt(localctx, 2) self.state = 496 self.match(WdlV1Parser.MetaSquote) self.state = 497 self.meta_string_part() self.state = 498 self.match(WdlV1Parser.MetaSquote) pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_arrayContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaEmptyArray(self): return self.getToken(WdlV1Parser.MetaEmptyArray, 0) def MetaLbrack(self): return self.getToken(WdlV1Parser.MetaLbrack, 0) def meta_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Meta_valueContext) else: return self.getTypedRuleContext(WdlV1Parser.Meta_valueContext,i) def MetaArrayCommaRbrack(self): return self.getToken(WdlV1Parser.MetaArrayCommaRbrack, 0) def MetaRbrack(self): return self.getToken(WdlV1Parser.MetaRbrack, 0) def MetaArrayComma(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.MetaArrayComma) else: return self.getToken(WdlV1Parser.MetaArrayComma, i) def getRuleIndex(self): return WdlV1Parser.RULE_meta_array def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_array" ): listener.enterMeta_array(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_array" ): listener.exitMeta_array(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_array" ): return visitor.visitMeta_array(self) else: return visitor.visitChildren(self) def meta_array(self): localctx = WdlV1Parser.Meta_arrayContext(self, self._ctx, self.state) self.enterRule(localctx, 64, self.RULE_meta_array) self._la = 0 # Token type try: self.state = 514 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.MetaEmptyArray]: self.enterOuterAlt(localctx, 1) self.state = 502 self.match(WdlV1Parser.MetaEmptyArray) pass elif token in [WdlV1Parser.MetaLbrack]: self.enterOuterAlt(localctx, 2) self.state = 503 self.match(WdlV1Parser.MetaLbrack) self.state = 504 self.meta_value() self.state = 509 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.MetaArrayComma: self.state = 505 self.match(WdlV1Parser.MetaArrayComma) self.state = 506 self.meta_value() self.state = 511 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 512 _la = self._input.LA(1) if not(_la==WdlV1Parser.MetaArrayCommaRbrack or _la==WdlV1Parser.MetaRbrack): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_objectContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaEmptyObject(self): return self.getToken(WdlV1Parser.MetaEmptyObject, 0) def MetaLbrace(self): return self.getToken(WdlV1Parser.MetaLbrace, 0) def meta_object_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Meta_object_kvContext) else: return self.getTypedRuleContext(WdlV1Parser.Meta_object_kvContext,i) def MetaObjectCommaRbrace(self): return self.getToken(WdlV1Parser.MetaObjectCommaRbrace, 0) def MetaRbrace(self): return self.getToken(WdlV1Parser.MetaRbrace, 0) def MetaObjectComma(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.MetaObjectComma) else: return self.getToken(WdlV1Parser.MetaObjectComma, i) def getRuleIndex(self): return WdlV1Parser.RULE_meta_object def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_object" ): listener.enterMeta_object(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_object" ): listener.exitMeta_object(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_object" ): return visitor.visitMeta_object(self) else: return visitor.visitChildren(self) def meta_object(self): localctx = WdlV1Parser.Meta_objectContext(self, self._ctx, self.state) self.enterRule(localctx, 66, self.RULE_meta_object) self._la = 0 # Token type try: self.state = 528 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.MetaEmptyObject]: self.enterOuterAlt(localctx, 1) self.state = 516 self.match(WdlV1Parser.MetaEmptyObject) pass elif token in [WdlV1Parser.MetaLbrace]: self.enterOuterAlt(localctx, 2) self.state = 517 self.match(WdlV1Parser.MetaLbrace) self.state = 518 self.meta_object_kv() self.state = 523 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.MetaObjectComma: self.state = 519 self.match(WdlV1Parser.MetaObjectComma) self.state = 520 self.meta_object_kv() self.state = 525 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 526 _la = self._input.LA(1) if not(_la==WdlV1Parser.MetaObjectCommaRbrace or _la==WdlV1Parser.MetaRbrace): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_object_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaObjectIdentifier(self): return self.getToken(WdlV1Parser.MetaObjectIdentifier, 0) def MetaObjectColon(self): return self.getToken(WdlV1Parser.MetaObjectColon, 0) def meta_value(self): return self.getTypedRuleContext(WdlV1Parser.Meta_valueContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_meta_object_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_object_kv" ): listener.enterMeta_object_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_object_kv" ): listener.exitMeta_object_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_object_kv" ): return visitor.visitMeta_object_kv(self) else: return visitor.visitChildren(self) def meta_object_kv(self): localctx = WdlV1Parser.Meta_object_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 68, self.RULE_meta_object_kv) try: self.enterOuterAlt(localctx, 1) self.state = 530 self.match(WdlV1Parser.MetaObjectIdentifier) self.state = 531 self.match(WdlV1Parser.MetaObjectColon) self.state = 532 self.meta_value() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Meta_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def MetaIdentifier(self): return self.getToken(WdlV1Parser.MetaIdentifier, 0) def MetaColon(self): return self.getToken(WdlV1Parser.MetaColon, 0) def meta_value(self): return self.getTypedRuleContext(WdlV1Parser.Meta_valueContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_meta_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_kv" ): listener.enterMeta_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_kv" ): listener.exitMeta_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_kv" ): return visitor.visitMeta_kv(self) else: return visitor.visitChildren(self) def meta_kv(self): localctx = WdlV1Parser.Meta_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 70, self.RULE_meta_kv) try: self.enterOuterAlt(localctx, 1) self.state = 534 self.match(WdlV1Parser.MetaIdentifier) self.state = 535 self.match(WdlV1Parser.MetaColon) self.state = 536 self.meta_value() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Parameter_metaContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def PARAMETERMETA(self): return self.getToken(WdlV1Parser.PARAMETERMETA, 0) def BeginMeta(self): return self.getToken(WdlV1Parser.BeginMeta, 0) def EndMeta(self): return self.getToken(WdlV1Parser.EndMeta, 0) def meta_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Meta_kvContext) else: return self.getTypedRuleContext(WdlV1Parser.Meta_kvContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_parameter_meta def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterParameter_meta" ): listener.enterParameter_meta(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_meta" ): listener.exitParameter_meta(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitParameter_meta" ): return visitor.visitParameter_meta(self) else: return visitor.visitChildren(self) def parameter_meta(self): localctx = WdlV1Parser.Parameter_metaContext(self, self._ctx, self.state) self.enterRule(localctx, 72, self.RULE_parameter_meta) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 538 self.match(WdlV1Parser.PARAMETERMETA) self.state = 539 self.match(WdlV1Parser.BeginMeta) self.state = 543 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.MetaIdentifier: self.state = 540 self.meta_kv() self.state = 545 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 546 self.match(WdlV1Parser.EndMeta) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class MetaContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def META(self): return self.getToken(WdlV1Parser.META, 0) def BeginMeta(self): return self.getToken(WdlV1Parser.BeginMeta, 0) def EndMeta(self): return self.getToken(WdlV1Parser.EndMeta, 0) def meta_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Meta_kvContext) else: return self.getTypedRuleContext(WdlV1Parser.Meta_kvContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_meta def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta" ): listener.enterMeta(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta" ): listener.exitMeta(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta" ): return visitor.visitMeta(self) else: return visitor.visitChildren(self) def meta(self): localctx = WdlV1Parser.MetaContext(self, self._ctx, self.state) self.enterRule(localctx, 74, self.RULE_meta) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 548 self.match(WdlV1Parser.META) self.state = 549 self.match(WdlV1Parser.BeginMeta) self.state = 553 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.MetaIdentifier: self.state = 550 self.meta_kv() self.state = 555 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 556 self.match(WdlV1Parser.EndMeta) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_runtime_kvContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def COLON(self): return self.getToken(WdlV1Parser.COLON, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_task_runtime_kv def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_runtime_kv" ): listener.enterTask_runtime_kv(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_runtime_kv" ): listener.exitTask_runtime_kv(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_runtime_kv" ): return visitor.visitTask_runtime_kv(self) else: return visitor.visitChildren(self) def task_runtime_kv(self): localctx = WdlV1Parser.Task_runtime_kvContext(self, self._ctx, self.state) self.enterRule(localctx, 76, self.RULE_task_runtime_kv) try: self.enterOuterAlt(localctx, 1) self.state = 558 self.match(WdlV1Parser.Identifier) self.state = 559 self.match(WdlV1Parser.COLON) self.state = 560 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_runtimeContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def RUNTIME(self): return self.getToken(WdlV1Parser.RUNTIME, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def task_runtime_kv(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Task_runtime_kvContext) else: return self.getTypedRuleContext(WdlV1Parser.Task_runtime_kvContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_task_runtime def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_runtime" ): listener.enterTask_runtime(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_runtime" ): listener.exitTask_runtime(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_runtime" ): return visitor.visitTask_runtime(self) else: return visitor.visitChildren(self) def task_runtime(self): localctx = WdlV1Parser.Task_runtimeContext(self, self._ctx, self.state) self.enterRule(localctx, 78, self.RULE_task_runtime) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 562 self.match(WdlV1Parser.RUNTIME) self.state = 563 self.match(WdlV1Parser.LBRACE) self.state = 567 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.Identifier: self.state = 564 self.task_runtime_kv() self.state = 569 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 570 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlV1Parser.INPUT, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def any_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Any_declsContext) else: return self.getTypedRuleContext(WdlV1Parser.Any_declsContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_task_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_input" ): listener.enterTask_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_input" ): listener.exitTask_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_input" ): return visitor.visitTask_input(self) else: return visitor.visitChildren(self) def task_input(self): localctx = WdlV1Parser.Task_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 80, self.RULE_task_input) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 572 self.match(WdlV1Parser.INPUT) self.state = 573 self.match(WdlV1Parser.LBRACE) self.state = 577 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.ARRAY - 21)) | (1 << (WdlV1Parser.MAP - 21)) | (1 << (WdlV1Parser.PAIR - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0): self.state = 574 self.any_decls() self.state = 579 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 580 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_outputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def OUTPUT(self): return self.getToken(WdlV1Parser.OUTPUT, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def bound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Bound_declsContext) else: return self.getTypedRuleContext(WdlV1Parser.Bound_declsContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_task_output def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_output" ): listener.enterTask_output(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_output" ): listener.exitTask_output(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_output" ): return visitor.visitTask_output(self) else: return visitor.visitChildren(self) def task_output(self): localctx = WdlV1Parser.Task_outputContext(self, self._ctx, self.state) self.enterRule(localctx, 82, self.RULE_task_output) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 582 self.match(WdlV1Parser.OUTPUT) self.state = 583 self.match(WdlV1Parser.LBRACE) self.state = 587 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.ARRAY - 21)) | (1 << (WdlV1Parser.MAP - 21)) | (1 << (WdlV1Parser.PAIR - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0): self.state = 584 self.bound_decls() self.state = 589 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 590 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_string_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def CommandStringPart(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.CommandStringPart) else: return self.getToken(WdlV1Parser.CommandStringPart, i) def getRuleIndex(self): return WdlV1Parser.RULE_task_command_string_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_string_part" ): listener.enterTask_command_string_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_string_part" ): listener.exitTask_command_string_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_string_part" ): return visitor.visitTask_command_string_part(self) else: return visitor.visitChildren(self) def task_command_string_part(self): localctx = WdlV1Parser.Task_command_string_partContext(self, self._ctx, self.state) self.enterRule(localctx, 84, self.RULE_task_command_string_part) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 595 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.CommandStringPart: self.state = 592 self.match(WdlV1Parser.CommandStringPart) self.state = 597 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_expr_partContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def StringCommandStart(self): return self.getToken(WdlV1Parser.StringCommandStart, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def expression_placeholder_option(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Expression_placeholder_optionContext) else: return self.getTypedRuleContext(WdlV1Parser.Expression_placeholder_optionContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_task_command_expr_part def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_expr_part" ): listener.enterTask_command_expr_part(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_expr_part" ): listener.exitTask_command_expr_part(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_expr_part" ): return visitor.visitTask_command_expr_part(self) else: return visitor.visitChildren(self) def task_command_expr_part(self): localctx = WdlV1Parser.Task_command_expr_partContext(self, self._ctx, self.state) self.enterRule(localctx, 86, self.RULE_task_command_expr_part) try: self.enterOuterAlt(localctx, 1) self.state = 598 self.match(WdlV1Parser.StringCommandStart) self.state = 602 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,53,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 599 self.expression_placeholder_option() self.state = 604 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,53,self._ctx) self.state = 605 self.expr() self.state = 606 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_command_expr_with_stringContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def task_command_expr_part(self): return self.getTypedRuleContext(WdlV1Parser.Task_command_expr_partContext,0) def task_command_string_part(self): return self.getTypedRuleContext(WdlV1Parser.Task_command_string_partContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_task_command_expr_with_string def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command_expr_with_string" ): listener.enterTask_command_expr_with_string(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command_expr_with_string" ): listener.exitTask_command_expr_with_string(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command_expr_with_string" ): return visitor.visitTask_command_expr_with_string(self) else: return visitor.visitChildren(self) def task_command_expr_with_string(self): localctx = WdlV1Parser.Task_command_expr_with_stringContext(self, self._ctx, self.state) self.enterRule(localctx, 88, self.RULE_task_command_expr_with_string) try: self.enterOuterAlt(localctx, 1) self.state = 608 self.task_command_expr_part() self.state = 609 self.task_command_string_part() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_commandContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def COMMAND(self): return self.getToken(WdlV1Parser.COMMAND, 0) def BeginLBrace(self): return self.getToken(WdlV1Parser.BeginLBrace, 0) def task_command_string_part(self): return self.getTypedRuleContext(WdlV1Parser.Task_command_string_partContext,0) def EndCommand(self): return self.getToken(WdlV1Parser.EndCommand, 0) def task_command_expr_with_string(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Task_command_expr_with_stringContext) else: return self.getTypedRuleContext(WdlV1Parser.Task_command_expr_with_stringContext,i) def BeginHereDoc(self): return self.getToken(WdlV1Parser.BeginHereDoc, 0) def getRuleIndex(self): return WdlV1Parser.RULE_task_command def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_command" ): listener.enterTask_command(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_command" ): listener.exitTask_command(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_command" ): return visitor.visitTask_command(self) else: return visitor.visitChildren(self) def task_command(self): localctx = WdlV1Parser.Task_commandContext(self, self._ctx, self.state) self.enterRule(localctx, 90, self.RULE_task_command) self._la = 0 # Token type try: self.state = 633 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,56,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 611 self.match(WdlV1Parser.COMMAND) self.state = 612 self.match(WdlV1Parser.BeginLBrace) self.state = 613 self.task_command_string_part() self.state = 617 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.StringCommandStart: self.state = 614 self.task_command_expr_with_string() self.state = 619 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 620 self.match(WdlV1Parser.EndCommand) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) self.state = 622 self.match(WdlV1Parser.COMMAND) self.state = 623 self.match(WdlV1Parser.BeginHereDoc) self.state = 624 self.task_command_string_part() self.state = 628 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.StringCommandStart: self.state = 625 self.task_command_expr_with_string() self.state = 630 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 631 self.match(WdlV1Parser.EndCommand) pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Task_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def task_input(self): return self.getTypedRuleContext(WdlV1Parser.Task_inputContext,0) def task_output(self): return self.getTypedRuleContext(WdlV1Parser.Task_outputContext,0) def task_command(self): return self.getTypedRuleContext(WdlV1Parser.Task_commandContext,0) def task_runtime(self): return self.getTypedRuleContext(WdlV1Parser.Task_runtimeContext,0) def bound_decls(self): return self.getTypedRuleContext(WdlV1Parser.Bound_declsContext,0) def parameter_meta(self): return self.getTypedRuleContext(WdlV1Parser.Parameter_metaContext,0) def meta(self): return self.getTypedRuleContext(WdlV1Parser.MetaContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_task_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask_element" ): listener.enterTask_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask_element" ): listener.exitTask_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask_element" ): return visitor.visitTask_element(self) else: return visitor.visitChildren(self) def task_element(self): localctx = WdlV1Parser.Task_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 92, self.RULE_task_element) try: self.state = 642 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.INPUT]: self.enterOuterAlt(localctx, 1) self.state = 635 self.task_input() pass elif token in [WdlV1Parser.OUTPUT]: self.enterOuterAlt(localctx, 2) self.state = 636 self.task_output() pass elif token in [WdlV1Parser.COMMAND]: self.enterOuterAlt(localctx, 3) self.state = 637 self.task_command() pass elif token in [WdlV1Parser.RUNTIME]: self.enterOuterAlt(localctx, 4) self.state = 638 self.task_runtime() pass elif token in [WdlV1Parser.BOOLEAN, WdlV1Parser.INT, WdlV1Parser.FLOAT, WdlV1Parser.STRING, WdlV1Parser.FILE, WdlV1Parser.ARRAY, WdlV1Parser.MAP, WdlV1Parser.PAIR, WdlV1Parser.OBJECT, WdlV1Parser.Identifier]: self.enterOuterAlt(localctx, 5) self.state = 639 self.bound_decls() pass elif token in [WdlV1Parser.PARAMETERMETA]: self.enterOuterAlt(localctx, 6) self.state = 640 self.parameter_meta() pass elif token in [WdlV1Parser.META]: self.enterOuterAlt(localctx, 7) self.state = 641 self.meta() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class TaskContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def TASK(self): return self.getToken(WdlV1Parser.TASK, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def task_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Task_elementContext) else: return self.getTypedRuleContext(WdlV1Parser.Task_elementContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_task def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterTask" ): listener.enterTask(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTask" ): listener.exitTask(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitTask" ): return visitor.visitTask(self) else: return visitor.visitChildren(self) def task(self): localctx = WdlV1Parser.TaskContext(self, self._ctx, self.state) self.enterRule(localctx, 94, self.RULE_task) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 644 self.match(WdlV1Parser.TASK) self.state = 645 self.match(WdlV1Parser.Identifier) self.state = 646 self.match(WdlV1Parser.LBRACE) self.state = 648 self._errHandler.sync(self) _la = self._input.LA(1) while True: self.state = 647 self.task_element() self.state = 650 self._errHandler.sync(self) _la = self._input.LA(1) if not (((((_la - 15)) & ~0x3f) == 0 and ((1 << (_la - 15)) & ((1 << (WdlV1Parser.INPUT - 15)) | (1 << (WdlV1Parser.OUTPUT - 15)) | (1 << (WdlV1Parser.PARAMETERMETA - 15)) | (1 << (WdlV1Parser.META - 15)) | (1 << (WdlV1Parser.COMMAND - 15)) | (1 << (WdlV1Parser.RUNTIME - 15)) | (1 << (WdlV1Parser.BOOLEAN - 15)) | (1 << (WdlV1Parser.INT - 15)) | (1 << (WdlV1Parser.FLOAT - 15)) | (1 << (WdlV1Parser.STRING - 15)) | (1 << (WdlV1Parser.FILE - 15)) | (1 << (WdlV1Parser.ARRAY - 15)) | (1 << (WdlV1Parser.MAP - 15)) | (1 << (WdlV1Parser.PAIR - 15)) | (1 << (WdlV1Parser.OBJECT - 15)) | (1 << (WdlV1Parser.Identifier - 15)))) != 0)): break self.state = 652 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Inner_workflow_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def bound_decls(self): return self.getTypedRuleContext(WdlV1Parser.Bound_declsContext,0) def call(self): return self.getTypedRuleContext(WdlV1Parser.CallContext,0) def scatter(self): return self.getTypedRuleContext(WdlV1Parser.ScatterContext,0) def conditional(self): return self.getTypedRuleContext(WdlV1Parser.ConditionalContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_inner_workflow_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInner_workflow_element" ): listener.enterInner_workflow_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInner_workflow_element" ): listener.exitInner_workflow_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInner_workflow_element" ): return visitor.visitInner_workflow_element(self) else: return visitor.visitChildren(self) def inner_workflow_element(self): localctx = WdlV1Parser.Inner_workflow_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 96, self.RULE_inner_workflow_element) try: self.state = 658 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.BOOLEAN, WdlV1Parser.INT, WdlV1Parser.FLOAT, WdlV1Parser.STRING, WdlV1Parser.FILE, WdlV1Parser.ARRAY, WdlV1Parser.MAP, WdlV1Parser.PAIR, WdlV1Parser.OBJECT, WdlV1Parser.Identifier]: self.enterOuterAlt(localctx, 1) self.state = 654 self.bound_decls() pass elif token in [WdlV1Parser.CALL]: self.enterOuterAlt(localctx, 2) self.state = 655 self.call() pass elif token in [WdlV1Parser.SCATTER]: self.enterOuterAlt(localctx, 3) self.state = 656 self.scatter() pass elif token in [WdlV1Parser.IF]: self.enterOuterAlt(localctx, 4) self.state = 657 self.conditional() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_aliasContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def AS(self): return self.getToken(WdlV1Parser.AS, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def getRuleIndex(self): return WdlV1Parser.RULE_call_alias def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_alias" ): listener.enterCall_alias(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_alias" ): listener.exitCall_alias(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_alias" ): return visitor.visitCall_alias(self) else: return visitor.visitChildren(self) def call_alias(self): localctx = WdlV1Parser.Call_aliasContext(self, self._ctx, self.state) self.enterRule(localctx, 98, self.RULE_call_alias) try: self.enterOuterAlt(localctx, 1) self.state = 660 self.match(WdlV1Parser.AS) self.state = 661 self.match(WdlV1Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def EQUAL(self): return self.getToken(WdlV1Parser.EQUAL, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_call_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_input" ): listener.enterCall_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_input" ): listener.exitCall_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_input" ): return visitor.visitCall_input(self) else: return visitor.visitChildren(self) def call_input(self): localctx = WdlV1Parser.Call_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 100, self.RULE_call_input) try: self.enterOuterAlt(localctx, 1) self.state = 663 self.match(WdlV1Parser.Identifier) self.state = 664 self.match(WdlV1Parser.EQUAL) self.state = 665 self.expr() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_inputsContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlV1Parser.INPUT, 0) def COLON(self): return self.getToken(WdlV1Parser.COLON, 0) def call_input(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Call_inputContext) else: return self.getTypedRuleContext(WdlV1Parser.Call_inputContext,i) def COMMA(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.COMMA) else: return self.getToken(WdlV1Parser.COMMA, i) def getRuleIndex(self): return WdlV1Parser.RULE_call_inputs def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_inputs" ): listener.enterCall_inputs(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_inputs" ): listener.exitCall_inputs(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_inputs" ): return visitor.visitCall_inputs(self) else: return visitor.visitChildren(self) def call_inputs(self): localctx = WdlV1Parser.Call_inputsContext(self, self._ctx, self.state) self.enterRule(localctx, 102, self.RULE_call_inputs) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 667 self.match(WdlV1Parser.INPUT) self.state = 668 self.match(WdlV1Parser.COLON) self.state = 682 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.Identifier: self.state = 669 self.call_input() self.state = 674 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,60,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: self.state = 670 self.match(WdlV1Parser.COMMA) self.state = 671 self.call_input() self.state = 676 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,60,self._ctx) self.state = 678 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.COMMA: self.state = 677 self.match(WdlV1Parser.COMMA) self.state = 684 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_bodyContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def call_inputs(self): return self.getTypedRuleContext(WdlV1Parser.Call_inputsContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_call_body def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_body" ): listener.enterCall_body(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_body" ): listener.exitCall_body(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_body" ): return visitor.visitCall_body(self) else: return visitor.visitChildren(self) def call_body(self): localctx = WdlV1Parser.Call_bodyContext(self, self._ctx, self.state) self.enterRule(localctx, 104, self.RULE_call_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 685 self.match(WdlV1Parser.LBRACE) self.state = 687 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.INPUT: self.state = 686 self.call_inputs() self.state = 689 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Call_nameContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def Identifier(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.Identifier) else: return self.getToken(WdlV1Parser.Identifier, i) def DOT(self, i:int=None): if i is None: return self.getTokens(WdlV1Parser.DOT) else: return self.getToken(WdlV1Parser.DOT, i) def getRuleIndex(self): return WdlV1Parser.RULE_call_name def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall_name" ): listener.enterCall_name(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall_name" ): listener.exitCall_name(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall_name" ): return visitor.visitCall_name(self) else: return visitor.visitChildren(self) def call_name(self): localctx = WdlV1Parser.Call_nameContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_call_name) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 691 self.match(WdlV1Parser.Identifier) self.state = 696 self._errHandler.sync(self) _la = self._input.LA(1) while _la==WdlV1Parser.DOT: self.state = 692 self.match(WdlV1Parser.DOT) self.state = 693 self.match(WdlV1Parser.Identifier) self.state = 698 self._errHandler.sync(self) _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class CallContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def CALL(self): return self.getToken(WdlV1Parser.CALL, 0) def call_name(self): return self.getTypedRuleContext(WdlV1Parser.Call_nameContext,0) def call_alias(self): return self.getTypedRuleContext(WdlV1Parser.Call_aliasContext,0) def call_body(self): return self.getTypedRuleContext(WdlV1Parser.Call_bodyContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_call def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterCall" ): listener.enterCall(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCall" ): listener.exitCall(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitCall" ): return visitor.visitCall(self) else: return visitor.visitChildren(self) def call(self): localctx = WdlV1Parser.CallContext(self, self._ctx, self.state) self.enterRule(localctx, 108, self.RULE_call) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 699 self.match(WdlV1Parser.CALL) self.state = 700 self.call_name() self.state = 702 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.AS: self.state = 701 self.call_alias() self.state = 705 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.LBRACE: self.state = 704 self.call_body() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ScatterContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def SCATTER(self): return self.getToken(WdlV1Parser.SCATTER, 0) def LPAREN(self): return self.getToken(WdlV1Parser.LPAREN, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def In(self): return self.getToken(WdlV1Parser.In, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RPAREN(self): return self.getToken(WdlV1Parser.RPAREN, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def inner_workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Inner_workflow_elementContext) else: return self.getTypedRuleContext(WdlV1Parser.Inner_workflow_elementContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_scatter def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterScatter" ): listener.enterScatter(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitScatter" ): listener.exitScatter(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitScatter" ): return visitor.visitScatter(self) else: return visitor.visitChildren(self) def scatter(self): localctx = WdlV1Parser.ScatterContext(self, self._ctx, self.state) self.enterRule(localctx, 110, self.RULE_scatter) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 707 self.match(WdlV1Parser.SCATTER) self.state = 708 self.match(WdlV1Parser.LPAREN) self.state = 709 self.match(WdlV1Parser.Identifier) self.state = 710 self.match(WdlV1Parser.In) self.state = 711 self.expr() self.state = 712 self.match(WdlV1Parser.RPAREN) self.state = 713 self.match(WdlV1Parser.LBRACE) self.state = 717 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 7)) & ~0x3f) == 0 and ((1 << (_la - 7)) & ((1 << (WdlV1Parser.SCATTER - 7)) | (1 << (WdlV1Parser.CALL - 7)) | (1 << (WdlV1Parser.IF - 7)) | (1 << (WdlV1Parser.BOOLEAN - 7)) | (1 << (WdlV1Parser.INT - 7)) | (1 << (WdlV1Parser.FLOAT - 7)) | (1 << (WdlV1Parser.STRING - 7)) | (1 << (WdlV1Parser.FILE - 7)) | (1 << (WdlV1Parser.ARRAY - 7)) | (1 << (WdlV1Parser.MAP - 7)) | (1 << (WdlV1Parser.PAIR - 7)) | (1 << (WdlV1Parser.OBJECT - 7)) | (1 << (WdlV1Parser.Identifier - 7)))) != 0): self.state = 714 self.inner_workflow_element() self.state = 719 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 720 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class ConditionalContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def IF(self): return self.getToken(WdlV1Parser.IF, 0) def LPAREN(self): return self.getToken(WdlV1Parser.LPAREN, 0) def expr(self): return self.getTypedRuleContext(WdlV1Parser.ExprContext,0) def RPAREN(self): return self.getToken(WdlV1Parser.RPAREN, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def inner_workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Inner_workflow_elementContext) else: return self.getTypedRuleContext(WdlV1Parser.Inner_workflow_elementContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_conditional def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterConditional" ): listener.enterConditional(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConditional" ): listener.exitConditional(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitConditional" ): return visitor.visitConditional(self) else: return visitor.visitChildren(self) def conditional(self): localctx = WdlV1Parser.ConditionalContext(self, self._ctx, self.state) self.enterRule(localctx, 112, self.RULE_conditional) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 722 self.match(WdlV1Parser.IF) self.state = 723 self.match(WdlV1Parser.LPAREN) self.state = 724 self.expr() self.state = 725 self.match(WdlV1Parser.RPAREN) self.state = 726 self.match(WdlV1Parser.LBRACE) self.state = 730 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 7)) & ~0x3f) == 0 and ((1 << (_la - 7)) & ((1 << (WdlV1Parser.SCATTER - 7)) | (1 << (WdlV1Parser.CALL - 7)) | (1 << (WdlV1Parser.IF - 7)) | (1 << (WdlV1Parser.BOOLEAN - 7)) | (1 << (WdlV1Parser.INT - 7)) | (1 << (WdlV1Parser.FLOAT - 7)) | (1 << (WdlV1Parser.STRING - 7)) | (1 << (WdlV1Parser.FILE - 7)) | (1 << (WdlV1Parser.ARRAY - 7)) | (1 << (WdlV1Parser.MAP - 7)) | (1 << (WdlV1Parser.PAIR - 7)) | (1 << (WdlV1Parser.OBJECT - 7)) | (1 << (WdlV1Parser.Identifier - 7)))) != 0): self.state = 727 self.inner_workflow_element() self.state = 732 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 733 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_inputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def INPUT(self): return self.getToken(WdlV1Parser.INPUT, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def any_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Any_declsContext) else: return self.getTypedRuleContext(WdlV1Parser.Any_declsContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_workflow_input def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow_input" ): listener.enterWorkflow_input(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow_input" ): listener.exitWorkflow_input(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow_input" ): return visitor.visitWorkflow_input(self) else: return visitor.visitChildren(self) def workflow_input(self): localctx = WdlV1Parser.Workflow_inputContext(self, self._ctx, self.state) self.enterRule(localctx, 114, self.RULE_workflow_input) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 735 self.match(WdlV1Parser.INPUT) self.state = 736 self.match(WdlV1Parser.LBRACE) self.state = 740 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.ARRAY - 21)) | (1 << (WdlV1Parser.MAP - 21)) | (1 << (WdlV1Parser.PAIR - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0): self.state = 737 self.any_decls() self.state = 742 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 743 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_outputContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def OUTPUT(self): return self.getToken(WdlV1Parser.OUTPUT, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def bound_decls(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Bound_declsContext) else: return self.getTypedRuleContext(WdlV1Parser.Bound_declsContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_workflow_output def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow_output" ): listener.enterWorkflow_output(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow_output" ): listener.exitWorkflow_output(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow_output" ): return visitor.visitWorkflow_output(self) else: return visitor.visitChildren(self) def workflow_output(self): localctx = WdlV1Parser.Workflow_outputContext(self, self._ctx, self.state) self.enterRule(localctx, 116, self.RULE_workflow_output) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 745 self.match(WdlV1Parser.OUTPUT) self.state = 746 self.match(WdlV1Parser.LBRACE) self.state = 750 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 21)) & ~0x3f) == 0 and ((1 << (_la - 21)) & ((1 << (WdlV1Parser.BOOLEAN - 21)) | (1 << (WdlV1Parser.INT - 21)) | (1 << (WdlV1Parser.FLOAT - 21)) | (1 << (WdlV1Parser.STRING - 21)) | (1 << (WdlV1Parser.FILE - 21)) | (1 << (WdlV1Parser.ARRAY - 21)) | (1 << (WdlV1Parser.MAP - 21)) | (1 << (WdlV1Parser.PAIR - 21)) | (1 << (WdlV1Parser.OBJECT - 21)) | (1 << (WdlV1Parser.Identifier - 21)))) != 0): self.state = 747 self.bound_decls() self.state = 752 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 753 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Workflow_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def getRuleIndex(self): return WdlV1Parser.RULE_workflow_element def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) class OutputContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def workflow_output(self): return self.getTypedRuleContext(WdlV1Parser.Workflow_outputContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterOutput" ): listener.enterOutput(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOutput" ): listener.exitOutput(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitOutput" ): return visitor.visitOutput(self) else: return visitor.visitChildren(self) class InputContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def workflow_input(self): return self.getTypedRuleContext(WdlV1Parser.Workflow_inputContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInput" ): listener.enterInput(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInput" ): listener.exitInput(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInput" ): return visitor.visitInput(self) else: return visitor.visitChildren(self) class Parameter_meta_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def parameter_meta(self): return self.getTypedRuleContext(WdlV1Parser.Parameter_metaContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterParameter_meta_element" ): listener.enterParameter_meta_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_meta_element" ): listener.exitParameter_meta_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitParameter_meta_element" ): return visitor.visitParameter_meta_element(self) else: return visitor.visitChildren(self) class Meta_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def meta(self): return self.getTypedRuleContext(WdlV1Parser.MetaContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterMeta_element" ): listener.enterMeta_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMeta_element" ): listener.exitMeta_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitMeta_element" ): return visitor.visitMeta_element(self) else: return visitor.visitChildren(self) class Inner_elementContext(Workflow_elementContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a WdlV1Parser.Workflow_elementContext super().__init__(parser) self.copyFrom(ctx) def inner_workflow_element(self): return self.getTypedRuleContext(WdlV1Parser.Inner_workflow_elementContext,0) def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterInner_element" ): listener.enterInner_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInner_element" ): listener.exitInner_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitInner_element" ): return visitor.visitInner_element(self) else: return visitor.visitChildren(self) def workflow_element(self): localctx = WdlV1Parser.Workflow_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 118, self.RULE_workflow_element) try: self.state = 760 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.INPUT]: localctx = WdlV1Parser.InputContext(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 755 self.workflow_input() pass elif token in [WdlV1Parser.OUTPUT]: localctx = WdlV1Parser.OutputContext(self, localctx) self.enterOuterAlt(localctx, 2) self.state = 756 self.workflow_output() pass elif token in [WdlV1Parser.SCATTER, WdlV1Parser.CALL, WdlV1Parser.IF, WdlV1Parser.BOOLEAN, WdlV1Parser.INT, WdlV1Parser.FLOAT, WdlV1Parser.STRING, WdlV1Parser.FILE, WdlV1Parser.ARRAY, WdlV1Parser.MAP, WdlV1Parser.PAIR, WdlV1Parser.OBJECT, WdlV1Parser.Identifier]: localctx = WdlV1Parser.Inner_elementContext(self, localctx) self.enterOuterAlt(localctx, 3) self.state = 757 self.inner_workflow_element() pass elif token in [WdlV1Parser.PARAMETERMETA]: localctx = WdlV1Parser.Parameter_meta_elementContext(self, localctx) self.enterOuterAlt(localctx, 4) self.state = 758 self.parameter_meta() pass elif token in [WdlV1Parser.META]: localctx = WdlV1Parser.Meta_elementContext(self, localctx) self.enterOuterAlt(localctx, 5) self.state = 759 self.meta() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class WorkflowContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def WORKFLOW(self): return self.getToken(WdlV1Parser.WORKFLOW, 0) def Identifier(self): return self.getToken(WdlV1Parser.Identifier, 0) def LBRACE(self): return self.getToken(WdlV1Parser.LBRACE, 0) def RBRACE(self): return self.getToken(WdlV1Parser.RBRACE, 0) def workflow_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Workflow_elementContext) else: return self.getTypedRuleContext(WdlV1Parser.Workflow_elementContext,i) def getRuleIndex(self): return WdlV1Parser.RULE_workflow def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterWorkflow" ): listener.enterWorkflow(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWorkflow" ): listener.exitWorkflow(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitWorkflow" ): return visitor.visitWorkflow(self) else: return visitor.visitChildren(self) def workflow(self): localctx = WdlV1Parser.WorkflowContext(self, self._ctx, self.state) self.enterRule(localctx, 120, self.RULE_workflow) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 762 self.match(WdlV1Parser.WORKFLOW) self.state = 763 self.match(WdlV1Parser.Identifier) self.state = 764 self.match(WdlV1Parser.LBRACE) self.state = 768 self._errHandler.sync(self) _la = self._input.LA(1) while ((((_la - 7)) & ~0x3f) == 0 and ((1 << (_la - 7)) & ((1 << (WdlV1Parser.SCATTER - 7)) | (1 << (WdlV1Parser.CALL - 7)) | (1 << (WdlV1Parser.IF - 7)) | (1 << (WdlV1Parser.INPUT - 7)) | (1 << (WdlV1Parser.OUTPUT - 7)) | (1 << (WdlV1Parser.PARAMETERMETA - 7)) | (1 << (WdlV1Parser.META - 7)) | (1 << (WdlV1Parser.BOOLEAN - 7)) | (1 << (WdlV1Parser.INT - 7)) | (1 << (WdlV1Parser.FLOAT - 7)) | (1 << (WdlV1Parser.STRING - 7)) | (1 << (WdlV1Parser.FILE - 7)) | (1 << (WdlV1Parser.ARRAY - 7)) | (1 << (WdlV1Parser.MAP - 7)) | (1 << (WdlV1Parser.PAIR - 7)) | (1 << (WdlV1Parser.OBJECT - 7)) | (1 << (WdlV1Parser.Identifier - 7)))) != 0): self.state = 765 self.workflow_element() self.state = 770 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 771 self.match(WdlV1Parser.RBRACE) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class Document_elementContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def import_doc(self): return self.getTypedRuleContext(WdlV1Parser.Import_docContext,0) def struct(self): return self.getTypedRuleContext(WdlV1Parser.StructContext,0) def task(self): return self.getTypedRuleContext(WdlV1Parser.TaskContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_document_element def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDocument_element" ): listener.enterDocument_element(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDocument_element" ): listener.exitDocument_element(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDocument_element" ): return visitor.visitDocument_element(self) else: return visitor.visitChildren(self) def document_element(self): localctx = WdlV1Parser.Document_elementContext(self, self._ctx, self.state) self.enterRule(localctx, 122, self.RULE_document_element) try: self.state = 776 self._errHandler.sync(self) token = self._input.LA(1) if token in [WdlV1Parser.IMPORT]: self.enterOuterAlt(localctx, 1) self.state = 773 self.import_doc() pass elif token in [WdlV1Parser.STRUCT]: self.enterOuterAlt(localctx, 2) self.state = 774 self.struct() pass elif token in [WdlV1Parser.TASK]: self.enterOuterAlt(localctx, 3) self.state = 775 self.task() pass else: raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx class DocumentContext(ParserRuleContext): def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def version(self): return self.getTypedRuleContext(WdlV1Parser.VersionContext,0) def EOF(self): return self.getToken(WdlV1Parser.EOF, 0) def document_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(WdlV1Parser.Document_elementContext) else: return self.getTypedRuleContext(WdlV1Parser.Document_elementContext,i) def workflow(self): return self.getTypedRuleContext(WdlV1Parser.WorkflowContext,0) def getRuleIndex(self): return WdlV1Parser.RULE_document def enterRule(self, listener:ParseTreeListener): if hasattr( listener, "enterDocument" ): listener.enterDocument(self) def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDocument" ): listener.exitDocument(self) def accept(self, visitor:ParseTreeVisitor): if hasattr( visitor, "visitDocument" ): return visitor.visitDocument(self) else: return visitor.visitChildren(self) def document(self): localctx = WdlV1Parser.DocumentContext(self, self._ctx, self.state) self.enterRule(localctx, 124, self.RULE_document) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 778 self.version() self.state = 782 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlV1Parser.IMPORT) | (1 << WdlV1Parser.TASK) | (1 << WdlV1Parser.STRUCT))) != 0): self.state = 779 self.document_element() self.state = 784 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 792 self._errHandler.sync(self) _la = self._input.LA(1) if _la==WdlV1Parser.WORKFLOW: self.state = 785 self.workflow() self.state = 789 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << WdlV1Parser.IMPORT) | (1 << WdlV1Parser.TASK) | (1 << WdlV1Parser.STRUCT))) != 0): self.state = 786 self.document_element() self.state = 791 self._errHandler.sync(self) _la = self._input.LA(1) self.state = 794 self.match(WdlV1Parser.EOF) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: self.exitRule() return localctx def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() self._predicates[17] = self.expr_infix0_sempred self._predicates[18] = self.expr_infix1_sempred self._predicates[19] = self.expr_infix2_sempred self._predicates[20] = self.expr_infix3_sempred self._predicates[21] = self.expr_infix4_sempred self._predicates[23] = self.expr_core_sempred pred = self._predicates.get(ruleIndex, None) if pred is None: raise Exception("No predicate with index:" + str(ruleIndex)) else: return pred(localctx, predIndex) def expr_infix0_sempred(self, localctx:Expr_infix0Context, predIndex:int): if predIndex == 0: return self.precpred(self._ctx, 2) def expr_infix1_sempred(self, localctx:Expr_infix1Context, predIndex:int): if predIndex == 1: return self.precpred(self._ctx, 2) def expr_infix2_sempred(self, localctx:Expr_infix2Context, predIndex:int): if predIndex == 2: return self.precpred(self._ctx, 7) if predIndex == 3: return self.precpred(self._ctx, 6) if predIndex == 4: return self.precpred(self._ctx, 5) if predIndex == 5: return self.precpred(self._ctx, 4) if predIndex == 6: return self.precpred(self._ctx, 3) if predIndex == 7: return self.precpred(self._ctx, 2) def expr_infix3_sempred(self, localctx:Expr_infix3Context, predIndex:int): if predIndex == 8: return self.precpred(self._ctx, 3) if predIndex == 9: return self.precpred(self._ctx, 2) def expr_infix4_sempred(self, localctx:Expr_infix4Context, predIndex:int): if predIndex == 10: return self.precpred(self._ctx, 4) if predIndex == 11: return self.precpred(self._ctx, 3) if predIndex == 12: return self.precpred(self._ctx, 2) def expr_core_sempred(self, localctx:Expr_coreContext, predIndex:int): if predIndex == 13: return self.precpred(self._ctx, 6) if predIndex == 14: return self.precpred(self._ctx, 5) wdlparse-0.1.0/wdlparse/v1/WdlV1ParserListener.py0000644000076500000240000006306113770744636022155 0ustar wlgaostaff00000000000000# Generated from WdlV1Parser.g4 by ANTLR 4.8 from antlr4 import * if __name__ is not None and "." in __name__: from .WdlV1Parser import WdlV1Parser else: from WdlV1Parser import WdlV1Parser # This class defines a complete listener for a parse tree produced by WdlV1Parser. class WdlV1ParserListener(ParseTreeListener): # Enter a parse tree produced by WdlV1Parser#map_type. def enterMap_type(self, ctx:WdlV1Parser.Map_typeContext): pass # Exit a parse tree produced by WdlV1Parser#map_type. def exitMap_type(self, ctx:WdlV1Parser.Map_typeContext): pass # Enter a parse tree produced by WdlV1Parser#array_type. def enterArray_type(self, ctx:WdlV1Parser.Array_typeContext): pass # Exit a parse tree produced by WdlV1Parser#array_type. def exitArray_type(self, ctx:WdlV1Parser.Array_typeContext): pass # Enter a parse tree produced by WdlV1Parser#pair_type. def enterPair_type(self, ctx:WdlV1Parser.Pair_typeContext): pass # Exit a parse tree produced by WdlV1Parser#pair_type. def exitPair_type(self, ctx:WdlV1Parser.Pair_typeContext): pass # Enter a parse tree produced by WdlV1Parser#type_base. def enterType_base(self, ctx:WdlV1Parser.Type_baseContext): pass # Exit a parse tree produced by WdlV1Parser#type_base. def exitType_base(self, ctx:WdlV1Parser.Type_baseContext): pass # Enter a parse tree produced by WdlV1Parser#wdl_type. def enterWdl_type(self, ctx:WdlV1Parser.Wdl_typeContext): pass # Exit a parse tree produced by WdlV1Parser#wdl_type. def exitWdl_type(self, ctx:WdlV1Parser.Wdl_typeContext): pass # Enter a parse tree produced by WdlV1Parser#unbound_decls. def enterUnbound_decls(self, ctx:WdlV1Parser.Unbound_declsContext): pass # Exit a parse tree produced by WdlV1Parser#unbound_decls. def exitUnbound_decls(self, ctx:WdlV1Parser.Unbound_declsContext): pass # Enter a parse tree produced by WdlV1Parser#bound_decls. def enterBound_decls(self, ctx:WdlV1Parser.Bound_declsContext): pass # Exit a parse tree produced by WdlV1Parser#bound_decls. def exitBound_decls(self, ctx:WdlV1Parser.Bound_declsContext): pass # Enter a parse tree produced by WdlV1Parser#any_decls. def enterAny_decls(self, ctx:WdlV1Parser.Any_declsContext): pass # Exit a parse tree produced by WdlV1Parser#any_decls. def exitAny_decls(self, ctx:WdlV1Parser.Any_declsContext): pass # Enter a parse tree produced by WdlV1Parser#number. def enterNumber(self, ctx:WdlV1Parser.NumberContext): pass # Exit a parse tree produced by WdlV1Parser#number. def exitNumber(self, ctx:WdlV1Parser.NumberContext): pass # Enter a parse tree produced by WdlV1Parser#expression_placeholder_option. def enterExpression_placeholder_option(self, ctx:WdlV1Parser.Expression_placeholder_optionContext): pass # Exit a parse tree produced by WdlV1Parser#expression_placeholder_option. def exitExpression_placeholder_option(self, ctx:WdlV1Parser.Expression_placeholder_optionContext): pass # Enter a parse tree produced by WdlV1Parser#string_part. def enterString_part(self, ctx:WdlV1Parser.String_partContext): pass # Exit a parse tree produced by WdlV1Parser#string_part. def exitString_part(self, ctx:WdlV1Parser.String_partContext): pass # Enter a parse tree produced by WdlV1Parser#string_expr_part. def enterString_expr_part(self, ctx:WdlV1Parser.String_expr_partContext): pass # Exit a parse tree produced by WdlV1Parser#string_expr_part. def exitString_expr_part(self, ctx:WdlV1Parser.String_expr_partContext): pass # Enter a parse tree produced by WdlV1Parser#string_expr_with_string_part. def enterString_expr_with_string_part(self, ctx:WdlV1Parser.String_expr_with_string_partContext): pass # Exit a parse tree produced by WdlV1Parser#string_expr_with_string_part. def exitString_expr_with_string_part(self, ctx:WdlV1Parser.String_expr_with_string_partContext): pass # Enter a parse tree produced by WdlV1Parser#string. def enterString(self, ctx:WdlV1Parser.StringContext): pass # Exit a parse tree produced by WdlV1Parser#string. def exitString(self, ctx:WdlV1Parser.StringContext): pass # Enter a parse tree produced by WdlV1Parser#primitive_literal. def enterPrimitive_literal(self, ctx:WdlV1Parser.Primitive_literalContext): pass # Exit a parse tree produced by WdlV1Parser#primitive_literal. def exitPrimitive_literal(self, ctx:WdlV1Parser.Primitive_literalContext): pass # Enter a parse tree produced by WdlV1Parser#expr. def enterExpr(self, ctx:WdlV1Parser.ExprContext): pass # Exit a parse tree produced by WdlV1Parser#expr. def exitExpr(self, ctx:WdlV1Parser.ExprContext): pass # Enter a parse tree produced by WdlV1Parser#infix0. def enterInfix0(self, ctx:WdlV1Parser.Infix0Context): pass # Exit a parse tree produced by WdlV1Parser#infix0. def exitInfix0(self, ctx:WdlV1Parser.Infix0Context): pass # Enter a parse tree produced by WdlV1Parser#infix1. def enterInfix1(self, ctx:WdlV1Parser.Infix1Context): pass # Exit a parse tree produced by WdlV1Parser#infix1. def exitInfix1(self, ctx:WdlV1Parser.Infix1Context): pass # Enter a parse tree produced by WdlV1Parser#lor. def enterLor(self, ctx:WdlV1Parser.LorContext): pass # Exit a parse tree produced by WdlV1Parser#lor. def exitLor(self, ctx:WdlV1Parser.LorContext): pass # Enter a parse tree produced by WdlV1Parser#infix2. def enterInfix2(self, ctx:WdlV1Parser.Infix2Context): pass # Exit a parse tree produced by WdlV1Parser#infix2. def exitInfix2(self, ctx:WdlV1Parser.Infix2Context): pass # Enter a parse tree produced by WdlV1Parser#land. def enterLand(self, ctx:WdlV1Parser.LandContext): pass # Exit a parse tree produced by WdlV1Parser#land. def exitLand(self, ctx:WdlV1Parser.LandContext): pass # Enter a parse tree produced by WdlV1Parser#eqeq. def enterEqeq(self, ctx:WdlV1Parser.EqeqContext): pass # Exit a parse tree produced by WdlV1Parser#eqeq. def exitEqeq(self, ctx:WdlV1Parser.EqeqContext): pass # Enter a parse tree produced by WdlV1Parser#lt. def enterLt(self, ctx:WdlV1Parser.LtContext): pass # Exit a parse tree produced by WdlV1Parser#lt. def exitLt(self, ctx:WdlV1Parser.LtContext): pass # Enter a parse tree produced by WdlV1Parser#infix3. def enterInfix3(self, ctx:WdlV1Parser.Infix3Context): pass # Exit a parse tree produced by WdlV1Parser#infix3. def exitInfix3(self, ctx:WdlV1Parser.Infix3Context): pass # Enter a parse tree produced by WdlV1Parser#gte. def enterGte(self, ctx:WdlV1Parser.GteContext): pass # Exit a parse tree produced by WdlV1Parser#gte. def exitGte(self, ctx:WdlV1Parser.GteContext): pass # Enter a parse tree produced by WdlV1Parser#neq. def enterNeq(self, ctx:WdlV1Parser.NeqContext): pass # Exit a parse tree produced by WdlV1Parser#neq. def exitNeq(self, ctx:WdlV1Parser.NeqContext): pass # Enter a parse tree produced by WdlV1Parser#lte. def enterLte(self, ctx:WdlV1Parser.LteContext): pass # Exit a parse tree produced by WdlV1Parser#lte. def exitLte(self, ctx:WdlV1Parser.LteContext): pass # Enter a parse tree produced by WdlV1Parser#gt. def enterGt(self, ctx:WdlV1Parser.GtContext): pass # Exit a parse tree produced by WdlV1Parser#gt. def exitGt(self, ctx:WdlV1Parser.GtContext): pass # Enter a parse tree produced by WdlV1Parser#add. def enterAdd(self, ctx:WdlV1Parser.AddContext): pass # Exit a parse tree produced by WdlV1Parser#add. def exitAdd(self, ctx:WdlV1Parser.AddContext): pass # Enter a parse tree produced by WdlV1Parser#sub. def enterSub(self, ctx:WdlV1Parser.SubContext): pass # Exit a parse tree produced by WdlV1Parser#sub. def exitSub(self, ctx:WdlV1Parser.SubContext): pass # Enter a parse tree produced by WdlV1Parser#infix4. def enterInfix4(self, ctx:WdlV1Parser.Infix4Context): pass # Exit a parse tree produced by WdlV1Parser#infix4. def exitInfix4(self, ctx:WdlV1Parser.Infix4Context): pass # Enter a parse tree produced by WdlV1Parser#mod. def enterMod(self, ctx:WdlV1Parser.ModContext): pass # Exit a parse tree produced by WdlV1Parser#mod. def exitMod(self, ctx:WdlV1Parser.ModContext): pass # Enter a parse tree produced by WdlV1Parser#mul. def enterMul(self, ctx:WdlV1Parser.MulContext): pass # Exit a parse tree produced by WdlV1Parser#mul. def exitMul(self, ctx:WdlV1Parser.MulContext): pass # Enter a parse tree produced by WdlV1Parser#divide. def enterDivide(self, ctx:WdlV1Parser.DivideContext): pass # Exit a parse tree produced by WdlV1Parser#divide. def exitDivide(self, ctx:WdlV1Parser.DivideContext): pass # Enter a parse tree produced by WdlV1Parser#infix5. def enterInfix5(self, ctx:WdlV1Parser.Infix5Context): pass # Exit a parse tree produced by WdlV1Parser#infix5. def exitInfix5(self, ctx:WdlV1Parser.Infix5Context): pass # Enter a parse tree produced by WdlV1Parser#expr_infix5. def enterExpr_infix5(self, ctx:WdlV1Parser.Expr_infix5Context): pass # Exit a parse tree produced by WdlV1Parser#expr_infix5. def exitExpr_infix5(self, ctx:WdlV1Parser.Expr_infix5Context): pass # Enter a parse tree produced by WdlV1Parser#pair_literal. def enterPair_literal(self, ctx:WdlV1Parser.Pair_literalContext): pass # Exit a parse tree produced by WdlV1Parser#pair_literal. def exitPair_literal(self, ctx:WdlV1Parser.Pair_literalContext): pass # Enter a parse tree produced by WdlV1Parser#unarysigned. def enterUnarysigned(self, ctx:WdlV1Parser.UnarysignedContext): pass # Exit a parse tree produced by WdlV1Parser#unarysigned. def exitUnarysigned(self, ctx:WdlV1Parser.UnarysignedContext): pass # Enter a parse tree produced by WdlV1Parser#apply. def enterApply(self, ctx:WdlV1Parser.ApplyContext): pass # Exit a parse tree produced by WdlV1Parser#apply. def exitApply(self, ctx:WdlV1Parser.ApplyContext): pass # Enter a parse tree produced by WdlV1Parser#expression_group. def enterExpression_group(self, ctx:WdlV1Parser.Expression_groupContext): pass # Exit a parse tree produced by WdlV1Parser#expression_group. def exitExpression_group(self, ctx:WdlV1Parser.Expression_groupContext): pass # Enter a parse tree produced by WdlV1Parser#primitives. def enterPrimitives(self, ctx:WdlV1Parser.PrimitivesContext): pass # Exit a parse tree produced by WdlV1Parser#primitives. def exitPrimitives(self, ctx:WdlV1Parser.PrimitivesContext): pass # Enter a parse tree produced by WdlV1Parser#left_name. def enterLeft_name(self, ctx:WdlV1Parser.Left_nameContext): pass # Exit a parse tree produced by WdlV1Parser#left_name. def exitLeft_name(self, ctx:WdlV1Parser.Left_nameContext): pass # Enter a parse tree produced by WdlV1Parser#at. def enterAt(self, ctx:WdlV1Parser.AtContext): pass # Exit a parse tree produced by WdlV1Parser#at. def exitAt(self, ctx:WdlV1Parser.AtContext): pass # Enter a parse tree produced by WdlV1Parser#negate. def enterNegate(self, ctx:WdlV1Parser.NegateContext): pass # Exit a parse tree produced by WdlV1Parser#negate. def exitNegate(self, ctx:WdlV1Parser.NegateContext): pass # Enter a parse tree produced by WdlV1Parser#map_literal. def enterMap_literal(self, ctx:WdlV1Parser.Map_literalContext): pass # Exit a parse tree produced by WdlV1Parser#map_literal. def exitMap_literal(self, ctx:WdlV1Parser.Map_literalContext): pass # Enter a parse tree produced by WdlV1Parser#ifthenelse. def enterIfthenelse(self, ctx:WdlV1Parser.IfthenelseContext): pass # Exit a parse tree produced by WdlV1Parser#ifthenelse. def exitIfthenelse(self, ctx:WdlV1Parser.IfthenelseContext): pass # Enter a parse tree produced by WdlV1Parser#get_name. def enterGet_name(self, ctx:WdlV1Parser.Get_nameContext): pass # Exit a parse tree produced by WdlV1Parser#get_name. def exitGet_name(self, ctx:WdlV1Parser.Get_nameContext): pass # Enter a parse tree produced by WdlV1Parser#object_literal. def enterObject_literal(self, ctx:WdlV1Parser.Object_literalContext): pass # Exit a parse tree produced by WdlV1Parser#object_literal. def exitObject_literal(self, ctx:WdlV1Parser.Object_literalContext): pass # Enter a parse tree produced by WdlV1Parser#array_literal. def enterArray_literal(self, ctx:WdlV1Parser.Array_literalContext): pass # Exit a parse tree produced by WdlV1Parser#array_literal. def exitArray_literal(self, ctx:WdlV1Parser.Array_literalContext): pass # Enter a parse tree produced by WdlV1Parser#version. def enterVersion(self, ctx:WdlV1Parser.VersionContext): pass # Exit a parse tree produced by WdlV1Parser#version. def exitVersion(self, ctx:WdlV1Parser.VersionContext): pass # Enter a parse tree produced by WdlV1Parser#import_alias. def enterImport_alias(self, ctx:WdlV1Parser.Import_aliasContext): pass # Exit a parse tree produced by WdlV1Parser#import_alias. def exitImport_alias(self, ctx:WdlV1Parser.Import_aliasContext): pass # Enter a parse tree produced by WdlV1Parser#import_as. def enterImport_as(self, ctx:WdlV1Parser.Import_asContext): pass # Exit a parse tree produced by WdlV1Parser#import_as. def exitImport_as(self, ctx:WdlV1Parser.Import_asContext): pass # Enter a parse tree produced by WdlV1Parser#import_doc. def enterImport_doc(self, ctx:WdlV1Parser.Import_docContext): pass # Exit a parse tree produced by WdlV1Parser#import_doc. def exitImport_doc(self, ctx:WdlV1Parser.Import_docContext): pass # Enter a parse tree produced by WdlV1Parser#struct. def enterStruct(self, ctx:WdlV1Parser.StructContext): pass # Exit a parse tree produced by WdlV1Parser#struct. def exitStruct(self, ctx:WdlV1Parser.StructContext): pass # Enter a parse tree produced by WdlV1Parser#meta_value. def enterMeta_value(self, ctx:WdlV1Parser.Meta_valueContext): pass # Exit a parse tree produced by WdlV1Parser#meta_value. def exitMeta_value(self, ctx:WdlV1Parser.Meta_valueContext): pass # Enter a parse tree produced by WdlV1Parser#meta_string_part. def enterMeta_string_part(self, ctx:WdlV1Parser.Meta_string_partContext): pass # Exit a parse tree produced by WdlV1Parser#meta_string_part. def exitMeta_string_part(self, ctx:WdlV1Parser.Meta_string_partContext): pass # Enter a parse tree produced by WdlV1Parser#meta_string. def enterMeta_string(self, ctx:WdlV1Parser.Meta_stringContext): pass # Exit a parse tree produced by WdlV1Parser#meta_string. def exitMeta_string(self, ctx:WdlV1Parser.Meta_stringContext): pass # Enter a parse tree produced by WdlV1Parser#meta_array. def enterMeta_array(self, ctx:WdlV1Parser.Meta_arrayContext): pass # Exit a parse tree produced by WdlV1Parser#meta_array. def exitMeta_array(self, ctx:WdlV1Parser.Meta_arrayContext): pass # Enter a parse tree produced by WdlV1Parser#meta_object. def enterMeta_object(self, ctx:WdlV1Parser.Meta_objectContext): pass # Exit a parse tree produced by WdlV1Parser#meta_object. def exitMeta_object(self, ctx:WdlV1Parser.Meta_objectContext): pass # Enter a parse tree produced by WdlV1Parser#meta_object_kv. def enterMeta_object_kv(self, ctx:WdlV1Parser.Meta_object_kvContext): pass # Exit a parse tree produced by WdlV1Parser#meta_object_kv. def exitMeta_object_kv(self, ctx:WdlV1Parser.Meta_object_kvContext): pass # Enter a parse tree produced by WdlV1Parser#meta_kv. def enterMeta_kv(self, ctx:WdlV1Parser.Meta_kvContext): pass # Exit a parse tree produced by WdlV1Parser#meta_kv. def exitMeta_kv(self, ctx:WdlV1Parser.Meta_kvContext): pass # Enter a parse tree produced by WdlV1Parser#parameter_meta. def enterParameter_meta(self, ctx:WdlV1Parser.Parameter_metaContext): pass # Exit a parse tree produced by WdlV1Parser#parameter_meta. def exitParameter_meta(self, ctx:WdlV1Parser.Parameter_metaContext): pass # Enter a parse tree produced by WdlV1Parser#meta. def enterMeta(self, ctx:WdlV1Parser.MetaContext): pass # Exit a parse tree produced by WdlV1Parser#meta. def exitMeta(self, ctx:WdlV1Parser.MetaContext): pass # Enter a parse tree produced by WdlV1Parser#task_runtime_kv. def enterTask_runtime_kv(self, ctx:WdlV1Parser.Task_runtime_kvContext): pass # Exit a parse tree produced by WdlV1Parser#task_runtime_kv. def exitTask_runtime_kv(self, ctx:WdlV1Parser.Task_runtime_kvContext): pass # Enter a parse tree produced by WdlV1Parser#task_runtime. def enterTask_runtime(self, ctx:WdlV1Parser.Task_runtimeContext): pass # Exit a parse tree produced by WdlV1Parser#task_runtime. def exitTask_runtime(self, ctx:WdlV1Parser.Task_runtimeContext): pass # Enter a parse tree produced by WdlV1Parser#task_input. def enterTask_input(self, ctx:WdlV1Parser.Task_inputContext): pass # Exit a parse tree produced by WdlV1Parser#task_input. def exitTask_input(self, ctx:WdlV1Parser.Task_inputContext): pass # Enter a parse tree produced by WdlV1Parser#task_output. def enterTask_output(self, ctx:WdlV1Parser.Task_outputContext): pass # Exit a parse tree produced by WdlV1Parser#task_output. def exitTask_output(self, ctx:WdlV1Parser.Task_outputContext): pass # Enter a parse tree produced by WdlV1Parser#task_command_string_part. def enterTask_command_string_part(self, ctx:WdlV1Parser.Task_command_string_partContext): pass # Exit a parse tree produced by WdlV1Parser#task_command_string_part. def exitTask_command_string_part(self, ctx:WdlV1Parser.Task_command_string_partContext): pass # Enter a parse tree produced by WdlV1Parser#task_command_expr_part. def enterTask_command_expr_part(self, ctx:WdlV1Parser.Task_command_expr_partContext): pass # Exit a parse tree produced by WdlV1Parser#task_command_expr_part. def exitTask_command_expr_part(self, ctx:WdlV1Parser.Task_command_expr_partContext): pass # Enter a parse tree produced by WdlV1Parser#task_command_expr_with_string. def enterTask_command_expr_with_string(self, ctx:WdlV1Parser.Task_command_expr_with_stringContext): pass # Exit a parse tree produced by WdlV1Parser#task_command_expr_with_string. def exitTask_command_expr_with_string(self, ctx:WdlV1Parser.Task_command_expr_with_stringContext): pass # Enter a parse tree produced by WdlV1Parser#task_command. def enterTask_command(self, ctx:WdlV1Parser.Task_commandContext): pass # Exit a parse tree produced by WdlV1Parser#task_command. def exitTask_command(self, ctx:WdlV1Parser.Task_commandContext): pass # Enter a parse tree produced by WdlV1Parser#task_element. def enterTask_element(self, ctx:WdlV1Parser.Task_elementContext): pass # Exit a parse tree produced by WdlV1Parser#task_element. def exitTask_element(self, ctx:WdlV1Parser.Task_elementContext): pass # Enter a parse tree produced by WdlV1Parser#task. def enterTask(self, ctx:WdlV1Parser.TaskContext): pass # Exit a parse tree produced by WdlV1Parser#task. def exitTask(self, ctx:WdlV1Parser.TaskContext): pass # Enter a parse tree produced by WdlV1Parser#inner_workflow_element. def enterInner_workflow_element(self, ctx:WdlV1Parser.Inner_workflow_elementContext): pass # Exit a parse tree produced by WdlV1Parser#inner_workflow_element. def exitInner_workflow_element(self, ctx:WdlV1Parser.Inner_workflow_elementContext): pass # Enter a parse tree produced by WdlV1Parser#call_alias. def enterCall_alias(self, ctx:WdlV1Parser.Call_aliasContext): pass # Exit a parse tree produced by WdlV1Parser#call_alias. def exitCall_alias(self, ctx:WdlV1Parser.Call_aliasContext): pass # Enter a parse tree produced by WdlV1Parser#call_input. def enterCall_input(self, ctx:WdlV1Parser.Call_inputContext): pass # Exit a parse tree produced by WdlV1Parser#call_input. def exitCall_input(self, ctx:WdlV1Parser.Call_inputContext): pass # Enter a parse tree produced by WdlV1Parser#call_inputs. def enterCall_inputs(self, ctx:WdlV1Parser.Call_inputsContext): pass # Exit a parse tree produced by WdlV1Parser#call_inputs. def exitCall_inputs(self, ctx:WdlV1Parser.Call_inputsContext): pass # Enter a parse tree produced by WdlV1Parser#call_body. def enterCall_body(self, ctx:WdlV1Parser.Call_bodyContext): pass # Exit a parse tree produced by WdlV1Parser#call_body. def exitCall_body(self, ctx:WdlV1Parser.Call_bodyContext): pass # Enter a parse tree produced by WdlV1Parser#call_name. def enterCall_name(self, ctx:WdlV1Parser.Call_nameContext): pass # Exit a parse tree produced by WdlV1Parser#call_name. def exitCall_name(self, ctx:WdlV1Parser.Call_nameContext): pass # Enter a parse tree produced by WdlV1Parser#call. def enterCall(self, ctx:WdlV1Parser.CallContext): pass # Exit a parse tree produced by WdlV1Parser#call. def exitCall(self, ctx:WdlV1Parser.CallContext): pass # Enter a parse tree produced by WdlV1Parser#scatter. def enterScatter(self, ctx:WdlV1Parser.ScatterContext): pass # Exit a parse tree produced by WdlV1Parser#scatter. def exitScatter(self, ctx:WdlV1Parser.ScatterContext): pass # Enter a parse tree produced by WdlV1Parser#conditional. def enterConditional(self, ctx:WdlV1Parser.ConditionalContext): pass # Exit a parse tree produced by WdlV1Parser#conditional. def exitConditional(self, ctx:WdlV1Parser.ConditionalContext): pass # Enter a parse tree produced by WdlV1Parser#workflow_input. def enterWorkflow_input(self, ctx:WdlV1Parser.Workflow_inputContext): pass # Exit a parse tree produced by WdlV1Parser#workflow_input. def exitWorkflow_input(self, ctx:WdlV1Parser.Workflow_inputContext): pass # Enter a parse tree produced by WdlV1Parser#workflow_output. def enterWorkflow_output(self, ctx:WdlV1Parser.Workflow_outputContext): pass # Exit a parse tree produced by WdlV1Parser#workflow_output. def exitWorkflow_output(self, ctx:WdlV1Parser.Workflow_outputContext): pass # Enter a parse tree produced by WdlV1Parser#input. def enterInput(self, ctx:WdlV1Parser.InputContext): pass # Exit a parse tree produced by WdlV1Parser#input. def exitInput(self, ctx:WdlV1Parser.InputContext): pass # Enter a parse tree produced by WdlV1Parser#output. def enterOutput(self, ctx:WdlV1Parser.OutputContext): pass # Exit a parse tree produced by WdlV1Parser#output. def exitOutput(self, ctx:WdlV1Parser.OutputContext): pass # Enter a parse tree produced by WdlV1Parser#inner_element. def enterInner_element(self, ctx:WdlV1Parser.Inner_elementContext): pass # Exit a parse tree produced by WdlV1Parser#inner_element. def exitInner_element(self, ctx:WdlV1Parser.Inner_elementContext): pass # Enter a parse tree produced by WdlV1Parser#parameter_meta_element. def enterParameter_meta_element(self, ctx:WdlV1Parser.Parameter_meta_elementContext): pass # Exit a parse tree produced by WdlV1Parser#parameter_meta_element. def exitParameter_meta_element(self, ctx:WdlV1Parser.Parameter_meta_elementContext): pass # Enter a parse tree produced by WdlV1Parser#meta_element. def enterMeta_element(self, ctx:WdlV1Parser.Meta_elementContext): pass # Exit a parse tree produced by WdlV1Parser#meta_element. def exitMeta_element(self, ctx:WdlV1Parser.Meta_elementContext): pass # Enter a parse tree produced by WdlV1Parser#workflow. def enterWorkflow(self, ctx:WdlV1Parser.WorkflowContext): pass # Exit a parse tree produced by WdlV1Parser#workflow. def exitWorkflow(self, ctx:WdlV1Parser.WorkflowContext): pass # Enter a parse tree produced by WdlV1Parser#document_element. def enterDocument_element(self, ctx:WdlV1Parser.Document_elementContext): pass # Exit a parse tree produced by WdlV1Parser#document_element. def exitDocument_element(self, ctx:WdlV1Parser.Document_elementContext): pass # Enter a parse tree produced by WdlV1Parser#document. def enterDocument(self, ctx:WdlV1Parser.DocumentContext): pass # Exit a parse tree produced by WdlV1Parser#document. def exitDocument(self, ctx:WdlV1Parser.DocumentContext): pass del WdlV1Parserwdlparse-0.1.0/wdlparse/v1/WdlV1ParserVisitor.py0000644000076500000240000003665513770744636022040 0ustar wlgaostaff00000000000000# Generated from WdlV1Parser.g4 by ANTLR 4.8 from antlr4 import * if __name__ is not None and "." in __name__: from .WdlV1Parser import WdlV1Parser else: from WdlV1Parser import WdlV1Parser # This class defines a complete generic visitor for a parse tree produced by WdlV1Parser. class WdlV1ParserVisitor(ParseTreeVisitor): # Visit a parse tree produced by WdlV1Parser#map_type. def visitMap_type(self, ctx:WdlV1Parser.Map_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#array_type. def visitArray_type(self, ctx:WdlV1Parser.Array_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#pair_type. def visitPair_type(self, ctx:WdlV1Parser.Pair_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#type_base. def visitType_base(self, ctx:WdlV1Parser.Type_baseContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#wdl_type. def visitWdl_type(self, ctx:WdlV1Parser.Wdl_typeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#unbound_decls. def visitUnbound_decls(self, ctx:WdlV1Parser.Unbound_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#bound_decls. def visitBound_decls(self, ctx:WdlV1Parser.Bound_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#any_decls. def visitAny_decls(self, ctx:WdlV1Parser.Any_declsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#number. def visitNumber(self, ctx:WdlV1Parser.NumberContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#expression_placeholder_option. def visitExpression_placeholder_option(self, ctx:WdlV1Parser.Expression_placeholder_optionContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#string_part. def visitString_part(self, ctx:WdlV1Parser.String_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#string_expr_part. def visitString_expr_part(self, ctx:WdlV1Parser.String_expr_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#string_expr_with_string_part. def visitString_expr_with_string_part(self, ctx:WdlV1Parser.String_expr_with_string_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#string. def visitString(self, ctx:WdlV1Parser.StringContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#primitive_literal. def visitPrimitive_literal(self, ctx:WdlV1Parser.Primitive_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#expr. def visitExpr(self, ctx:WdlV1Parser.ExprContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix0. def visitInfix0(self, ctx:WdlV1Parser.Infix0Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix1. def visitInfix1(self, ctx:WdlV1Parser.Infix1Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#lor. def visitLor(self, ctx:WdlV1Parser.LorContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix2. def visitInfix2(self, ctx:WdlV1Parser.Infix2Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#land. def visitLand(self, ctx:WdlV1Parser.LandContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#eqeq. def visitEqeq(self, ctx:WdlV1Parser.EqeqContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#lt. def visitLt(self, ctx:WdlV1Parser.LtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix3. def visitInfix3(self, ctx:WdlV1Parser.Infix3Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#gte. def visitGte(self, ctx:WdlV1Parser.GteContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#neq. def visitNeq(self, ctx:WdlV1Parser.NeqContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#lte. def visitLte(self, ctx:WdlV1Parser.LteContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#gt. def visitGt(self, ctx:WdlV1Parser.GtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#add. def visitAdd(self, ctx:WdlV1Parser.AddContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#sub. def visitSub(self, ctx:WdlV1Parser.SubContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix4. def visitInfix4(self, ctx:WdlV1Parser.Infix4Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#mod. def visitMod(self, ctx:WdlV1Parser.ModContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#mul. def visitMul(self, ctx:WdlV1Parser.MulContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#divide. def visitDivide(self, ctx:WdlV1Parser.DivideContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#infix5. def visitInfix5(self, ctx:WdlV1Parser.Infix5Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#expr_infix5. def visitExpr_infix5(self, ctx:WdlV1Parser.Expr_infix5Context): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#pair_literal. def visitPair_literal(self, ctx:WdlV1Parser.Pair_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#unarysigned. def visitUnarysigned(self, ctx:WdlV1Parser.UnarysignedContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#apply. def visitApply(self, ctx:WdlV1Parser.ApplyContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#expression_group. def visitExpression_group(self, ctx:WdlV1Parser.Expression_groupContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#primitives. def visitPrimitives(self, ctx:WdlV1Parser.PrimitivesContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#left_name. def visitLeft_name(self, ctx:WdlV1Parser.Left_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#at. def visitAt(self, ctx:WdlV1Parser.AtContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#negate. def visitNegate(self, ctx:WdlV1Parser.NegateContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#map_literal. def visitMap_literal(self, ctx:WdlV1Parser.Map_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#ifthenelse. def visitIfthenelse(self, ctx:WdlV1Parser.IfthenelseContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#get_name. def visitGet_name(self, ctx:WdlV1Parser.Get_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#object_literal. def visitObject_literal(self, ctx:WdlV1Parser.Object_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#array_literal. def visitArray_literal(self, ctx:WdlV1Parser.Array_literalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#version. def visitVersion(self, ctx:WdlV1Parser.VersionContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#import_alias. def visitImport_alias(self, ctx:WdlV1Parser.Import_aliasContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#import_as. def visitImport_as(self, ctx:WdlV1Parser.Import_asContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#import_doc. def visitImport_doc(self, ctx:WdlV1Parser.Import_docContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#struct. def visitStruct(self, ctx:WdlV1Parser.StructContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_value. def visitMeta_value(self, ctx:WdlV1Parser.Meta_valueContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_string_part. def visitMeta_string_part(self, ctx:WdlV1Parser.Meta_string_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_string. def visitMeta_string(self, ctx:WdlV1Parser.Meta_stringContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_array. def visitMeta_array(self, ctx:WdlV1Parser.Meta_arrayContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_object. def visitMeta_object(self, ctx:WdlV1Parser.Meta_objectContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_object_kv. def visitMeta_object_kv(self, ctx:WdlV1Parser.Meta_object_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_kv. def visitMeta_kv(self, ctx:WdlV1Parser.Meta_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#parameter_meta. def visitParameter_meta(self, ctx:WdlV1Parser.Parameter_metaContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta. def visitMeta(self, ctx:WdlV1Parser.MetaContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_runtime_kv. def visitTask_runtime_kv(self, ctx:WdlV1Parser.Task_runtime_kvContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_runtime. def visitTask_runtime(self, ctx:WdlV1Parser.Task_runtimeContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_input. def visitTask_input(self, ctx:WdlV1Parser.Task_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_output. def visitTask_output(self, ctx:WdlV1Parser.Task_outputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_command_string_part. def visitTask_command_string_part(self, ctx:WdlV1Parser.Task_command_string_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_command_expr_part. def visitTask_command_expr_part(self, ctx:WdlV1Parser.Task_command_expr_partContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_command_expr_with_string. def visitTask_command_expr_with_string(self, ctx:WdlV1Parser.Task_command_expr_with_stringContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_command. def visitTask_command(self, ctx:WdlV1Parser.Task_commandContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task_element. def visitTask_element(self, ctx:WdlV1Parser.Task_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#task. def visitTask(self, ctx:WdlV1Parser.TaskContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#inner_workflow_element. def visitInner_workflow_element(self, ctx:WdlV1Parser.Inner_workflow_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call_alias. def visitCall_alias(self, ctx:WdlV1Parser.Call_aliasContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call_input. def visitCall_input(self, ctx:WdlV1Parser.Call_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call_inputs. def visitCall_inputs(self, ctx:WdlV1Parser.Call_inputsContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call_body. def visitCall_body(self, ctx:WdlV1Parser.Call_bodyContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call_name. def visitCall_name(self, ctx:WdlV1Parser.Call_nameContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#call. def visitCall(self, ctx:WdlV1Parser.CallContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#scatter. def visitScatter(self, ctx:WdlV1Parser.ScatterContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#conditional. def visitConditional(self, ctx:WdlV1Parser.ConditionalContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#workflow_input. def visitWorkflow_input(self, ctx:WdlV1Parser.Workflow_inputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#workflow_output. def visitWorkflow_output(self, ctx:WdlV1Parser.Workflow_outputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#input. def visitInput(self, ctx:WdlV1Parser.InputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#output. def visitOutput(self, ctx:WdlV1Parser.OutputContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#inner_element. def visitInner_element(self, ctx:WdlV1Parser.Inner_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#parameter_meta_element. def visitParameter_meta_element(self, ctx:WdlV1Parser.Parameter_meta_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#meta_element. def visitMeta_element(self, ctx:WdlV1Parser.Meta_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#workflow. def visitWorkflow(self, ctx:WdlV1Parser.WorkflowContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#document_element. def visitDocument_element(self, ctx:WdlV1Parser.Document_elementContext): return self.visitChildren(ctx) # Visit a parse tree produced by WdlV1Parser#document. def visitDocument(self, ctx:WdlV1Parser.DocumentContext): return self.visitChildren(ctx) del WdlV1Parserwdlparse-0.1.0/wdlparse/v1/__init__.py0000644000076500000240000000300013770744630020051 0ustar wlgaostaff00000000000000# Copyright (c) 2015, Broad Institute, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Broad Institute, Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. wdlparse-0.1.0/wdlparse.egg-info/0000755000076500000240000000000013770744643017117 5ustar wlgaostaff00000000000000wdlparse-0.1.0/wdlparse.egg-info/PKG-INFO0000644000076500000240000000042613770744642020215 0ustar wlgaostaff00000000000000Metadata-Version: 2.1 Name: wdlparse Version: 0.1.0 Summary: WDL parsers for Python. Home-page: https://github.com/DataBiosphere/wdl-parsers Author: William Gao Author-email: wlgao@ucsc.edu License: Apache License v2.0 Description: UNKNOWN Platform: UNKNOWN Provides-Extra: dev wdlparse-0.1.0/wdlparse.egg-info/SOURCES.txt0000644000076500000240000000104113770744643020777 0ustar wlgaostaff00000000000000README.md setup.py wdlparse/__init__.py wdlparse.egg-info/PKG-INFO wdlparse.egg-info/SOURCES.txt wdlparse.egg-info/dependency_links.txt wdlparse.egg-info/requires.txt wdlparse.egg-info/top_level.txt wdlparse/dev/WdlLexer.py wdlparse/dev/WdlParser.py wdlparse/dev/WdlParserListener.py wdlparse/dev/WdlParserVisitor.py wdlparse/dev/__init__.py wdlparse/draft2/__init__.py wdlparse/draft2/wdl_parser.py wdlparse/v1/WdlV1Lexer.py wdlparse/v1/WdlV1Parser.py wdlparse/v1/WdlV1ParserListener.py wdlparse/v1/WdlV1ParserVisitor.py wdlparse/v1/__init__.pywdlparse-0.1.0/wdlparse.egg-info/dependency_links.txt0000644000076500000240000000000113770744642023164 0ustar wlgaostaff00000000000000 wdlparse-0.1.0/wdlparse.egg-info/requires.txt0000644000076500000240000000007113770744642021514 0ustar wlgaostaff00000000000000antlr4-python3-runtime==4.8 [dev] hermes-parser==2.0rc6 wdlparse-0.1.0/wdlparse.egg-info/top_level.txt0000644000076500000240000000001113770744642021640 0ustar wlgaostaff00000000000000wdlparse