diff --git a/README.md b/README.md index e6ad2f5..ed0c2f6 100644 --- a/README.md +++ b/README.md @@ -12,25 +12,37 @@ Design principals: # Quickstart using Docker -Build a self-contained script (no imports) +Requires a [CWL implementation](https://www.commonwl.org/#Implementations). + +Pulls the `commonworkflowlanguage/cwlex` Docker image. + +Convert a self-contained (no imports) cwlex script to CWL: ``` -cwl-runner cwlex.cwl --inp myscript.cwlex +$ cwl-runner cwlex.cwl --inp myscript.cwlex ``` -Build script with imports: +Convert a cwlex script with imports to CWL: ``` -cwl-runner cwlex.cwl --inpdir . --inpfile myscript.cwlex +$ cwl-runner cwlex.cwl --inpdir . --inpfile myscript.cwlex ``` -# Installing +The resulting script can be run with any [CWL implementation](https://www.commonwl.org/#Implementations): ``` -npm install cwl-ex +$ cwl-runner myscript.cwl ``` -# Usage +# Installing & Usage + +Easy install from npm. Requires node.js. + +``` +$ npm install cwl-ex +``` + +Installs executable entry point `cwlex` in the npm `bin` directory. ``` $ cwlex myscript.cwlex > myscript.cwl @@ -242,18 +254,12 @@ def workflow main(v1="hello", v2="world") { # Developing -Generate the parser (requires antlr4): +Regenerate the parser (requires antlr4): ``` $ cd src && cwl-runner antlr.cwl ``` -Run local code in Docker -``` -cwl-runner cwlex.cwl --inp src/cwlex-dev.cwlex -cwl-runner cwlex-dev.cwl --inp myscript.cwlex -``` - Run tests: ``` @@ -267,8 +273,19 @@ Install dependencies (requires node.js and npm): $ npm install ``` -Generate Docker image +Build npm package: + +``` +$ npm pack +``` + +Install local npm package into a Docker image. +``` +$ docker build -f cwlex.Dockerfile -t commonworkflowlanguage/cwlex . +``` + +Update README.md ``` -npm pack -docker build -f cwlex.Dockerfile . +$ cwl-runner cwlex.cwl --inp makereadme.cwlex +$ cwl-runner makereadme.cwl ``` diff --git a/README.md.tmpl b/README.md.tmpl index a58ff60..c87c0fd 100644 --- a/README.md.tmpl +++ b/README.md.tmpl @@ -12,25 +12,37 @@ Design principals: # Quickstart using Docker -Build a self-contained script (no imports) +Requires a [CWL implementation](https://www.commonwl.org/#Implementations). + +Pulls the `commonworkflowlanguage/cwlex` Docker image. + +Convert a self-contained (no imports) cwlex script to CWL: ``` -cwl-runner cwlex.cwl --inp myscript.cwlex +$ cwl-runner cwlex.cwl --inp myscript.cwlex ``` -Build script with imports: +Convert a cwlex script with imports to CWL: ``` -cwl-runner cwlex.cwl --inpdir . --inpfile myscript.cwlex +$ cwl-runner cwlex.cwl --inpdir . --inpfile myscript.cwlex ``` -# Installing +The resulting script can be run with any [CWL implementation](https://www.commonwl.org/#Implementations): ``` -npm install cwl-ex +$ cwl-runner myscript.cwl ``` -# Usage +# Installing & Usage + +Easy install from npm. Requires node.js. + +``` +$ npm install cwl-ex +``` + +Installs executable entry point `cwlex` in the npm `bin` directory. ``` $ cwlex myscript.cwlex > myscript.cwl @@ -166,18 +178,12 @@ $include: ex14.cwlex # Developing -Generate the parser (requires antlr4): +Regenerate the parser (requires antlr4): ``` $ cd src && cwl-runner antlr.cwl ``` -Run local code in Docker -``` -cwl-runner cwlex.cwl --inp src/cwlex-dev.cwlex -cwl-runner cwlex-dev.cwl --inp myscript.cwlex -``` - Run tests: ``` @@ -191,8 +197,19 @@ Install dependencies (requires node.js and npm): $ npm install ``` -Generate Docker image +Build npm package: + +``` +$ npm pack +``` + +Install local npm package into a Docker image. +``` +$ docker build -f cwlex.Dockerfile -t commonworkflowlanguage/cwlex . +``` + +Update README.md ``` -npm pack -docker build -f cwlex.Dockerfile . +$ cwl-runner cwlex.cwl --inp makereadme.cwlex +$ cwl-runner makereadme.cwl ``` diff --git a/src/cwlexLexer.js b/src/cwlexLexer.js new file mode 100644 index 0000000..72c4f9a --- /dev/null +++ b/src/cwlexLexer.js @@ -0,0 +1,373 @@ +// Generated from /tmp/tmpte19dkck/stgc6bf9231-d979-4151-b9f5-c16dedd81bb9/cwlex.g4 by ANTLR 4.5.3 +// jshint ignore: start +var antlr4 = require('antlr4/index'); + + +var serializedATN = ["\u0003\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd", + "\u00026\u0194\b\u0001\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004", + "\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t", + "\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004", + "\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010", + "\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013", + "\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017", + "\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a", + "\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e", + "\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#", + "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004", + "*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004", + "1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u0003\u0002\u0003\u0002", + "\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005", + "\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003", + "\t\u0003\t\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003", + "\r\u0003\r\u0003\u000e\u0003\u000e\u0003\u000f\u0003\u000f\u0003\u0010", + "\u0003\u0010\u0003\u0010\u0005\u0010\u008b\n\u0010\u0003\u0011\u0003", + "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u0092\n\u0011", + "\f\u0011\u000e\u0011\u0095\u000b\u0011\u0003\u0011\u0005\u0011\u0098", + "\n\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012", + "\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014", + "\u0003\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u00a8\n\u0014\f\u0014", + "\u000e\u0014\u00ab\u000b\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003", + "\u0015\u0003\u0015\u0003\u0015\u0007\u0015\u00b3\n\u0015\f\u0015\u000e", + "\u0015\u00b6\u000b\u0015\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016", + "\u0007\u0016\u00bc\n\u0016\f\u0016\u000e\u0016\u00bf\u000b\u0016\u0003", + "\u0016\u0003\u0016\u0003\u0017\u0005\u0017\u00c4\n\u0017\u0003\u0017", + "\u0006\u0017\u00c7\n\u0017\r\u0017\u000e\u0017\u00c8\u0003\u0017\u0003", + "\u0017\u0006\u0017\u00cd\n\u0017\r\u0017\u000e\u0017\u00ce\u0003\u0018", + "\u0005\u0018\u00d2\n\u0018\u0003\u0018\u0006\u0018\u00d5\n\u0018\r\u0018", + "\u000e\u0018\u00d6\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003", + "\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003", + "\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001b\u0003\u001b\u0003", + "\u001b\u0003\u001b\u0003\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003", + "\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003", + "\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003", + "\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003", + "\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003 \u0003", + " \u0003 \u0003!\u0003!\u0003!\u0003!\u0003\"\u0003\"\u0003\"\u0003\"", + "\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003$\u0003$\u0003", + "$\u0003$\u0003$\u0003$\u0003$\u0003%\u0003%\u0003%\u0003%\u0003%\u0003", + "%\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003", + "&\u0003&\u0003&\u0003&\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003", + "\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003", + "\'\u0003\'\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003)\u0003", + ")\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0003+\u0003", + "+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003", + ",\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003", + "-\u0003-\u0003-\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003.\u0003", + ".\u0003.\u0003.\u0003/\u0003/\u0003/\u00030\u00030\u00030\u00031\u0003", + "1\u00031\u00031\u00031\u00031\u00031\u00031\u00032\u00032\u00032\u0003", + "2\u00032\u00033\u00033\u00033\u00033\u00033\u00034\u00034\u00034\u0003", + "4\u00034\u00034\u00035\u00035\u0006\u0093\u00a9\u00b4\u00bd\u00026\u0003", + "\u0003\u0005\u0004\u0007\u0005\t\u0006\u000b\u0007\r\b\u000f\t\u0011", + "\n\u0013\u000b\u0015\f\u0017\r\u0019\u000e\u001b\u000f\u001d\u0010\u001f", + "\u0011!\u0012#\u0013%\u0014\'\u0015)\u0016+\u0017-\u0018/\u00191\u001a", + "3\u001b5\u001c7\u001d9\u001e;\u001f= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.", + "[/]0_1a2c3e4g5i6\u0003\u0002\u0007\u0004\u0002\u000b\u000b\"\"\u0003", + "\u0002##\u0003\u0002))\u0003\u0002$$\u0004\u0002\u000b\f\"\"\u01a0\u0002", + "\u0003\u0003\u0002\u0002\u0002\u0002\u0005\u0003\u0002\u0002\u0002\u0002", + "\u0007\u0003\u0002\u0002\u0002\u0002\t\u0003\u0002\u0002\u0002\u0002", + "\u000b\u0003\u0002\u0002\u0002\u0002\r\u0003\u0002\u0002\u0002\u0002", + "\u000f\u0003\u0002\u0002\u0002\u0002\u0011\u0003\u0002\u0002\u0002\u0002", + "\u0013\u0003\u0002\u0002\u0002\u0002\u0015\u0003\u0002\u0002\u0002\u0002", + "\u0017\u0003\u0002\u0002\u0002\u0002\u0019\u0003\u0002\u0002\u0002\u0002", + "\u001b\u0003\u0002\u0002\u0002\u0002\u001d\u0003\u0002\u0002\u0002\u0002", + "\u001f\u0003\u0002\u0002\u0002\u0002!\u0003\u0002\u0002\u0002\u0002", + "#\u0003\u0002\u0002\u0002\u0002%\u0003\u0002\u0002\u0002\u0002\'\u0003", + "\u0002\u0002\u0002\u0002)\u0003\u0002\u0002\u0002\u0002+\u0003\u0002", + "\u0002\u0002\u0002-\u0003\u0002\u0002\u0002\u0002/\u0003\u0002\u0002", + "\u0002\u00021\u0003\u0002\u0002\u0002\u00023\u0003\u0002\u0002\u0002", + "\u00025\u0003\u0002\u0002\u0002\u00027\u0003\u0002\u0002\u0002\u0002", + "9\u0003\u0002\u0002\u0002\u0002;\u0003\u0002\u0002\u0002\u0002=\u0003", + "\u0002\u0002\u0002\u0002?\u0003\u0002\u0002\u0002\u0002A\u0003\u0002", + "\u0002\u0002\u0002C\u0003\u0002\u0002\u0002\u0002E\u0003\u0002\u0002", + "\u0002\u0002G\u0003\u0002\u0002\u0002\u0002I\u0003\u0002\u0002\u0002", + "\u0002K\u0003\u0002\u0002\u0002\u0002M\u0003\u0002\u0002\u0002\u0002", + "O\u0003\u0002\u0002\u0002\u0002Q\u0003\u0002\u0002\u0002\u0002S\u0003", + "\u0002\u0002\u0002\u0002U\u0003\u0002\u0002\u0002\u0002W\u0003\u0002", + "\u0002\u0002\u0002Y\u0003\u0002\u0002\u0002\u0002[\u0003\u0002\u0002", + "\u0002\u0002]\u0003\u0002\u0002\u0002\u0002_\u0003\u0002\u0002\u0002", + "\u0002a\u0003\u0002\u0002\u0002\u0002c\u0003\u0002\u0002\u0002\u0002", + "e\u0003\u0002\u0002\u0002\u0002g\u0003\u0002\u0002\u0002\u0002i\u0003", + "\u0002\u0002\u0002\u0003k\u0003\u0002\u0002\u0002\u0005m\u0003\u0002", + "\u0002\u0002\u0007o\u0003\u0002\u0002\u0002\tq\u0003\u0002\u0002\u0002", + "\u000bs\u0003\u0002\u0002\u0002\ru\u0003\u0002\u0002\u0002\u000fw\u0003", + "\u0002\u0002\u0002\u0011y\u0003\u0002\u0002\u0002\u0013{\u0003\u0002", + "\u0002\u0002\u0015}\u0003\u0002\u0002\u0002\u0017\u007f\u0003\u0002", + "\u0002\u0002\u0019\u0081\u0003\u0002\u0002\u0002\u001b\u0083\u0003\u0002", + "\u0002\u0002\u001d\u0085\u0003\u0002\u0002\u0002\u001f\u008a\u0003\u0002", + "\u0002\u0002!\u0097\u0003\u0002\u0002\u0002#\u0099\u0003\u0002\u0002", + "\u0002%\u009e\u0003\u0002\u0002\u0002\'\u00a3\u0003\u0002\u0002\u0002", + ")\u00ae\u0003\u0002\u0002\u0002+\u00b9\u0003\u0002\u0002\u0002-\u00c3", + "\u0003\u0002\u0002\u0002/\u00d1\u0003\u0002\u0002\u00021\u00d8\u0003", + "\u0002\u0002\u00023\u00e1\u0003\u0002\u0002\u00025\u00e6\u0003\u0002", + "\u0002\u00027\u00eb\u0003\u0002\u0002\u00029\u00f5\u0003\u0002\u0002", + "\u0002;\u00fc\u0003\u0002\u0002\u0002=\u0100\u0003\u0002\u0002\u0002", + "?\u0105\u0003\u0002\u0002\u0002A\u0108\u0003\u0002\u0002\u0002C\u010c", + "\u0003\u0002\u0002\u0002E\u0110\u0003\u0002\u0002\u0002G\u0117\u0003", + "\u0002\u0002\u0002I\u011e\u0003\u0002\u0002\u0002K\u0124\u0003\u0002", + "\u0002\u0002M\u0131\u0003\u0002\u0002\u0002O\u0141\u0003\u0002\u0002", + "\u0002Q\u0148\u0003\u0002\u0002\u0002S\u014c\u0003\u0002\u0002\u0002", + "U\u0152\u0003\u0002\u0002\u0002W\u015a\u0003\u0002\u0002\u0002Y\u0167", + "\u0003\u0002\u0002\u0002[\u016d\u0003\u0002\u0002\u0002]\u0174\u0003", + "\u0002\u0002\u0002_\u0177\u0003\u0002\u0002\u0002a\u017a\u0003\u0002", + "\u0002\u0002c\u0182\u0003\u0002\u0002\u0002e\u0187\u0003\u0002\u0002", + "\u0002g\u018c\u0003\u0002\u0002\u0002i\u0192\u0003\u0002\u0002\u0002", + "kl\u0007&\u0002\u0002l\u0004\u0003\u0002\u0002\u0002mn\u0007*\u0002", + "\u0002n\u0006\u0003\u0002\u0002\u0002op\u0007+\u0002\u0002p\b\u0003", + "\u0002\u0002\u0002qr\u0007}\u0002\u0002r\n\u0003\u0002\u0002\u0002s", + "t\u0007\u007f\u0002\u0002t\f\u0003\u0002\u0002\u0002uv\u0007]\u0002", + "\u0002v\u000e\u0003\u0002\u0002\u0002wx\u0007_\u0002\u0002x\u0010\u0003", + "\u0002\u0002\u0002yz\u0007<\u0002\u0002z\u0012\u0003\u0002\u0002\u0002", + "{|\u0007.\u0002\u0002|\u0014\u0003\u0002\u0002\u0002}~\u0007?\u0002", + "\u0002~\u0016\u0003\u0002\u0002\u0002\u007f\u0080\u0007A\u0002\u0002", + "\u0080\u0018\u0003\u0002\u0002\u0002\u0081\u0082\u0007\f\u0002\u0002", + "\u0082\u001a\u0003\u0002\u0002\u0002\u0083\u0084\u0007@\u0002\u0002", + "\u0084\u001c\u0003\u0002\u0002\u0002\u0085\u0086\u0007>\u0002\u0002", + "\u0086\u001e\u0003\u0002\u0002\u0002\u0087\u008b\t\u0002\u0002\u0002", + "\u0088\u0089\u0007^\u0002\u0002\u0089\u008b\u0007\f\u0002\u0002\u008a", + "\u0087\u0003\u0002\u0002\u0002\u008a\u0088\u0003\u0002\u0002\u0002\u008b", + " \u0003\u0002\u0002\u0002\u008c\u008d\u0007%\u0002\u0002\u008d\u0098", + "\u0005\u0019\r\u0002\u008e\u008f\u0007%\u0002\u0002\u008f\u0093\n\u0003", + "\u0002\u0002\u0090\u0092\u000b\u0002\u0002\u0002\u0091\u0090\u0003\u0002", + "\u0002\u0002\u0092\u0095\u0003\u0002\u0002\u0002\u0093\u0094\u0003\u0002", + "\u0002\u0002\u0093\u0091\u0003\u0002\u0002\u0002\u0094\u0096\u0003\u0002", + "\u0002\u0002\u0095\u0093\u0003\u0002\u0002\u0002\u0096\u0098\u0005\u0019", + "\r\u0002\u0097\u008c\u0003\u0002\u0002\u0002\u0097\u008e\u0003\u0002", + "\u0002\u0002\u0098\"\u0003\u0002\u0002\u0002\u0099\u009a\u0007>\u0002", + "\u0002\u009a\u009b\u0007>\u0002\u0002\u009b\u009c\u0007>\u0002\u0002", + "\u009c\u009d\u0007\f\u0002\u0002\u009d$\u0003\u0002\u0002\u0002\u009e", + "\u009f\u0007@\u0002\u0002\u009f\u00a0\u0007@\u0002\u0002\u00a0\u00a1", + "\u0007@\u0002\u0002\u00a1\u00a2\u0007\f\u0002\u0002\u00a2&\u0003\u0002", + "\u0002\u0002\u00a3\u00a9\u0007)\u0002\u0002\u00a4\u00a8\n\u0004\u0002", + "\u0002\u00a5\u00a6\u0007^\u0002\u0002\u00a6\u00a8\u0007)\u0002\u0002", + "\u00a7\u00a4\u0003\u0002\u0002\u0002\u00a7\u00a5\u0003\u0002\u0002\u0002", + "\u00a8\u00ab\u0003\u0002\u0002\u0002\u00a9\u00aa\u0003\u0002\u0002\u0002", + "\u00a9\u00a7\u0003\u0002\u0002\u0002\u00aa\u00ac\u0003\u0002\u0002\u0002", + "\u00ab\u00a9\u0003\u0002\u0002\u0002\u00ac\u00ad\u0007)\u0002\u0002", + "\u00ad(\u0003\u0002\u0002\u0002\u00ae\u00b4\u0007$\u0002\u0002\u00af", + "\u00b3\n\u0005\u0002\u0002\u00b0\u00b1\u0007^\u0002\u0002\u00b1\u00b3", + "\u0007$\u0002\u0002\u00b2\u00af\u0003\u0002\u0002\u0002\u00b2\u00b0", + "\u0003\u0002\u0002\u0002\u00b3\u00b6\u0003\u0002\u0002\u0002\u00b4\u00b5", + "\u0003\u0002\u0002\u0002\u00b4\u00b2\u0003\u0002\u0002\u0002\u00b5\u00b7", + "\u0003\u0002\u0002\u0002\u00b6\u00b4\u0003\u0002\u0002\u0002\u00b7\u00b8", + "\u0007$\u0002\u0002\u00b8*\u0003\u0002\u0002\u0002\u00b9\u00bd\u0007", + "b\u0002\u0002\u00ba\u00bc\u000b\u0002\u0002\u0002\u00bb\u00ba\u0003", + "\u0002\u0002\u0002\u00bc\u00bf\u0003\u0002\u0002\u0002\u00bd\u00be\u0003", + "\u0002\u0002\u0002\u00bd\u00bb\u0003\u0002\u0002\u0002\u00be\u00c0\u0003", + "\u0002\u0002\u0002\u00bf\u00bd\u0003\u0002\u0002\u0002\u00c0\u00c1\u0007", + "b\u0002\u0002\u00c1,\u0003\u0002\u0002\u0002\u00c2\u00c4\u0007/\u0002", + "\u0002\u00c3\u00c2\u0003\u0002\u0002\u0002\u00c3\u00c4\u0003\u0002\u0002", + "\u0002\u00c4\u00c6\u0003\u0002\u0002\u0002\u00c5\u00c7\u00042;\u0002", + "\u00c6\u00c5\u0003\u0002\u0002\u0002\u00c7\u00c8\u0003\u0002\u0002\u0002", + "\u00c8\u00c6\u0003\u0002\u0002\u0002\u00c8\u00c9\u0003\u0002\u0002\u0002", + "\u00c9\u00ca\u0003\u0002\u0002\u0002\u00ca\u00cc\u00070\u0002\u0002", + "\u00cb\u00cd\u00042;\u0002\u00cc\u00cb\u0003\u0002\u0002\u0002\u00cd", + "\u00ce\u0003\u0002\u0002\u0002\u00ce\u00cc\u0003\u0002\u0002\u0002\u00ce", + "\u00cf\u0003\u0002\u0002\u0002\u00cf.\u0003\u0002\u0002\u0002\u00d0", + "\u00d2\u0007/\u0002\u0002\u00d1\u00d0\u0003\u0002\u0002\u0002\u00d1", + "\u00d2\u0003\u0002\u0002\u0002\u00d2\u00d4\u0003\u0002\u0002\u0002\u00d3", + "\u00d5\u00042;\u0002\u00d4\u00d3\u0003\u0002\u0002\u0002\u00d5\u00d6", + "\u0003\u0002\u0002\u0002\u00d6\u00d4\u0003\u0002\u0002\u0002\u00d6\u00d7", + "\u0003\u0002\u0002\u0002\u00d70\u0003\u0002\u0002\u0002\u00d8\u00d9", + "\u0007y\u0002\u0002\u00d9\u00da\u0007q\u0002\u0002\u00da\u00db\u0007", + "t\u0002\u0002\u00db\u00dc\u0007m\u0002\u0002\u00dc\u00dd\u0007h\u0002", + "\u0002\u00dd\u00de\u0007n\u0002\u0002\u00de\u00df\u0007q\u0002\u0002", + "\u00df\u00e0\u0007y\u0002\u0002\u00e02\u0003\u0002\u0002\u0002\u00e1", + "\u00e2\u0007v\u0002\u0002\u00e2\u00e3\u0007q\u0002\u0002\u00e3\u00e4", + "\u0007q\u0002\u0002\u00e4\u00e5\u0007n\u0002\u0002\u00e54\u0003\u0002", + "\u0002\u0002\u00e6\u00e7\u0007H\u0002\u0002\u00e7\u00e8\u0007k\u0002", + "\u0002\u00e8\u00e9\u0007n\u0002\u0002\u00e9\u00ea\u0007g\u0002\u0002", + "\u00ea6\u0003\u0002\u0002\u0002\u00eb\u00ec\u0007F\u0002\u0002\u00ec", + "\u00ed\u0007k\u0002\u0002\u00ed\u00ee\u0007t\u0002\u0002\u00ee\u00ef", + "\u0007g\u0002\u0002\u00ef\u00f0\u0007e\u0002\u0002\u00f0\u00f1\u0007", + "v\u0002\u0002\u00f1\u00f2\u0007q\u0002\u0002\u00f2\u00f3\u0007t\u0002", + "\u0002\u00f3\u00f4\u0007{\u0002\u0002\u00f48\u0003\u0002\u0002\u0002", + "\u00f5\u00f6\u0007u\u0002\u0002\u00f6\u00f7\u0007v\u0002\u0002\u00f7", + "\u00f8\u0007f\u0002\u0002\u00f8\u00f9\u0007q\u0002\u0002\u00f9\u00fa", + "\u0007w\u0002\u0002\u00fa\u00fb\u0007v\u0002\u0002\u00fb:\u0003\u0002", + "\u0002\u0002\u00fc\u00fd\u0007h\u0002\u0002\u00fd\u00fe\u0007q\u0002", + "\u0002\u00fe\u00ff\u0007t\u0002\u0002\u00ff<\u0003\u0002\u0002\u0002", + "\u0100\u0101\u0007g\u0002\u0002\u0101\u0102\u0007c\u0002\u0002\u0102", + "\u0103\u0007e\u0002\u0002\u0103\u0104\u0007j\u0002\u0002\u0104>\u0003", + "\u0002\u0002\u0002\u0105\u0106\u0007k\u0002\u0002\u0106\u0107\u0007", + "p\u0002\u0002\u0107@\u0003\u0002\u0002\u0002\u0108\u0109\u0007f\u0002", + "\u0002\u0109\u010a\u0007g\u0002\u0002\u010a\u010b\u0007h\u0002\u0002", + "\u010bB\u0003\u0002\u0002\u0002\u010c\u010d\u0007t\u0002\u0002\u010d", + "\u010e\u0007w\u0002\u0002\u010e\u010f\u0007p\u0002\u0002\u010fD\u0003", + "\u0002\u0002\u0002\u0110\u0111\u0007t\u0002\u0002\u0111\u0112\u0007", + "g\u0002\u0002\u0112\u0113\u0007v\u0002\u0002\u0113\u0114\u0007w\u0002", + "\u0002\u0114\u0115\u0007t\u0002\u0002\u0115\u0116\u0007p\u0002\u0002", + "\u0116F\u0003\u0002\u0002\u0002\u0117\u0118\u0007u\u0002\u0002\u0118", + "\u0119\u0007v\u0002\u0002\u0119\u011a\u0007t\u0002\u0002\u011a\u011b", + "\u0007w\u0002\u0002\u011b\u011c\u0007e\u0002\u0002\u011c\u011d\u0007", + "v\u0002\u0002\u011dH\u0003\u0002\u0002\u0002\u011e\u011f\u0007w\u0002", + "\u0002\u011f\u0120\u0007u\u0002\u0002\u0120\u0121\u0007k\u0002\u0002", + "\u0121\u0122\u0007p\u0002\u0002\u0122\u0123\u0007i\u0002\u0002\u0123", + "J\u0003\u0002\u0002\u0002\u0124\u0125\u0007o\u0002\u0002\u0125\u0126", + "\u0007g\u0002\u0002\u0126\u0127\u0007t\u0002\u0002\u0127\u0128\u0007", + "i\u0002\u0002\u0128\u0129\u0007g\u0002\u0002\u0129\u012a\u0007a\u0002", + "\u0002\u012a\u012b\u0007p\u0002\u0002\u012b\u012c\u0007g\u0002\u0002", + "\u012c\u012d\u0007u\u0002\u0002\u012d\u012e\u0007v\u0002\u0002\u012e", + "\u012f\u0007g\u0002\u0002\u012f\u0130\u0007f\u0002\u0002\u0130L\u0003", + "\u0002\u0002\u0002\u0131\u0132\u0007o\u0002\u0002\u0132\u0133\u0007", + "g\u0002\u0002\u0133\u0134\u0007t\u0002\u0002\u0134\u0135\u0007i\u0002", + "\u0002\u0135\u0136\u0007g\u0002\u0002\u0136\u0137\u0007a\u0002\u0002", + "\u0137\u0138\u0007h\u0002\u0002\u0138\u0139\u0007n\u0002\u0002\u0139", + "\u013a\u0007c\u0002\u0002\u013a\u013b\u0007v\u0002\u0002\u013b\u013c", + "\u0007v\u0002\u0002\u013c\u013d\u0007g\u0002\u0002\u013d\u013e\u0007", + "p\u0002\u0002\u013e\u013f\u0007g\u0002\u0002\u013f\u0140\u0007f\u0002", + "\u0002\u0140N\u0003\u0002\u0002\u0002\u0141\u0142\u0007u\u0002\u0002", + "\u0142\u0143\u0007v\u0002\u0002\u0143\u0144\u0007t\u0002\u0002\u0144", + "\u0145\u0007k\u0002\u0002\u0145\u0146\u0007p\u0002\u0002\u0146\u0147", + "\u0007i\u0002\u0002\u0147P\u0003\u0002\u0002\u0002\u0148\u0149\u0007", + "k\u0002\u0002\u0149\u014a\u0007p\u0002\u0002\u014a\u014b\u0007v\u0002", + "\u0002\u014bR\u0003\u0002\u0002\u0002\u014c\u014d\u0007h\u0002\u0002", + "\u014d\u014e\u0007n\u0002\u0002\u014e\u014f\u0007q\u0002\u0002\u014f", + "\u0150\u0007c\u0002\u0002\u0150\u0151\u0007v\u0002\u0002\u0151T\u0003", + "\u0002\u0002\u0002\u0152\u0153\u0007d\u0002\u0002\u0153\u0154\u0007", + "q\u0002\u0002\u0154\u0155\u0007q\u0002\u0002\u0155\u0156\u0007n\u0002", + "\u0002\u0156\u0157\u0007g\u0002\u0002\u0157\u0158\u0007c\u0002\u0002", + "\u0158\u0159\u0007p\u0002\u0002\u0159V\u0003\u0002\u0002\u0002\u015a", + "\u015b\u0007t\u0002\u0002\u015b\u015c\u0007g\u0002\u0002\u015c\u015d", + "\u0007s\u0002\u0002\u015d\u015e\u0007w\u0002\u0002\u015e\u015f\u0007", + "k\u0002\u0002\u015f\u0160\u0007t\u0002\u0002\u0160\u0161\u0007g\u0002", + "\u0002\u0161\u0162\u0007o\u0002\u0002\u0162\u0163\u0007g\u0002\u0002", + "\u0163\u0164\u0007p\u0002\u0002\u0164\u0165\u0007v\u0002\u0002\u0165", + "\u0166\u0007u\u0002\u0002\u0166X\u0003\u0002\u0002\u0002\u0167\u0168", + "\u0007j\u0002\u0002\u0168\u0169\u0007k\u0002\u0002\u0169\u016a\u0007", + "p\u0002\u0002\u016a\u016b\u0007v\u0002\u0002\u016b\u016c\u0007u\u0002", + "\u0002\u016cZ\u0003\u0002\u0002\u0002\u016d\u016e\u0007k\u0002\u0002", + "\u016e\u016f\u0007o\u0002\u0002\u016f\u0170\u0007r\u0002\u0002\u0170", + "\u0171\u0007q\u0002\u0002\u0171\u0172\u0007t\u0002\u0002\u0172\u0173", + "\u0007v\u0002\u0002\u0173\\\u0003\u0002\u0002\u0002\u0174\u0175\u0007", + "c\u0002\u0002\u0175\u0176\u0007u\u0002\u0002\u0176^\u0003\u0002\u0002", + "\u0002\u0177\u0178\u0007f\u0002\u0002\u0178\u0179\u0007q\u0002\u0002", + "\u0179`\u0003\u0002\u0002\u0002\u017a\u017b\u0007u\u0002\u0002\u017b", + "\u017c\u0007e\u0002\u0002\u017c\u017d\u0007c\u0002\u0002\u017d\u017e", + "\u0007v\u0002\u0002\u017e\u017f\u0007v\u0002\u0002\u017f\u0180\u0007", + "g\u0002\u0002\u0180\u0181\u0007t\u0002\u0002\u0181b\u0003\u0002\u0002", + "\u0002\u0182\u0183\u0007g\u0002\u0002\u0183\u0184\u0007z\u0002\u0002", + "\u0184\u0185\u0007r\u0002\u0002\u0185\u0186\u0007t\u0002\u0002\u0186", + "d\u0003\u0002\u0002\u0002\u0187\u0188\u0007v\u0002\u0002\u0188\u0189", + "\u0007t\u0002\u0002\u0189\u018a\u0007w\u0002\u0002\u018a\u018b\u0007", + "g\u0002\u0002\u018bf\u0003\u0002\u0002\u0002\u018c\u018d\u0007h\u0002", + "\u0002\u018d\u018e\u0007c\u0002\u0002\u018e\u018f\u0007n\u0002\u0002", + "\u018f\u0190\u0007u\u0002\u0002\u0190\u0191\u0007g\u0002\u0002\u0191", + "h\u0003\u0002\u0002\u0002\u0192\u0193\n\u0006\u0002\u0002\u0193j\u0003", + "\u0002\u0002\u0002\u0010\u0002\u008a\u0093\u0097\u00a7\u00a9\u00b2\u00b4", + "\u00bd\u00c3\u00c8\u00ce\u00d1\u00d6\u0002"].join(""); + + +var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); + +var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); }); + +function cwlexLexer(input) { + antlr4.Lexer.call(this, input); + this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache()); + return this; +} + +cwlexLexer.prototype = Object.create(antlr4.Lexer.prototype); +cwlexLexer.prototype.constructor = cwlexLexer; + +cwlexLexer.EOF = antlr4.Token.EOF; +cwlexLexer.DOLLAR = 1; +cwlexLexer.OPENPAREN = 2; +cwlexLexer.CLOSEPAREN = 3; +cwlexLexer.OPENBRACE = 4; +cwlexLexer.CLOSEBRACE = 5; +cwlexLexer.OPENBRACKET = 6; +cwlexLexer.CLOSEBRACKET = 7; +cwlexLexer.COLON = 8; +cwlexLexer.COMMA = 9; +cwlexLexer.EQ = 10; +cwlexLexer.QUES = 11; +cwlexLexer.NEWLINE = 12; +cwlexLexer.GREATER = 13; +cwlexLexer.LESSER = 14; +cwlexLexer.SPACE = 15; +cwlexLexer.COMMENT = 16; +cwlexLexer.OPENSCRIPT = 17; +cwlexLexer.CLOSESCRIPT = 18; +cwlexLexer.SQSTRING = 19; +cwlexLexer.DQSTRING = 20; +cwlexLexer.BQSTRING = 21; +cwlexLexer.FLOAT = 22; +cwlexLexer.INTEGER = 23; +cwlexLexer.WORKFLOW = 24; +cwlexLexer.TOOL = 25; +cwlexLexer.FILE = 26; +cwlexLexer.DIRECTORY = 27; +cwlexLexer.STDOUT = 28; +cwlexLexer.FOR = 29; +cwlexLexer.EACH = 30; +cwlexLexer.IN = 31; +cwlexLexer.DEF = 32; +cwlexLexer.RUN = 33; +cwlexLexer.RETURN = 34; +cwlexLexer.STRUCT = 35; +cwlexLexer.USING = 36; +cwlexLexer.MERGE_NESTED = 37; +cwlexLexer.MERGE_FLATTENED = 38; +cwlexLexer.STRING = 39; +cwlexLexer.INT_SYMBOL = 40; +cwlexLexer.FLOAT_SYMBOL = 41; +cwlexLexer.BOOLEAN_SYMBOL = 42; +cwlexLexer.REQUIREMENTS = 43; +cwlexLexer.HINTS = 44; +cwlexLexer.IMPORT = 45; +cwlexLexer.AS = 46; +cwlexLexer.DO = 47; +cwlexLexer.SCATTER = 48; +cwlexLexer.EXPR = 49; +cwlexLexer.TRUE_SYMBOL = 50; +cwlexLexer.FALSE_SYMBOL = 51; +cwlexLexer.NOTWS = 52; + + +cwlexLexer.modeNames = [ "DEFAULT_MODE" ]; + +cwlexLexer.literalNames = [ null, "'$'", "'('", "')'", "'{'", "'}'", "'['", + "']'", "':'", "','", "'='", "'?'", "'\n'", "'>'", + "'<'", null, null, "'<<<\n'", "'>>>\n'", null, + null, null, null, null, "'workflow'", "'tool'", + "'File'", "'Directory'", "'stdout'", "'for'", + "'each'", "'in'", "'def'", "'run'", "'return'", + "'struct'", "'using'", "'merge_nested'", "'merge_flattened'", + "'string'", "'int'", "'float'", "'boolean'", + "'requirements'", "'hints'", "'import'", "'as'", + "'do'", "'scatter'", "'expr'", "'true'", "'false'" ]; + +cwlexLexer.symbolicNames = [ null, "DOLLAR", "OPENPAREN", "CLOSEPAREN", + "OPENBRACE", "CLOSEBRACE", "OPENBRACKET", "CLOSEBRACKET", + "COLON", "COMMA", "EQ", "QUES", "NEWLINE", + "GREATER", "LESSER", "SPACE", "COMMENT", "OPENSCRIPT", + "CLOSESCRIPT", "SQSTRING", "DQSTRING", "BQSTRING", + "FLOAT", "INTEGER", "WORKFLOW", "TOOL", "FILE", + "DIRECTORY", "STDOUT", "FOR", "EACH", "IN", + "DEF", "RUN", "RETURN", "STRUCT", "USING", + "MERGE_NESTED", "MERGE_FLATTENED", "STRING", + "INT_SYMBOL", "FLOAT_SYMBOL", "BOOLEAN_SYMBOL", + "REQUIREMENTS", "HINTS", "IMPORT", "AS", "DO", + "SCATTER", "EXPR", "TRUE_SYMBOL", "FALSE_SYMBOL", + "NOTWS" ]; + +cwlexLexer.ruleNames = [ "DOLLAR", "OPENPAREN", "CLOSEPAREN", "OPENBRACE", + "CLOSEBRACE", "OPENBRACKET", "CLOSEBRACKET", "COLON", + "COMMA", "EQ", "QUES", "NEWLINE", "GREATER", "LESSER", + "SPACE", "COMMENT", "OPENSCRIPT", "CLOSESCRIPT", + "SQSTRING", "DQSTRING", "BQSTRING", "FLOAT", "INTEGER", + "WORKFLOW", "TOOL", "FILE", "DIRECTORY", "STDOUT", + "FOR", "EACH", "IN", "DEF", "RUN", "RETURN", "STRUCT", + "USING", "MERGE_NESTED", "MERGE_FLATTENED", "STRING", + "INT_SYMBOL", "FLOAT_SYMBOL", "BOOLEAN_SYMBOL", + "REQUIREMENTS", "HINTS", "IMPORT", "AS", "DO", + "SCATTER", "EXPR", "TRUE_SYMBOL", "FALSE_SYMBOL", + "NOTWS" ]; + +cwlexLexer.grammarFileName = "cwlex.g4"; + + + +exports.cwlexLexer = cwlexLexer; + diff --git a/src/cwlexListener.js b/src/cwlexListener.js new file mode 100644 index 0000000..d4d3bc0 --- /dev/null +++ b/src/cwlexListener.js @@ -0,0 +1,582 @@ +// Generated from /tmp/tmpte19dkck/stgc6bf9231-d979-4151-b9f5-c16dedd81bb9/cwlex.g4 by ANTLR 4.5.3 +// jshint ignore: start +var antlr4 = require('antlr4/index'); + +// This class defines a complete listener for a parse tree produced by cwlexParser. +function cwlexListener() { + antlr4.tree.ParseTreeListener.call(this); + return this; +} + +cwlexListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype); +cwlexListener.prototype.constructor = cwlexListener; + +// Enter a parse tree produced by cwlexParser#root. +cwlexListener.prototype.enterRoot = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#root. +cwlexListener.prototype.exitRoot = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#javascript. +cwlexListener.prototype.enterJavascript = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#javascript. +cwlexListener.prototype.exitJavascript = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#jsstring. +cwlexListener.prototype.enterJsstring = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#jsstring. +cwlexListener.prototype.exitJsstring = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#jsexpr. +cwlexListener.prototype.enterJsexpr = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#jsexpr. +cwlexListener.prototype.exitJsexpr = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#jsblock. +cwlexListener.prototype.enterJsblock = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#jsblock. +cwlexListener.prototype.exitJsblock = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#jslist. +cwlexListener.prototype.enterJslist = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#jslist. +cwlexListener.prototype.exitJslist = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#workflowdecl. +cwlexListener.prototype.enterWorkflowdecl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#workflowdecl. +cwlexListener.prototype.exitWorkflowdecl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#tooldecl. +cwlexListener.prototype.enterTooldecl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#tooldecl. +cwlexListener.prototype.exitTooldecl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#req_decl. +cwlexListener.prototype.enterReq_decl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#req_decl. +cwlexListener.prototype.exitReq_decl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#reqs. +cwlexListener.prototype.enterReqs = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#reqs. +cwlexListener.prototype.exitReqs = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#workflowbodyStatement. +cwlexListener.prototype.enterWorkflowbodyStatement = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#workflowbodyStatement. +cwlexListener.prototype.exitWorkflowbodyStatement = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#workflowbody. +cwlexListener.prototype.enterWorkflowbody = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#workflowbody. +cwlexListener.prototype.exitWorkflowbody = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#symbolassign. +cwlexListener.prototype.enterSymbolassign = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#symbolassign. +cwlexListener.prototype.exitSymbolassign = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#symbolassignlist. +cwlexListener.prototype.enterSymbolassignlist = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#symbolassignlist. +cwlexListener.prototype.exitSymbolassignlist = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#linkmerge. +cwlexListener.prototype.enterLinkmerge = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#linkmerge. +cwlexListener.prototype.exitLinkmerge = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#typedexpr. +cwlexListener.prototype.enterTypedexpr = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#typedexpr. +cwlexListener.prototype.exitTypedexpr = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#inlineexpr. +cwlexListener.prototype.enterInlineexpr = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#inlineexpr. +cwlexListener.prototype.exitInlineexpr = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#steprun. +cwlexListener.prototype.enterSteprun = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#steprun. +cwlexListener.prototype.exitSteprun = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#step. +cwlexListener.prototype.enterStep = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#step. +cwlexListener.prototype.exitStep = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#scatter. +cwlexListener.prototype.enterScatter = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#scatter. +cwlexListener.prototype.exitScatter = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#inlinetool. +cwlexListener.prototype.enterInlinetool = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#inlinetool. +cwlexListener.prototype.exitInlinetool = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#inlineworkflowbody. +cwlexListener.prototype.enterInlineworkflowbody = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#inlineworkflowbody. +cwlexListener.prototype.exitInlineworkflowbody = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#inlineworkflow. +cwlexListener.prototype.enterInlineworkflow = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#inlineworkflow. +cwlexListener.prototype.exitInlineworkflow = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#call. +cwlexListener.prototype.enterCall = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#call. +cwlexListener.prototype.exitCall = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#stepinputSourceOrValue. +cwlexListener.prototype.enterStepinputSourceOrValue = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#stepinputSourceOrValue. +cwlexListener.prototype.exitStepinputSourceOrValue = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#stepinput. +cwlexListener.prototype.enterStepinput = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#stepinput. +cwlexListener.prototype.exitStepinput = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#stepinputs. +cwlexListener.prototype.enterStepinputs = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#stepinputs. +cwlexListener.prototype.exitStepinputs = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#scriptlines. +cwlexListener.prototype.enterScriptlines = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#scriptlines. +cwlexListener.prototype.exitScriptlines = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#scriptbody. +cwlexListener.prototype.enterScriptbody = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#scriptbody. +cwlexListener.prototype.exitScriptbody = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#freetext. +cwlexListener.prototype.enterFreetext = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#freetext. +cwlexListener.prototype.exitFreetext = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#line. +cwlexListener.prototype.enterLine = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#line. +cwlexListener.prototype.exitLine = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#argument. +cwlexListener.prototype.enterArgument = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#argument. +cwlexListener.prototype.exitArgument = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#redirect. +cwlexListener.prototype.enterRedirect = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#redirect. +cwlexListener.prototype.exitRedirect = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#command. +cwlexListener.prototype.enterCommand = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#command. +cwlexListener.prototype.exitCommand = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#const_string. +cwlexListener.prototype.enterConst_string = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#const_string. +cwlexListener.prototype.exitConst_string = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#file_const. +cwlexListener.prototype.enterFile_const = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#file_const. +cwlexListener.prototype.exitFile_const = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#dir_const. +cwlexListener.prototype.enterDir_const = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#dir_const. +cwlexListener.prototype.exitDir_const = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#struct_field_name. +cwlexListener.prototype.enterStruct_field_name = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#struct_field_name. +cwlexListener.prototype.exitStruct_field_name = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#struct_field. +cwlexListener.prototype.enterStruct_field = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#struct_field. +cwlexListener.prototype.exitStruct_field = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#struct_const. +cwlexListener.prototype.enterStruct_const = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#struct_const. +cwlexListener.prototype.exitStruct_const = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#list_entry. +cwlexListener.prototype.enterList_entry = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#list_entry. +cwlexListener.prototype.exitList_entry = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#list_const. +cwlexListener.prototype.enterList_const = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#list_const. +cwlexListener.prototype.exitList_const = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#const_value. +cwlexListener.prototype.enterConst_value = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#const_value. +cwlexListener.prototype.exitConst_value = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#const_assignment. +cwlexListener.prototype.enterConst_assignment = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#const_assignment. +cwlexListener.prototype.exitConst_assignment = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#output_assignment. +cwlexListener.prototype.enterOutput_assignment = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#output_assignment. +cwlexListener.prototype.exitOutput_assignment = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#optional_for_bind. +cwlexListener.prototype.enterOptional_for_bind = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#optional_for_bind. +cwlexListener.prototype.exitOptional_for_bind = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#optional_for_over. +cwlexListener.prototype.enterOptional_for_over = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#optional_for_over. +cwlexListener.prototype.exitOptional_for_over = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#optional_arg. +cwlexListener.prototype.enterOptional_arg = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#optional_arg. +cwlexListener.prototype.exitOptional_arg = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#returnvar. +cwlexListener.prototype.enterReturnvar = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#returnvar. +cwlexListener.prototype.exitReturnvar = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#toolbody. +cwlexListener.prototype.enterToolbody = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#toolbody. +cwlexListener.prototype.exitToolbody = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#name. +cwlexListener.prototype.enterName = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#name. +cwlexListener.prototype.exitName = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#structdecl. +cwlexListener.prototype.enterStructdecl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#structdecl. +cwlexListener.prototype.exitStructdecl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#typekeyword. +cwlexListener.prototype.enterTypekeyword = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#typekeyword. +cwlexListener.prototype.exitTypekeyword = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#typedecl. +cwlexListener.prototype.enterTypedecl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#typedecl. +cwlexListener.prototype.exitTypedecl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#input_params. +cwlexListener.prototype.enterInput_params = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#input_params. +cwlexListener.prototype.exitInput_params = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#param_list. +cwlexListener.prototype.enterParam_list = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#param_list. +cwlexListener.prototype.exitParam_list = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#param_decl. +cwlexListener.prototype.enterParam_decl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#param_decl. +cwlexListener.prototype.exitParam_decl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#symbolpart. +cwlexListener.prototype.enterSymbolpart = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#symbolpart. +cwlexListener.prototype.exitSymbolpart = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#symbol. +cwlexListener.prototype.enterSymbol = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#symbol. +cwlexListener.prototype.exitSymbol = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#import_decl. +cwlexListener.prototype.enterImport_decl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#import_decl. +cwlexListener.prototype.exitImport_decl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#exprdecl. +cwlexListener.prototype.enterExprdecl = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#exprdecl. +cwlexListener.prototype.exitExprdecl = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#ws. +cwlexListener.prototype.enterWs = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#ws. +cwlexListener.prototype.exitWs = function(ctx) { +}; + + +// Enter a parse tree produced by cwlexParser#keyword. +cwlexListener.prototype.enterKeyword = function(ctx) { +}; + +// Exit a parse tree produced by cwlexParser#keyword. +cwlexListener.prototype.exitKeyword = function(ctx) { +}; + + + +exports.cwlexListener = cwlexListener; \ No newline at end of file diff --git a/src/cwlexParser.js b/src/cwlexParser.js new file mode 100644 index 0000000..4151461 --- /dev/null +++ b/src/cwlexParser.js @@ -0,0 +1,9066 @@ +// Generated from /tmp/tmpte19dkck/stgc6bf9231-d979-4151-b9f5-c16dedd81bb9/cwlex.g4 by ANTLR 4.5.3 +// jshint ignore: start +var antlr4 = require('antlr4/index'); +var cwlexListener = require('./cwlexListener').cwlexListener; +var grammarFileName = "cwlex.g4"; + +var serializedATN = ["\u0003\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd", + "\u00036\u04f3\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004\t", + "\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007\u0004", + "\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f\u0004", + "\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010\u0004", + "\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014\t", + "\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017\u0004", + "\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b\t", + "\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e\u0004", + "\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004$\t$\u0004", + "%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004+\t+\u0004", + ",\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u00042\t2\u0004", + "3\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u00049\t9\u0004", + ":\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004@\t@\u0003", + "\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0006\u0002\u0086", + "\n\u0002\r\u0002\u000e\u0002\u0087\u0003\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0007\u0003\u009b\n\u0003\f\u0003\u000e\u0003", + "\u009e\u000b\u0003\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003", + "\u0005\u0003\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003", + "\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0006\b\u00b0", + "\n\b\r\b\u000e\b\u00b1\u0003\b\u0003\b\u0006\b\u00b6\n\b\r\b\u000e\b", + "\u00b7\u0003\b\u0003\b\u0007\b\u00bc\n\b\f\b\u000e\b\u00bf\u000b\b\u0003", + "\b\u0003\b\u0007\b\u00c3\n\b\f\b\u000e\b\u00c6\u000b\b\u0003\b\u0003", + "\b\u0003\b\u0003\b\u0003\t\u0003\t\u0006\t\u00ce\n\t\r\t\u000e\t\u00cf", + "\u0003\t\u0003\t\u0006\t\u00d4\n\t\r\t\u000e\t\u00d5\u0003\t\u0003\t", + "\u0007\t\u00da\n\t\f\t\u000e\t\u00dd\u000b\t\u0003\t\u0003\t\u0007\t", + "\u00e1\n\t\f\t\u000e\t\u00e4\u000b\t\u0003\t\u0003\t\u0003\t\u0003\t", + "\u0003\n\u0003\n\u0005\n\u00ec\n\n\u0003\n\u0006\n\u00ef\n\n\r\n\u000e", + "\n\u00f0\u0003\n\u0003\n\u0006\n\u00f5\n\n\r\n\u000e\n\u00f6\u0003\n", + "\u0003\n\u0007\n\u00fb\n\n\f\n\u000e\n\u00fe\u000b\n\u0003\n\u0003\n", + "\u0005\n\u0102\n\n\u0003\u000b\u0003\u000b\u0006\u000b\u0106\n\u000b", + "\r\u000b\u000e\u000b\u0107\u0003\u000b\u0003\u000b\u0007\u000b\u010c", + "\n\u000b\f\u000b\u000e\u000b\u010f\u000b\u000b\u0003\u000b\u0003\u000b", + "\u0007\u000b\u0113\n\u000b\f\u000b\u000e\u000b\u0116\u000b\u000b\u0007", + "\u000b\u0118\n\u000b\f\u000b\u000e\u000b\u011b\u000b\u000b\u0003\u000b", + "\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0005\f\u0123\n\f\u0003", + "\r\u0007\r\u0126\n\r\f\r\u000e\r\u0129\u000b\r\u0003\r\u0007\r\u012c", + "\n\r\f\r\u000e\r\u012f\u000b\r\u0003\r\u0003\r\u0006\r\u0133\n\r\r\r", + "\u000e\r\u0134\u0003\r\u0003\r\u0005\r\u0139\n\r\u0003\u000e\u0003\u000e", + "\u0003\u000e\u0005\u000e\u013e\n\u000e\u0003\u000e\u0006\u000e\u0141", + "\n\u000e\r\u000e\u000e\u000e\u0142\u0003\u000e\u0003\u000e\u0006\u000e", + "\u0147\n\u000e\r\u000e\u000e\u000e\u0148\u0003\u000e\u0003\u000e\u0005", + "\u000e\u014d\n\u000e\u0003\u000f\u0003\u000f\u0007\u000f\u0151\n\u000f", + "\f\u000f\u000e\u000f\u0154\u000b\u000f\u0003\u000f\u0003\u000f\u0007", + "\u000f\u0158\n\u000f\f\u000f\u000e\u000f\u015b\u000b\u000f\u0003\u000f", + "\u0003\u000f\u0007\u000f\u015f\n\u000f\f\u000f\u000e\u000f\u0162\u000b", + "\u000f\u0007\u000f\u0164\n\u000f\f\u000f\u000e\u000f\u0167\u000b\u000f", + "\u0003\u0010\u0003\u0010\u0007\u0010\u016b\n\u0010\f\u0010\u000e\u0010", + "\u016e\u000b\u0010\u0003\u0010\u0003\u0010\u0007\u0010\u0172\n\u0010", + "\f\u0010\u000e\u0010\u0175\u000b\u0010\u0003\u0010\u0003\u0010\u0003", + "\u0010\u0007\u0010\u017a\n\u0010\f\u0010\u000e\u0010\u017d\u000b\u0010", + "\u0003\u0010\u0007\u0010\u0180\n\u0010\f\u0010\u000e\u0010\u0183\u000b", + "\u0010\u0003\u0010\u0007\u0010\u0186\n\u0010\f\u0010\u000e\u0010\u0189", + "\u000b\u0010\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0007\u0011", + "\u018f\n\u0011\f\u0011\u000e\u0011\u0192\u000b\u0011\u0003\u0011\u0003", + "\u0011\u0005\u0011\u0196\n\u0011\u0003\u0012\u0003\u0012\u0006\u0012", + "\u019a\n\u0012\r\u0012\u000e\u0012\u019b\u0003\u0012\u0003\u0012\u0007", + "\u0012\u01a0\n\u0012\f\u0012\u000e\u0012\u01a3\u000b\u0012\u0003\u0012", + "\u0003\u0012\u0007\u0012\u01a7\n\u0012\f\u0012\u000e\u0012\u01aa\u000b", + "\u0012\u0003\u0012\u0003\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003", + "\u0013\u0005\u0013\u01b2\n\u0013\u0003\u0014\u0003\u0014\u0007\u0014", + "\u01b6\n\u0014\f\u0014\u000e\u0014\u01b9\u000b\u0014\u0003\u0014\u0003", + "\u0014\u0005\u0014\u01bd\n\u0014\u0003\u0014\u0007\u0014\u01c0\n\u0014", + "\f\u0014\u000e\u0014\u01c3\u000b\u0014\u0003\u0014\u0005\u0014\u01c6", + "\n\u0014\u0003\u0014\u0007\u0014\u01c9\n\u0014\f\u0014\u000e\u0014\u01cc", + "\u000b\u0014\u0003\u0014\u0003\u0014\u0007\u0014\u01d0\n\u0014\f\u0014", + "\u000e\u0014\u01d3\u000b\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003", + "\u0015\u0006\u0015\u01d9\n\u0015\r\u0015\u000e\u0015\u01da\u0003\u0015", + "\u0003\u0015\u0006\u0015\u01df\n\u0015\r\u0015\u000e\u0015\u01e0\u0003", + "\u0015\u0003\u0015\u0006\u0015\u01e5\n\u0015\r\u0015\u000e\u0015\u01e6", + "\u0003\u0016\u0003\u0016\u0006\u0016\u01eb\n\u0016\r\u0016\u000e\u0016", + "\u01ec\u0003\u0016\u0003\u0016\u0007\u0016\u01f1\n\u0016\f\u0016\u000e", + "\u0016\u01f4\u000b\u0016\u0003\u0016\u0003\u0016\u0007\u0016\u01f8\n", + "\u0016\f\u0016\u000e\u0016\u01fb\u000b\u0016\u0003\u0016\u0003\u0016", + "\u0007\u0016\u01ff\n\u0016\f\u0016\u000e\u0016\u0202\u000b\u0016\u0003", + "\u0016\u0003\u0016\u0007\u0016\u0206\n\u0016\f\u0016\u000e\u0016\u0209", + "\u000b\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0018", + "\u0003\u0018\u0006\u0018\u0211\n\u0018\r\u0018\u000e\u0018\u0212\u0003", + "\u0018\u0003\u0018\u0007\u0018\u0217\n\u0018\f\u0018\u000e\u0018\u021a", + "\u000b\u0018\u0003\u0018\u0003\u0018\u0007\u0018\u021e\n\u0018\f\u0018", + "\u000e\u0018\u0221\u000b\u0018\u0003\u0018\u0003\u0018\u0007\u0018\u0225", + "\n\u0018\f\u0018\u000e\u0018\u0228\u000b\u0018\u0003\u0018\u0003\u0018", + "\u0007\u0018\u022c\n\u0018\f\u0018\u000e\u0018\u022f\u000b\u0018\u0003", + "\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0007\u0019\u0235\n\u0019", + "\f\u0019\u000e\u0019\u0238\u000b\u0019\u0003\u0019\u0003\u0019\u0003", + "\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003", + "\u001a\u0005\u001a\u0243\n\u001a\u0003\u001b\u0003\u001b\u0003\u001b", + "\u0007\u001b\u0248\n\u001b\f\u001b\u000e\u001b\u024b\u000b\u001b\u0003", + "\u001b\u0003\u001b\u0007\u001b\u024f\n\u001b\f\u001b\u000e\u001b\u0252", + "\u000b\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0005\u001b\u0257\n", + "\u001b\u0003\u001c\u0003\u001c\u0007\u001c\u025b\n\u001c\f\u001c\u000e", + "\u001c\u025e\u000b\u001c\u0003\u001c\u0003\u001c\u0007\u001c\u0262\n", + "\u001c\f\u001c\u000e\u001c\u0265\u000b\u001c\u0003\u001c\u0007\u001c", + "\u0268\n\u001c\f\u001c\u000e\u001c\u026b\u000b\u001c\u0003\u001c\u0003", + "\u001c\u0007\u001c\u026f\n\u001c\f\u001c\u000e\u001c\u0272\u000b\u001c", + "\u0003\u001c\u0007\u001c\u0275\n\u001c\f\u001c\u000e\u001c\u0278\u000b", + "\u001c\u0003\u001c\u0007\u001c\u027b\n\u001c\f\u001c\u000e\u001c\u027e", + "\u000b\u001c\u0005\u001c\u0280\n\u001c\u0003\u001c\u0003\u001c\u0003", + "\u001d\u0007\u001d\u0285\n\u001d\f\u001d\u000e\u001d\u0288\u000b\u001d", + "\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001f\u0003\u001f", + "\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f", + "\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f", + "\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f", + "\u0003\u001f\u0005\u001f\u02a3\n\u001f\u0003 \u0003 \u0003 \u0007 \u02a8", + "\n \f \u000e \u02ab\u000b \u0003 \u0003 \u0003!\u0006!\u02b0\n!\r!\u000e", + "!\u02b1\u0003\"\u0003\"\u0007\"\u02b6\n\"\f\"\u000e\"\u02b9\u000b\"", + "\u0003\"\u0003\"\u0003#\u0007#\u02be\n#\f#\u000e#\u02c1\u000b#\u0003", + "#\u0003#\u0006#\u02c5\n#\r#\u000e#\u02c6\u0003#\u0007#\u02ca\n#\f#\u000e", + "#\u02cd\u000b#\u0003#\u0007#\u02d0\n#\f#\u000e#\u02d3\u000b#\u0003#", + "\u0005#\u02d6\n#\u0003#\u0007#\u02d9\n#\f#\u000e#\u02dc\u000b#\u0003", + "#\u0003#\u0005#\u02e0\n#\u0003#\u0003#\u0007#\u02e4\n#\f#\u000e#\u02e7", + "\u000b#\u0003$\u0003$\u0003%\u0003%\u0007%\u02ed\n%\f%\u000e%\u02f0", + "\u000b%\u0003%\u0003%\u0007%\u02f4\n%\f%\u000e%\u02f7\u000b%\u0003%", + "\u0003%\u0007%\u02fb\n%\f%\u000e%\u02fe\u000b%\u0003%\u0003%\u0007%", + "\u0302\n%\f%\u000e%\u0305\u000b%\u0003%\u0003%\u0007%\u0309\n%\f%\u000e", + "%\u030c\u000b%\u0007%\u030e\n%\f%\u000e%\u0311\u000b%\u0003%\u0003%", + "\u0003&\u0003&\u0007&\u0317\n&\f&\u000e&\u031a\u000b&\u0003&\u0003&", + "\u0003&\u0003&\u0003\'\u0003\'\u0003\'\u0005\'\u0323\n\'\u0003(\u0003", + "(\u0007(\u0327\n(\f(\u000e(\u032a\u000b(\u0003(\u0003(\u0007(\u032e", + "\n(\f(\u000e(\u0331\u000b(\u0003(\u0003(\u0003)\u0003)\u0007)\u0337", + "\n)\f)\u000e)\u033a\u000b)\u0003)\u0005)\u033d\n)\u0003)\u0007)\u0340", + "\n)\f)\u000e)\u0343\u000b)\u0003)\u0003)\u0007)\u0347\n)\f)\u000e)\u034a", + "\u000b)\u0003)\u0003)\u0007)\u034e\n)\f)\u000e)\u0351\u000b)\u0007)", + "\u0353\n)\f)\u000e)\u0356\u000b)\u0003)\u0003)\u0003*\u0003*\u0003+", + "\u0003+\u0007+\u035e\n+\f+\u000e+\u0361\u000b+\u0003+\u0005+\u0364\n", + "+\u0003+\u0007+\u0367\n+\f+\u000e+\u036a\u000b+\u0003+\u0003+\u0007", + "+\u036e\n+\f+\u000e+\u0371\u000b+\u0003+\u0003+\u0007+\u0375\n+\f+\u000e", + "+\u0378\u000b+\u0007+\u037a\n+\f+\u000e+\u037d\u000b+\u0003+\u0003+", + "\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003,\u0003", + ",\u0005,\u038b\n,\u0003-\u0003-\u0007-\u038f\n-\f-\u000e-\u0392\u000b", + "-\u0003-\u0003-\u0007-\u0396\n-\f-\u000e-\u0399\u000b-\u0003-\u0003", + "-\u0007-\u039d\n-\f-\u000e-\u03a0\u000b-\u0003-\u0003-\u0003.\u0003", + ".\u0003.\u0006.\u03a7\n.\r.\u000e.\u03a8\u0003.\u0003.\u0006.\u03ad", + "\n.\r.\u000e.\u03ae\u0003.\u0003.\u0003.\u0003.\u0006.\u03b5\n.\r.\u000e", + ".\u03b6\u0003.\u0003.\u0006.\u03bb\n.\r.\u000e.\u03bc\u0003.\u0003.", + "\u0005.\u03c1\n.\u0005.\u03c3\n.\u0003/\u0003/\u00030\u00030\u00031", + "\u00031\u00061\u03cb\n1\r1\u000e1\u03cc\u00031\u00031\u00061\u03d1\n", + "1\r1\u000e1\u03d2\u00031\u00031\u00031\u00031\u00061\u03d9\n1\r1\u000e", + "1\u03da\u00051\u03dd\n1\u00031\u00031\u00061\u03e1\n1\r1\u000e1\u03e2", + "\u00031\u00031\u00061\u03e7\n1\r1\u000e1\u03e8\u00031\u00031\u00061", + "\u03ed\n1\r1\u000e1\u03ee\u00031\u00031\u00051\u03f3\n1\u00031\u0007", + "1\u03f6\n1\f1\u000e1\u03f9\u000b1\u00031\u00031\u00032\u00032\u0003", + "3\u00033\u00073\u0401\n3\f3\u000e3\u0404\u000b3\u00033\u00033\u0003", + "3\u00063\u0409\n3\r3\u000e3\u040a\u00033\u00033\u00073\u040f\n3\f3\u000e", + "3\u0412\u000b3\u00033\u00033\u00073\u0416\n3\f3\u000e3\u0419\u000b3", + "\u00033\u00033\u00073\u041d\n3\f3\u000e3\u0420\u000b3\u00073\u0422\n", + "3\f3\u000e3\u0425\u000b3\u00034\u00034\u00035\u00035\u00075\u042b\n", + "5\f5\u000e5\u042e\u000b5\u00035\u00035\u00075\u0432\n5\f5\u000e5\u0435", + "\u000b5\u00035\u00035\u00075\u0439\n5\f5\u000e5\u043c\u000b5\u00035", + "\u00035\u00075\u0440\n5\f5\u000e5\u0443\u000b5\u00035\u00035\u00075", + "\u0447\n5\f5\u000e5\u044a\u000b5\u00075\u044c\n5\f5\u000e5\u044f\u000b", + "5\u00055\u0451\n5\u00035\u00075\u0454\n5\f5\u000e5\u0457\u000b5\u0003", + "5\u00035\u00036\u00036\u00037\u00037\u00057\u045f\n7\u00037\u00037\u0005", + "7\u0463\n7\u00038\u00038\u00039\u00039\u00079\u0469\n9\f9\u000e9\u046c", + "\u000b9\u00039\u00039\u00079\u0470\n9\f9\u000e9\u0473\u000b9\u00039", + "\u00039\u00079\u0477\n9\f9\u000e9\u047a\u000b9\u00039\u00079\u047d\n", + "9\f9\u000e9\u0480\u000b9\u00059\u0482\n9\u00039\u00079\u0485\n9\f9\u000e", + "9\u0488\u000b9\u00039\u00039\u0003:\u0003:\u0005:\u048e\n:\u0003:\u0006", + ":\u0491\n:\r:\u000e:\u0492\u0003:\u0003:\u0003:\u0003:\u0007:\u0499", + "\n:\f:\u000e:\u049c\u000b:\u0003:\u0003:\u0007:\u04a0\n:\f:\u000e:\u04a3", + "\u000b:\u0003:\u0003:\u0005:\u04a7\n:\u0003;\u0003;\u0005;\u04ab\n;", + "\u0003<\u0003<\u0003<\u0003<\u0003<\u0006<\u04b2\n<\r<\u000e<\u04b3", + "\u0005<\u04b6\n<\u0003=\u0003=\u0006=\u04ba\n=\r=\u000e=\u04bb\u0003", + "=\u0003=\u0006=\u04c0\n=\r=\u000e=\u04c1\u0003=\u0003=\u0006=\u04c6", + "\n=\r=\u000e=\u04c7\u0003=\u0003=\u0007=\u04cc\n=\f=\u000e=\u04cf\u000b", + "=\u0003=\u0003=\u0003>\u0003>\u0006>\u04d5\n>\r>\u000e>\u04d6\u0003", + ">\u0003>\u0006>\u04db\n>\r>\u000e>\u04dc\u0003>\u0003>\u0007>\u04e1", + "\n>\f>\u000e>\u04e4\u000b>\u0003>\u0003>\u0007>\u04e8\n>\f>\u000e>\u04eb", + "\u000b>\u0003>\u0003>\u0003?\u0003?\u0003@\u0003@\u0003@\u0005\u009c", + "\u0286\u039e\u0002A\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014", + "\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bd", + "fhjlnprtvxz|~\u0002\t\u0003\u0002\u0015\u0017\u0003\u0002-.\u0003\u0002", + "\'(\u0003\u0002\u0015\u0016\u0004\u0002\u001c\u001d),\u0004\u0002\u000e", + "\u000e\u0011\u0012\u0004\u0002\u001a(*5\u0598\u0002\u0085\u0003\u0002", + "\u0002\u0002\u0004\u009c\u0003\u0002\u0002\u0002\u0006\u009f\u0003\u0002", + "\u0002\u0002\b\u00a1\u0003\u0002\u0002\u0002\n\u00a5\u0003\u0002\u0002", + "\u0002\f\u00a9\u0003\u0002\u0002\u0002\u000e\u00ad\u0003\u0002\u0002", + "\u0002\u0010\u00cb\u0003\u0002\u0002\u0002\u0012\u0101\u0003\u0002\u0002", + "\u0002\u0014\u0103\u0003\u0002\u0002\u0002\u0016\u0122\u0003\u0002\u0002", + "\u0002\u0018\u0127\u0003\u0002\u0002\u0002\u001a\u014c\u0003\u0002\u0002", + "\u0002\u001c\u014e\u0003\u0002\u0002\u0002\u001e\u0168\u0003\u0002\u0002", + "\u0002 \u018c\u0003\u0002\u0002\u0002\"\u0197\u0003\u0002\u0002\u0002", + "$\u01b1\u0003\u0002\u0002\u0002&\u01bc\u0003\u0002\u0002\u0002(\u01d6", + "\u0003\u0002\u0002\u0002*\u01e8\u0003\u0002\u0002\u0002,\u020c\u0003", + "\u0002\u0002\u0002.\u020e\u0003\u0002\u0002\u00020\u0232\u0003\u0002", + "\u0002\u00022\u0242\u0003\u0002\u0002\u00024\u0256\u0003\u0002\u0002", + "\u00026\u0258\u0003\u0002\u0002\u00028\u0286\u0003\u0002\u0002\u0002", + ":\u0289\u0003\u0002\u0002\u0002<\u02a2\u0003\u0002\u0002\u0002>\u02a9", + "\u0003\u0002\u0002\u0002@\u02af\u0003\u0002\u0002\u0002B\u02b3\u0003", + "\u0002\u0002\u0002D\u02bf\u0003\u0002\u0002\u0002F\u02e8\u0003\u0002", + "\u0002\u0002H\u02ea\u0003\u0002\u0002\u0002J\u0314\u0003\u0002\u0002", + "\u0002L\u0322\u0003\u0002\u0002\u0002N\u0324\u0003\u0002\u0002\u0002", + "P\u0334\u0003\u0002\u0002\u0002R\u0359\u0003\u0002\u0002\u0002T\u035b", + "\u0003\u0002\u0002\u0002V\u038a\u0003\u0002\u0002\u0002X\u038c\u0003", + "\u0002\u0002\u0002Z\u03c2\u0003\u0002\u0002\u0002\\\u03c4\u0003\u0002", + "\u0002\u0002^\u03c6\u0003\u0002\u0002\u0002`\u03c8\u0003\u0002\u0002", + "\u0002b\u03fc\u0003\u0002\u0002\u0002d\u0402\u0003\u0002\u0002\u0002", + "f\u0426\u0003\u0002\u0002\u0002h\u0428\u0003\u0002\u0002\u0002j\u045a", + "\u0003\u0002\u0002\u0002l\u045e\u0003\u0002\u0002\u0002n\u0464\u0003", + "\u0002\u0002\u0002p\u0466\u0003\u0002\u0002\u0002r\u04a6\u0003\u0002", + "\u0002\u0002t\u04aa\u0003\u0002\u0002\u0002v\u04b5\u0003\u0002\u0002", + "\u0002x\u04b7\u0003\u0002\u0002\u0002z\u04d2\u0003\u0002\u0002\u0002", + "|\u04ee\u0003\u0002\u0002\u0002~\u04f0\u0003\u0002\u0002\u0002\u0080", + "\u0086\u0005\u000e\b\u0002\u0081\u0086\u0005\u0010\t\u0002\u0082\u0086", + "\u0005x=\u0002\u0083\u0086\u0005z>\u0002\u0084\u0086\u0005|?\u0002\u0085", + "\u0080\u0003\u0002\u0002\u0002\u0085\u0081\u0003\u0002\u0002\u0002\u0085", + "\u0082\u0003\u0002\u0002\u0002\u0085\u0083\u0003\u0002\u0002\u0002\u0085", + "\u0084\u0003\u0002\u0002\u0002\u0086\u0087\u0003\u0002\u0002\u0002\u0087", + "\u0085\u0003\u0002\u0002\u0002\u0087\u0088\u0003\u0002\u0002\u0002\u0088", + "\u0003\u0003\u0002\u0002\u0002\u0089\u009b\u0005\u0006\u0004\u0002\u008a", + "\u009b\u0005\b\u0005\u0002\u008b\u009b\u0005\n\u0006\u0002\u008c\u009b", + "\u0005\f\u0007\u0002\u008d\u009b\u0005|?\u0002\u008e\u009b\u0007\u0003", + "\u0002\u0002\u008f\u009b\u0007\n\u0002\u0002\u0090\u009b\u0007\u000b", + "\u0002\u0002\u0091\u009b\u0007\f\u0002\u0002\u0092\u009b\u0007\r\u0002", + "\u0002\u0093\u009b\u0007\u000f\u0002\u0002\u0094\u009b\u0007\u0010\u0002", + "\u0002\u0095\u009b\u0007\u0012\u0002\u0002\u0096\u009b\u0007\u0018\u0002", + "\u0002\u0097\u009b\u0007\u0019\u0002\u0002\u0098\u009b\u0005~@\u0002", + "\u0099\u009b\u00076\u0002\u0002\u009a\u0089\u0003\u0002\u0002\u0002", + "\u009a\u008a\u0003\u0002\u0002\u0002\u009a\u008b\u0003\u0002\u0002\u0002", + "\u009a\u008c\u0003\u0002\u0002\u0002\u009a\u008d\u0003\u0002\u0002\u0002", + "\u009a\u008e\u0003\u0002\u0002\u0002\u009a\u008f\u0003\u0002\u0002\u0002", + "\u009a\u0090\u0003\u0002\u0002\u0002\u009a\u0091\u0003\u0002\u0002\u0002", + "\u009a\u0092\u0003\u0002\u0002\u0002\u009a\u0093\u0003\u0002\u0002\u0002", + "\u009a\u0094\u0003\u0002\u0002\u0002\u009a\u0095\u0003\u0002\u0002\u0002", + "\u009a\u0096\u0003\u0002\u0002\u0002\u009a\u0097\u0003\u0002\u0002\u0002", + "\u009a\u0098\u0003\u0002\u0002\u0002\u009a\u0099\u0003\u0002\u0002\u0002", + "\u009b\u009e\u0003\u0002\u0002\u0002\u009c\u009d\u0003\u0002\u0002\u0002", + "\u009c\u009a\u0003\u0002\u0002\u0002\u009d\u0005\u0003\u0002\u0002\u0002", + "\u009e\u009c\u0003\u0002\u0002\u0002\u009f\u00a0\t\u0002\u0002\u0002", + "\u00a0\u0007\u0003\u0002\u0002\u0002\u00a1\u00a2\u0007\u0004\u0002\u0002", + "\u00a2\u00a3\u0005\u0004\u0003\u0002\u00a3\u00a4\u0007\u0005\u0002\u0002", + "\u00a4\t\u0003\u0002\u0002\u0002\u00a5\u00a6\u0007\u0006\u0002\u0002", + "\u00a6\u00a7\u0005\u0004\u0003\u0002\u00a7\u00a8\u0007\u0007\u0002\u0002", + "\u00a8\u000b\u0003\u0002\u0002\u0002\u00a9\u00aa\u0007\b\u0002\u0002", + "\u00aa\u00ab\u0005\u0004\u0003\u0002\u00ab\u00ac\u0007\t\u0002\u0002", + "\u00ac\r\u0003\u0002\u0002\u0002\u00ad\u00af\u0007\"\u0002\u0002\u00ae", + "\u00b0\u0005|?\u0002\u00af\u00ae\u0003\u0002\u0002\u0002\u00b0\u00b1", + "\u0003\u0002\u0002\u0002\u00b1\u00af\u0003\u0002\u0002\u0002\u00b1\u00b2", + "\u0003\u0002\u0002\u0002\u00b2\u00b3\u0003\u0002\u0002\u0002\u00b3\u00b5", + "\u0007\u001a\u0002\u0002\u00b4\u00b6\u0005|?\u0002\u00b5\u00b4\u0003", + "\u0002\u0002\u0002\u00b6\u00b7\u0003\u0002\u0002\u0002\u00b7\u00b5\u0003", + "\u0002\u0002\u0002\u00b7\u00b8\u0003\u0002\u0002\u0002\u00b8\u00b9\u0003", + "\u0002\u0002\u0002\u00b9\u00bd\u0005f4\u0002\u00ba\u00bc\u0005|?\u0002", + "\u00bb\u00ba\u0003\u0002\u0002\u0002\u00bc\u00bf\u0003\u0002\u0002\u0002", + "\u00bd\u00bb\u0003\u0002\u0002\u0002\u00bd\u00be\u0003\u0002\u0002\u0002", + "\u00be\u00c0\u0003\u0002\u0002\u0002\u00bf\u00bd\u0003\u0002\u0002\u0002", + "\u00c0\u00c4\u0005n8\u0002\u00c1\u00c3\u0005|?\u0002\u00c2\u00c1\u0003", + "\u0002\u0002\u0002\u00c3\u00c6\u0003\u0002\u0002\u0002\u00c4\u00c2\u0003", + "\u0002\u0002\u0002\u00c4\u00c5\u0003\u0002\u0002\u0002\u00c5\u00c7\u0003", + "\u0002\u0002\u0002\u00c6\u00c4\u0003\u0002\u0002\u0002\u00c7\u00c8\u0007", + "\u0006\u0002\u0002\u00c8\u00c9\u0005\u0018\r\u0002\u00c9\u00ca\u0007", + "\u0007\u0002\u0002\u00ca\u000f\u0003\u0002\u0002\u0002\u00cb\u00cd\u0007", + "\"\u0002\u0002\u00cc\u00ce\u0005|?\u0002\u00cd\u00cc\u0003\u0002\u0002", + "\u0002\u00ce\u00cf\u0003\u0002\u0002\u0002\u00cf\u00cd\u0003\u0002\u0002", + "\u0002\u00cf\u00d0\u0003\u0002\u0002\u0002\u00d0\u00d1\u0003\u0002\u0002", + "\u0002\u00d1\u00d3\u0007\u001b\u0002\u0002\u00d2\u00d4\u0005|?\u0002", + "\u00d3\u00d2\u0003\u0002\u0002\u0002\u00d4\u00d5\u0003\u0002\u0002\u0002", + "\u00d5\u00d3\u0003\u0002\u0002\u0002\u00d5\u00d6\u0003\u0002\u0002\u0002", + "\u00d6\u00d7\u0003\u0002\u0002\u0002\u00d7\u00db\u0005f4\u0002\u00d8", + "\u00da\u0005|?\u0002\u00d9\u00d8\u0003\u0002\u0002\u0002\u00da\u00dd", + "\u0003\u0002\u0002\u0002\u00db\u00d9\u0003\u0002\u0002\u0002\u00db\u00dc", + "\u0003\u0002\u0002\u0002\u00dc\u00de\u0003\u0002\u0002\u0002\u00dd\u00db", + "\u0003\u0002\u0002\u0002\u00de\u00e2\u0005n8\u0002\u00df\u00e1\u0005", + "|?\u0002\u00e0\u00df\u0003\u0002\u0002\u0002\u00e1\u00e4\u0003\u0002", + "\u0002\u0002\u00e2\u00e0\u0003\u0002\u0002\u0002\u00e2\u00e3\u0003\u0002", + "\u0002\u0002\u00e3\u00e5\u0003\u0002\u0002\u0002\u00e4\u00e2\u0003\u0002", + "\u0002\u0002\u00e5\u00e6\u0007\u0006\u0002\u0002\u00e6\u00e7\u0005d", + "3\u0002\u00e7\u00e8\u0007\u0007\u0002\u0002\u00e8\u0011\u0003\u0002", + "\u0002\u0002\u00e9\u00eb\u0005v<\u0002\u00ea\u00ec\u0007\u000b\u0002", + "\u0002\u00eb\u00ea\u0003\u0002\u0002\u0002\u00eb\u00ec\u0003\u0002\u0002", + "\u0002\u00ec\u00ee\u0003\u0002\u0002\u0002\u00ed\u00ef\u0005|?\u0002", + "\u00ee\u00ed\u0003\u0002\u0002\u0002\u00ef\u00f0\u0003\u0002\u0002\u0002", + "\u00f0\u00ee\u0003\u0002\u0002\u0002\u00f0\u00f1\u0003\u0002\u0002\u0002", + "\u00f1\u0102\u0003\u0002\u0002\u0002\u00f2\u00f4\u0005v<\u0002\u00f3", + "\u00f5\u0005|?\u0002\u00f4\u00f3\u0003\u0002\u0002\u0002\u00f5\u00f6", + "\u0003\u0002\u0002\u0002\u00f6\u00f4\u0003\u0002\u0002\u0002\u00f6\u00f7", + "\u0003\u0002\u0002\u0002\u00f7\u00f8\u0003\u0002\u0002\u0002\u00f8\u00fc", + "\u0005P)\u0002\u00f9\u00fb\u0005|?\u0002\u00fa\u00f9\u0003\u0002\u0002", + "\u0002\u00fb\u00fe\u0003\u0002\u0002\u0002\u00fc\u00fa\u0003\u0002\u0002", + "\u0002\u00fc\u00fd\u0003\u0002\u0002\u0002\u00fd\u00ff\u0003\u0002\u0002", + "\u0002\u00fe\u00fc\u0003\u0002\u0002\u0002\u00ff\u0100\u0007\u000e\u0002", + "\u0002\u0100\u0102\u0003\u0002\u0002\u0002\u0101\u00e9\u0003\u0002\u0002", + "\u0002\u0101\u00f2\u0003\u0002\u0002\u0002\u0102\u0013\u0003\u0002\u0002", + "\u0002\u0103\u0105\t\u0003\u0002\u0002\u0104\u0106\u0005|?\u0002\u0105", + "\u0104\u0003\u0002\u0002\u0002\u0106\u0107\u0003\u0002\u0002\u0002\u0107", + "\u0105\u0003\u0002\u0002\u0002\u0107\u0108\u0003\u0002\u0002\u0002\u0108", + "\u0109\u0003\u0002\u0002\u0002\u0109\u010d\u0007\u0006\u0002\u0002\u010a", + "\u010c\u0005|?\u0002\u010b\u010a\u0003\u0002\u0002\u0002\u010c\u010f", + "\u0003\u0002\u0002\u0002\u010d\u010b\u0003\u0002\u0002\u0002\u010d\u010e", + "\u0003\u0002\u0002\u0002\u010e\u0119\u0003\u0002\u0002\u0002\u010f\u010d", + "\u0003\u0002\u0002\u0002\u0110\u0114\u0005\u0012\n\u0002\u0111\u0113", + "\u0005|?\u0002\u0112\u0111\u0003\u0002\u0002\u0002\u0113\u0116\u0003", + "\u0002\u0002\u0002\u0114\u0112\u0003\u0002\u0002\u0002\u0114\u0115\u0003", + "\u0002\u0002\u0002\u0115\u0118\u0003\u0002\u0002\u0002\u0116\u0114\u0003", + "\u0002\u0002\u0002\u0117\u0110\u0003\u0002\u0002\u0002\u0118\u011b\u0003", + "\u0002\u0002\u0002\u0119\u0117\u0003\u0002\u0002\u0002\u0119\u011a\u0003", + "\u0002\u0002\u0002\u011a\u011c\u0003\u0002\u0002\u0002\u011b\u0119\u0003", + "\u0002\u0002\u0002\u011c\u011d\u0007\u0007\u0002\u0002\u011d\u0015\u0003", + "\u0002\u0002\u0002\u011e\u0123\u0005X-\u0002\u011f\u0123\u0005&\u0014", + "\u0002\u0120\u0123\u0005\u0014\u000b\u0002\u0121\u0123\u0005|?\u0002", + "\u0122\u011e\u0003\u0002\u0002\u0002\u0122\u011f\u0003\u0002\u0002\u0002", + "\u0122\u0120\u0003\u0002\u0002\u0002\u0122\u0121\u0003\u0002\u0002\u0002", + "\u0123\u0017\u0003\u0002\u0002\u0002\u0124\u0126\u0005\u0016\f\u0002", + "\u0125\u0124\u0003\u0002\u0002\u0002\u0126\u0129\u0003\u0002\u0002\u0002", + "\u0127\u0125\u0003\u0002\u0002\u0002\u0127\u0128\u0003\u0002\u0002\u0002", + "\u0128\u012d\u0003\u0002\u0002\u0002\u0129\u0127\u0003\u0002\u0002\u0002", + "\u012a\u012c\u0005|?\u0002\u012b\u012a\u0003\u0002\u0002\u0002\u012c", + "\u012f\u0003\u0002\u0002\u0002\u012d\u012b\u0003\u0002\u0002\u0002\u012d", + "\u012e\u0003\u0002\u0002\u0002\u012e\u0138\u0003\u0002\u0002\u0002\u012f", + "\u012d\u0003\u0002\u0002\u0002\u0130\u0132\u0007$\u0002\u0002\u0131", + "\u0133\u0005|?\u0002\u0132\u0131\u0003\u0002\u0002\u0002\u0133\u0134", + "\u0003\u0002\u0002\u0002\u0134\u0132\u0003\u0002\u0002\u0002\u0134\u0135", + "\u0003\u0002\u0002\u0002\u0135\u0136\u0003\u0002\u0002\u0002\u0136\u0137", + "\u0005\u001c\u000f\u0002\u0137\u0139\u0003\u0002\u0002\u0002\u0138\u0130", + "\u0003\u0002\u0002\u0002\u0138\u0139\u0003\u0002\u0002\u0002\u0139\u0019", + "\u0003\u0002\u0002\u0002\u013a\u014d\u0005f4\u0002\u013b\u013e\u0005", + "v<\u0002\u013c\u013e\u0005\u001e\u0010\u0002\u013d\u013b\u0003\u0002", + "\u0002\u0002\u013d\u013c\u0003\u0002\u0002\u0002\u013e\u0140\u0003\u0002", + "\u0002\u0002\u013f\u0141\u0005|?\u0002\u0140\u013f\u0003\u0002\u0002", + "\u0002\u0141\u0142\u0003\u0002\u0002\u0002\u0142\u0140\u0003\u0002\u0002", + "\u0002\u0142\u0143\u0003\u0002\u0002\u0002\u0143\u0144\u0003\u0002\u0002", + "\u0002\u0144\u0146\u00070\u0002\u0002\u0145\u0147\u0005|?\u0002\u0146", + "\u0145\u0003\u0002\u0002\u0002\u0147\u0148\u0003\u0002\u0002\u0002\u0148", + "\u0146\u0003\u0002\u0002\u0002\u0148\u0149\u0003\u0002\u0002\u0002\u0149", + "\u014a\u0003\u0002\u0002\u0002\u014a\u014b\u0005f4\u0002\u014b\u014d", + "\u0003\u0002\u0002\u0002\u014c\u013a\u0003\u0002\u0002\u0002\u014c\u013d", + "\u0003\u0002\u0002\u0002\u014d\u001b\u0003\u0002\u0002\u0002\u014e\u0152", + "\u0005\u001a\u000e\u0002\u014f\u0151\u0005|?\u0002\u0150\u014f\u0003", + "\u0002\u0002\u0002\u0151\u0154\u0003\u0002\u0002\u0002\u0152\u0150\u0003", + "\u0002\u0002\u0002\u0152\u0153\u0003\u0002\u0002\u0002\u0153\u0165\u0003", + "\u0002\u0002\u0002\u0154\u0152\u0003\u0002\u0002\u0002\u0155\u0159\u0007", + "\u000b\u0002\u0002\u0156\u0158\u0005|?\u0002\u0157\u0156\u0003\u0002", + "\u0002\u0002\u0158\u015b\u0003\u0002\u0002\u0002\u0159\u0157\u0003\u0002", + "\u0002\u0002\u0159\u015a\u0003\u0002\u0002\u0002\u015a\u015c\u0003\u0002", + "\u0002\u0002\u015b\u0159\u0003\u0002\u0002\u0002\u015c\u0160\u0005\u001a", + "\u000e\u0002\u015d\u015f\u0005|?\u0002\u015e\u015d\u0003\u0002\u0002", + "\u0002\u015f\u0162\u0003\u0002\u0002\u0002\u0160\u015e\u0003\u0002\u0002", + "\u0002\u0160\u0161\u0003\u0002\u0002\u0002\u0161\u0164\u0003\u0002\u0002", + "\u0002\u0162\u0160\u0003\u0002\u0002\u0002\u0163\u0155\u0003\u0002\u0002", + "\u0002\u0164\u0167\u0003\u0002\u0002\u0002\u0165\u0163\u0003\u0002\u0002", + "\u0002\u0165\u0166\u0003\u0002\u0002\u0002\u0166\u001d\u0003\u0002\u0002", + "\u0002\u0167\u0165\u0003\u0002\u0002\u0002\u0168\u016c\t\u0004\u0002", + "\u0002\u0169\u016b\u0005|?\u0002\u016a\u0169\u0003\u0002\u0002\u0002", + "\u016b\u016e\u0003\u0002\u0002\u0002\u016c\u016a\u0003\u0002\u0002\u0002", + "\u016c\u016d\u0003\u0002\u0002\u0002\u016d\u016f\u0003\u0002\u0002\u0002", + "\u016e\u016c\u0003\u0002\u0002\u0002\u016f\u0173\u0007\u0004\u0002\u0002", + "\u0170\u0172\u0005|?\u0002\u0171\u0170\u0003\u0002\u0002\u0002\u0172", + "\u0175\u0003\u0002\u0002\u0002\u0173\u0171\u0003\u0002\u0002\u0002\u0173", + "\u0174\u0003\u0002\u0002\u0002\u0174\u0176\u0003\u0002\u0002\u0002\u0175", + "\u0173\u0003\u0002\u0002\u0002\u0176\u0181\u0005v<\u0002\u0177\u017b", + "\u0007\u000b\u0002\u0002\u0178\u017a\u0005|?\u0002\u0179\u0178\u0003", + "\u0002\u0002\u0002\u017a\u017d\u0003\u0002\u0002\u0002\u017b\u0179\u0003", + "\u0002\u0002\u0002\u017b\u017c\u0003\u0002\u0002\u0002\u017c\u017e\u0003", + "\u0002\u0002\u0002\u017d\u017b\u0003\u0002\u0002\u0002\u017e\u0180\u0005", + "v<\u0002\u017f\u0177\u0003\u0002\u0002\u0002\u0180\u0183\u0003\u0002", + "\u0002\u0002\u0181\u017f\u0003\u0002\u0002\u0002\u0181\u0182\u0003\u0002", + "\u0002\u0002\u0182\u0187\u0003\u0002\u0002\u0002\u0183\u0181\u0003\u0002", + "\u0002\u0002\u0184\u0186\u0005|?\u0002\u0185\u0184\u0003\u0002\u0002", + "\u0002\u0186\u0189\u0003\u0002\u0002\u0002\u0187\u0185\u0003\u0002\u0002", + "\u0002\u0187\u0188\u0003\u0002\u0002\u0002\u0188\u018a\u0003\u0002\u0002", + "\u0002\u0189\u0187\u0003\u0002\u0002\u0002\u018a\u018b\u0007\u0005\u0002", + "\u0002\u018b\u001f\u0003\u0002\u0002\u0002\u018c\u0190\u0005l7\u0002", + "\u018d\u018f\u0005|?\u0002\u018e\u018d\u0003\u0002\u0002\u0002\u018f", + "\u0192\u0003\u0002\u0002\u0002\u0190\u018e\u0003\u0002\u0002\u0002\u0190", + "\u0191\u0003\u0002\u0002\u0002\u0191\u0195\u0003\u0002\u0002\u0002\u0192", + "\u0190\u0003\u0002\u0002\u0002\u0193\u0196\u0005\b\u0005\u0002\u0194", + "\u0196\u0005\n\u0006\u0002\u0195\u0193\u0003\u0002\u0002\u0002\u0195", + "\u0194\u0003\u0002\u0002\u0002\u0196!\u0003\u0002\u0002\u0002\u0197", + "\u0199\u0007#\u0002\u0002\u0198\u019a\u0005|?\u0002\u0199\u0198\u0003", + "\u0002\u0002\u0002\u019a\u019b\u0003\u0002\u0002\u0002\u019b\u0199\u0003", + "\u0002\u0002\u0002\u019b\u019c\u0003\u0002\u0002\u0002\u019c\u019d\u0003", + "\u0002\u0002\u0002\u019d\u01a1\u00073\u0002\u0002\u019e\u01a0\u0005", + "|?\u0002\u019f\u019e\u0003\u0002\u0002\u0002\u01a0\u01a3\u0003\u0002", + "\u0002\u0002\u01a1\u019f\u0003\u0002\u0002\u0002\u01a1\u01a2\u0003\u0002", + "\u0002\u0002\u01a2\u01a4\u0003\u0002\u0002\u0002\u01a3\u01a1\u0003\u0002", + "\u0002\u0002\u01a4\u01a8\u00056\u001c\u0002\u01a5\u01a7\u0005|?\u0002", + "\u01a6\u01a5\u0003\u0002\u0002\u0002\u01a7\u01aa\u0003\u0002\u0002\u0002", + "\u01a8\u01a6\u0003\u0002\u0002\u0002\u01a8\u01a9\u0003\u0002\u0002\u0002", + "\u01a9\u01ab\u0003\u0002\u0002\u0002\u01aa\u01a8\u0003\u0002\u0002\u0002", + "\u01ab\u01ac\u0005 \u0011\u0002\u01ac#\u0003\u0002\u0002\u0002\u01ad", + "\u01b2\u0005\"\u0012\u0002\u01ae\u01b2\u0005*\u0016\u0002\u01af\u01b2", + "\u0005.\u0018\u0002\u01b0\u01b2\u00050\u0019\u0002\u01b1\u01ad\u0003", + "\u0002\u0002\u0002\u01b1\u01ae\u0003\u0002\u0002\u0002\u01b1\u01af\u0003", + "\u0002\u0002\u0002\u01b1\u01b0\u0003\u0002\u0002\u0002\u01b2%\u0003", + "\u0002\u0002\u0002\u01b3\u01b7\u0005\u001c\u000f\u0002\u01b4\u01b6\u0005", + "|?\u0002\u01b5\u01b4\u0003\u0002\u0002\u0002\u01b6\u01b9\u0003\u0002", + "\u0002\u0002\u01b7\u01b5\u0003\u0002\u0002\u0002\u01b7\u01b8\u0003\u0002", + "\u0002\u0002\u01b8\u01ba\u0003\u0002\u0002\u0002\u01b9\u01b7\u0003\u0002", + "\u0002\u0002\u01ba\u01bb\u0007\f\u0002\u0002\u01bb\u01bd\u0003\u0002", + "\u0002\u0002\u01bc\u01b3\u0003\u0002\u0002\u0002\u01bc\u01bd\u0003\u0002", + "\u0002\u0002\u01bd\u01c1\u0003\u0002\u0002\u0002\u01be\u01c0\u0005|", + "?\u0002\u01bf\u01be\u0003\u0002\u0002\u0002\u01c0\u01c3\u0003\u0002", + "\u0002\u0002\u01c1\u01bf\u0003\u0002\u0002\u0002\u01c1\u01c2\u0003\u0002", + "\u0002\u0002\u01c2\u01c5\u0003\u0002\u0002\u0002\u01c3\u01c1\u0003\u0002", + "\u0002\u0002\u01c4\u01c6\u0005(\u0015\u0002\u01c5\u01c4\u0003\u0002", + "\u0002\u0002\u01c5\u01c6\u0003\u0002\u0002\u0002\u01c6\u01ca\u0003\u0002", + "\u0002\u0002\u01c7\u01c9\u0005|?\u0002\u01c8\u01c7\u0003\u0002\u0002", + "\u0002\u01c9\u01cc\u0003\u0002\u0002\u0002\u01ca\u01c8\u0003\u0002\u0002", + "\u0002\u01ca\u01cb\u0003\u0002\u0002\u0002\u01cb\u01cd\u0003\u0002\u0002", + "\u0002\u01cc\u01ca\u0003\u0002\u0002\u0002\u01cd\u01d1\u0005$\u0013", + "\u0002\u01ce\u01d0\u0005|?\u0002\u01cf\u01ce\u0003\u0002\u0002\u0002", + "\u01d0\u01d3\u0003\u0002\u0002\u0002\u01d1\u01cf\u0003\u0002\u0002\u0002", + "\u01d1\u01d2\u0003\u0002\u0002\u0002\u01d2\u01d4\u0003\u0002\u0002\u0002", + "\u01d3\u01d1\u0003\u0002\u0002\u0002\u01d4\u01d5\u0007\u000e\u0002\u0002", + "\u01d5\'\u0003\u0002\u0002\u0002\u01d6\u01d8\u00072\u0002\u0002\u01d7", + "\u01d9\u0005|?\u0002\u01d8\u01d7\u0003\u0002\u0002\u0002\u01d9\u01da", + "\u0003\u0002\u0002\u0002\u01da\u01d8\u0003\u0002\u0002\u0002\u01da\u01db", + "\u0003\u0002\u0002\u0002\u01db\u01dc\u0003\u0002\u0002\u0002\u01dc\u01de", + "\u0005\u001c\u000f\u0002\u01dd\u01df\u0005|?\u0002\u01de\u01dd\u0003", + "\u0002\u0002\u0002\u01df\u01e0\u0003\u0002\u0002\u0002\u01e0\u01de\u0003", + "\u0002\u0002\u0002\u01e0\u01e1\u0003\u0002\u0002\u0002\u01e1\u01e2\u0003", + "\u0002\u0002\u0002\u01e2\u01e4\u00071\u0002\u0002\u01e3\u01e5\u0005", + "|?\u0002\u01e4\u01e3\u0003\u0002\u0002\u0002\u01e5\u01e6\u0003\u0002", + "\u0002\u0002\u01e6\u01e4\u0003\u0002\u0002\u0002\u01e6\u01e7\u0003\u0002", + "\u0002\u0002\u01e7)\u0003\u0002\u0002\u0002\u01e8\u01ea\u0007#\u0002", + "\u0002\u01e9\u01eb\u0005|?\u0002\u01ea\u01e9\u0003\u0002\u0002\u0002", + "\u01eb\u01ec\u0003\u0002\u0002\u0002\u01ec\u01ea\u0003\u0002\u0002\u0002", + "\u01ec\u01ed\u0003\u0002\u0002\u0002\u01ed\u01ee\u0003\u0002\u0002\u0002", + "\u01ee\u01f2\u0007\u001b\u0002\u0002\u01ef\u01f1\u0005|?\u0002\u01f0", + "\u01ef\u0003\u0002\u0002\u0002\u01f1\u01f4\u0003\u0002\u0002\u0002\u01f2", + "\u01f0\u0003\u0002\u0002\u0002\u01f2\u01f3\u0003\u0002\u0002\u0002\u01f3", + "\u01f5\u0003\u0002\u0002\u0002\u01f4\u01f2\u0003\u0002\u0002\u0002\u01f5", + "\u01f9\u00056\u001c\u0002\u01f6\u01f8\u0005|?\u0002\u01f7\u01f6\u0003", + "\u0002\u0002\u0002\u01f8\u01fb\u0003\u0002\u0002\u0002\u01f9\u01f7\u0003", + "\u0002\u0002\u0002\u01f9\u01fa\u0003\u0002\u0002\u0002\u01fa\u01fc\u0003", + "\u0002\u0002\u0002\u01fb\u01f9\u0003\u0002\u0002\u0002\u01fc\u0200\u0007", + "\u0006\u0002\u0002\u01fd\u01ff\u0005|?\u0002\u01fe\u01fd\u0003\u0002", + "\u0002\u0002\u01ff\u0202\u0003\u0002\u0002\u0002\u0200\u01fe\u0003\u0002", + "\u0002\u0002\u0200\u0201\u0003\u0002\u0002\u0002\u0201\u0203\u0003\u0002", + "\u0002\u0002\u0202\u0200\u0003\u0002\u0002\u0002\u0203\u0207\u0005d", + "3\u0002\u0204\u0206\u0005|?\u0002\u0205\u0204\u0003\u0002\u0002\u0002", + "\u0206\u0209\u0003\u0002\u0002\u0002\u0207\u0205\u0003\u0002\u0002\u0002", + "\u0207\u0208\u0003\u0002\u0002\u0002\u0208\u020a\u0003\u0002\u0002\u0002", + "\u0209\u0207\u0003\u0002\u0002\u0002\u020a\u020b\u0007\u0007\u0002\u0002", + "\u020b+\u0003\u0002\u0002\u0002\u020c\u020d\u0005\u0018\r\u0002\u020d", + "-\u0003\u0002\u0002\u0002\u020e\u0210\u0007#\u0002\u0002\u020f\u0211", + "\u0005|?\u0002\u0210\u020f\u0003\u0002\u0002\u0002\u0211\u0212\u0003", + "\u0002\u0002\u0002\u0212\u0210\u0003\u0002\u0002\u0002\u0212\u0213\u0003", + "\u0002\u0002\u0002\u0213\u0214\u0003\u0002\u0002\u0002\u0214\u0218\u0007", + "\u001a\u0002\u0002\u0215\u0217\u0005|?\u0002\u0216\u0215\u0003\u0002", + "\u0002\u0002\u0217\u021a\u0003\u0002\u0002\u0002\u0218\u0216\u0003\u0002", + "\u0002\u0002\u0218\u0219\u0003\u0002\u0002\u0002\u0219\u021b\u0003\u0002", + "\u0002\u0002\u021a\u0218\u0003\u0002\u0002\u0002\u021b\u021f\u00056", + "\u001c\u0002\u021c\u021e\u0005|?\u0002\u021d\u021c\u0003\u0002\u0002", + "\u0002\u021e\u0221\u0003\u0002\u0002\u0002\u021f\u021d\u0003\u0002\u0002", + "\u0002\u021f\u0220\u0003\u0002\u0002\u0002\u0220\u0222\u0003\u0002\u0002", + "\u0002\u0221\u021f\u0003\u0002\u0002\u0002\u0222\u0226\u0007\u0006\u0002", + "\u0002\u0223\u0225\u0005|?\u0002\u0224\u0223\u0003\u0002\u0002\u0002", + "\u0225\u0228\u0003\u0002\u0002\u0002\u0226\u0224\u0003\u0002\u0002\u0002", + "\u0226\u0227\u0003\u0002\u0002\u0002\u0227\u0229\u0003\u0002\u0002\u0002", + "\u0228\u0226\u0003\u0002\u0002\u0002\u0229\u022d\u0005,\u0017\u0002", + "\u022a\u022c\u0005|?\u0002\u022b\u022a\u0003\u0002\u0002\u0002\u022c", + "\u022f\u0003\u0002\u0002\u0002\u022d\u022b\u0003\u0002\u0002\u0002\u022d", + "\u022e\u0003\u0002\u0002\u0002\u022e\u0230\u0003\u0002\u0002\u0002\u022f", + "\u022d\u0003\u0002\u0002\u0002\u0230\u0231\u0007\u0007\u0002\u0002\u0231", + "/\u0003\u0002\u0002\u0002\u0232\u0236\u0005v<\u0002\u0233\u0235\u0005", + "|?\u0002\u0234\u0233\u0003\u0002\u0002\u0002\u0235\u0238\u0003\u0002", + "\u0002\u0002\u0236\u0234\u0003\u0002\u0002\u0002\u0236\u0237\u0003\u0002", + "\u0002\u0002\u0237\u0239\u0003\u0002\u0002\u0002\u0238\u0236\u0003\u0002", + "\u0002\u0002\u0239\u023a\u00056\u001c\u0002\u023a1\u0003\u0002\u0002", + "\u0002\u023b\u0243\u0005v<\u0002\u023c\u0243\u0005V,\u0002\u023d\u023e", + "\u0007\u0003\u0002\u0002\u023e\u0243\u0005\b\u0005\u0002\u023f\u0240", + "\u0007\u0003\u0002\u0002\u0240\u0243\u0005\n\u0006\u0002\u0241\u0243", + "\u0005\u001e\u0010\u0002\u0242\u023b\u0003\u0002\u0002\u0002\u0242\u023c", + "\u0003\u0002\u0002\u0002\u0242\u023d\u0003\u0002\u0002\u0002\u0242\u023f", + "\u0003\u0002\u0002\u0002\u0242\u0241\u0003\u0002\u0002\u0002\u02433", + "\u0003\u0002\u0002\u0002\u0244\u0257\u0005f4\u0002\u0245\u0249\u0005", + "f4\u0002\u0246\u0248\u0005|?\u0002\u0247\u0246\u0003\u0002\u0002\u0002", + "\u0248\u024b\u0003\u0002\u0002\u0002\u0249\u0247\u0003\u0002\u0002\u0002", + "\u0249\u024a\u0003\u0002\u0002\u0002\u024a\u024c\u0003\u0002\u0002\u0002", + "\u024b\u0249\u0003\u0002\u0002\u0002\u024c\u0250\u0007\f\u0002\u0002", + "\u024d\u024f\u0005|?\u0002\u024e\u024d\u0003\u0002\u0002\u0002\u024f", + "\u0252\u0003\u0002\u0002\u0002\u0250\u024e\u0003\u0002\u0002\u0002\u0250", + "\u0251\u0003\u0002\u0002\u0002\u0251\u0253\u0003\u0002\u0002\u0002\u0252", + "\u0250\u0003\u0002\u0002\u0002\u0253\u0254\u00052\u001a\u0002\u0254", + "\u0257\u0003\u0002\u0002\u0002\u0255\u0257\u00052\u001a\u0002\u0256", + "\u0244\u0003\u0002\u0002\u0002\u0256\u0245\u0003\u0002\u0002\u0002\u0256", + "\u0255\u0003\u0002\u0002\u0002\u02575\u0003\u0002\u0002\u0002\u0258", + "\u025c\u0007\u0004\u0002\u0002\u0259\u025b\u0005|?\u0002\u025a\u0259", + "\u0003\u0002\u0002\u0002\u025b\u025e\u0003\u0002\u0002\u0002\u025c\u025a", + "\u0003\u0002\u0002\u0002\u025c\u025d\u0003\u0002\u0002\u0002\u025d\u027f", + "\u0003\u0002\u0002\u0002\u025e\u025c\u0003\u0002\u0002\u0002\u025f\u0263", + "\u00054\u001b\u0002\u0260\u0262\u0005|?\u0002\u0261\u0260\u0003\u0002", + "\u0002\u0002\u0262\u0265\u0003\u0002\u0002\u0002\u0263\u0261\u0003\u0002", + "\u0002\u0002\u0263\u0264\u0003\u0002\u0002\u0002\u0264\u0276\u0003\u0002", + "\u0002\u0002\u0265\u0263\u0003\u0002\u0002\u0002\u0266\u0268\u0005|", + "?\u0002\u0267\u0266\u0003\u0002\u0002\u0002\u0268\u026b\u0003\u0002", + "\u0002\u0002\u0269\u0267\u0003\u0002\u0002\u0002\u0269\u026a\u0003\u0002", + "\u0002\u0002\u026a\u026c\u0003\u0002\u0002\u0002\u026b\u0269\u0003\u0002", + "\u0002\u0002\u026c\u0270\u0007\u000b\u0002\u0002\u026d\u026f\u0005|", + "?\u0002\u026e\u026d\u0003\u0002\u0002\u0002\u026f\u0272\u0003\u0002", + "\u0002\u0002\u0270\u026e\u0003\u0002\u0002\u0002\u0270\u0271\u0003\u0002", + "\u0002\u0002\u0271\u0273\u0003\u0002\u0002\u0002\u0272\u0270\u0003\u0002", + "\u0002\u0002\u0273\u0275\u00054\u001b\u0002\u0274\u0269\u0003\u0002", + "\u0002\u0002\u0275\u0278\u0003\u0002\u0002\u0002\u0276\u0274\u0003\u0002", + "\u0002\u0002\u0276\u0277\u0003\u0002\u0002\u0002\u0277\u027c\u0003\u0002", + "\u0002\u0002\u0278\u0276\u0003\u0002\u0002\u0002\u0279\u027b\u0005|", + "?\u0002\u027a\u0279\u0003\u0002\u0002\u0002\u027b\u027e\u0003\u0002", + "\u0002\u0002\u027c\u027a\u0003\u0002\u0002\u0002\u027c\u027d\u0003\u0002", + "\u0002\u0002\u027d\u0280\u0003\u0002\u0002\u0002\u027e\u027c\u0003\u0002", + "\u0002\u0002\u027f\u025f\u0003\u0002\u0002\u0002\u027f\u0280\u0003\u0002", + "\u0002\u0002\u0280\u0281\u0003\u0002\u0002\u0002\u0281\u0282\u0007\u0005", + "\u0002\u0002\u02827\u0003\u0002\u0002\u0002\u0283\u0285\u0005> \u0002", + "\u0284\u0283\u0003\u0002\u0002\u0002\u0285\u0288\u0003\u0002\u0002\u0002", + "\u0286\u0287\u0003\u0002\u0002\u0002\u0286\u0284\u0003\u0002\u0002\u0002", + "\u02879\u0003\u0002\u0002\u0002\u0288\u0286\u0003\u0002\u0002\u0002", + "\u0289\u028a\u0007\u0013\u0002\u0002\u028a\u028b\u00058\u001d\u0002", + "\u028b\u028c\u0007\u0014\u0002\u0002\u028c;\u0003\u0002\u0002\u0002", + "\u028d\u02a3\u0007\u0003\u0002\u0002\u028e\u02a3\u0007\u0004\u0002\u0002", + "\u028f\u02a3\u0007\u0005\u0002\u0002\u0290\u02a3\u0007\u0006\u0002\u0002", + "\u0291\u02a3\u0007\u0007\u0002\u0002\u0292\u02a3\u0007\b\u0002\u0002", + "\u0293\u02a3\u0007\t\u0002\u0002\u0294\u02a3\u0007\n\u0002\u0002\u0295", + "\u02a3\u0007\u000b\u0002\u0002\u0296\u02a3\u0007\f\u0002\u0002\u0297", + "\u02a3\u0007\r\u0002\u0002\u0298\u02a3\u0007\u0010\u0002\u0002\u0299", + "\u02a3\u0007\u0012\u0002\u0002\u029a\u02a3\u0007\u0013\u0002\u0002\u029b", + "\u02a3\u0007\u0015\u0002\u0002\u029c\u02a3\u0007\u0016\u0002\u0002\u029d", + "\u02a3\u0007\u0016\u0002\u0002\u029e\u02a3\u0007\u0018\u0002\u0002\u029f", + "\u02a3\u0007\u0019\u0002\u0002\u02a0\u02a3\u0005~@\u0002\u02a1\u02a3", + "\u00076\u0002\u0002\u02a2\u028d\u0003\u0002\u0002\u0002\u02a2\u028e", + "\u0003\u0002\u0002\u0002\u02a2\u028f\u0003\u0002\u0002\u0002\u02a2\u0290", + "\u0003\u0002\u0002\u0002\u02a2\u0291\u0003\u0002\u0002\u0002\u02a2\u0292", + "\u0003\u0002\u0002\u0002\u02a2\u0293\u0003\u0002\u0002\u0002\u02a2\u0294", + "\u0003\u0002\u0002\u0002\u02a2\u0295\u0003\u0002\u0002\u0002\u02a2\u0296", + "\u0003\u0002\u0002\u0002\u02a2\u0297\u0003\u0002\u0002\u0002\u02a2\u0298", + "\u0003\u0002\u0002\u0002\u02a2\u0299\u0003\u0002\u0002\u0002\u02a2\u029a", + "\u0003\u0002\u0002\u0002\u02a2\u029b\u0003\u0002\u0002\u0002\u02a2\u029c", + "\u0003\u0002\u0002\u0002\u02a2\u029d\u0003\u0002\u0002\u0002\u02a2\u029e", + "\u0003\u0002\u0002\u0002\u02a2\u029f\u0003\u0002\u0002\u0002\u02a2\u02a0", + "\u0003\u0002\u0002\u0002\u02a2\u02a1\u0003\u0002\u0002\u0002\u02a3=", + "\u0003\u0002\u0002\u0002\u02a4\u02a8\u0005<\u001f\u0002\u02a5\u02a8", + "\u0007\u0011\u0002\u0002\u02a6\u02a8\u0007\u000f\u0002\u0002\u02a7\u02a4", + "\u0003\u0002\u0002\u0002\u02a7\u02a5\u0003\u0002\u0002\u0002\u02a7\u02a6", + "\u0003\u0002\u0002\u0002\u02a8\u02ab\u0003\u0002\u0002\u0002\u02a9\u02a7", + "\u0003\u0002\u0002\u0002\u02a9\u02aa\u0003\u0002\u0002\u0002\u02aa\u02ac", + "\u0003\u0002\u0002\u0002\u02ab\u02a9\u0003\u0002\u0002\u0002\u02ac\u02ad", + "\u0007\u000e\u0002\u0002\u02ad?\u0003\u0002\u0002\u0002\u02ae\u02b0", + "\u0005<\u001f\u0002\u02af\u02ae\u0003\u0002\u0002\u0002\u02b0\u02b1", + "\u0003\u0002\u0002\u0002\u02b1\u02af\u0003\u0002\u0002\u0002\u02b1\u02b2", + "\u0003\u0002\u0002\u0002\u02b2A\u0003\u0002\u0002\u0002\u02b3\u02b7", + "\u0007\u000f\u0002\u0002\u02b4\u02b6\u0007\u0011\u0002\u0002\u02b5\u02b4", + "\u0003\u0002\u0002\u0002\u02b6\u02b9\u0003\u0002\u0002\u0002\u02b7\u02b5", + "\u0003\u0002\u0002\u0002\u02b7\u02b8\u0003\u0002\u0002\u0002\u02b8\u02ba", + "\u0003\u0002\u0002\u0002\u02b9\u02b7\u0003\u0002\u0002\u0002\u02ba\u02bb", + "\u0005@!\u0002\u02bbC\u0003\u0002\u0002\u0002\u02bc\u02be\u0007\u0011", + "\u0002\u0002\u02bd\u02bc\u0003\u0002\u0002\u0002\u02be\u02c1\u0003\u0002", + "\u0002\u0002\u02bf\u02bd\u0003\u0002\u0002\u0002\u02bf\u02c0\u0003\u0002", + "\u0002\u0002\u02c0\u02c2\u0003\u0002\u0002\u0002\u02c1\u02bf\u0003\u0002", + "\u0002\u0002\u02c2\u02cb\u0005@!\u0002\u02c3\u02c5\u0007\u0011\u0002", + "\u0002\u02c4\u02c3\u0003\u0002\u0002\u0002\u02c5\u02c6\u0003\u0002\u0002", + "\u0002\u02c6\u02c4\u0003\u0002\u0002\u0002\u02c6\u02c7\u0003\u0002\u0002", + "\u0002\u02c7\u02c8\u0003\u0002\u0002\u0002\u02c8\u02ca\u0005@!\u0002", + "\u02c9\u02c4\u0003\u0002\u0002\u0002\u02ca\u02cd\u0003\u0002\u0002\u0002", + "\u02cb\u02c9\u0003\u0002\u0002\u0002\u02cb\u02cc\u0003\u0002\u0002\u0002", + "\u02cc\u02d1\u0003\u0002\u0002\u0002\u02cd\u02cb\u0003\u0002\u0002\u0002", + "\u02ce\u02d0\u0007\u0011\u0002\u0002\u02cf\u02ce\u0003\u0002\u0002\u0002", + "\u02d0\u02d3\u0003\u0002\u0002\u0002\u02d1\u02cf\u0003\u0002\u0002\u0002", + "\u02d1\u02d2\u0003\u0002\u0002\u0002\u02d2\u02d5\u0003\u0002\u0002\u0002", + "\u02d3\u02d1\u0003\u0002\u0002\u0002\u02d4\u02d6\u0005B\"\u0002\u02d5", + "\u02d4\u0003\u0002\u0002\u0002\u02d5\u02d6\u0003\u0002\u0002\u0002\u02d6", + "\u02da\u0003\u0002\u0002\u0002\u02d7\u02d9\u0007\u0011\u0002\u0002\u02d8", + "\u02d7\u0003\u0002\u0002\u0002\u02d9\u02dc\u0003\u0002\u0002\u0002\u02da", + "\u02d8\u0003\u0002\u0002\u0002\u02da\u02db\u0003\u0002\u0002\u0002\u02db", + "\u02df\u0003\u0002\u0002\u0002\u02dc\u02da\u0003\u0002\u0002\u0002\u02dd", + "\u02e0\u0005:\u001e\u0002\u02de\u02e0\u0007\u000e\u0002\u0002\u02df", + "\u02dd\u0003\u0002\u0002\u0002\u02df\u02de\u0003\u0002\u0002\u0002\u02e0", + "\u02e5\u0003\u0002\u0002\u0002\u02e1\u02e4\u0005`1\u0002\u02e2\u02e4", + "\u0005|?\u0002\u02e3\u02e1\u0003\u0002\u0002\u0002\u02e3\u02e2\u0003", + "\u0002\u0002\u0002\u02e4\u02e7\u0003\u0002\u0002\u0002\u02e5\u02e3\u0003", + "\u0002\u0002\u0002\u02e5\u02e6\u0003\u0002\u0002\u0002\u02e6E\u0003", + "\u0002\u0002\u0002\u02e7\u02e5\u0003\u0002\u0002\u0002\u02e8\u02e9\t", + "\u0005\u0002\u0002\u02e9G\u0003\u0002\u0002\u0002\u02ea\u02ee\u0007", + "\u001c\u0002\u0002\u02eb\u02ed\u0005|?\u0002\u02ec\u02eb\u0003\u0002", + "\u0002\u0002\u02ed\u02f0\u0003\u0002\u0002\u0002\u02ee\u02ec\u0003\u0002", + "\u0002\u0002\u02ee\u02ef\u0003\u0002\u0002\u0002\u02ef\u02f1\u0003\u0002", + "\u0002\u0002\u02f0\u02ee\u0003\u0002\u0002\u0002\u02f1\u02f5\u0007\u0004", + "\u0002\u0002\u02f2\u02f4\u0005|?\u0002\u02f3\u02f2\u0003\u0002\u0002", + "\u0002\u02f4\u02f7\u0003\u0002\u0002\u0002\u02f5\u02f3\u0003\u0002\u0002", + "\u0002\u02f5\u02f6\u0003\u0002\u0002\u0002\u02f6\u02f8\u0003\u0002\u0002", + "\u0002\u02f7\u02f5\u0003\u0002\u0002\u0002\u02f8\u02fc\u0005F$\u0002", + "\u02f9\u02fb\u0005|?\u0002\u02fa\u02f9\u0003\u0002\u0002\u0002\u02fb", + "\u02fe\u0003\u0002\u0002\u0002\u02fc\u02fa\u0003\u0002\u0002\u0002\u02fc", + "\u02fd\u0003\u0002\u0002\u0002\u02fd\u030f\u0003\u0002\u0002\u0002\u02fe", + "\u02fc\u0003\u0002\u0002\u0002\u02ff\u0303\u0007\u000b\u0002\u0002\u0300", + "\u0302\u0005|?\u0002\u0301\u0300\u0003\u0002\u0002\u0002\u0302\u0305", + "\u0003\u0002\u0002\u0002\u0303\u0301\u0003\u0002\u0002\u0002\u0303\u0304", + "\u0003\u0002\u0002\u0002\u0304\u0306\u0003\u0002\u0002\u0002\u0305\u0303", + "\u0003\u0002\u0002\u0002\u0306\u030a\u0005F$\u0002\u0307\u0309\u0005", + "|?\u0002\u0308\u0307\u0003\u0002\u0002\u0002\u0309\u030c\u0003\u0002", + "\u0002\u0002\u030a\u0308\u0003\u0002\u0002\u0002\u030a\u030b\u0003\u0002", + "\u0002\u0002\u030b\u030e\u0003\u0002\u0002\u0002\u030c\u030a\u0003\u0002", + "\u0002\u0002\u030d\u02ff\u0003\u0002\u0002\u0002\u030e\u0311\u0003\u0002", + "\u0002\u0002\u030f\u030d\u0003\u0002\u0002\u0002\u030f\u0310\u0003\u0002", + "\u0002\u0002\u0310\u0312\u0003\u0002\u0002\u0002\u0311\u030f\u0003\u0002", + "\u0002\u0002\u0312\u0313\u0007\u0005\u0002\u0002\u0313I\u0003\u0002", + "\u0002\u0002\u0314\u0318\u0007\u001d\u0002\u0002\u0315\u0317\u0005|", + "?\u0002\u0316\u0315\u0003\u0002\u0002\u0002\u0317\u031a\u0003\u0002", + "\u0002\u0002\u0318\u0316\u0003\u0002\u0002\u0002\u0318\u0319\u0003\u0002", + "\u0002\u0002\u0319\u031b\u0003\u0002\u0002\u0002\u031a\u0318\u0003\u0002", + "\u0002\u0002\u031b\u031c\u0007\u0004\u0002\u0002\u031c\u031d\t\u0005", + "\u0002\u0002\u031d\u031e\u0007\u0005\u0002\u0002\u031eK\u0003\u0002", + "\u0002\u0002\u031f\u0323\u0007\u0015\u0002\u0002\u0320\u0323\u0007\u0016", + "\u0002\u0002\u0321\u0323\u0005v<\u0002\u0322\u031f\u0003\u0002\u0002", + "\u0002\u0322\u0320\u0003\u0002\u0002\u0002\u0322\u0321\u0003\u0002\u0002", + "\u0002\u0323M\u0003\u0002\u0002\u0002\u0324\u0328\u0005L\'\u0002\u0325", + "\u0327\u0005|?\u0002\u0326\u0325\u0003\u0002\u0002\u0002\u0327\u032a", + "\u0003\u0002\u0002\u0002\u0328\u0326\u0003\u0002\u0002\u0002\u0328\u0329", + "\u0003\u0002\u0002\u0002\u0329\u032b\u0003\u0002\u0002\u0002\u032a\u0328", + "\u0003\u0002\u0002\u0002\u032b\u032f\u0007\n\u0002\u0002\u032c\u032e", + "\u0005|?\u0002\u032d\u032c\u0003\u0002\u0002\u0002\u032e\u0331\u0003", + "\u0002\u0002\u0002\u032f\u032d\u0003\u0002\u0002\u0002\u032f\u0330\u0003", + "\u0002\u0002\u0002\u0330\u0332\u0003\u0002\u0002\u0002\u0331\u032f\u0003", + "\u0002\u0002\u0002\u0332\u0333\u0005V,\u0002\u0333O\u0003\u0002\u0002", + "\u0002\u0334\u0338\u0007\u0006\u0002\u0002\u0335\u0337\u0005|?\u0002", + "\u0336\u0335\u0003\u0002\u0002\u0002\u0337\u033a\u0003\u0002\u0002\u0002", + "\u0338\u0336\u0003\u0002\u0002\u0002\u0338\u0339\u0003\u0002\u0002\u0002", + "\u0339\u033c\u0003\u0002\u0002\u0002\u033a\u0338\u0003\u0002\u0002\u0002", + "\u033b\u033d\u0005N(\u0002\u033c\u033b\u0003\u0002\u0002\u0002\u033c", + "\u033d\u0003\u0002\u0002\u0002\u033d\u0341\u0003\u0002\u0002\u0002\u033e", + "\u0340\u0005|?\u0002\u033f\u033e\u0003\u0002\u0002\u0002\u0340\u0343", + "\u0003\u0002\u0002\u0002\u0341\u033f\u0003\u0002\u0002\u0002\u0341\u0342", + "\u0003\u0002\u0002\u0002\u0342\u0354\u0003\u0002\u0002\u0002\u0343\u0341", + "\u0003\u0002\u0002\u0002\u0344\u0348\u0007\u000b\u0002\u0002\u0345\u0347", + "\u0005|?\u0002\u0346\u0345\u0003\u0002\u0002\u0002\u0347\u034a\u0003", + "\u0002\u0002\u0002\u0348\u0346\u0003\u0002\u0002\u0002\u0348\u0349\u0003", + "\u0002\u0002\u0002\u0349\u034b\u0003\u0002\u0002\u0002\u034a\u0348\u0003", + "\u0002\u0002\u0002\u034b\u034f\u0005N(\u0002\u034c\u034e\u0005|?\u0002", + "\u034d\u034c\u0003\u0002\u0002\u0002\u034e\u0351\u0003\u0002\u0002\u0002", + "\u034f\u034d\u0003\u0002\u0002\u0002\u034f\u0350\u0003\u0002\u0002\u0002", + "\u0350\u0353\u0003\u0002\u0002\u0002\u0351\u034f\u0003\u0002\u0002\u0002", + "\u0352\u0344\u0003\u0002\u0002\u0002\u0353\u0356\u0003\u0002\u0002\u0002", + "\u0354\u0352\u0003\u0002\u0002\u0002\u0354\u0355\u0003\u0002\u0002\u0002", + "\u0355\u0357\u0003\u0002\u0002\u0002\u0356\u0354\u0003\u0002\u0002\u0002", + "\u0357\u0358\u0007\u0007\u0002\u0002\u0358Q\u0003\u0002\u0002\u0002", + "\u0359\u035a\u0005V,\u0002\u035aS\u0003\u0002\u0002\u0002\u035b\u035f", + "\u0007\b\u0002\u0002\u035c\u035e\u0005|?\u0002\u035d\u035c\u0003\u0002", + "\u0002\u0002\u035e\u0361\u0003\u0002\u0002\u0002\u035f\u035d\u0003\u0002", + "\u0002\u0002\u035f\u0360\u0003\u0002\u0002\u0002\u0360\u0363\u0003\u0002", + "\u0002\u0002\u0361\u035f\u0003\u0002\u0002\u0002\u0362\u0364\u0005R", + "*\u0002\u0363\u0362\u0003\u0002\u0002\u0002\u0363\u0364\u0003\u0002", + "\u0002\u0002\u0364\u0368\u0003\u0002\u0002\u0002\u0365\u0367\u0005|", + "?\u0002\u0366\u0365\u0003\u0002\u0002\u0002\u0367\u036a\u0003\u0002", + "\u0002\u0002\u0368\u0366\u0003\u0002\u0002\u0002\u0368\u0369\u0003\u0002", + "\u0002\u0002\u0369\u037b\u0003\u0002\u0002\u0002\u036a\u0368\u0003\u0002", + "\u0002\u0002\u036b\u036f\u0007\u000b\u0002\u0002\u036c\u036e\u0005|", + "?\u0002\u036d\u036c\u0003\u0002\u0002\u0002\u036e\u0371\u0003\u0002", + "\u0002\u0002\u036f\u036d\u0003\u0002\u0002\u0002\u036f\u0370\u0003\u0002", + "\u0002\u0002\u0370\u0372\u0003\u0002\u0002\u0002\u0371\u036f\u0003\u0002", + "\u0002\u0002\u0372\u0376\u0005R*\u0002\u0373\u0375\u0005|?\u0002\u0374", + "\u0373\u0003\u0002\u0002\u0002\u0375\u0378\u0003\u0002\u0002\u0002\u0376", + "\u0374\u0003\u0002\u0002\u0002\u0376\u0377\u0003\u0002\u0002\u0002\u0377", + "\u037a\u0003\u0002\u0002\u0002\u0378\u0376\u0003\u0002\u0002\u0002\u0379", + "\u036b\u0003\u0002\u0002\u0002\u037a\u037d\u0003\u0002\u0002\u0002\u037b", + "\u0379\u0003\u0002\u0002\u0002\u037b\u037c\u0003\u0002\u0002\u0002\u037c", + "\u037e\u0003\u0002\u0002\u0002\u037d\u037b\u0003\u0002\u0002\u0002\u037e", + "\u037f\u0007\t\u0002\u0002\u037fU\u0003\u0002\u0002\u0002\u0380\u038b", + "\u0007\u0015\u0002\u0002\u0381\u038b\u0007\u0016\u0002\u0002\u0382\u038b", + "\u0007\u0019\u0002\u0002\u0383\u038b\u0007\u0018\u0002\u0002\u0384\u038b", + "\u00074\u0002\u0002\u0385\u038b\u00075\u0002\u0002\u0386\u038b\u0005", + "H%\u0002\u0387\u038b\u0005J&\u0002\u0388\u038b\u0005P)\u0002\u0389\u038b", + "\u0005T+\u0002\u038a\u0380\u0003\u0002\u0002\u0002\u038a\u0381\u0003", + "\u0002\u0002\u0002\u038a\u0382\u0003\u0002\u0002\u0002\u038a\u0383\u0003", + "\u0002\u0002\u0002\u038a\u0384\u0003\u0002\u0002\u0002\u038a\u0385\u0003", + "\u0002\u0002\u0002\u038a\u0386\u0003\u0002\u0002\u0002\u038a\u0387\u0003", + "\u0002\u0002\u0002\u038a\u0388\u0003\u0002\u0002\u0002\u038a\u0389\u0003", + "\u0002\u0002\u0002\u038bW\u0003\u0002\u0002\u0002\u038c\u0390\u0005", + "f4\u0002\u038d\u038f\u0005|?\u0002\u038e\u038d\u0003\u0002\u0002\u0002", + "\u038f\u0392\u0003\u0002\u0002\u0002\u0390\u038e\u0003\u0002\u0002\u0002", + "\u0390\u0391\u0003\u0002\u0002\u0002\u0391\u0393\u0003\u0002\u0002\u0002", + "\u0392\u0390\u0003\u0002\u0002\u0002\u0393\u0397\u0007\f\u0002\u0002", + "\u0394\u0396\u0005|?\u0002\u0395\u0394\u0003\u0002\u0002\u0002\u0396", + "\u0399\u0003\u0002\u0002\u0002\u0397\u0395\u0003\u0002\u0002\u0002\u0397", + "\u0398\u0003\u0002\u0002\u0002\u0398\u039a\u0003\u0002\u0002\u0002\u0399", + "\u0397\u0003\u0002\u0002\u0002\u039a\u039e\u0005V,\u0002\u039b\u039d", + "\u0005|?\u0002\u039c\u039b\u0003\u0002\u0002\u0002\u039d\u03a0\u0003", + "\u0002\u0002\u0002\u039e\u039f\u0003\u0002\u0002\u0002\u039e\u039c\u0003", + "\u0002\u0002\u0002\u039f\u03a1\u0003\u0002\u0002\u0002\u03a0\u039e\u0003", + "\u0002\u0002\u0002\u03a1\u03a2\u0007\u000e\u0002\u0002\u03a2Y\u0003", + "\u0002\u0002\u0002\u03a3\u03c3\u0005 \u0011\u0002\u03a4\u03a6\u0005", + " \u0011\u0002\u03a5\u03a7\u0005|?\u0002\u03a6\u03a5\u0003\u0002\u0002", + "\u0002\u03a7\u03a8\u0003\u0002\u0002\u0002\u03a8\u03a6\u0003\u0002\u0002", + "\u0002\u03a8\u03a9\u0003\u0002\u0002\u0002\u03a9\u03aa\u0003\u0002\u0002", + "\u0002\u03aa\u03ac\u00070\u0002\u0002\u03ab\u03ad\u0005|?\u0002\u03ac", + "\u03ab\u0003\u0002\u0002\u0002\u03ad\u03ae\u0003\u0002\u0002\u0002\u03ae", + "\u03ac\u0003\u0002\u0002\u0002\u03ae\u03af\u0003\u0002\u0002\u0002\u03af", + "\u03b0\u0003\u0002\u0002\u0002\u03b0\u03b1\u0005f4\u0002\u03b1\u03c3", + "\u0003\u0002\u0002\u0002\u03b2\u03c0\u0005v<\u0002\u03b3\u03b5\u0005", + "|?\u0002\u03b4\u03b3\u0003\u0002\u0002\u0002\u03b5\u03b6\u0003\u0002", + "\u0002\u0002\u03b6\u03b4\u0003\u0002\u0002\u0002\u03b6\u03b7\u0003\u0002", + "\u0002\u0002\u03b7\u03b8\u0003\u0002\u0002\u0002\u03b8\u03ba\u00070", + "\u0002\u0002\u03b9\u03bb\u0005|?\u0002\u03ba\u03b9\u0003\u0002\u0002", + "\u0002\u03bb\u03bc\u0003\u0002\u0002\u0002\u03bc\u03ba\u0003\u0002\u0002", + "\u0002\u03bc\u03bd\u0003\u0002\u0002\u0002\u03bd\u03be\u0003\u0002\u0002", + "\u0002\u03be\u03bf\u0005f4\u0002\u03bf\u03c1\u0003\u0002\u0002\u0002", + "\u03c0\u03b4\u0003\u0002\u0002\u0002\u03c0\u03c1\u0003\u0002\u0002\u0002", + "\u03c1\u03c3\u0003\u0002\u0002\u0002\u03c2\u03a3\u0003\u0002\u0002\u0002", + "\u03c2\u03a4\u0003\u0002\u0002\u0002\u03c2\u03b2\u0003\u0002\u0002\u0002", + "\u03c3[\u0003\u0002\u0002\u0002\u03c4\u03c5\u0005v<\u0002\u03c5]\u0003", + "\u0002\u0002\u0002\u03c6\u03c7\u0005v<\u0002\u03c7_\u0003\u0002\u0002", + "\u0002\u03c8\u03ca\u0007\r\u0002\u0002\u03c9\u03cb\u0005|?\u0002\u03ca", + "\u03c9\u0003\u0002\u0002\u0002\u03cb\u03cc\u0003\u0002\u0002\u0002\u03cc", + "\u03ca\u0003\u0002\u0002\u0002\u03cc\u03cd\u0003\u0002\u0002\u0002\u03cd", + "\u03f2\u0003\u0002\u0002\u0002\u03ce\u03d0\u0005@!\u0002\u03cf\u03d1", + "\u0005|?\u0002\u03d0\u03cf\u0003\u0002\u0002\u0002\u03d1\u03d2\u0003", + "\u0002\u0002\u0002\u03d2\u03d0\u0003\u0002\u0002\u0002\u03d2\u03d3\u0003", + "\u0002\u0002\u0002\u03d3\u03d4\u0003\u0002\u0002\u0002\u03d4\u03d5\u0005", + "f4\u0002\u03d5\u03f3\u0003\u0002\u0002\u0002\u03d6\u03d8\u0005@!\u0002", + "\u03d7\u03d9\u0005|?\u0002\u03d8\u03d7\u0003\u0002\u0002\u0002\u03d9", + "\u03da\u0003\u0002\u0002\u0002\u03da\u03d8\u0003\u0002\u0002\u0002\u03da", + "\u03db\u0003\u0002\u0002\u0002\u03db\u03dd\u0003\u0002\u0002\u0002\u03dc", + "\u03d6\u0003\u0002\u0002\u0002\u03dc\u03dd\u0003\u0002\u0002\u0002\u03dd", + "\u03de\u0003\u0002\u0002\u0002\u03de\u03e0\u0007\u001f\u0002\u0002\u03df", + "\u03e1\u0005|?\u0002\u03e0\u03df\u0003\u0002\u0002\u0002\u03e1\u03e2", + "\u0003\u0002\u0002\u0002\u03e2\u03e0\u0003\u0002\u0002\u0002\u03e2\u03e3", + "\u0003\u0002\u0002\u0002\u03e3\u03e4\u0003\u0002\u0002\u0002\u03e4\u03e6", + "\u0007 \u0002\u0002\u03e5\u03e7\u0005|?\u0002\u03e6\u03e5\u0003\u0002", + "\u0002\u0002\u03e7\u03e8\u0003\u0002\u0002\u0002\u03e8\u03e6\u0003\u0002", + "\u0002\u0002\u03e8\u03e9\u0003\u0002\u0002\u0002\u03e9\u03ea\u0003\u0002", + "\u0002\u0002\u03ea\u03ec\u0007!\u0002\u0002\u03eb\u03ed\u0005|?\u0002", + "\u03ec\u03eb\u0003\u0002\u0002\u0002\u03ed\u03ee\u0003\u0002\u0002\u0002", + "\u03ee\u03ec\u0003\u0002\u0002\u0002\u03ee\u03ef\u0003\u0002\u0002\u0002", + "\u03ef\u03f0\u0003\u0002\u0002\u0002\u03f0\u03f1\u0005f4\u0002\u03f1", + "\u03f3\u0003\u0002\u0002\u0002\u03f2\u03ce\u0003\u0002\u0002\u0002\u03f2", + "\u03dc\u0003\u0002\u0002\u0002\u03f3\u03f7\u0003\u0002\u0002\u0002\u03f4", + "\u03f6\u0005|?\u0002\u03f5\u03f4\u0003\u0002\u0002\u0002\u03f6\u03f9", + "\u0003\u0002\u0002\u0002\u03f7\u03f5\u0003\u0002\u0002\u0002\u03f7\u03f8", + "\u0003\u0002\u0002\u0002\u03f8\u03fa\u0003\u0002\u0002\u0002\u03f9\u03f7", + "\u0003\u0002\u0002\u0002\u03fa\u03fb\u0007\u000e\u0002\u0002\u03fba", + "\u0003\u0002\u0002\u0002\u03fc\u03fd\u0005v<\u0002\u03fdc\u0003\u0002", + "\u0002\u0002\u03fe\u0401\u0005\u0014\u000b\u0002\u03ff\u0401\u0005|", + "?\u0002\u0400\u03fe\u0003\u0002\u0002\u0002\u0400\u03ff\u0003\u0002", + "\u0002\u0002\u0401\u0404\u0003\u0002\u0002\u0002\u0402\u0400\u0003\u0002", + "\u0002\u0002\u0402\u0403\u0003\u0002\u0002\u0002\u0403\u0405\u0003\u0002", + "\u0002\u0002\u0404\u0402\u0003\u0002\u0002\u0002\u0405\u0406\u0005D", + "#\u0002\u0406\u0408\u0007$\u0002\u0002\u0407\u0409\u0005|?\u0002\u0408", + "\u0407\u0003\u0002\u0002\u0002\u0409\u040a\u0003\u0002\u0002\u0002\u040a", + "\u0408\u0003\u0002\u0002\u0002\u040a\u040b\u0003\u0002\u0002\u0002\u040b", + "\u040c\u0003\u0002\u0002\u0002\u040c\u0410\u0005Z.\u0002\u040d\u040f", + "\u0005|?\u0002\u040e\u040d\u0003\u0002\u0002\u0002\u040f\u0412\u0003", + "\u0002\u0002\u0002\u0410\u040e\u0003\u0002\u0002\u0002\u0410\u0411\u0003", + "\u0002\u0002\u0002\u0411\u0423\u0003\u0002\u0002\u0002\u0412\u0410\u0003", + "\u0002\u0002\u0002\u0413\u0417\u0007\u000b\u0002\u0002\u0414\u0416\u0005", + "|?\u0002\u0415\u0414\u0003\u0002\u0002\u0002\u0416\u0419\u0003\u0002", + "\u0002\u0002\u0417\u0415\u0003\u0002\u0002\u0002\u0417\u0418\u0003\u0002", + "\u0002\u0002\u0418\u041a\u0003\u0002\u0002\u0002\u0419\u0417\u0003\u0002", + "\u0002\u0002\u041a\u041e\u0005Z.\u0002\u041b\u041d\u0005|?\u0002\u041c", + "\u041b\u0003\u0002\u0002\u0002\u041d\u0420\u0003\u0002\u0002\u0002\u041e", + "\u041c\u0003\u0002\u0002\u0002\u041e\u041f\u0003\u0002\u0002\u0002\u041f", + "\u0422\u0003\u0002\u0002\u0002\u0420\u041e\u0003\u0002\u0002\u0002\u0421", + "\u0413\u0003\u0002\u0002\u0002\u0422\u0425\u0003\u0002\u0002\u0002\u0423", + "\u0421\u0003\u0002\u0002\u0002\u0423\u0424\u0003\u0002\u0002\u0002\u0424", + "e\u0003\u0002\u0002\u0002\u0425\u0423\u0003\u0002\u0002\u0002\u0426", + "\u0427\u0005v<\u0002\u0427g\u0003\u0002\u0002\u0002\u0428\u042c\u0007", + "%\u0002\u0002\u0429\u042b\u0005|?\u0002\u042a\u0429\u0003\u0002\u0002", + "\u0002\u042b\u042e\u0003\u0002\u0002\u0002\u042c\u042a\u0003\u0002\u0002", + "\u0002\u042c\u042d\u0003\u0002\u0002\u0002\u042d\u042f\u0003\u0002\u0002", + "\u0002\u042e\u042c\u0003\u0002\u0002\u0002\u042f\u0433\u0007\u0006\u0002", + "\u0002\u0430\u0432\u0005|?\u0002\u0431\u0430\u0003\u0002\u0002\u0002", + "\u0432\u0435\u0003\u0002\u0002\u0002\u0433\u0431\u0003\u0002\u0002\u0002", + "\u0433\u0434\u0003\u0002\u0002\u0002\u0434\u0450\u0003\u0002\u0002\u0002", + "\u0435\u0433\u0003\u0002\u0002\u0002\u0436\u043a\u0005r:\u0002\u0437", + "\u0439\u0005|?\u0002\u0438\u0437\u0003\u0002\u0002\u0002\u0439\u043c", + "\u0003\u0002\u0002\u0002\u043a\u0438\u0003\u0002\u0002\u0002\u043a\u043b", + "\u0003\u0002\u0002\u0002\u043b\u044d\u0003\u0002\u0002\u0002\u043c\u043a", + "\u0003\u0002\u0002\u0002\u043d\u0441\u0007\u000b\u0002\u0002\u043e\u0440", + "\u0005|?\u0002\u043f\u043e\u0003\u0002\u0002\u0002\u0440\u0443\u0003", + "\u0002\u0002\u0002\u0441\u043f\u0003\u0002\u0002\u0002\u0441\u0442\u0003", + "\u0002\u0002\u0002\u0442\u0444\u0003\u0002\u0002\u0002\u0443\u0441\u0003", + "\u0002\u0002\u0002\u0444\u0448\u0005r:\u0002\u0445\u0447\u0005|?\u0002", + "\u0446\u0445\u0003\u0002\u0002\u0002\u0447\u044a\u0003\u0002\u0002\u0002", + "\u0448\u0446\u0003\u0002\u0002\u0002\u0448\u0449\u0003\u0002\u0002\u0002", + "\u0449\u044c\u0003\u0002\u0002\u0002\u044a\u0448\u0003\u0002\u0002\u0002", + "\u044b\u043d\u0003\u0002\u0002\u0002\u044c\u044f\u0003\u0002\u0002\u0002", + "\u044d\u044b\u0003\u0002\u0002\u0002\u044d\u044e\u0003\u0002\u0002\u0002", + "\u044e\u0451\u0003\u0002\u0002\u0002\u044f\u044d\u0003\u0002\u0002\u0002", + "\u0450\u0436\u0003\u0002\u0002\u0002\u0450\u0451\u0003\u0002\u0002\u0002", + "\u0451\u0455\u0003\u0002\u0002\u0002\u0452\u0454\u0005|?\u0002\u0453", + "\u0452\u0003\u0002\u0002\u0002\u0454\u0457\u0003\u0002\u0002\u0002\u0455", + "\u0453\u0003\u0002\u0002\u0002\u0455\u0456\u0003\u0002\u0002\u0002\u0456", + "\u0458\u0003\u0002\u0002\u0002\u0457\u0455\u0003\u0002\u0002\u0002\u0458", + "\u0459\u0007\u0007\u0002\u0002\u0459i\u0003\u0002\u0002\u0002\u045a", + "\u045b\t\u0006\u0002\u0002\u045bk\u0003\u0002\u0002\u0002\u045c\u045f", + "\u0005j6\u0002\u045d\u045f\u0005h5\u0002\u045e\u045c\u0003\u0002\u0002", + "\u0002\u045e\u045d\u0003\u0002\u0002\u0002\u045f\u0462\u0003\u0002\u0002", + "\u0002\u0460\u0461\u0007\b\u0002\u0002\u0461\u0463\u0007\t\u0002\u0002", + "\u0462\u0460\u0003\u0002\u0002\u0002\u0462\u0463\u0003\u0002\u0002\u0002", + "\u0463m\u0003\u0002\u0002\u0002\u0464\u0465\u0005p9\u0002\u0465o\u0003", + "\u0002\u0002\u0002\u0466\u046a\u0007\u0004\u0002\u0002\u0467\u0469\u0005", + "|?\u0002\u0468\u0467\u0003\u0002\u0002\u0002\u0469\u046c\u0003\u0002", + "\u0002\u0002\u046a\u0468\u0003\u0002\u0002\u0002\u046a\u046b\u0003\u0002", + "\u0002\u0002\u046b\u0481\u0003\u0002\u0002\u0002\u046c\u046a\u0003\u0002", + "\u0002\u0002\u046d\u0471\u0005r:\u0002\u046e\u0470\u0005|?\u0002\u046f", + "\u046e\u0003\u0002\u0002\u0002\u0470\u0473\u0003\u0002\u0002\u0002\u0471", + "\u046f\u0003\u0002\u0002\u0002\u0471\u0472\u0003\u0002\u0002\u0002\u0472", + "\u047e\u0003\u0002\u0002\u0002\u0473\u0471\u0003\u0002\u0002\u0002\u0474", + "\u0478\u0007\u000b\u0002\u0002\u0475\u0477\u0005|?\u0002\u0476\u0475", + "\u0003\u0002\u0002\u0002\u0477\u047a\u0003\u0002\u0002\u0002\u0478\u0476", + "\u0003\u0002\u0002\u0002\u0478\u0479\u0003\u0002\u0002\u0002\u0479\u047b", + "\u0003\u0002\u0002\u0002\u047a\u0478\u0003\u0002\u0002\u0002\u047b\u047d", + "\u0005r:\u0002\u047c\u0474\u0003\u0002\u0002\u0002\u047d\u0480\u0003", + "\u0002\u0002\u0002\u047e\u047c\u0003\u0002\u0002\u0002\u047e\u047f\u0003", + "\u0002\u0002\u0002\u047f\u0482\u0003\u0002\u0002\u0002\u0480\u047e\u0003", + "\u0002\u0002\u0002\u0481\u046d\u0003\u0002\u0002\u0002\u0481\u0482\u0003", + "\u0002\u0002\u0002\u0482\u0486\u0003\u0002\u0002\u0002\u0483\u0485\u0005", + "|?\u0002\u0484\u0483\u0003\u0002\u0002\u0002\u0485\u0488\u0003\u0002", + "\u0002\u0002\u0486\u0484\u0003\u0002\u0002\u0002\u0486\u0487\u0003\u0002", + "\u0002\u0002\u0487\u0489\u0003\u0002\u0002\u0002\u0488\u0486\u0003\u0002", + "\u0002\u0002\u0489\u048a\u0007\u0005\u0002\u0002\u048aq\u0003\u0002", + "\u0002\u0002\u048b\u048d\u0005f4\u0002\u048c\u048e\u0007\r\u0002\u0002", + "\u048d\u048c\u0003\u0002\u0002\u0002\u048d\u048e\u0003\u0002\u0002\u0002", + "\u048e\u0490\u0003\u0002\u0002\u0002\u048f\u0491\u0005|?\u0002\u0490", + "\u048f\u0003\u0002\u0002\u0002\u0491\u0492\u0003\u0002\u0002\u0002\u0492", + "\u0490\u0003\u0002\u0002\u0002\u0492\u0493\u0003\u0002\u0002\u0002\u0493", + "\u0494\u0003\u0002\u0002\u0002\u0494\u0495\u0005l7\u0002\u0495\u04a7", + "\u0003\u0002\u0002\u0002\u0496\u049a\u0005f4\u0002\u0497\u0499\u0005", + "|?\u0002\u0498\u0497\u0003\u0002\u0002\u0002\u0499\u049c\u0003\u0002", + "\u0002\u0002\u049a\u0498\u0003\u0002\u0002\u0002\u049a\u049b\u0003\u0002", + "\u0002\u0002\u049b\u049d\u0003\u0002\u0002\u0002\u049c\u049a\u0003\u0002", + "\u0002\u0002\u049d\u04a1\u0007\f\u0002\u0002\u049e\u04a0\u0005|?\u0002", + "\u049f\u049e\u0003\u0002\u0002\u0002\u04a0\u04a3\u0003\u0002\u0002\u0002", + "\u04a1\u049f\u0003\u0002\u0002\u0002\u04a1\u04a2\u0003\u0002\u0002\u0002", + "\u04a2\u04a4\u0003\u0002\u0002\u0002\u04a3\u04a1\u0003\u0002\u0002\u0002", + "\u04a4\u04a5\u0005V,\u0002\u04a5\u04a7\u0003\u0002\u0002\u0002\u04a6", + "\u048b\u0003\u0002\u0002\u0002\u04a6\u0496\u0003\u0002\u0002\u0002\u04a7", + "s\u0003\u0002\u0002\u0002\u04a8\u04ab\u0005~@\u0002\u04a9\u04ab\u0007", + "6\u0002\u0002\u04aa\u04a8\u0003\u0002\u0002\u0002\u04aa\u04a9\u0003", + "\u0002\u0002\u0002\u04abu\u0003\u0002\u0002\u0002\u04ac\u04b6\u0007", + "6\u0002\u0002\u04ad\u04b1\u0005t;\u0002\u04ae\u04b2\u0005t;\u0002\u04af", + "\u04b2\u0007\u0019\u0002\u0002\u04b0\u04b2\u0007\u0018\u0002\u0002\u04b1", + "\u04ae\u0003\u0002\u0002\u0002\u04b1\u04af\u0003\u0002\u0002\u0002\u04b1", + "\u04b0\u0003\u0002\u0002\u0002\u04b2\u04b3\u0003\u0002\u0002\u0002\u04b3", + "\u04b1\u0003\u0002\u0002\u0002\u04b3\u04b4\u0003\u0002\u0002\u0002\u04b4", + "\u04b6\u0003\u0002\u0002\u0002\u04b5\u04ac\u0003\u0002\u0002\u0002\u04b5", + "\u04ad\u0003\u0002\u0002\u0002\u04b6w\u0003\u0002\u0002\u0002\u04b7", + "\u04b9\u0007/\u0002\u0002\u04b8\u04ba\u0005|?\u0002\u04b9\u04b8\u0003", + "\u0002\u0002\u0002\u04ba\u04bb\u0003\u0002\u0002\u0002\u04bb\u04b9\u0003", + "\u0002\u0002\u0002\u04bb\u04bc\u0003\u0002\u0002\u0002\u04bc\u04bd\u0003", + "\u0002\u0002\u0002\u04bd\u04bf\t\u0005\u0002\u0002\u04be\u04c0\u0005", + "|?\u0002\u04bf\u04be\u0003\u0002\u0002\u0002\u04c0\u04c1\u0003\u0002", + "\u0002\u0002\u04c1\u04bf\u0003\u0002\u0002\u0002\u04c1\u04c2\u0003\u0002", + "\u0002\u0002\u04c2\u04c3\u0003\u0002\u0002\u0002\u04c3\u04c5\u00070", + "\u0002\u0002\u04c4\u04c6\u0005|?\u0002\u04c5\u04c4\u0003\u0002\u0002", + "\u0002\u04c6\u04c7\u0003\u0002\u0002\u0002\u04c7\u04c5\u0003\u0002\u0002", + "\u0002\u04c7\u04c8\u0003\u0002\u0002\u0002\u04c8\u04c9\u0003\u0002\u0002", + "\u0002\u04c9\u04cd\u0005f4\u0002\u04ca\u04cc\u0005|?\u0002\u04cb\u04ca", + "\u0003\u0002\u0002\u0002\u04cc\u04cf\u0003\u0002\u0002\u0002\u04cd\u04cb", + "\u0003\u0002\u0002\u0002\u04cd\u04ce\u0003\u0002\u0002\u0002\u04ce\u04d0", + "\u0003\u0002\u0002\u0002\u04cf\u04cd\u0003\u0002\u0002\u0002\u04d0\u04d1", + "\u0007\u000e\u0002\u0002\u04d1y\u0003\u0002\u0002\u0002\u04d2\u04d4", + "\u0007\"\u0002\u0002\u04d3\u04d5\u0005|?\u0002\u04d4\u04d3\u0003\u0002", + "\u0002\u0002\u04d5\u04d6\u0003\u0002\u0002\u0002\u04d6\u04d4\u0003\u0002", + "\u0002\u0002\u04d6\u04d7\u0003\u0002\u0002\u0002\u04d7\u04d8\u0003\u0002", + "\u0002\u0002\u04d8\u04da\u00073\u0002\u0002\u04d9\u04db\u0005|?\u0002", + "\u04da\u04d9\u0003\u0002\u0002\u0002\u04db\u04dc\u0003\u0002\u0002\u0002", + "\u04dc\u04da\u0003\u0002\u0002\u0002\u04dc\u04dd\u0003\u0002\u0002\u0002", + "\u04dd\u04de\u0003\u0002\u0002\u0002\u04de\u04e2\u0005f4\u0002\u04df", + "\u04e1\u0005|?\u0002\u04e0\u04df\u0003\u0002\u0002\u0002\u04e1\u04e4", + "\u0003\u0002\u0002\u0002\u04e2\u04e0\u0003\u0002\u0002\u0002\u04e2\u04e3", + "\u0003\u0002\u0002\u0002\u04e3\u04e5\u0003\u0002\u0002\u0002\u04e4\u04e2", + "\u0003\u0002\u0002\u0002\u04e5\u04e9\u0005n8\u0002\u04e6\u04e8\u0005", + "|?\u0002\u04e7\u04e6\u0003\u0002\u0002\u0002\u04e8\u04eb\u0003\u0002", + "\u0002\u0002\u04e9\u04e7\u0003\u0002\u0002\u0002\u04e9\u04ea\u0003\u0002", + "\u0002\u0002\u04ea\u04ec\u0003\u0002\u0002\u0002\u04eb\u04e9\u0003\u0002", + "\u0002\u0002\u04ec\u04ed\u0005 \u0011\u0002\u04ed{\u0003\u0002\u0002", + "\u0002\u04ee\u04ef\t\u0007\u0002\u0002\u04ef}\u0003\u0002\u0002\u0002", + "\u04f0\u04f1\t\b\u0002\u0002\u04f1\u007f\u0003\u0002\u0002\u0002\u00ae", + "\u0085\u0087\u009a\u009c\u00b1\u00b7\u00bd\u00c4\u00cf\u00d5\u00db\u00e2", + "\u00eb\u00f0\u00f6\u00fc\u0101\u0107\u010d\u0114\u0119\u0122\u0127\u012d", + "\u0134\u0138\u013d\u0142\u0148\u014c\u0152\u0159\u0160\u0165\u016c\u0173", + "\u017b\u0181\u0187\u0190\u0195\u019b\u01a1\u01a8\u01b1\u01b7\u01bc\u01c1", + "\u01c5\u01ca\u01d1\u01da\u01e0\u01e6\u01ec\u01f2\u01f9\u0200\u0207\u0212", + "\u0218\u021f\u0226\u022d\u0236\u0242\u0249\u0250\u0256\u025c\u0263\u0269", + "\u0270\u0276\u027c\u027f\u0286\u02a2\u02a7\u02a9\u02b1\u02b7\u02bf\u02c6", + "\u02cb\u02d1\u02d5\u02da\u02df\u02e3\u02e5\u02ee\u02f5\u02fc\u0303\u030a", + "\u030f\u0318\u0322\u0328\u032f\u0338\u033c\u0341\u0348\u034f\u0354\u035f", + "\u0363\u0368\u036f\u0376\u037b\u038a\u0390\u0397\u039e\u03a8\u03ae\u03b6", + "\u03bc\u03c0\u03c2\u03cc\u03d2\u03da\u03dc\u03e2\u03e8\u03ee\u03f2\u03f7", + "\u0400\u0402\u040a\u0410\u0417\u041e\u0423\u042c\u0433\u043a\u0441\u0448", + "\u044d\u0450\u0455\u045e\u0462\u046a\u0471\u0478\u047e\u0481\u0486\u048d", + "\u0492\u049a\u04a1\u04a6\u04aa\u04b1\u04b3\u04b5\u04bb\u04c1\u04c7\u04cd", + "\u04d6\u04dc\u04e2\u04e9"].join(""); + + +var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); + +var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); }); + +var sharedContextCache = new antlr4.PredictionContextCache(); + +var literalNames = [ null, "'$'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "':'", "','", "'='", "'?'", "'\n'", "'>'", "'<'", null, + null, "'<<<\n'", "'>>>\n'", null, null, null, null, + null, "'workflow'", "'tool'", "'File'", "'Directory'", + "'stdout'", "'for'", "'each'", "'in'", "'def'", "'run'", + "'return'", "'struct'", "'using'", "'merge_nested'", + "'merge_flattened'", "'string'", "'int'", "'float'", + "'boolean'", "'requirements'", "'hints'", "'import'", + "'as'", "'do'", "'scatter'", "'expr'", "'true'", "'false'" ]; + +var symbolicNames = [ null, "DOLLAR", "OPENPAREN", "CLOSEPAREN", "OPENBRACE", + "CLOSEBRACE", "OPENBRACKET", "CLOSEBRACKET", "COLON", + "COMMA", "EQ", "QUES", "NEWLINE", "GREATER", "LESSER", + "SPACE", "COMMENT", "OPENSCRIPT", "CLOSESCRIPT", "SQSTRING", + "DQSTRING", "BQSTRING", "FLOAT", "INTEGER", "WORKFLOW", + "TOOL", "FILE", "DIRECTORY", "STDOUT", "FOR", "EACH", + "IN", "DEF", "RUN", "RETURN", "STRUCT", "USING", "MERGE_NESTED", + "MERGE_FLATTENED", "STRING", "INT_SYMBOL", "FLOAT_SYMBOL", + "BOOLEAN_SYMBOL", "REQUIREMENTS", "HINTS", "IMPORT", + "AS", "DO", "SCATTER", "EXPR", "TRUE_SYMBOL", "FALSE_SYMBOL", + "NOTWS" ]; + +var ruleNames = [ "root", "javascript", "jsstring", "jsexpr", "jsblock", + "jslist", "workflowdecl", "tooldecl", "req_decl", "reqs", + "workflowbodyStatement", "workflowbody", "symbolassign", + "symbolassignlist", "linkmerge", "typedexpr", "inlineexpr", + "steprun", "step", "scatter", "inlinetool", "inlineworkflowbody", + "inlineworkflow", "call", "stepinputSourceOrValue", "stepinput", + "stepinputs", "scriptlines", "scriptbody", "freetext", + "line", "argument", "redirect", "command", "const_string", + "file_const", "dir_const", "struct_field_name", "struct_field", + "struct_const", "list_entry", "list_const", "const_value", + "const_assignment", "output_assignment", "optional_for_bind", + "optional_for_over", "optional_arg", "returnvar", "toolbody", + "name", "structdecl", "typekeyword", "typedecl", "input_params", + "param_list", "param_decl", "symbolpart", "symbol", "import_decl", + "exprdecl", "ws", "keyword" ]; + +function cwlexParser (input) { + antlr4.Parser.call(this, input); + this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache); + this.ruleNames = ruleNames; + this.literalNames = literalNames; + this.symbolicNames = symbolicNames; + return this; +} + +cwlexParser.prototype = Object.create(antlr4.Parser.prototype); +cwlexParser.prototype.constructor = cwlexParser; + +Object.defineProperty(cwlexParser.prototype, "atn", { + get : function() { + return atn; + } +}); + +cwlexParser.EOF = antlr4.Token.EOF; +cwlexParser.DOLLAR = 1; +cwlexParser.OPENPAREN = 2; +cwlexParser.CLOSEPAREN = 3; +cwlexParser.OPENBRACE = 4; +cwlexParser.CLOSEBRACE = 5; +cwlexParser.OPENBRACKET = 6; +cwlexParser.CLOSEBRACKET = 7; +cwlexParser.COLON = 8; +cwlexParser.COMMA = 9; +cwlexParser.EQ = 10; +cwlexParser.QUES = 11; +cwlexParser.NEWLINE = 12; +cwlexParser.GREATER = 13; +cwlexParser.LESSER = 14; +cwlexParser.SPACE = 15; +cwlexParser.COMMENT = 16; +cwlexParser.OPENSCRIPT = 17; +cwlexParser.CLOSESCRIPT = 18; +cwlexParser.SQSTRING = 19; +cwlexParser.DQSTRING = 20; +cwlexParser.BQSTRING = 21; +cwlexParser.FLOAT = 22; +cwlexParser.INTEGER = 23; +cwlexParser.WORKFLOW = 24; +cwlexParser.TOOL = 25; +cwlexParser.FILE = 26; +cwlexParser.DIRECTORY = 27; +cwlexParser.STDOUT = 28; +cwlexParser.FOR = 29; +cwlexParser.EACH = 30; +cwlexParser.IN = 31; +cwlexParser.DEF = 32; +cwlexParser.RUN = 33; +cwlexParser.RETURN = 34; +cwlexParser.STRUCT = 35; +cwlexParser.USING = 36; +cwlexParser.MERGE_NESTED = 37; +cwlexParser.MERGE_FLATTENED = 38; +cwlexParser.STRING = 39; +cwlexParser.INT_SYMBOL = 40; +cwlexParser.FLOAT_SYMBOL = 41; +cwlexParser.BOOLEAN_SYMBOL = 42; +cwlexParser.REQUIREMENTS = 43; +cwlexParser.HINTS = 44; +cwlexParser.IMPORT = 45; +cwlexParser.AS = 46; +cwlexParser.DO = 47; +cwlexParser.SCATTER = 48; +cwlexParser.EXPR = 49; +cwlexParser.TRUE_SYMBOL = 50; +cwlexParser.FALSE_SYMBOL = 51; +cwlexParser.NOTWS = 52; + +cwlexParser.RULE_root = 0; +cwlexParser.RULE_javascript = 1; +cwlexParser.RULE_jsstring = 2; +cwlexParser.RULE_jsexpr = 3; +cwlexParser.RULE_jsblock = 4; +cwlexParser.RULE_jslist = 5; +cwlexParser.RULE_workflowdecl = 6; +cwlexParser.RULE_tooldecl = 7; +cwlexParser.RULE_req_decl = 8; +cwlexParser.RULE_reqs = 9; +cwlexParser.RULE_workflowbodyStatement = 10; +cwlexParser.RULE_workflowbody = 11; +cwlexParser.RULE_symbolassign = 12; +cwlexParser.RULE_symbolassignlist = 13; +cwlexParser.RULE_linkmerge = 14; +cwlexParser.RULE_typedexpr = 15; +cwlexParser.RULE_inlineexpr = 16; +cwlexParser.RULE_steprun = 17; +cwlexParser.RULE_step = 18; +cwlexParser.RULE_scatter = 19; +cwlexParser.RULE_inlinetool = 20; +cwlexParser.RULE_inlineworkflowbody = 21; +cwlexParser.RULE_inlineworkflow = 22; +cwlexParser.RULE_call = 23; +cwlexParser.RULE_stepinputSourceOrValue = 24; +cwlexParser.RULE_stepinput = 25; +cwlexParser.RULE_stepinputs = 26; +cwlexParser.RULE_scriptlines = 27; +cwlexParser.RULE_scriptbody = 28; +cwlexParser.RULE_freetext = 29; +cwlexParser.RULE_line = 30; +cwlexParser.RULE_argument = 31; +cwlexParser.RULE_redirect = 32; +cwlexParser.RULE_command = 33; +cwlexParser.RULE_const_string = 34; +cwlexParser.RULE_file_const = 35; +cwlexParser.RULE_dir_const = 36; +cwlexParser.RULE_struct_field_name = 37; +cwlexParser.RULE_struct_field = 38; +cwlexParser.RULE_struct_const = 39; +cwlexParser.RULE_list_entry = 40; +cwlexParser.RULE_list_const = 41; +cwlexParser.RULE_const_value = 42; +cwlexParser.RULE_const_assignment = 43; +cwlexParser.RULE_output_assignment = 44; +cwlexParser.RULE_optional_for_bind = 45; +cwlexParser.RULE_optional_for_over = 46; +cwlexParser.RULE_optional_arg = 47; +cwlexParser.RULE_returnvar = 48; +cwlexParser.RULE_toolbody = 49; +cwlexParser.RULE_name = 50; +cwlexParser.RULE_structdecl = 51; +cwlexParser.RULE_typekeyword = 52; +cwlexParser.RULE_typedecl = 53; +cwlexParser.RULE_input_params = 54; +cwlexParser.RULE_param_list = 55; +cwlexParser.RULE_param_decl = 56; +cwlexParser.RULE_symbolpart = 57; +cwlexParser.RULE_symbol = 58; +cwlexParser.RULE_import_decl = 59; +cwlexParser.RULE_exprdecl = 60; +cwlexParser.RULE_ws = 61; +cwlexParser.RULE_keyword = 62; + +function RootContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_root; + return this; +} + +RootContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RootContext.prototype.constructor = RootContext; + +RootContext.prototype.workflowdecl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WorkflowdeclContext); + } else { + return this.getTypedRuleContext(WorkflowdeclContext,i); + } +}; + +RootContext.prototype.tooldecl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(TooldeclContext); + } else { + return this.getTypedRuleContext(TooldeclContext,i); + } +}; + +RootContext.prototype.import_decl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Import_declContext); + } else { + return this.getTypedRuleContext(Import_declContext,i); + } +}; + +RootContext.prototype.exprdecl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(ExprdeclContext); + } else { + return this.getTypedRuleContext(ExprdeclContext,i); + } +}; + +RootContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +RootContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterRoot(this); + } +}; + +RootContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitRoot(this); + } +}; + + + + +cwlexParser.RootContext = RootContext; + +cwlexParser.prototype.root = function() { + + var localctx = new RootContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, cwlexParser.RULE_root); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 131; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 131; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,0,this._ctx); + switch(la_) { + case 1: + this.state = 126; + this.workflowdecl(); + break; + + case 2: + this.state = 127; + this.tooldecl(); + break; + + case 3: + this.state = 128; + this.import_decl(); + break; + + case 4: + this.state = 129; + this.exprdecl(); + break; + + case 5: + this.state = 130; + this.ws(); + break; + + } + this.state = 133; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0) || _la===cwlexParser.DEF || _la===cwlexParser.IMPORT); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function JavascriptContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_javascript; + return this; +} + +JavascriptContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +JavascriptContext.prototype.constructor = JavascriptContext; + +JavascriptContext.prototype.jsstring = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(JsstringContext); + } else { + return this.getTypedRuleContext(JsstringContext,i); + } +}; + +JavascriptContext.prototype.jsexpr = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(JsexprContext); + } else { + return this.getTypedRuleContext(JsexprContext,i); + } +}; + +JavascriptContext.prototype.jsblock = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(JsblockContext); + } else { + return this.getTypedRuleContext(JsblockContext,i); + } +}; + +JavascriptContext.prototype.jslist = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(JslistContext); + } else { + return this.getTypedRuleContext(JslistContext,i); + } +}; + +JavascriptContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +JavascriptContext.prototype.DOLLAR = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.DOLLAR); + } else { + return this.getToken(cwlexParser.DOLLAR, i); + } +}; + + +JavascriptContext.prototype.COLON = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COLON); + } else { + return this.getToken(cwlexParser.COLON, i); + } +}; + + +JavascriptContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +JavascriptContext.prototype.EQ = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.EQ); + } else { + return this.getToken(cwlexParser.EQ, i); + } +}; + + +JavascriptContext.prototype.QUES = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.QUES); + } else { + return this.getToken(cwlexParser.QUES, i); + } +}; + + +JavascriptContext.prototype.GREATER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.GREATER); + } else { + return this.getToken(cwlexParser.GREATER, i); + } +}; + + +JavascriptContext.prototype.LESSER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.LESSER); + } else { + return this.getToken(cwlexParser.LESSER, i); + } +}; + + +JavascriptContext.prototype.COMMENT = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMENT); + } else { + return this.getToken(cwlexParser.COMMENT, i); + } +}; + + +JavascriptContext.prototype.FLOAT = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.FLOAT); + } else { + return this.getToken(cwlexParser.FLOAT, i); + } +}; + + +JavascriptContext.prototype.INTEGER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.INTEGER); + } else { + return this.getToken(cwlexParser.INTEGER, i); + } +}; + + +JavascriptContext.prototype.keyword = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(KeywordContext); + } else { + return this.getTypedRuleContext(KeywordContext,i); + } +}; + +JavascriptContext.prototype.NOTWS = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.NOTWS); + } else { + return this.getToken(cwlexParser.NOTWS, i); + } +}; + + +JavascriptContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterJavascript(this); + } +}; + +JavascriptContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitJavascript(this); + } +}; + + + + +cwlexParser.JavascriptContext = JavascriptContext; + +cwlexParser.prototype.javascript = function() { + + var localctx = new JavascriptContext(this, this._ctx, this.state); + this.enterRule(localctx, 2, cwlexParser.RULE_javascript); + try { + this.enterOuterAlt(localctx, 1); + this.state = 154; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,3,this._ctx) + while(_alt!=1 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1+1) { + this.state = 152; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,2,this._ctx); + switch(la_) { + case 1: + this.state = 135; + this.jsstring(); + break; + + case 2: + this.state = 136; + this.jsexpr(); + break; + + case 3: + this.state = 137; + this.jsblock(); + break; + + case 4: + this.state = 138; + this.jslist(); + break; + + case 5: + this.state = 139; + this.ws(); + break; + + case 6: + this.state = 140; + this.match(cwlexParser.DOLLAR); + break; + + case 7: + this.state = 141; + this.match(cwlexParser.COLON); + break; + + case 8: + this.state = 142; + this.match(cwlexParser.COMMA); + break; + + case 9: + this.state = 143; + this.match(cwlexParser.EQ); + break; + + case 10: + this.state = 144; + this.match(cwlexParser.QUES); + break; + + case 11: + this.state = 145; + this.match(cwlexParser.GREATER); + break; + + case 12: + this.state = 146; + this.match(cwlexParser.LESSER); + break; + + case 13: + this.state = 147; + this.match(cwlexParser.COMMENT); + break; + + case 14: + this.state = 148; + this.match(cwlexParser.FLOAT); + break; + + case 15: + this.state = 149; + this.match(cwlexParser.INTEGER); + break; + + case 16: + this.state = 150; + this.keyword(); + break; + + case 17: + this.state = 151; + this.match(cwlexParser.NOTWS); + break; + + } + } + this.state = 156; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,3,this._ctx); + } + + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function JsstringContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_jsstring; + return this; +} + +JsstringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +JsstringContext.prototype.constructor = JsstringContext; + +JsstringContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +JsstringContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +JsstringContext.prototype.BQSTRING = function() { + return this.getToken(cwlexParser.BQSTRING, 0); +}; + +JsstringContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterJsstring(this); + } +}; + +JsstringContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitJsstring(this); + } +}; + + + + +cwlexParser.JsstringContext = JsstringContext; + +cwlexParser.prototype.jsstring = function() { + + var localctx = new JsstringContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, cwlexParser.RULE_jsstring); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 157; + _la = this._input.LA(1); + if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.SQSTRING) | (1 << cwlexParser.DQSTRING) | (1 << cwlexParser.BQSTRING))) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function JsexprContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_jsexpr; + return this; +} + +JsexprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +JsexprContext.prototype.constructor = JsexprContext; + +JsexprContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +JsexprContext.prototype.javascript = function() { + return this.getTypedRuleContext(JavascriptContext,0); +}; + +JsexprContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +JsexprContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterJsexpr(this); + } +}; + +JsexprContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitJsexpr(this); + } +}; + + + + +cwlexParser.JsexprContext = JsexprContext; + +cwlexParser.prototype.jsexpr = function() { + + var localctx = new JsexprContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, cwlexParser.RULE_jsexpr); + try { + this.enterOuterAlt(localctx, 1); + this.state = 159; + this.match(cwlexParser.OPENPAREN); + this.state = 160; + this.javascript(); + this.state = 161; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function JsblockContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_jsblock; + return this; +} + +JsblockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +JsblockContext.prototype.constructor = JsblockContext; + +JsblockContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +JsblockContext.prototype.javascript = function() { + return this.getTypedRuleContext(JavascriptContext,0); +}; + +JsblockContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +JsblockContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterJsblock(this); + } +}; + +JsblockContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitJsblock(this); + } +}; + + + + +cwlexParser.JsblockContext = JsblockContext; + +cwlexParser.prototype.jsblock = function() { + + var localctx = new JsblockContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, cwlexParser.RULE_jsblock); + try { + this.enterOuterAlt(localctx, 1); + this.state = 163; + this.match(cwlexParser.OPENBRACE); + this.state = 164; + this.javascript(); + this.state = 165; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function JslistContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_jslist; + return this; +} + +JslistContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +JslistContext.prototype.constructor = JslistContext; + +JslistContext.prototype.OPENBRACKET = function() { + return this.getToken(cwlexParser.OPENBRACKET, 0); +}; + +JslistContext.prototype.javascript = function() { + return this.getTypedRuleContext(JavascriptContext,0); +}; + +JslistContext.prototype.CLOSEBRACKET = function() { + return this.getToken(cwlexParser.CLOSEBRACKET, 0); +}; + +JslistContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterJslist(this); + } +}; + +JslistContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitJslist(this); + } +}; + + + + +cwlexParser.JslistContext = JslistContext; + +cwlexParser.prototype.jslist = function() { + + var localctx = new JslistContext(this, this._ctx, this.state); + this.enterRule(localctx, 10, cwlexParser.RULE_jslist); + try { + this.enterOuterAlt(localctx, 1); + this.state = 167; + this.match(cwlexParser.OPENBRACKET); + this.state = 168; + this.javascript(); + this.state = 169; + this.match(cwlexParser.CLOSEBRACKET); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function WorkflowdeclContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_workflowdecl; + return this; +} + +WorkflowdeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +WorkflowdeclContext.prototype.constructor = WorkflowdeclContext; + +WorkflowdeclContext.prototype.DEF = function() { + return this.getToken(cwlexParser.DEF, 0); +}; + +WorkflowdeclContext.prototype.WORKFLOW = function() { + return this.getToken(cwlexParser.WORKFLOW, 0); +}; + +WorkflowdeclContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +WorkflowdeclContext.prototype.input_params = function() { + return this.getTypedRuleContext(Input_paramsContext,0); +}; + +WorkflowdeclContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +WorkflowdeclContext.prototype.workflowbody = function() { + return this.getTypedRuleContext(WorkflowbodyContext,0); +}; + +WorkflowdeclContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +WorkflowdeclContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +WorkflowdeclContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterWorkflowdecl(this); + } +}; + +WorkflowdeclContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitWorkflowdecl(this); + } +}; + + + + +cwlexParser.WorkflowdeclContext = WorkflowdeclContext; + +cwlexParser.prototype.workflowdecl = function() { + + var localctx = new WorkflowdeclContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, cwlexParser.RULE_workflowdecl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 171; + this.match(cwlexParser.DEF); + this.state = 173; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 172; + this.ws(); + this.state = 175; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 177; + this.match(cwlexParser.WORKFLOW); + this.state = 179; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 178; + this.ws(); + this.state = 181; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 183; + this.name(); + this.state = 187; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 184; + this.ws(); + this.state = 189; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 190; + this.input_params(); + this.state = 194; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 191; + this.ws(); + this.state = 196; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 197; + this.match(cwlexParser.OPENBRACE); + this.state = 198; + this.workflowbody(); + this.state = 199; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TooldeclContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_tooldecl; + return this; +} + +TooldeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TooldeclContext.prototype.constructor = TooldeclContext; + +TooldeclContext.prototype.DEF = function() { + return this.getToken(cwlexParser.DEF, 0); +}; + +TooldeclContext.prototype.TOOL = function() { + return this.getToken(cwlexParser.TOOL, 0); +}; + +TooldeclContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +TooldeclContext.prototype.input_params = function() { + return this.getTypedRuleContext(Input_paramsContext,0); +}; + +TooldeclContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +TooldeclContext.prototype.toolbody = function() { + return this.getTypedRuleContext(ToolbodyContext,0); +}; + +TooldeclContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +TooldeclContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +TooldeclContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterTooldecl(this); + } +}; + +TooldeclContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitTooldecl(this); + } +}; + + + + +cwlexParser.TooldeclContext = TooldeclContext; + +cwlexParser.prototype.tooldecl = function() { + + var localctx = new TooldeclContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, cwlexParser.RULE_tooldecl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 201; + this.match(cwlexParser.DEF); + this.state = 203; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 202; + this.ws(); + this.state = 205; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 207; + this.match(cwlexParser.TOOL); + this.state = 209; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 208; + this.ws(); + this.state = 211; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 213; + this.name(); + this.state = 217; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 214; + this.ws(); + this.state = 219; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 220; + this.input_params(); + this.state = 224; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 221; + this.ws(); + this.state = 226; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 227; + this.match(cwlexParser.OPENBRACE); + this.state = 228; + this.toolbody(); + this.state = 229; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Req_declContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_req_decl; + return this; +} + +Req_declContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Req_declContext.prototype.constructor = Req_declContext; + +Req_declContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +Req_declContext.prototype.COMMA = function() { + return this.getToken(cwlexParser.COMMA, 0); +}; + +Req_declContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Req_declContext.prototype.struct_const = function() { + return this.getTypedRuleContext(Struct_constContext,0); +}; + +Req_declContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +Req_declContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterReq_decl(this); + } +}; + +Req_declContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitReq_decl(this); + } +}; + + + + +cwlexParser.Req_declContext = Req_declContext; + +cwlexParser.prototype.req_decl = function() { + + var localctx = new Req_declContext(this, this._ctx, this.state); + this.enterRule(localctx, 16, cwlexParser.RULE_req_decl); + var _la = 0; // Token type + try { + this.state = 255; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,16,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 231; + this.symbol(); + this.state = 233; + _la = this._input.LA(1); + if(_la===cwlexParser.COMMA) { + this.state = 232; + this.match(cwlexParser.COMMA); + } + + this.state = 236; + this._errHandler.sync(this); + var _alt = 1; + do { + switch (_alt) { + case 1: + this.state = 235; + this.ws(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 238; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,13, this._ctx); + } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 240; + this.symbol(); + this.state = 242; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 241; + this.ws(); + this.state = 244; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 246; + this.struct_const(); + this.state = 250; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,15,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 247; + this.ws(); + } + this.state = 252; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,15,this._ctx); + } + + this.state = 253; + this.match(cwlexParser.NEWLINE); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ReqsContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_reqs; + return this; +} + +ReqsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ReqsContext.prototype.constructor = ReqsContext; + +ReqsContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +ReqsContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +ReqsContext.prototype.REQUIREMENTS = function() { + return this.getToken(cwlexParser.REQUIREMENTS, 0); +}; + +ReqsContext.prototype.HINTS = function() { + return this.getToken(cwlexParser.HINTS, 0); +}; + +ReqsContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +ReqsContext.prototype.req_decl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Req_declContext); + } else { + return this.getTypedRuleContext(Req_declContext,i); + } +}; + +ReqsContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterReqs(this); + } +}; + +ReqsContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitReqs(this); + } +}; + + + + +cwlexParser.ReqsContext = ReqsContext; + +cwlexParser.prototype.reqs = function() { + + var localctx = new ReqsContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, cwlexParser.RULE_reqs); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 257; + _la = this._input.LA(1); + if(!(_la===cwlexParser.REQUIREMENTS || _la===cwlexParser.HINTS)) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + this.state = 259; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 258; + this.ws(); + this.state = 261; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 263; + this.match(cwlexParser.OPENBRACE); + this.state = 267; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 264; + this.ws(); + this.state = 269; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 279; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 24)) & ~0x1f) == 0 && ((1 << (_la - 24)) & ((1 << (cwlexParser.WORKFLOW - 24)) | (1 << (cwlexParser.TOOL - 24)) | (1 << (cwlexParser.FILE - 24)) | (1 << (cwlexParser.DIRECTORY - 24)) | (1 << (cwlexParser.STDOUT - 24)) | (1 << (cwlexParser.FOR - 24)) | (1 << (cwlexParser.EACH - 24)) | (1 << (cwlexParser.IN - 24)) | (1 << (cwlexParser.DEF - 24)) | (1 << (cwlexParser.RUN - 24)) | (1 << (cwlexParser.RETURN - 24)) | (1 << (cwlexParser.STRUCT - 24)) | (1 << (cwlexParser.USING - 24)) | (1 << (cwlexParser.MERGE_NESTED - 24)) | (1 << (cwlexParser.MERGE_FLATTENED - 24)) | (1 << (cwlexParser.INT_SYMBOL - 24)) | (1 << (cwlexParser.FLOAT_SYMBOL - 24)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 24)) | (1 << (cwlexParser.REQUIREMENTS - 24)) | (1 << (cwlexParser.HINTS - 24)) | (1 << (cwlexParser.IMPORT - 24)) | (1 << (cwlexParser.AS - 24)) | (1 << (cwlexParser.DO - 24)) | (1 << (cwlexParser.SCATTER - 24)) | (1 << (cwlexParser.EXPR - 24)) | (1 << (cwlexParser.TRUE_SYMBOL - 24)) | (1 << (cwlexParser.FALSE_SYMBOL - 24)) | (1 << (cwlexParser.NOTWS - 24)))) !== 0)) { + this.state = 270; + this.req_decl(); + this.state = 274; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 271; + this.ws(); + this.state = 276; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 281; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 282; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function WorkflowbodyStatementContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_workflowbodyStatement; + return this; +} + +WorkflowbodyStatementContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +WorkflowbodyStatementContext.prototype.constructor = WorkflowbodyStatementContext; + +WorkflowbodyStatementContext.prototype.const_assignment = function() { + return this.getTypedRuleContext(Const_assignmentContext,0); +}; + +WorkflowbodyStatementContext.prototype.step = function() { + return this.getTypedRuleContext(StepContext,0); +}; + +WorkflowbodyStatementContext.prototype.reqs = function() { + return this.getTypedRuleContext(ReqsContext,0); +}; + +WorkflowbodyStatementContext.prototype.ws = function() { + return this.getTypedRuleContext(WsContext,0); +}; + +WorkflowbodyStatementContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterWorkflowbodyStatement(this); + } +}; + +WorkflowbodyStatementContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitWorkflowbodyStatement(this); + } +}; + + + + +cwlexParser.WorkflowbodyStatementContext = WorkflowbodyStatementContext; + +cwlexParser.prototype.workflowbodyStatement = function() { + + var localctx = new WorkflowbodyStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, cwlexParser.RULE_workflowbodyStatement); + try { + this.enterOuterAlt(localctx, 1); + this.state = 288; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,21,this._ctx); + switch(la_) { + case 1: + this.state = 284; + this.const_assignment(); + break; + + case 2: + this.state = 285; + this.step(); + break; + + case 3: + this.state = 286; + this.reqs(); + break; + + case 4: + this.state = 287; + this.ws(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function WorkflowbodyContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_workflowbody; + return this; +} + +WorkflowbodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +WorkflowbodyContext.prototype.constructor = WorkflowbodyContext; + +WorkflowbodyContext.prototype.workflowbodyStatement = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WorkflowbodyStatementContext); + } else { + return this.getTypedRuleContext(WorkflowbodyStatementContext,i); + } +}; + +WorkflowbodyContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +WorkflowbodyContext.prototype.RETURN = function() { + return this.getToken(cwlexParser.RETURN, 0); +}; + +WorkflowbodyContext.prototype.symbolassignlist = function() { + return this.getTypedRuleContext(SymbolassignlistContext,0); +}; + +WorkflowbodyContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterWorkflowbody(this); + } +}; + +WorkflowbodyContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitWorkflowbody(this); + } +}; + + + + +cwlexParser.WorkflowbodyContext = WorkflowbodyContext; + +cwlexParser.prototype.workflowbody = function() { + + var localctx = new WorkflowbodyContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, cwlexParser.RULE_workflowbody); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 293; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,22,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 290; + this.workflowbodyStatement(); + } + this.state = 295; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,22,this._ctx); + } + + this.state = 299; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,23,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 296; + this.ws(); + } + this.state = 301; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,23,this._ctx); + } + + this.state = 310; + _la = this._input.LA(1); + if(_la===cwlexParser.RETURN) { + this.state = 302; + this.match(cwlexParser.RETURN); + this.state = 304; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 303; + this.ws(); + this.state = 306; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 308; + this.symbolassignlist(); + } + + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SymbolassignContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_symbolassign; + return this; +} + +SymbolassignContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SymbolassignContext.prototype.constructor = SymbolassignContext; + +SymbolassignContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +SymbolassignContext.prototype.AS = function() { + return this.getToken(cwlexParser.AS, 0); +}; + +SymbolassignContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +SymbolassignContext.prototype.linkmerge = function() { + return this.getTypedRuleContext(LinkmergeContext,0); +}; + +SymbolassignContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +SymbolassignContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterSymbolassign(this); + } +}; + +SymbolassignContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitSymbolassign(this); + } +}; + + + + +cwlexParser.SymbolassignContext = SymbolassignContext; + +cwlexParser.prototype.symbolassign = function() { + + var localctx = new SymbolassignContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, cwlexParser.RULE_symbolassign); + var _la = 0; // Token type + try { + this.state = 330; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,29,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 312; + this.name(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 315; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,26,this._ctx); + switch(la_) { + case 1: + this.state = 313; + this.symbol(); + break; + + case 2: + this.state = 314; + this.linkmerge(); + break; + + } + this.state = 318; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 317; + this.ws(); + this.state = 320; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 322; + this.match(cwlexParser.AS); + this.state = 324; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 323; + this.ws(); + this.state = 326; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 328; + this.name(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SymbolassignlistContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_symbolassignlist; + return this; +} + +SymbolassignlistContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SymbolassignlistContext.prototype.constructor = SymbolassignlistContext; + +SymbolassignlistContext.prototype.symbolassign = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(SymbolassignContext); + } else { + return this.getTypedRuleContext(SymbolassignContext,i); + } +}; + +SymbolassignlistContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +SymbolassignlistContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +SymbolassignlistContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterSymbolassignlist(this); + } +}; + +SymbolassignlistContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitSymbolassignlist(this); + } +}; + + + + +cwlexParser.SymbolassignlistContext = SymbolassignlistContext; + +cwlexParser.prototype.symbolassignlist = function() { + + var localctx = new SymbolassignlistContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, cwlexParser.RULE_symbolassignlist); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 332; + this.symbolassign(); + this.state = 336; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,30,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 333; + this.ws(); + } + this.state = 338; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,30,this._ctx); + } + + this.state = 355; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 339; + this.match(cwlexParser.COMMA); + this.state = 343; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 340; + this.ws(); + this.state = 345; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 346; + this.symbolassign(); + this.state = 350; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,32,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 347; + this.ws(); + } + this.state = 352; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,32,this._ctx); + } + + this.state = 357; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LinkmergeContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_linkmerge; + return this; +} + +LinkmergeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LinkmergeContext.prototype.constructor = LinkmergeContext; + +LinkmergeContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +LinkmergeContext.prototype.symbol = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(SymbolContext); + } else { + return this.getTypedRuleContext(SymbolContext,i); + } +}; + +LinkmergeContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +LinkmergeContext.prototype.MERGE_NESTED = function() { + return this.getToken(cwlexParser.MERGE_NESTED, 0); +}; + +LinkmergeContext.prototype.MERGE_FLATTENED = function() { + return this.getToken(cwlexParser.MERGE_FLATTENED, 0); +}; + +LinkmergeContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +LinkmergeContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +LinkmergeContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterLinkmerge(this); + } +}; + +LinkmergeContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitLinkmerge(this); + } +}; + + + + +cwlexParser.LinkmergeContext = LinkmergeContext; + +cwlexParser.prototype.linkmerge = function() { + + var localctx = new LinkmergeContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, cwlexParser.RULE_linkmerge); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 358; + _la = this._input.LA(1); + if(!(_la===cwlexParser.MERGE_NESTED || _la===cwlexParser.MERGE_FLATTENED)) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + this.state = 362; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 359; + this.ws(); + this.state = 364; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 365; + this.match(cwlexParser.OPENPAREN); + this.state = 369; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 366; + this.ws(); + this.state = 371; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 372; + this.symbol(); + this.state = 383; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 373; + this.match(cwlexParser.COMMA); + this.state = 377; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 374; + this.ws(); + this.state = 379; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 380; + this.symbol(); + this.state = 385; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 389; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 386; + this.ws(); + this.state = 391; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 392; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TypedexprContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_typedexpr; + return this; +} + +TypedexprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TypedexprContext.prototype.constructor = TypedexprContext; + +TypedexprContext.prototype.typedecl = function() { + return this.getTypedRuleContext(TypedeclContext,0); +}; + +TypedexprContext.prototype.jsexpr = function() { + return this.getTypedRuleContext(JsexprContext,0); +}; + +TypedexprContext.prototype.jsblock = function() { + return this.getTypedRuleContext(JsblockContext,0); +}; + +TypedexprContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +TypedexprContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterTypedexpr(this); + } +}; + +TypedexprContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitTypedexpr(this); + } +}; + + + + +cwlexParser.TypedexprContext = TypedexprContext; + +cwlexParser.prototype.typedexpr = function() { + + var localctx = new TypedexprContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, cwlexParser.RULE_typedexpr); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 394; + this.typedecl(); + this.state = 398; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 395; + this.ws(); + this.state = 400; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 403; + switch(this._input.LA(1)) { + case cwlexParser.OPENPAREN: + this.state = 401; + this.jsexpr(); + break; + case cwlexParser.OPENBRACE: + this.state = 402; + this.jsblock(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function InlineexprContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_inlineexpr; + return this; +} + +InlineexprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +InlineexprContext.prototype.constructor = InlineexprContext; + +InlineexprContext.prototype.RUN = function() { + return this.getToken(cwlexParser.RUN, 0); +}; + +InlineexprContext.prototype.EXPR = function() { + return this.getToken(cwlexParser.EXPR, 0); +}; + +InlineexprContext.prototype.stepinputs = function() { + return this.getTypedRuleContext(StepinputsContext,0); +}; + +InlineexprContext.prototype.typedexpr = function() { + return this.getTypedRuleContext(TypedexprContext,0); +}; + +InlineexprContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +InlineexprContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterInlineexpr(this); + } +}; + +InlineexprContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitInlineexpr(this); + } +}; + + + + +cwlexParser.InlineexprContext = InlineexprContext; + +cwlexParser.prototype.inlineexpr = function() { + + var localctx = new InlineexprContext(this, this._ctx, this.state); + this.enterRule(localctx, 32, cwlexParser.RULE_inlineexpr); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 405; + this.match(cwlexParser.RUN); + this.state = 407; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 406; + this.ws(); + this.state = 409; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 411; + this.match(cwlexParser.EXPR); + this.state = 415; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 412; + this.ws(); + this.state = 417; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 418; + this.stepinputs(); + this.state = 422; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 419; + this.ws(); + this.state = 424; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 425; + this.typedexpr(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SteprunContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_steprun; + return this; +} + +SteprunContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SteprunContext.prototype.constructor = SteprunContext; + +SteprunContext.prototype.inlineexpr = function() { + return this.getTypedRuleContext(InlineexprContext,0); +}; + +SteprunContext.prototype.inlinetool = function() { + return this.getTypedRuleContext(InlinetoolContext,0); +}; + +SteprunContext.prototype.inlineworkflow = function() { + return this.getTypedRuleContext(InlineworkflowContext,0); +}; + +SteprunContext.prototype.call = function() { + return this.getTypedRuleContext(CallContext,0); +}; + +SteprunContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterSteprun(this); + } +}; + +SteprunContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitSteprun(this); + } +}; + + + + +cwlexParser.SteprunContext = SteprunContext; + +cwlexParser.prototype.steprun = function() { + + var localctx = new SteprunContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, cwlexParser.RULE_steprun); + try { + this.state = 431; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,44,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 427; + this.inlineexpr(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 428; + this.inlinetool(); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 429; + this.inlineworkflow(); + break; + + case 4: + this.enterOuterAlt(localctx, 4); + this.state = 430; + this.call(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StepContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_step; + return this; +} + +StepContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StepContext.prototype.constructor = StepContext; + +StepContext.prototype.steprun = function() { + return this.getTypedRuleContext(SteprunContext,0); +}; + +StepContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +StepContext.prototype.symbolassignlist = function() { + return this.getTypedRuleContext(SymbolassignlistContext,0); +}; + +StepContext.prototype.EQ = function() { + return this.getToken(cwlexParser.EQ, 0); +}; + +StepContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +StepContext.prototype.scatter = function() { + return this.getTypedRuleContext(ScatterContext,0); +}; + +StepContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStep(this); + } +}; + +StepContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStep(this); + } +}; + + + + +cwlexParser.StepContext = StepContext; + +cwlexParser.prototype.step = function() { + + var localctx = new StepContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, cwlexParser.RULE_step); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 442; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,46,this._ctx); + if(la_===1) { + this.state = 433; + this.symbolassignlist(); + this.state = 437; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 434; + this.ws(); + this.state = 439; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 440; + this.match(cwlexParser.EQ); + + } + this.state = 447; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,47,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 444; + this.ws(); + } + this.state = 449; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,47,this._ctx); + } + + this.state = 451; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,48,this._ctx); + if(la_===1) { + this.state = 450; + this.scatter(); + + } + this.state = 456; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 453; + this.ws(); + this.state = 458; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 459; + this.steprun(); + this.state = 463; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,50,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 460; + this.ws(); + } + this.state = 465; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,50,this._ctx); + } + + this.state = 466; + this.match(cwlexParser.NEWLINE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ScatterContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_scatter; + return this; +} + +ScatterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ScatterContext.prototype.constructor = ScatterContext; + +ScatterContext.prototype.SCATTER = function() { + return this.getToken(cwlexParser.SCATTER, 0); +}; + +ScatterContext.prototype.symbolassignlist = function() { + return this.getTypedRuleContext(SymbolassignlistContext,0); +}; + +ScatterContext.prototype.DO = function() { + return this.getToken(cwlexParser.DO, 0); +}; + +ScatterContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +ScatterContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterScatter(this); + } +}; + +ScatterContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitScatter(this); + } +}; + + + + +cwlexParser.ScatterContext = ScatterContext; + +cwlexParser.prototype.scatter = function() { + + var localctx = new ScatterContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, cwlexParser.RULE_scatter); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 468; + this.match(cwlexParser.SCATTER); + this.state = 470; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 469; + this.ws(); + this.state = 472; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 474; + this.symbolassignlist(); + this.state = 476; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 475; + this.ws(); + this.state = 478; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 480; + this.match(cwlexParser.DO); + this.state = 482; + this._errHandler.sync(this); + var _alt = 1; + do { + switch (_alt) { + case 1: + this.state = 481; + this.ws(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 484; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,53, this._ctx); + } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function InlinetoolContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_inlinetool; + return this; +} + +InlinetoolContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +InlinetoolContext.prototype.constructor = InlinetoolContext; + +InlinetoolContext.prototype.RUN = function() { + return this.getToken(cwlexParser.RUN, 0); +}; + +InlinetoolContext.prototype.TOOL = function() { + return this.getToken(cwlexParser.TOOL, 0); +}; + +InlinetoolContext.prototype.stepinputs = function() { + return this.getTypedRuleContext(StepinputsContext,0); +}; + +InlinetoolContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +InlinetoolContext.prototype.toolbody = function() { + return this.getTypedRuleContext(ToolbodyContext,0); +}; + +InlinetoolContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +InlinetoolContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +InlinetoolContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterInlinetool(this); + } +}; + +InlinetoolContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitInlinetool(this); + } +}; + + + + +cwlexParser.InlinetoolContext = InlinetoolContext; + +cwlexParser.prototype.inlinetool = function() { + + var localctx = new InlinetoolContext(this, this._ctx, this.state); + this.enterRule(localctx, 40, cwlexParser.RULE_inlinetool); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 486; + this.match(cwlexParser.RUN); + this.state = 488; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 487; + this.ws(); + this.state = 490; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 492; + this.match(cwlexParser.TOOL); + this.state = 496; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 493; + this.ws(); + this.state = 498; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 499; + this.stepinputs(); + this.state = 503; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 500; + this.ws(); + this.state = 505; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 506; + this.match(cwlexParser.OPENBRACE); + this.state = 510; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,57,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 507; + this.ws(); + } + this.state = 512; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,57,this._ctx); + } + + this.state = 513; + this.toolbody(); + this.state = 517; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 514; + this.ws(); + this.state = 519; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 520; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function InlineworkflowbodyContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_inlineworkflowbody; + return this; +} + +InlineworkflowbodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +InlineworkflowbodyContext.prototype.constructor = InlineworkflowbodyContext; + +InlineworkflowbodyContext.prototype.workflowbody = function() { + return this.getTypedRuleContext(WorkflowbodyContext,0); +}; + +InlineworkflowbodyContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterInlineworkflowbody(this); + } +}; + +InlineworkflowbodyContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitInlineworkflowbody(this); + } +}; + + + + +cwlexParser.InlineworkflowbodyContext = InlineworkflowbodyContext; + +cwlexParser.prototype.inlineworkflowbody = function() { + + var localctx = new InlineworkflowbodyContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, cwlexParser.RULE_inlineworkflowbody); + try { + this.enterOuterAlt(localctx, 1); + this.state = 522; + this.workflowbody(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function InlineworkflowContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_inlineworkflow; + return this; +} + +InlineworkflowContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +InlineworkflowContext.prototype.constructor = InlineworkflowContext; + +InlineworkflowContext.prototype.RUN = function() { + return this.getToken(cwlexParser.RUN, 0); +}; + +InlineworkflowContext.prototype.WORKFLOW = function() { + return this.getToken(cwlexParser.WORKFLOW, 0); +}; + +InlineworkflowContext.prototype.stepinputs = function() { + return this.getTypedRuleContext(StepinputsContext,0); +}; + +InlineworkflowContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +InlineworkflowContext.prototype.inlineworkflowbody = function() { + return this.getTypedRuleContext(InlineworkflowbodyContext,0); +}; + +InlineworkflowContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +InlineworkflowContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +InlineworkflowContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterInlineworkflow(this); + } +}; + +InlineworkflowContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitInlineworkflow(this); + } +}; + + + + +cwlexParser.InlineworkflowContext = InlineworkflowContext; + +cwlexParser.prototype.inlineworkflow = function() { + + var localctx = new InlineworkflowContext(this, this._ctx, this.state); + this.enterRule(localctx, 44, cwlexParser.RULE_inlineworkflow); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 524; + this.match(cwlexParser.RUN); + this.state = 526; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 525; + this.ws(); + this.state = 528; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 530; + this.match(cwlexParser.WORKFLOW); + this.state = 534; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 531; + this.ws(); + this.state = 536; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 537; + this.stepinputs(); + this.state = 541; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 538; + this.ws(); + this.state = 543; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 544; + this.match(cwlexParser.OPENBRACE); + this.state = 548; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,62,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 545; + this.ws(); + } + this.state = 550; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,62,this._ctx); + } + + this.state = 551; + this.inlineworkflowbody(); + this.state = 555; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 552; + this.ws(); + this.state = 557; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 558; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function CallContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_call; + return this; +} + +CallContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +CallContext.prototype.constructor = CallContext; + +CallContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +CallContext.prototype.stepinputs = function() { + return this.getTypedRuleContext(StepinputsContext,0); +}; + +CallContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +CallContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterCall(this); + } +}; + +CallContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitCall(this); + } +}; + + + + +cwlexParser.CallContext = CallContext; + +cwlexParser.prototype.call = function() { + + var localctx = new CallContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, cwlexParser.RULE_call); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 560; + this.symbol(); + this.state = 564; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 561; + this.ws(); + this.state = 566; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 567; + this.stepinputs(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StepinputSourceOrValueContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_stepinputSourceOrValue; + return this; +} + +StepinputSourceOrValueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StepinputSourceOrValueContext.prototype.constructor = StepinputSourceOrValueContext; + +StepinputSourceOrValueContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +StepinputSourceOrValueContext.prototype.const_value = function() { + return this.getTypedRuleContext(Const_valueContext,0); +}; + +StepinputSourceOrValueContext.prototype.DOLLAR = function() { + return this.getToken(cwlexParser.DOLLAR, 0); +}; + +StepinputSourceOrValueContext.prototype.jsexpr = function() { + return this.getTypedRuleContext(JsexprContext,0); +}; + +StepinputSourceOrValueContext.prototype.jsblock = function() { + return this.getTypedRuleContext(JsblockContext,0); +}; + +StepinputSourceOrValueContext.prototype.linkmerge = function() { + return this.getTypedRuleContext(LinkmergeContext,0); +}; + +StepinputSourceOrValueContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStepinputSourceOrValue(this); + } +}; + +StepinputSourceOrValueContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStepinputSourceOrValue(this); + } +}; + + + + +cwlexParser.StepinputSourceOrValueContext = StepinputSourceOrValueContext; + +cwlexParser.prototype.stepinputSourceOrValue = function() { + + var localctx = new StepinputSourceOrValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, cwlexParser.RULE_stepinputSourceOrValue); + try { + this.state = 576; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,65,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 569; + this.symbol(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 570; + this.const_value(); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 571; + this.match(cwlexParser.DOLLAR); + this.state = 572; + this.jsexpr(); + break; + + case 4: + this.enterOuterAlt(localctx, 4); + this.state = 573; + this.match(cwlexParser.DOLLAR); + this.state = 574; + this.jsblock(); + break; + + case 5: + this.enterOuterAlt(localctx, 5); + this.state = 575; + this.linkmerge(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StepinputContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_stepinput; + return this; +} + +StepinputContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StepinputContext.prototype.constructor = StepinputContext; + +StepinputContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +StepinputContext.prototype.EQ = function() { + return this.getToken(cwlexParser.EQ, 0); +}; + +StepinputContext.prototype.stepinputSourceOrValue = function() { + return this.getTypedRuleContext(StepinputSourceOrValueContext,0); +}; + +StepinputContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +StepinputContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStepinput(this); + } +}; + +StepinputContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStepinput(this); + } +}; + + + + +cwlexParser.StepinputContext = StepinputContext; + +cwlexParser.prototype.stepinput = function() { + + var localctx = new StepinputContext(this, this._ctx, this.state); + this.enterRule(localctx, 50, cwlexParser.RULE_stepinput); + var _la = 0; // Token type + try { + this.state = 596; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,68,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 578; + this.name(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 579; + this.name(); + this.state = 583; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 580; + this.ws(); + this.state = 585; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 586; + this.match(cwlexParser.EQ); + this.state = 590; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 587; + this.ws(); + this.state = 592; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 593; + this.stepinputSourceOrValue(); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 595; + this.stepinputSourceOrValue(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StepinputsContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_stepinputs; + return this; +} + +StepinputsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StepinputsContext.prototype.constructor = StepinputsContext; + +StepinputsContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +StepinputsContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +StepinputsContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +StepinputsContext.prototype.stepinput = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(StepinputContext); + } else { + return this.getTypedRuleContext(StepinputContext,i); + } +}; + +StepinputsContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +StepinputsContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStepinputs(this); + } +}; + +StepinputsContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStepinputs(this); + } +}; + + + + +cwlexParser.StepinputsContext = StepinputsContext; + +cwlexParser.prototype.stepinputs = function() { + + var localctx = new StepinputsContext(this, this._ctx, this.state); + this.enterRule(localctx, 52, cwlexParser.RULE_stepinputs); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 598; + this.match(cwlexParser.OPENPAREN); + this.state = 602; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 599; + this.ws(); + this.state = 604; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 637; + _la = this._input.LA(1); + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.DOLLAR) | (1 << cwlexParser.OPENBRACE) | (1 << cwlexParser.OPENBRACKET) | (1 << cwlexParser.SQSTRING) | (1 << cwlexParser.DQSTRING) | (1 << cwlexParser.FLOAT) | (1 << cwlexParser.INTEGER) | (1 << cwlexParser.WORKFLOW) | (1 << cwlexParser.TOOL) | (1 << cwlexParser.FILE) | (1 << cwlexParser.DIRECTORY) | (1 << cwlexParser.STDOUT) | (1 << cwlexParser.FOR) | (1 << cwlexParser.EACH) | (1 << cwlexParser.IN))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (cwlexParser.DEF - 32)) | (1 << (cwlexParser.RUN - 32)) | (1 << (cwlexParser.RETURN - 32)) | (1 << (cwlexParser.STRUCT - 32)) | (1 << (cwlexParser.USING - 32)) | (1 << (cwlexParser.MERGE_NESTED - 32)) | (1 << (cwlexParser.MERGE_FLATTENED - 32)) | (1 << (cwlexParser.INT_SYMBOL - 32)) | (1 << (cwlexParser.FLOAT_SYMBOL - 32)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 32)) | (1 << (cwlexParser.REQUIREMENTS - 32)) | (1 << (cwlexParser.HINTS - 32)) | (1 << (cwlexParser.IMPORT - 32)) | (1 << (cwlexParser.AS - 32)) | (1 << (cwlexParser.DO - 32)) | (1 << (cwlexParser.SCATTER - 32)) | (1 << (cwlexParser.EXPR - 32)) | (1 << (cwlexParser.TRUE_SYMBOL - 32)) | (1 << (cwlexParser.FALSE_SYMBOL - 32)) | (1 << (cwlexParser.NOTWS - 32)))) !== 0)) { + this.state = 605; + this.stepinput(); + this.state = 609; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,70,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 606; + this.ws(); + } + this.state = 611; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,70,this._ctx); + } + + this.state = 628; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,73,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 615; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 612; + this.ws(); + this.state = 617; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 618; + this.match(cwlexParser.COMMA); + this.state = 622; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 619; + this.ws(); + this.state = 624; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 625; + this.stepinput(); + } + this.state = 630; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,73,this._ctx); + } + + this.state = 634; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 631; + this.ws(); + this.state = 636; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + + this.state = 639; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ScriptlinesContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_scriptlines; + return this; +} + +ScriptlinesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ScriptlinesContext.prototype.constructor = ScriptlinesContext; + +ScriptlinesContext.prototype.line = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(LineContext); + } else { + return this.getTypedRuleContext(LineContext,i); + } +}; + +ScriptlinesContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterScriptlines(this); + } +}; + +ScriptlinesContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitScriptlines(this); + } +}; + + + + +cwlexParser.ScriptlinesContext = ScriptlinesContext; + +cwlexParser.prototype.scriptlines = function() { + + var localctx = new ScriptlinesContext(this, this._ctx, this.state); + this.enterRule(localctx, 54, cwlexParser.RULE_scriptlines); + try { + this.enterOuterAlt(localctx, 1); + this.state = 644; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,76,this._ctx) + while(_alt!=1 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1+1) { + this.state = 641; + this.line(); + } + this.state = 646; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,76,this._ctx); + } + + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ScriptbodyContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_scriptbody; + return this; +} + +ScriptbodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ScriptbodyContext.prototype.constructor = ScriptbodyContext; + +ScriptbodyContext.prototype.OPENSCRIPT = function() { + return this.getToken(cwlexParser.OPENSCRIPT, 0); +}; + +ScriptbodyContext.prototype.scriptlines = function() { + return this.getTypedRuleContext(ScriptlinesContext,0); +}; + +ScriptbodyContext.prototype.CLOSESCRIPT = function() { + return this.getToken(cwlexParser.CLOSESCRIPT, 0); +}; + +ScriptbodyContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterScriptbody(this); + } +}; + +ScriptbodyContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitScriptbody(this); + } +}; + + + + +cwlexParser.ScriptbodyContext = ScriptbodyContext; + +cwlexParser.prototype.scriptbody = function() { + + var localctx = new ScriptbodyContext(this, this._ctx, this.state); + this.enterRule(localctx, 56, cwlexParser.RULE_scriptbody); + try { + this.enterOuterAlt(localctx, 1); + this.state = 647; + this.match(cwlexParser.OPENSCRIPT); + this.state = 648; + this.scriptlines(); + this.state = 649; + this.match(cwlexParser.CLOSESCRIPT); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FreetextContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_freetext; + return this; +} + +FreetextContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FreetextContext.prototype.constructor = FreetextContext; + +FreetextContext.prototype.DOLLAR = function() { + return this.getToken(cwlexParser.DOLLAR, 0); +}; + +FreetextContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +FreetextContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +FreetextContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +FreetextContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +FreetextContext.prototype.OPENBRACKET = function() { + return this.getToken(cwlexParser.OPENBRACKET, 0); +}; + +FreetextContext.prototype.CLOSEBRACKET = function() { + return this.getToken(cwlexParser.CLOSEBRACKET, 0); +}; + +FreetextContext.prototype.COLON = function() { + return this.getToken(cwlexParser.COLON, 0); +}; + +FreetextContext.prototype.COMMA = function() { + return this.getToken(cwlexParser.COMMA, 0); +}; + +FreetextContext.prototype.EQ = function() { + return this.getToken(cwlexParser.EQ, 0); +}; + +FreetextContext.prototype.QUES = function() { + return this.getToken(cwlexParser.QUES, 0); +}; + +FreetextContext.prototype.LESSER = function() { + return this.getToken(cwlexParser.LESSER, 0); +}; + +FreetextContext.prototype.COMMENT = function() { + return this.getToken(cwlexParser.COMMENT, 0); +}; + +FreetextContext.prototype.OPENSCRIPT = function() { + return this.getToken(cwlexParser.OPENSCRIPT, 0); +}; + +FreetextContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +FreetextContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +FreetextContext.prototype.FLOAT = function() { + return this.getToken(cwlexParser.FLOAT, 0); +}; + +FreetextContext.prototype.INTEGER = function() { + return this.getToken(cwlexParser.INTEGER, 0); +}; + +FreetextContext.prototype.keyword = function() { + return this.getTypedRuleContext(KeywordContext,0); +}; + +FreetextContext.prototype.NOTWS = function() { + return this.getToken(cwlexParser.NOTWS, 0); +}; + +FreetextContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterFreetext(this); + } +}; + +FreetextContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitFreetext(this); + } +}; + + + + +cwlexParser.FreetextContext = FreetextContext; + +cwlexParser.prototype.freetext = function() { + + var localctx = new FreetextContext(this, this._ctx, this.state); + this.enterRule(localctx, 58, cwlexParser.RULE_freetext); + try { + this.state = 672; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,77,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 651; + this.match(cwlexParser.DOLLAR); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 652; + this.match(cwlexParser.OPENPAREN); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 653; + this.match(cwlexParser.CLOSEPAREN); + break; + + case 4: + this.enterOuterAlt(localctx, 4); + this.state = 654; + this.match(cwlexParser.OPENBRACE); + break; + + case 5: + this.enterOuterAlt(localctx, 5); + this.state = 655; + this.match(cwlexParser.CLOSEBRACE); + break; + + case 6: + this.enterOuterAlt(localctx, 6); + this.state = 656; + this.match(cwlexParser.OPENBRACKET); + break; + + case 7: + this.enterOuterAlt(localctx, 7); + this.state = 657; + this.match(cwlexParser.CLOSEBRACKET); + break; + + case 8: + this.enterOuterAlt(localctx, 8); + this.state = 658; + this.match(cwlexParser.COLON); + break; + + case 9: + this.enterOuterAlt(localctx, 9); + this.state = 659; + this.match(cwlexParser.COMMA); + break; + + case 10: + this.enterOuterAlt(localctx, 10); + this.state = 660; + this.match(cwlexParser.EQ); + break; + + case 11: + this.enterOuterAlt(localctx, 11); + this.state = 661; + this.match(cwlexParser.QUES); + break; + + case 12: + this.enterOuterAlt(localctx, 12); + this.state = 662; + this.match(cwlexParser.LESSER); + break; + + case 13: + this.enterOuterAlt(localctx, 13); + this.state = 663; + this.match(cwlexParser.COMMENT); + break; + + case 14: + this.enterOuterAlt(localctx, 14); + this.state = 664; + this.match(cwlexParser.OPENSCRIPT); + break; + + case 15: + this.enterOuterAlt(localctx, 15); + this.state = 665; + this.match(cwlexParser.SQSTRING); + break; + + case 16: + this.enterOuterAlt(localctx, 16); + this.state = 666; + this.match(cwlexParser.DQSTRING); + break; + + case 17: + this.enterOuterAlt(localctx, 17); + this.state = 667; + this.match(cwlexParser.DQSTRING); + break; + + case 18: + this.enterOuterAlt(localctx, 18); + this.state = 668; + this.match(cwlexParser.FLOAT); + break; + + case 19: + this.enterOuterAlt(localctx, 19); + this.state = 669; + this.match(cwlexParser.INTEGER); + break; + + case 20: + this.enterOuterAlt(localctx, 20); + this.state = 670; + this.keyword(); + break; + + case 21: + this.enterOuterAlt(localctx, 21); + this.state = 671; + this.match(cwlexParser.NOTWS); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LineContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_line; + return this; +} + +LineContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LineContext.prototype.constructor = LineContext; + +LineContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +LineContext.prototype.freetext = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(FreetextContext); + } else { + return this.getTypedRuleContext(FreetextContext,i); + } +}; + +LineContext.prototype.SPACE = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.SPACE); + } else { + return this.getToken(cwlexParser.SPACE, i); + } +}; + + +LineContext.prototype.GREATER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.GREATER); + } else { + return this.getToken(cwlexParser.GREATER, i); + } +}; + + +LineContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterLine(this); + } +}; + +LineContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitLine(this); + } +}; + + + + +cwlexParser.LineContext = LineContext; + +cwlexParser.prototype.line = function() { + + var localctx = new LineContext(this, this._ctx, this.state); + this.enterRule(localctx, 60, cwlexParser.RULE_line); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 679; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.DOLLAR) | (1 << cwlexParser.OPENPAREN) | (1 << cwlexParser.CLOSEPAREN) | (1 << cwlexParser.OPENBRACE) | (1 << cwlexParser.CLOSEBRACE) | (1 << cwlexParser.OPENBRACKET) | (1 << cwlexParser.CLOSEBRACKET) | (1 << cwlexParser.COLON) | (1 << cwlexParser.COMMA) | (1 << cwlexParser.EQ) | (1 << cwlexParser.QUES) | (1 << cwlexParser.GREATER) | (1 << cwlexParser.LESSER) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT) | (1 << cwlexParser.OPENSCRIPT) | (1 << cwlexParser.SQSTRING) | (1 << cwlexParser.DQSTRING) | (1 << cwlexParser.FLOAT) | (1 << cwlexParser.INTEGER) | (1 << cwlexParser.WORKFLOW) | (1 << cwlexParser.TOOL) | (1 << cwlexParser.FILE) | (1 << cwlexParser.DIRECTORY) | (1 << cwlexParser.STDOUT) | (1 << cwlexParser.FOR) | (1 << cwlexParser.EACH) | (1 << cwlexParser.IN))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (cwlexParser.DEF - 32)) | (1 << (cwlexParser.RUN - 32)) | (1 << (cwlexParser.RETURN - 32)) | (1 << (cwlexParser.STRUCT - 32)) | (1 << (cwlexParser.USING - 32)) | (1 << (cwlexParser.MERGE_NESTED - 32)) | (1 << (cwlexParser.MERGE_FLATTENED - 32)) | (1 << (cwlexParser.INT_SYMBOL - 32)) | (1 << (cwlexParser.FLOAT_SYMBOL - 32)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 32)) | (1 << (cwlexParser.REQUIREMENTS - 32)) | (1 << (cwlexParser.HINTS - 32)) | (1 << (cwlexParser.IMPORT - 32)) | (1 << (cwlexParser.AS - 32)) | (1 << (cwlexParser.DO - 32)) | (1 << (cwlexParser.SCATTER - 32)) | (1 << (cwlexParser.EXPR - 32)) | (1 << (cwlexParser.TRUE_SYMBOL - 32)) | (1 << (cwlexParser.FALSE_SYMBOL - 32)) | (1 << (cwlexParser.NOTWS - 32)))) !== 0)) { + this.state = 677; + switch(this._input.LA(1)) { + case cwlexParser.DOLLAR: + case cwlexParser.OPENPAREN: + case cwlexParser.CLOSEPAREN: + case cwlexParser.OPENBRACE: + case cwlexParser.CLOSEBRACE: + case cwlexParser.OPENBRACKET: + case cwlexParser.CLOSEBRACKET: + case cwlexParser.COLON: + case cwlexParser.COMMA: + case cwlexParser.EQ: + case cwlexParser.QUES: + case cwlexParser.LESSER: + case cwlexParser.COMMENT: + case cwlexParser.OPENSCRIPT: + case cwlexParser.SQSTRING: + case cwlexParser.DQSTRING: + case cwlexParser.FLOAT: + case cwlexParser.INTEGER: + case cwlexParser.WORKFLOW: + case cwlexParser.TOOL: + case cwlexParser.FILE: + case cwlexParser.DIRECTORY: + case cwlexParser.STDOUT: + case cwlexParser.FOR: + case cwlexParser.EACH: + case cwlexParser.IN: + case cwlexParser.DEF: + case cwlexParser.RUN: + case cwlexParser.RETURN: + case cwlexParser.STRUCT: + case cwlexParser.USING: + case cwlexParser.MERGE_NESTED: + case cwlexParser.MERGE_FLATTENED: + case cwlexParser.INT_SYMBOL: + case cwlexParser.FLOAT_SYMBOL: + case cwlexParser.BOOLEAN_SYMBOL: + case cwlexParser.REQUIREMENTS: + case cwlexParser.HINTS: + case cwlexParser.IMPORT: + case cwlexParser.AS: + case cwlexParser.DO: + case cwlexParser.SCATTER: + case cwlexParser.EXPR: + case cwlexParser.TRUE_SYMBOL: + case cwlexParser.FALSE_SYMBOL: + case cwlexParser.NOTWS: + this.state = 674; + this.freetext(); + break; + case cwlexParser.SPACE: + this.state = 675; + this.match(cwlexParser.SPACE); + break; + case cwlexParser.GREATER: + this.state = 676; + this.match(cwlexParser.GREATER); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 681; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 682; + this.match(cwlexParser.NEWLINE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ArgumentContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_argument; + return this; +} + +ArgumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ArgumentContext.prototype.constructor = ArgumentContext; + +ArgumentContext.prototype.freetext = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(FreetextContext); + } else { + return this.getTypedRuleContext(FreetextContext,i); + } +}; + +ArgumentContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterArgument(this); + } +}; + +ArgumentContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitArgument(this); + } +}; + + + + +cwlexParser.ArgumentContext = ArgumentContext; + +cwlexParser.prototype.argument = function() { + + var localctx = new ArgumentContext(this, this._ctx, this.state); + this.enterRule(localctx, 62, cwlexParser.RULE_argument); + try { + this.enterOuterAlt(localctx, 1); + this.state = 685; + this._errHandler.sync(this); + var _alt = 1; + do { + switch (_alt) { + case 1: + this.state = 684; + this.freetext(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 687; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,80, this._ctx); + } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function RedirectContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_redirect; + return this; +} + +RedirectContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RedirectContext.prototype.constructor = RedirectContext; + +RedirectContext.prototype.GREATER = function() { + return this.getToken(cwlexParser.GREATER, 0); +}; + +RedirectContext.prototype.argument = function() { + return this.getTypedRuleContext(ArgumentContext,0); +}; + +RedirectContext.prototype.SPACE = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.SPACE); + } else { + return this.getToken(cwlexParser.SPACE, i); + } +}; + + +RedirectContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterRedirect(this); + } +}; + +RedirectContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitRedirect(this); + } +}; + + + + +cwlexParser.RedirectContext = RedirectContext; + +cwlexParser.prototype.redirect = function() { + + var localctx = new RedirectContext(this, this._ctx, this.state); + this.enterRule(localctx, 64, cwlexParser.RULE_redirect); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 689; + this.match(cwlexParser.GREATER); + this.state = 693; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.SPACE) { + this.state = 690; + this.match(cwlexParser.SPACE); + this.state = 695; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 696; + this.argument(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function CommandContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_command; + return this; +} + +CommandContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +CommandContext.prototype.constructor = CommandContext; + +CommandContext.prototype.argument = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(ArgumentContext); + } else { + return this.getTypedRuleContext(ArgumentContext,i); + } +}; + +CommandContext.prototype.scriptbody = function() { + return this.getTypedRuleContext(ScriptbodyContext,0); +}; + +CommandContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +CommandContext.prototype.SPACE = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.SPACE); + } else { + return this.getToken(cwlexParser.SPACE, i); + } +}; + + +CommandContext.prototype.redirect = function() { + return this.getTypedRuleContext(RedirectContext,0); +}; + +CommandContext.prototype.optional_arg = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Optional_argContext); + } else { + return this.getTypedRuleContext(Optional_argContext,i); + } +}; + +CommandContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +CommandContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterCommand(this); + } +}; + +CommandContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitCommand(this); + } +}; + + + + +cwlexParser.CommandContext = CommandContext; + +cwlexParser.prototype.command = function() { + + var localctx = new CommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 66, cwlexParser.RULE_command); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 701; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.SPACE) { + this.state = 698; + this.match(cwlexParser.SPACE); + this.state = 703; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 704; + this.argument(); + this.state = 713; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,84,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 706; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 705; + this.match(cwlexParser.SPACE); + this.state = 708; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while(_la===cwlexParser.SPACE); + this.state = 710; + this.argument(); + } + this.state = 715; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,84,this._ctx); + } + + this.state = 719; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,85,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 716; + this.match(cwlexParser.SPACE); + } + this.state = 721; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,85,this._ctx); + } + + this.state = 723; + _la = this._input.LA(1); + if(_la===cwlexParser.GREATER) { + this.state = 722; + this.redirect(); + } + + this.state = 728; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.SPACE) { + this.state = 725; + this.match(cwlexParser.SPACE); + this.state = 730; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 733; + switch(this._input.LA(1)) { + case cwlexParser.OPENSCRIPT: + this.state = 731; + this.scriptbody(); + break; + case cwlexParser.NEWLINE: + this.state = 732; + this.match(cwlexParser.NEWLINE); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 739; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.QUES) | (1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 737; + switch(this._input.LA(1)) { + case cwlexParser.QUES: + this.state = 735; + this.optional_arg(); + break; + case cwlexParser.NEWLINE: + case cwlexParser.SPACE: + case cwlexParser.COMMENT: + this.state = 736; + this.ws(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 741; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Const_stringContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_const_string; + return this; +} + +Const_stringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Const_stringContext.prototype.constructor = Const_stringContext; + +Const_stringContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +Const_stringContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +Const_stringContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterConst_string(this); + } +}; + +Const_stringContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitConst_string(this); + } +}; + + + + +cwlexParser.Const_stringContext = Const_stringContext; + +cwlexParser.prototype.const_string = function() { + + var localctx = new Const_stringContext(this, this._ctx, this.state); + this.enterRule(localctx, 68, cwlexParser.RULE_const_string); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 742; + _la = this._input.LA(1); + if(!(_la===cwlexParser.SQSTRING || _la===cwlexParser.DQSTRING)) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function File_constContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_file_const; + return this; +} + +File_constContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +File_constContext.prototype.constructor = File_constContext; + +File_constContext.prototype.FILE = function() { + return this.getToken(cwlexParser.FILE, 0); +}; + +File_constContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +File_constContext.prototype.const_string = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Const_stringContext); + } else { + return this.getTypedRuleContext(Const_stringContext,i); + } +}; + +File_constContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +File_constContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +File_constContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +File_constContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterFile_const(this); + } +}; + +File_constContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitFile_const(this); + } +}; + + + + +cwlexParser.File_constContext = File_constContext; + +cwlexParser.prototype.file_const = function() { + + var localctx = new File_constContext(this, this._ctx, this.state); + this.enterRule(localctx, 70, cwlexParser.RULE_file_const); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 744; + this.match(cwlexParser.FILE); + this.state = 748; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 745; + this.ws(); + this.state = 750; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 751; + this.match(cwlexParser.OPENPAREN); + this.state = 755; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 752; + this.ws(); + this.state = 757; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 758; + this.const_string(); + this.state = 762; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 759; + this.ws(); + this.state = 764; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 781; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 765; + this.match(cwlexParser.COMMA); + this.state = 769; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 766; + this.ws(); + this.state = 771; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 772; + this.const_string(); + this.state = 776; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 773; + this.ws(); + this.state = 778; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 783; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 784; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Dir_constContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_dir_const; + return this; +} + +Dir_constContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Dir_constContext.prototype.constructor = Dir_constContext; + +Dir_constContext.prototype.DIRECTORY = function() { + return this.getToken(cwlexParser.DIRECTORY, 0); +}; + +Dir_constContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +Dir_constContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +Dir_constContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +Dir_constContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +Dir_constContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Dir_constContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterDir_const(this); + } +}; + +Dir_constContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitDir_const(this); + } +}; + + + + +cwlexParser.Dir_constContext = Dir_constContext; + +cwlexParser.prototype.dir_const = function() { + + var localctx = new Dir_constContext(this, this._ctx, this.state); + this.enterRule(localctx, 72, cwlexParser.RULE_dir_const); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 786; + this.match(cwlexParser.DIRECTORY); + this.state = 790; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 787; + this.ws(); + this.state = 792; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 793; + this.match(cwlexParser.OPENPAREN); + this.state = 794; + _la = this._input.LA(1); + if(!(_la===cwlexParser.SQSTRING || _la===cwlexParser.DQSTRING)) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + this.state = 795; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Struct_field_nameContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_struct_field_name; + return this; +} + +Struct_field_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Struct_field_nameContext.prototype.constructor = Struct_field_nameContext; + +Struct_field_nameContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +Struct_field_nameContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +Struct_field_nameContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +Struct_field_nameContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStruct_field_name(this); + } +}; + +Struct_field_nameContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStruct_field_name(this); + } +}; + + + + +cwlexParser.Struct_field_nameContext = Struct_field_nameContext; + +cwlexParser.prototype.struct_field_name = function() { + + var localctx = new Struct_field_nameContext(this, this._ctx, this.state); + this.enterRule(localctx, 74, cwlexParser.RULE_struct_field_name); + try { + this.enterOuterAlt(localctx, 1); + this.state = 800; + switch(this._input.LA(1)) { + case cwlexParser.SQSTRING: + this.state = 797; + this.match(cwlexParser.SQSTRING); + break; + case cwlexParser.DQSTRING: + this.state = 798; + this.match(cwlexParser.DQSTRING); + break; + case cwlexParser.WORKFLOW: + case cwlexParser.TOOL: + case cwlexParser.FILE: + case cwlexParser.DIRECTORY: + case cwlexParser.STDOUT: + case cwlexParser.FOR: + case cwlexParser.EACH: + case cwlexParser.IN: + case cwlexParser.DEF: + case cwlexParser.RUN: + case cwlexParser.RETURN: + case cwlexParser.STRUCT: + case cwlexParser.USING: + case cwlexParser.MERGE_NESTED: + case cwlexParser.MERGE_FLATTENED: + case cwlexParser.INT_SYMBOL: + case cwlexParser.FLOAT_SYMBOL: + case cwlexParser.BOOLEAN_SYMBOL: + case cwlexParser.REQUIREMENTS: + case cwlexParser.HINTS: + case cwlexParser.IMPORT: + case cwlexParser.AS: + case cwlexParser.DO: + case cwlexParser.SCATTER: + case cwlexParser.EXPR: + case cwlexParser.TRUE_SYMBOL: + case cwlexParser.FALSE_SYMBOL: + case cwlexParser.NOTWS: + this.state = 799; + this.symbol(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Struct_fieldContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_struct_field; + return this; +} + +Struct_fieldContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Struct_fieldContext.prototype.constructor = Struct_fieldContext; + +Struct_fieldContext.prototype.struct_field_name = function() { + return this.getTypedRuleContext(Struct_field_nameContext,0); +}; + +Struct_fieldContext.prototype.COLON = function() { + return this.getToken(cwlexParser.COLON, 0); +}; + +Struct_fieldContext.prototype.const_value = function() { + return this.getTypedRuleContext(Const_valueContext,0); +}; + +Struct_fieldContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Struct_fieldContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStruct_field(this); + } +}; + +Struct_fieldContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStruct_field(this); + } +}; + + + + +cwlexParser.Struct_fieldContext = Struct_fieldContext; + +cwlexParser.prototype.struct_field = function() { + + var localctx = new Struct_fieldContext(this, this._ctx, this.state); + this.enterRule(localctx, 76, cwlexParser.RULE_struct_field); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 802; + this.struct_field_name(); + this.state = 806; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 803; + this.ws(); + this.state = 808; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 809; + this.match(cwlexParser.COLON); + this.state = 813; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 810; + this.ws(); + this.state = 815; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 816; + this.const_value(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Struct_constContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_struct_const; + return this; +} + +Struct_constContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Struct_constContext.prototype.constructor = Struct_constContext; + +Struct_constContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +Struct_constContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +Struct_constContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Struct_constContext.prototype.struct_field = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Struct_fieldContext); + } else { + return this.getTypedRuleContext(Struct_fieldContext,i); + } +}; + +Struct_constContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +Struct_constContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStruct_const(this); + } +}; + +Struct_constContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStruct_const(this); + } +}; + + + + +cwlexParser.Struct_constContext = Struct_constContext; + +cwlexParser.prototype.struct_const = function() { + + var localctx = new Struct_constContext(this, this._ctx, this.state); + this.enterRule(localctx, 78, cwlexParser.RULE_struct_const); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 818; + this.match(cwlexParser.OPENBRACE); + this.state = 822; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,101,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 819; + this.ws(); + } + this.state = 824; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,101,this._ctx); + } + + this.state = 826; + _la = this._input.LA(1); + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.SQSTRING) | (1 << cwlexParser.DQSTRING) | (1 << cwlexParser.WORKFLOW) | (1 << cwlexParser.TOOL) | (1 << cwlexParser.FILE) | (1 << cwlexParser.DIRECTORY) | (1 << cwlexParser.STDOUT) | (1 << cwlexParser.FOR) | (1 << cwlexParser.EACH) | (1 << cwlexParser.IN))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (cwlexParser.DEF - 32)) | (1 << (cwlexParser.RUN - 32)) | (1 << (cwlexParser.RETURN - 32)) | (1 << (cwlexParser.STRUCT - 32)) | (1 << (cwlexParser.USING - 32)) | (1 << (cwlexParser.MERGE_NESTED - 32)) | (1 << (cwlexParser.MERGE_FLATTENED - 32)) | (1 << (cwlexParser.INT_SYMBOL - 32)) | (1 << (cwlexParser.FLOAT_SYMBOL - 32)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 32)) | (1 << (cwlexParser.REQUIREMENTS - 32)) | (1 << (cwlexParser.HINTS - 32)) | (1 << (cwlexParser.IMPORT - 32)) | (1 << (cwlexParser.AS - 32)) | (1 << (cwlexParser.DO - 32)) | (1 << (cwlexParser.SCATTER - 32)) | (1 << (cwlexParser.EXPR - 32)) | (1 << (cwlexParser.TRUE_SYMBOL - 32)) | (1 << (cwlexParser.FALSE_SYMBOL - 32)) | (1 << (cwlexParser.NOTWS - 32)))) !== 0)) { + this.state = 825; + this.struct_field(); + } + + this.state = 831; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 828; + this.ws(); + this.state = 833; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 850; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 834; + this.match(cwlexParser.COMMA); + this.state = 838; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 835; + this.ws(); + this.state = 840; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 841; + this.struct_field(); + this.state = 845; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 842; + this.ws(); + this.state = 847; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 852; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 853; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function List_entryContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_list_entry; + return this; +} + +List_entryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +List_entryContext.prototype.constructor = List_entryContext; + +List_entryContext.prototype.const_value = function() { + return this.getTypedRuleContext(Const_valueContext,0); +}; + +List_entryContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterList_entry(this); + } +}; + +List_entryContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitList_entry(this); + } +}; + + + + +cwlexParser.List_entryContext = List_entryContext; + +cwlexParser.prototype.list_entry = function() { + + var localctx = new List_entryContext(this, this._ctx, this.state); + this.enterRule(localctx, 80, cwlexParser.RULE_list_entry); + try { + this.enterOuterAlt(localctx, 1); + this.state = 855; + this.const_value(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function List_constContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_list_const; + return this; +} + +List_constContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +List_constContext.prototype.constructor = List_constContext; + +List_constContext.prototype.OPENBRACKET = function() { + return this.getToken(cwlexParser.OPENBRACKET, 0); +}; + +List_constContext.prototype.CLOSEBRACKET = function() { + return this.getToken(cwlexParser.CLOSEBRACKET, 0); +}; + +List_constContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +List_constContext.prototype.list_entry = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(List_entryContext); + } else { + return this.getTypedRuleContext(List_entryContext,i); + } +}; + +List_constContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +List_constContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterList_const(this); + } +}; + +List_constContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitList_const(this); + } +}; + + + + +cwlexParser.List_constContext = List_constContext; + +cwlexParser.prototype.list_const = function() { + + var localctx = new List_constContext(this, this._ctx, this.state); + this.enterRule(localctx, 82, cwlexParser.RULE_list_const); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 857; + this.match(cwlexParser.OPENBRACKET); + this.state = 861; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,107,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 858; + this.ws(); + } + this.state = 863; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,107,this._ctx); + } + + this.state = 865; + _la = this._input.LA(1); + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.OPENBRACE) | (1 << cwlexParser.OPENBRACKET) | (1 << cwlexParser.SQSTRING) | (1 << cwlexParser.DQSTRING) | (1 << cwlexParser.FLOAT) | (1 << cwlexParser.INTEGER) | (1 << cwlexParser.FILE) | (1 << cwlexParser.DIRECTORY))) !== 0) || _la===cwlexParser.TRUE_SYMBOL || _la===cwlexParser.FALSE_SYMBOL) { + this.state = 864; + this.list_entry(); + } + + this.state = 870; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 867; + this.ws(); + this.state = 872; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 889; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 873; + this.match(cwlexParser.COMMA); + this.state = 877; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 874; + this.ws(); + this.state = 879; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 880; + this.list_entry(); + this.state = 884; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 881; + this.ws(); + this.state = 886; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 891; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 892; + this.match(cwlexParser.CLOSEBRACKET); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Const_valueContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_const_value; + return this; +} + +Const_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Const_valueContext.prototype.constructor = Const_valueContext; + +Const_valueContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +Const_valueContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +Const_valueContext.prototype.INTEGER = function() { + return this.getToken(cwlexParser.INTEGER, 0); +}; + +Const_valueContext.prototype.FLOAT = function() { + return this.getToken(cwlexParser.FLOAT, 0); +}; + +Const_valueContext.prototype.TRUE_SYMBOL = function() { + return this.getToken(cwlexParser.TRUE_SYMBOL, 0); +}; + +Const_valueContext.prototype.FALSE_SYMBOL = function() { + return this.getToken(cwlexParser.FALSE_SYMBOL, 0); +}; + +Const_valueContext.prototype.file_const = function() { + return this.getTypedRuleContext(File_constContext,0); +}; + +Const_valueContext.prototype.dir_const = function() { + return this.getTypedRuleContext(Dir_constContext,0); +}; + +Const_valueContext.prototype.struct_const = function() { + return this.getTypedRuleContext(Struct_constContext,0); +}; + +Const_valueContext.prototype.list_const = function() { + return this.getTypedRuleContext(List_constContext,0); +}; + +Const_valueContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterConst_value(this); + } +}; + +Const_valueContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitConst_value(this); + } +}; + + + + +cwlexParser.Const_valueContext = Const_valueContext; + +cwlexParser.prototype.const_value = function() { + + var localctx = new Const_valueContext(this, this._ctx, this.state); + this.enterRule(localctx, 84, cwlexParser.RULE_const_value); + try { + this.state = 904; + switch(this._input.LA(1)) { + case cwlexParser.SQSTRING: + this.enterOuterAlt(localctx, 1); + this.state = 894; + this.match(cwlexParser.SQSTRING); + break; + case cwlexParser.DQSTRING: + this.enterOuterAlt(localctx, 2); + this.state = 895; + this.match(cwlexParser.DQSTRING); + break; + case cwlexParser.INTEGER: + this.enterOuterAlt(localctx, 3); + this.state = 896; + this.match(cwlexParser.INTEGER); + break; + case cwlexParser.FLOAT: + this.enterOuterAlt(localctx, 4); + this.state = 897; + this.match(cwlexParser.FLOAT); + break; + case cwlexParser.TRUE_SYMBOL: + this.enterOuterAlt(localctx, 5); + this.state = 898; + this.match(cwlexParser.TRUE_SYMBOL); + break; + case cwlexParser.FALSE_SYMBOL: + this.enterOuterAlt(localctx, 6); + this.state = 899; + this.match(cwlexParser.FALSE_SYMBOL); + break; + case cwlexParser.FILE: + this.enterOuterAlt(localctx, 7); + this.state = 900; + this.file_const(); + break; + case cwlexParser.DIRECTORY: + this.enterOuterAlt(localctx, 8); + this.state = 901; + this.dir_const(); + break; + case cwlexParser.OPENBRACE: + this.enterOuterAlt(localctx, 9); + this.state = 902; + this.struct_const(); + break; + case cwlexParser.OPENBRACKET: + this.enterOuterAlt(localctx, 10); + this.state = 903; + this.list_const(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Const_assignmentContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_const_assignment; + return this; +} + +Const_assignmentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Const_assignmentContext.prototype.constructor = Const_assignmentContext; + +Const_assignmentContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +Const_assignmentContext.prototype.EQ = function() { + return this.getToken(cwlexParser.EQ, 0); +}; + +Const_assignmentContext.prototype.const_value = function() { + return this.getTypedRuleContext(Const_valueContext,0); +}; + +Const_assignmentContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +Const_assignmentContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Const_assignmentContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterConst_assignment(this); + } +}; + +Const_assignmentContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitConst_assignment(this); + } +}; + + + + +cwlexParser.Const_assignmentContext = Const_assignmentContext; + +cwlexParser.prototype.const_assignment = function() { + + var localctx = new Const_assignmentContext(this, this._ctx, this.state); + this.enterRule(localctx, 86, cwlexParser.RULE_const_assignment); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 906; + this.name(); + this.state = 910; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 907; + this.ws(); + this.state = 912; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 913; + this.match(cwlexParser.EQ); + this.state = 917; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 914; + this.ws(); + this.state = 919; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 920; + this.const_value(); + this.state = 924; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,116,this._ctx) + while(_alt!=1 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1+1) { + this.state = 921; + this.ws(); + } + this.state = 926; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,116,this._ctx); + } + + this.state = 927; + this.match(cwlexParser.NEWLINE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Output_assignmentContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_output_assignment; + return this; +} + +Output_assignmentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Output_assignmentContext.prototype.constructor = Output_assignmentContext; + +Output_assignmentContext.prototype.typedexpr = function() { + return this.getTypedRuleContext(TypedexprContext,0); +}; + +Output_assignmentContext.prototype.AS = function() { + return this.getToken(cwlexParser.AS, 0); +}; + +Output_assignmentContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +Output_assignmentContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Output_assignmentContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +Output_assignmentContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterOutput_assignment(this); + } +}; + +Output_assignmentContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitOutput_assignment(this); + } +}; + + + + +cwlexParser.Output_assignmentContext = Output_assignmentContext; + +cwlexParser.prototype.output_assignment = function() { + + var localctx = new Output_assignmentContext(this, this._ctx, this.state); + this.enterRule(localctx, 88, cwlexParser.RULE_output_assignment); + var _la = 0; // Token type + try { + this.state = 960; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,122,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 929; + this.typedexpr(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 930; + this.typedexpr(); + this.state = 932; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 931; + this.ws(); + this.state = 934; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 936; + this.match(cwlexParser.AS); + this.state = 938; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 937; + this.ws(); + this.state = 940; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 942; + this.name(); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 944; + this.symbol(); + this.state = 958; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,121,this._ctx); + if(la_===1) { + this.state = 946; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 945; + this.ws(); + this.state = 948; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 950; + this.match(cwlexParser.AS); + this.state = 952; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 951; + this.ws(); + this.state = 954; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 956; + this.name(); + + } + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Optional_for_bindContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_optional_for_bind; + return this; +} + +Optional_for_bindContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Optional_for_bindContext.prototype.constructor = Optional_for_bindContext; + +Optional_for_bindContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +Optional_for_bindContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterOptional_for_bind(this); + } +}; + +Optional_for_bindContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitOptional_for_bind(this); + } +}; + + + + +cwlexParser.Optional_for_bindContext = Optional_for_bindContext; + +cwlexParser.prototype.optional_for_bind = function() { + + var localctx = new Optional_for_bindContext(this, this._ctx, this.state); + this.enterRule(localctx, 90, cwlexParser.RULE_optional_for_bind); + try { + this.enterOuterAlt(localctx, 1); + this.state = 962; + this.symbol(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Optional_for_overContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_optional_for_over; + return this; +} + +Optional_for_overContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Optional_for_overContext.prototype.constructor = Optional_for_overContext; + +Optional_for_overContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +Optional_for_overContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterOptional_for_over(this); + } +}; + +Optional_for_overContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitOptional_for_over(this); + } +}; + + + + +cwlexParser.Optional_for_overContext = Optional_for_overContext; + +cwlexParser.prototype.optional_for_over = function() { + + var localctx = new Optional_for_overContext(this, this._ctx, this.state); + this.enterRule(localctx, 92, cwlexParser.RULE_optional_for_over); + try { + this.enterOuterAlt(localctx, 1); + this.state = 964; + this.symbol(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Optional_argContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_optional_arg; + return this; +} + +Optional_argContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Optional_argContext.prototype.constructor = Optional_argContext; + +Optional_argContext.prototype.QUES = function() { + return this.getToken(cwlexParser.QUES, 0); +}; + +Optional_argContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +Optional_argContext.prototype.argument = function() { + return this.getTypedRuleContext(ArgumentContext,0); +}; + +Optional_argContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +Optional_argContext.prototype.FOR = function() { + return this.getToken(cwlexParser.FOR, 0); +}; + +Optional_argContext.prototype.EACH = function() { + return this.getToken(cwlexParser.EACH, 0); +}; + +Optional_argContext.prototype.IN = function() { + return this.getToken(cwlexParser.IN, 0); +}; + +Optional_argContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Optional_argContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterOptional_arg(this); + } +}; + +Optional_argContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitOptional_arg(this); + } +}; + + + + +cwlexParser.Optional_argContext = Optional_argContext; + +cwlexParser.prototype.optional_arg = function() { + + var localctx = new Optional_argContext(this, this._ctx, this.state); + this.enterRule(localctx, 94, cwlexParser.RULE_optional_arg); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 966; + this.match(cwlexParser.QUES); + this.state = 968; + this._errHandler.sync(this); + var _alt = 1; + do { + switch (_alt) { + case 1: + this.state = 967; + this.ws(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 970; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,123, this._ctx); + } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); + this.state = 1008; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,130,this._ctx); + switch(la_) { + case 1: + this.state = 972; + this.argument(); + this.state = 974; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 973; + this.ws(); + this.state = 976; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 978; + this.name(); + break; + + case 2: + this.state = 986; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,126,this._ctx); + if(la_===1) { + this.state = 980; + this.argument(); + this.state = 982; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 981; + this.ws(); + this.state = 984; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + + } + this.state = 988; + this.match(cwlexParser.FOR); + this.state = 990; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 989; + this.ws(); + this.state = 992; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 994; + this.match(cwlexParser.EACH); + this.state = 996; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 995; + this.ws(); + this.state = 998; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1000; + this.match(cwlexParser.IN); + this.state = 1002; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1001; + this.ws(); + this.state = 1004; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1006; + this.name(); + break; + + } + this.state = 1013; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,131,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1010; + this.ws(); + } + this.state = 1015; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,131,this._ctx); + } + + this.state = 1016; + this.match(cwlexParser.NEWLINE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ReturnvarContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_returnvar; + return this; +} + +ReturnvarContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ReturnvarContext.prototype.constructor = ReturnvarContext; + +ReturnvarContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +ReturnvarContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterReturnvar(this); + } +}; + +ReturnvarContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitReturnvar(this); + } +}; + + + + +cwlexParser.ReturnvarContext = ReturnvarContext; + +cwlexParser.prototype.returnvar = function() { + + var localctx = new ReturnvarContext(this, this._ctx, this.state); + this.enterRule(localctx, 96, cwlexParser.RULE_returnvar); + try { + this.enterOuterAlt(localctx, 1); + this.state = 1018; + this.symbol(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ToolbodyContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_toolbody; + return this; +} + +ToolbodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ToolbodyContext.prototype.constructor = ToolbodyContext; + +ToolbodyContext.prototype.command = function() { + return this.getTypedRuleContext(CommandContext,0); +}; + +ToolbodyContext.prototype.RETURN = function() { + return this.getToken(cwlexParser.RETURN, 0); +}; + +ToolbodyContext.prototype.output_assignment = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Output_assignmentContext); + } else { + return this.getTypedRuleContext(Output_assignmentContext,i); + } +}; + +ToolbodyContext.prototype.reqs = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(ReqsContext); + } else { + return this.getTypedRuleContext(ReqsContext,i); + } +}; + +ToolbodyContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +ToolbodyContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +ToolbodyContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterToolbody(this); + } +}; + +ToolbodyContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitToolbody(this); + } +}; + + + + +cwlexParser.ToolbodyContext = ToolbodyContext; + +cwlexParser.prototype.toolbody = function() { + + var localctx = new ToolbodyContext(this, this._ctx, this.state); + this.enterRule(localctx, 98, cwlexParser.RULE_toolbody); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1024; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,133,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1022; + switch(this._input.LA(1)) { + case cwlexParser.REQUIREMENTS: + case cwlexParser.HINTS: + this.state = 1020; + this.reqs(); + break; + case cwlexParser.NEWLINE: + case cwlexParser.SPACE: + case cwlexParser.COMMENT: + this.state = 1021; + this.ws(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } + this.state = 1026; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,133,this._ctx); + } + + this.state = 1027; + this.command(); + this.state = 1028; + this.match(cwlexParser.RETURN); + this.state = 1030; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1029; + this.ws(); + this.state = 1032; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1034; + this.output_assignment(); + this.state = 1038; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,135,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1035; + this.ws(); + } + this.state = 1040; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,135,this._ctx); + } + + this.state = 1057; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 1041; + this.match(cwlexParser.COMMA); + this.state = 1045; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1042; + this.ws(); + this.state = 1047; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1048; + this.output_assignment(); + this.state = 1052; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,137,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1049; + this.ws(); + } + this.state = 1054; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,137,this._ctx); + } + + this.state = 1059; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function NameContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_name; + return this; +} + +NameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +NameContext.prototype.constructor = NameContext; + +NameContext.prototype.symbol = function() { + return this.getTypedRuleContext(SymbolContext,0); +}; + +NameContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterName(this); + } +}; + +NameContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitName(this); + } +}; + + + + +cwlexParser.NameContext = NameContext; + +cwlexParser.prototype.name = function() { + + var localctx = new NameContext(this, this._ctx, this.state); + this.enterRule(localctx, 100, cwlexParser.RULE_name); + try { + this.enterOuterAlt(localctx, 1); + this.state = 1060; + this.symbol(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StructdeclContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_structdecl; + return this; +} + +StructdeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StructdeclContext.prototype.constructor = StructdeclContext; + +StructdeclContext.prototype.STRUCT = function() { + return this.getToken(cwlexParser.STRUCT, 0); +}; + +StructdeclContext.prototype.OPENBRACE = function() { + return this.getToken(cwlexParser.OPENBRACE, 0); +}; + +StructdeclContext.prototype.CLOSEBRACE = function() { + return this.getToken(cwlexParser.CLOSEBRACE, 0); +}; + +StructdeclContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +StructdeclContext.prototype.param_decl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Param_declContext); + } else { + return this.getTypedRuleContext(Param_declContext,i); + } +}; + +StructdeclContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +StructdeclContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterStructdecl(this); + } +}; + +StructdeclContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitStructdecl(this); + } +}; + + + + +cwlexParser.StructdeclContext = StructdeclContext; + +cwlexParser.prototype.structdecl = function() { + + var localctx = new StructdeclContext(this, this._ctx, this.state); + this.enterRule(localctx, 102, cwlexParser.RULE_structdecl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1062; + this.match(cwlexParser.STRUCT); + this.state = 1066; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1063; + this.ws(); + this.state = 1068; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1069; + this.match(cwlexParser.OPENBRACE); + this.state = 1073; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,140,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1070; + this.ws(); + } + this.state = 1075; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,140,this._ctx); + } + + this.state = 1102; + _la = this._input.LA(1); + if(((((_la - 24)) & ~0x1f) == 0 && ((1 << (_la - 24)) & ((1 << (cwlexParser.WORKFLOW - 24)) | (1 << (cwlexParser.TOOL - 24)) | (1 << (cwlexParser.FILE - 24)) | (1 << (cwlexParser.DIRECTORY - 24)) | (1 << (cwlexParser.STDOUT - 24)) | (1 << (cwlexParser.FOR - 24)) | (1 << (cwlexParser.EACH - 24)) | (1 << (cwlexParser.IN - 24)) | (1 << (cwlexParser.DEF - 24)) | (1 << (cwlexParser.RUN - 24)) | (1 << (cwlexParser.RETURN - 24)) | (1 << (cwlexParser.STRUCT - 24)) | (1 << (cwlexParser.USING - 24)) | (1 << (cwlexParser.MERGE_NESTED - 24)) | (1 << (cwlexParser.MERGE_FLATTENED - 24)) | (1 << (cwlexParser.INT_SYMBOL - 24)) | (1 << (cwlexParser.FLOAT_SYMBOL - 24)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 24)) | (1 << (cwlexParser.REQUIREMENTS - 24)) | (1 << (cwlexParser.HINTS - 24)) | (1 << (cwlexParser.IMPORT - 24)) | (1 << (cwlexParser.AS - 24)) | (1 << (cwlexParser.DO - 24)) | (1 << (cwlexParser.SCATTER - 24)) | (1 << (cwlexParser.EXPR - 24)) | (1 << (cwlexParser.TRUE_SYMBOL - 24)) | (1 << (cwlexParser.FALSE_SYMBOL - 24)) | (1 << (cwlexParser.NOTWS - 24)))) !== 0)) { + this.state = 1076; + this.param_decl(); + this.state = 1080; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,141,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1077; + this.ws(); + } + this.state = 1082; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,141,this._ctx); + } + + this.state = 1099; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 1083; + this.match(cwlexParser.COMMA); + this.state = 1087; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1084; + this.ws(); + this.state = 1089; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1090; + this.param_decl(); + this.state = 1094; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,143,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1091; + this.ws(); + } + this.state = 1096; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,143,this._ctx); + } + + this.state = 1101; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + + this.state = 1107; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1104; + this.ws(); + this.state = 1109; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1110; + this.match(cwlexParser.CLOSEBRACE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TypekeywordContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_typekeyword; + return this; +} + +TypekeywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TypekeywordContext.prototype.constructor = TypekeywordContext; + +TypekeywordContext.prototype.STRING = function() { + return this.getToken(cwlexParser.STRING, 0); +}; + +TypekeywordContext.prototype.INT_SYMBOL = function() { + return this.getToken(cwlexParser.INT_SYMBOL, 0); +}; + +TypekeywordContext.prototype.FLOAT_SYMBOL = function() { + return this.getToken(cwlexParser.FLOAT_SYMBOL, 0); +}; + +TypekeywordContext.prototype.FILE = function() { + return this.getToken(cwlexParser.FILE, 0); +}; + +TypekeywordContext.prototype.DIRECTORY = function() { + return this.getToken(cwlexParser.DIRECTORY, 0); +}; + +TypekeywordContext.prototype.BOOLEAN_SYMBOL = function() { + return this.getToken(cwlexParser.BOOLEAN_SYMBOL, 0); +}; + +TypekeywordContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterTypekeyword(this); + } +}; + +TypekeywordContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitTypekeyword(this); + } +}; + + + + +cwlexParser.TypekeywordContext = TypekeywordContext; + +cwlexParser.prototype.typekeyword = function() { + + var localctx = new TypekeywordContext(this, this._ctx, this.state); + this.enterRule(localctx, 104, cwlexParser.RULE_typekeyword); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1112; + _la = this._input.LA(1); + if(!(((((_la - 26)) & ~0x1f) == 0 && ((1 << (_la - 26)) & ((1 << (cwlexParser.FILE - 26)) | (1 << (cwlexParser.DIRECTORY - 26)) | (1 << (cwlexParser.STRING - 26)) | (1 << (cwlexParser.INT_SYMBOL - 26)) | (1 << (cwlexParser.FLOAT_SYMBOL - 26)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 26)))) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TypedeclContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_typedecl; + return this; +} + +TypedeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TypedeclContext.prototype.constructor = TypedeclContext; + +TypedeclContext.prototype.typekeyword = function() { + return this.getTypedRuleContext(TypekeywordContext,0); +}; + +TypedeclContext.prototype.structdecl = function() { + return this.getTypedRuleContext(StructdeclContext,0); +}; + +TypedeclContext.prototype.OPENBRACKET = function() { + return this.getToken(cwlexParser.OPENBRACKET, 0); +}; + +TypedeclContext.prototype.CLOSEBRACKET = function() { + return this.getToken(cwlexParser.CLOSEBRACKET, 0); +}; + +TypedeclContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterTypedecl(this); + } +}; + +TypedeclContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitTypedecl(this); + } +}; + + + + +cwlexParser.TypedeclContext = TypedeclContext; + +cwlexParser.prototype.typedecl = function() { + + var localctx = new TypedeclContext(this, this._ctx, this.state); + this.enterRule(localctx, 106, cwlexParser.RULE_typedecl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1116; + switch(this._input.LA(1)) { + case cwlexParser.FILE: + case cwlexParser.DIRECTORY: + case cwlexParser.STRING: + case cwlexParser.INT_SYMBOL: + case cwlexParser.FLOAT_SYMBOL: + case cwlexParser.BOOLEAN_SYMBOL: + this.state = 1114; + this.typekeyword(); + break; + case cwlexParser.STRUCT: + this.state = 1115; + this.structdecl(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1120; + _la = this._input.LA(1); + if(_la===cwlexParser.OPENBRACKET) { + this.state = 1118; + this.match(cwlexParser.OPENBRACKET); + this.state = 1119; + this.match(cwlexParser.CLOSEBRACKET); + } + + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Input_paramsContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_input_params; + return this; +} + +Input_paramsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Input_paramsContext.prototype.constructor = Input_paramsContext; + +Input_paramsContext.prototype.param_list = function() { + return this.getTypedRuleContext(Param_listContext,0); +}; + +Input_paramsContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterInput_params(this); + } +}; + +Input_paramsContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitInput_params(this); + } +}; + + + + +cwlexParser.Input_paramsContext = Input_paramsContext; + +cwlexParser.prototype.input_params = function() { + + var localctx = new Input_paramsContext(this, this._ctx, this.state); + this.enterRule(localctx, 108, cwlexParser.RULE_input_params); + try { + this.enterOuterAlt(localctx, 1); + this.state = 1122; + this.param_list(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Param_listContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_param_list; + return this; +} + +Param_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Param_listContext.prototype.constructor = Param_listContext; + +Param_listContext.prototype.OPENPAREN = function() { + return this.getToken(cwlexParser.OPENPAREN, 0); +}; + +Param_listContext.prototype.CLOSEPAREN = function() { + return this.getToken(cwlexParser.CLOSEPAREN, 0); +}; + +Param_listContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Param_listContext.prototype.param_decl = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(Param_declContext); + } else { + return this.getTypedRuleContext(Param_declContext,i); + } +}; + +Param_listContext.prototype.COMMA = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.COMMA); + } else { + return this.getToken(cwlexParser.COMMA, i); + } +}; + + +Param_listContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterParam_list(this); + } +}; + +Param_listContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitParam_list(this); + } +}; + + + + +cwlexParser.Param_listContext = Param_listContext; + +cwlexParser.prototype.param_list = function() { + + var localctx = new Param_listContext(this, this._ctx, this.state); + this.enterRule(localctx, 110, cwlexParser.RULE_param_list); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1124; + this.match(cwlexParser.OPENPAREN); + this.state = 1128; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,149,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1125; + this.ws(); + } + this.state = 1130; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,149,this._ctx); + } + + this.state = 1151; + _la = this._input.LA(1); + if(((((_la - 24)) & ~0x1f) == 0 && ((1 << (_la - 24)) & ((1 << (cwlexParser.WORKFLOW - 24)) | (1 << (cwlexParser.TOOL - 24)) | (1 << (cwlexParser.FILE - 24)) | (1 << (cwlexParser.DIRECTORY - 24)) | (1 << (cwlexParser.STDOUT - 24)) | (1 << (cwlexParser.FOR - 24)) | (1 << (cwlexParser.EACH - 24)) | (1 << (cwlexParser.IN - 24)) | (1 << (cwlexParser.DEF - 24)) | (1 << (cwlexParser.RUN - 24)) | (1 << (cwlexParser.RETURN - 24)) | (1 << (cwlexParser.STRUCT - 24)) | (1 << (cwlexParser.USING - 24)) | (1 << (cwlexParser.MERGE_NESTED - 24)) | (1 << (cwlexParser.MERGE_FLATTENED - 24)) | (1 << (cwlexParser.INT_SYMBOL - 24)) | (1 << (cwlexParser.FLOAT_SYMBOL - 24)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 24)) | (1 << (cwlexParser.REQUIREMENTS - 24)) | (1 << (cwlexParser.HINTS - 24)) | (1 << (cwlexParser.IMPORT - 24)) | (1 << (cwlexParser.AS - 24)) | (1 << (cwlexParser.DO - 24)) | (1 << (cwlexParser.SCATTER - 24)) | (1 << (cwlexParser.EXPR - 24)) | (1 << (cwlexParser.TRUE_SYMBOL - 24)) | (1 << (cwlexParser.FALSE_SYMBOL - 24)) | (1 << (cwlexParser.NOTWS - 24)))) !== 0)) { + this.state = 1131; + this.param_decl(); + this.state = 1135; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,150,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1132; + this.ws(); + } + this.state = 1137; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,150,this._ctx); + } + + this.state = 1148; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===cwlexParser.COMMA) { + this.state = 1138; + this.match(cwlexParser.COMMA); + this.state = 1142; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1139; + this.ws(); + this.state = 1144; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1145; + this.param_decl(); + this.state = 1150; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + + this.state = 1156; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1153; + this.ws(); + this.state = 1158; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1159; + this.match(cwlexParser.CLOSEPAREN); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Param_declContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_param_decl; + return this; +} + +Param_declContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Param_declContext.prototype.constructor = Param_declContext; + +Param_declContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +Param_declContext.prototype.typedecl = function() { + return this.getTypedRuleContext(TypedeclContext,0); +}; + +Param_declContext.prototype.QUES = function() { + return this.getToken(cwlexParser.QUES, 0); +}; + +Param_declContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Param_declContext.prototype.EQ = function() { + return this.getToken(cwlexParser.EQ, 0); +}; + +Param_declContext.prototype.const_value = function() { + return this.getTypedRuleContext(Const_valueContext,0); +}; + +Param_declContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterParam_decl(this); + } +}; + +Param_declContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitParam_decl(this); + } +}; + + + + +cwlexParser.Param_declContext = Param_declContext; + +cwlexParser.prototype.param_decl = function() { + + var localctx = new Param_declContext(this, this._ctx, this.state); + this.enterRule(localctx, 112, cwlexParser.RULE_param_decl); + var _la = 0; // Token type + try { + this.state = 1188; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,159,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 1161; + this.name(); + this.state = 1163; + _la = this._input.LA(1); + if(_la===cwlexParser.QUES) { + this.state = 1162; + this.match(cwlexParser.QUES); + } + + this.state = 1166; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1165; + this.ws(); + this.state = 1168; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1170; + this.typedecl(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 1172; + this.name(); + this.state = 1176; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1173; + this.ws(); + this.state = 1178; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1179; + this.match(cwlexParser.EQ); + this.state = 1183; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1180; + this.ws(); + this.state = 1185; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1186; + this.const_value(); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SymbolpartContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_symbolpart; + return this; +} + +SymbolpartContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SymbolpartContext.prototype.constructor = SymbolpartContext; + +SymbolpartContext.prototype.keyword = function() { + return this.getTypedRuleContext(KeywordContext,0); +}; + +SymbolpartContext.prototype.NOTWS = function() { + return this.getToken(cwlexParser.NOTWS, 0); +}; + +SymbolpartContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterSymbolpart(this); + } +}; + +SymbolpartContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitSymbolpart(this); + } +}; + + + + +cwlexParser.SymbolpartContext = SymbolpartContext; + +cwlexParser.prototype.symbolpart = function() { + + var localctx = new SymbolpartContext(this, this._ctx, this.state); + this.enterRule(localctx, 114, cwlexParser.RULE_symbolpart); + try { + this.state = 1192; + switch(this._input.LA(1)) { + case cwlexParser.WORKFLOW: + case cwlexParser.TOOL: + case cwlexParser.FILE: + case cwlexParser.DIRECTORY: + case cwlexParser.STDOUT: + case cwlexParser.FOR: + case cwlexParser.EACH: + case cwlexParser.IN: + case cwlexParser.DEF: + case cwlexParser.RUN: + case cwlexParser.RETURN: + case cwlexParser.STRUCT: + case cwlexParser.USING: + case cwlexParser.MERGE_NESTED: + case cwlexParser.MERGE_FLATTENED: + case cwlexParser.INT_SYMBOL: + case cwlexParser.FLOAT_SYMBOL: + case cwlexParser.BOOLEAN_SYMBOL: + case cwlexParser.REQUIREMENTS: + case cwlexParser.HINTS: + case cwlexParser.IMPORT: + case cwlexParser.AS: + case cwlexParser.DO: + case cwlexParser.SCATTER: + case cwlexParser.EXPR: + case cwlexParser.TRUE_SYMBOL: + case cwlexParser.FALSE_SYMBOL: + this.enterOuterAlt(localctx, 1); + this.state = 1190; + this.keyword(); + break; + case cwlexParser.NOTWS: + this.enterOuterAlt(localctx, 2); + this.state = 1191; + this.match(cwlexParser.NOTWS); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SymbolContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_symbol; + return this; +} + +SymbolContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SymbolContext.prototype.constructor = SymbolContext; + +SymbolContext.prototype.NOTWS = function() { + return this.getToken(cwlexParser.NOTWS, 0); +}; + +SymbolContext.prototype.symbolpart = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(SymbolpartContext); + } else { + return this.getTypedRuleContext(SymbolpartContext,i); + } +}; + +SymbolContext.prototype.INTEGER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.INTEGER); + } else { + return this.getToken(cwlexParser.INTEGER, i); + } +}; + + +SymbolContext.prototype.FLOAT = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(cwlexParser.FLOAT); + } else { + return this.getToken(cwlexParser.FLOAT, i); + } +}; + + +SymbolContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterSymbol(this); + } +}; + +SymbolContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitSymbol(this); + } +}; + + + + +cwlexParser.SymbolContext = SymbolContext; + +cwlexParser.prototype.symbol = function() { + + var localctx = new SymbolContext(this, this._ctx, this.state); + this.enterRule(localctx, 116, cwlexParser.RULE_symbol); + var _la = 0; // Token type + try { + this.state = 1203; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,163,this._ctx); + switch(la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 1194; + this.match(cwlexParser.NOTWS); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 1195; + this.symbolpart(); + this.state = 1199; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1199; + switch(this._input.LA(1)) { + case cwlexParser.WORKFLOW: + case cwlexParser.TOOL: + case cwlexParser.FILE: + case cwlexParser.DIRECTORY: + case cwlexParser.STDOUT: + case cwlexParser.FOR: + case cwlexParser.EACH: + case cwlexParser.IN: + case cwlexParser.DEF: + case cwlexParser.RUN: + case cwlexParser.RETURN: + case cwlexParser.STRUCT: + case cwlexParser.USING: + case cwlexParser.MERGE_NESTED: + case cwlexParser.MERGE_FLATTENED: + case cwlexParser.INT_SYMBOL: + case cwlexParser.FLOAT_SYMBOL: + case cwlexParser.BOOLEAN_SYMBOL: + case cwlexParser.REQUIREMENTS: + case cwlexParser.HINTS: + case cwlexParser.IMPORT: + case cwlexParser.AS: + case cwlexParser.DO: + case cwlexParser.SCATTER: + case cwlexParser.EXPR: + case cwlexParser.TRUE_SYMBOL: + case cwlexParser.FALSE_SYMBOL: + case cwlexParser.NOTWS: + this.state = 1196; + this.symbolpart(); + break; + case cwlexParser.INTEGER: + this.state = 1197; + this.match(cwlexParser.INTEGER); + break; + case cwlexParser.FLOAT: + this.state = 1198; + this.match(cwlexParser.FLOAT); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1201; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while(((((_la - 22)) & ~0x1f) == 0 && ((1 << (_la - 22)) & ((1 << (cwlexParser.FLOAT - 22)) | (1 << (cwlexParser.INTEGER - 22)) | (1 << (cwlexParser.WORKFLOW - 22)) | (1 << (cwlexParser.TOOL - 22)) | (1 << (cwlexParser.FILE - 22)) | (1 << (cwlexParser.DIRECTORY - 22)) | (1 << (cwlexParser.STDOUT - 22)) | (1 << (cwlexParser.FOR - 22)) | (1 << (cwlexParser.EACH - 22)) | (1 << (cwlexParser.IN - 22)) | (1 << (cwlexParser.DEF - 22)) | (1 << (cwlexParser.RUN - 22)) | (1 << (cwlexParser.RETURN - 22)) | (1 << (cwlexParser.STRUCT - 22)) | (1 << (cwlexParser.USING - 22)) | (1 << (cwlexParser.MERGE_NESTED - 22)) | (1 << (cwlexParser.MERGE_FLATTENED - 22)) | (1 << (cwlexParser.INT_SYMBOL - 22)) | (1 << (cwlexParser.FLOAT_SYMBOL - 22)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 22)) | (1 << (cwlexParser.REQUIREMENTS - 22)) | (1 << (cwlexParser.HINTS - 22)) | (1 << (cwlexParser.IMPORT - 22)) | (1 << (cwlexParser.AS - 22)) | (1 << (cwlexParser.DO - 22)) | (1 << (cwlexParser.SCATTER - 22)) | (1 << (cwlexParser.EXPR - 22)) | (1 << (cwlexParser.TRUE_SYMBOL - 22)) | (1 << (cwlexParser.FALSE_SYMBOL - 22)) | (1 << (cwlexParser.NOTWS - 22)))) !== 0)); + break; + + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Import_declContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_import_decl; + return this; +} + +Import_declContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Import_declContext.prototype.constructor = Import_declContext; + +Import_declContext.prototype.IMPORT = function() { + return this.getToken(cwlexParser.IMPORT, 0); +}; + +Import_declContext.prototype.AS = function() { + return this.getToken(cwlexParser.AS, 0); +}; + +Import_declContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +Import_declContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +Import_declContext.prototype.SQSTRING = function() { + return this.getToken(cwlexParser.SQSTRING, 0); +}; + +Import_declContext.prototype.DQSTRING = function() { + return this.getToken(cwlexParser.DQSTRING, 0); +}; + +Import_declContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +Import_declContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterImport_decl(this); + } +}; + +Import_declContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitImport_decl(this); + } +}; + + + + +cwlexParser.Import_declContext = Import_declContext; + +cwlexParser.prototype.import_decl = function() { + + var localctx = new Import_declContext(this, this._ctx, this.state); + this.enterRule(localctx, 118, cwlexParser.RULE_import_decl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1205; + this.match(cwlexParser.IMPORT); + this.state = 1207; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1206; + this.ws(); + this.state = 1209; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1211; + _la = this._input.LA(1); + if(!(_la===cwlexParser.SQSTRING || _la===cwlexParser.DQSTRING)) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + this.state = 1213; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1212; + this.ws(); + this.state = 1215; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1217; + this.match(cwlexParser.AS); + this.state = 1219; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1218; + this.ws(); + this.state = 1221; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1223; + this.name(); + this.state = 1227; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,167,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1224; + this.ws(); + } + this.state = 1229; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,167,this._ctx); + } + + this.state = 1230; + this.match(cwlexParser.NEWLINE); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ExprdeclContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_exprdecl; + return this; +} + +ExprdeclContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ExprdeclContext.prototype.constructor = ExprdeclContext; + +ExprdeclContext.prototype.DEF = function() { + return this.getToken(cwlexParser.DEF, 0); +}; + +ExprdeclContext.prototype.EXPR = function() { + return this.getToken(cwlexParser.EXPR, 0); +}; + +ExprdeclContext.prototype.name = function() { + return this.getTypedRuleContext(NameContext,0); +}; + +ExprdeclContext.prototype.input_params = function() { + return this.getTypedRuleContext(Input_paramsContext,0); +}; + +ExprdeclContext.prototype.typedexpr = function() { + return this.getTypedRuleContext(TypedexprContext,0); +}; + +ExprdeclContext.prototype.ws = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(WsContext); + } else { + return this.getTypedRuleContext(WsContext,i); + } +}; + +ExprdeclContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterExprdecl(this); + } +}; + +ExprdeclContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitExprdecl(this); + } +}; + + + + +cwlexParser.ExprdeclContext = ExprdeclContext; + +cwlexParser.prototype.exprdecl = function() { + + var localctx = new ExprdeclContext(this, this._ctx, this.state); + this.enterRule(localctx, 120, cwlexParser.RULE_exprdecl); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1232; + this.match(cwlexParser.DEF); + this.state = 1234; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1233; + this.ws(); + this.state = 1236; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1238; + this.match(cwlexParser.EXPR); + this.state = 1240; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 1239; + this.ws(); + this.state = 1242; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)); + this.state = 1244; + this.name(); + this.state = 1248; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1245; + this.ws(); + this.state = 1250; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1251; + this.input_params(); + this.state = 1255; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0)) { + this.state = 1252; + this.ws(); + this.state = 1257; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1258; + this.typedexpr(); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function WsContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_ws; + return this; +} + +WsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +WsContext.prototype.constructor = WsContext; + +WsContext.prototype.NEWLINE = function() { + return this.getToken(cwlexParser.NEWLINE, 0); +}; + +WsContext.prototype.SPACE = function() { + return this.getToken(cwlexParser.SPACE, 0); +}; + +WsContext.prototype.COMMENT = function() { + return this.getToken(cwlexParser.COMMENT, 0); +}; + +WsContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterWs(this); + } +}; + +WsContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitWs(this); + } +}; + + + + +cwlexParser.WsContext = WsContext; + +cwlexParser.prototype.ws = function() { + + var localctx = new WsContext(this, this._ctx, this.state); + this.enterRule(localctx, 122, cwlexParser.RULE_ws); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1260; + _la = this._input.LA(1); + if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << cwlexParser.NEWLINE) | (1 << cwlexParser.SPACE) | (1 << cwlexParser.COMMENT))) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function KeywordContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = cwlexParser.RULE_keyword; + return this; +} + +KeywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +KeywordContext.prototype.constructor = KeywordContext; + +KeywordContext.prototype.WORKFLOW = function() { + return this.getToken(cwlexParser.WORKFLOW, 0); +}; + +KeywordContext.prototype.TOOL = function() { + return this.getToken(cwlexParser.TOOL, 0); +}; + +KeywordContext.prototype.FILE = function() { + return this.getToken(cwlexParser.FILE, 0); +}; + +KeywordContext.prototype.DIRECTORY = function() { + return this.getToken(cwlexParser.DIRECTORY, 0); +}; + +KeywordContext.prototype.STDOUT = function() { + return this.getToken(cwlexParser.STDOUT, 0); +}; + +KeywordContext.prototype.FOR = function() { + return this.getToken(cwlexParser.FOR, 0); +}; + +KeywordContext.prototype.EACH = function() { + return this.getToken(cwlexParser.EACH, 0); +}; + +KeywordContext.prototype.IN = function() { + return this.getToken(cwlexParser.IN, 0); +}; + +KeywordContext.prototype.DEF = function() { + return this.getToken(cwlexParser.DEF, 0); +}; + +KeywordContext.prototype.RUN = function() { + return this.getToken(cwlexParser.RUN, 0); +}; + +KeywordContext.prototype.RETURN = function() { + return this.getToken(cwlexParser.RETURN, 0); +}; + +KeywordContext.prototype.STRUCT = function() { + return this.getToken(cwlexParser.STRUCT, 0); +}; + +KeywordContext.prototype.USING = function() { + return this.getToken(cwlexParser.USING, 0); +}; + +KeywordContext.prototype.MERGE_NESTED = function() { + return this.getToken(cwlexParser.MERGE_NESTED, 0); +}; + +KeywordContext.prototype.MERGE_FLATTENED = function() { + return this.getToken(cwlexParser.MERGE_FLATTENED, 0); +}; + +KeywordContext.prototype.INT_SYMBOL = function() { + return this.getToken(cwlexParser.INT_SYMBOL, 0); +}; + +KeywordContext.prototype.FLOAT_SYMBOL = function() { + return this.getToken(cwlexParser.FLOAT_SYMBOL, 0); +}; + +KeywordContext.prototype.REQUIREMENTS = function() { + return this.getToken(cwlexParser.REQUIREMENTS, 0); +}; + +KeywordContext.prototype.HINTS = function() { + return this.getToken(cwlexParser.HINTS, 0); +}; + +KeywordContext.prototype.IMPORT = function() { + return this.getToken(cwlexParser.IMPORT, 0); +}; + +KeywordContext.prototype.AS = function() { + return this.getToken(cwlexParser.AS, 0); +}; + +KeywordContext.prototype.SCATTER = function() { + return this.getToken(cwlexParser.SCATTER, 0); +}; + +KeywordContext.prototype.DO = function() { + return this.getToken(cwlexParser.DO, 0); +}; + +KeywordContext.prototype.EXPR = function() { + return this.getToken(cwlexParser.EXPR, 0); +}; + +KeywordContext.prototype.BOOLEAN_SYMBOL = function() { + return this.getToken(cwlexParser.BOOLEAN_SYMBOL, 0); +}; + +KeywordContext.prototype.TRUE_SYMBOL = function() { + return this.getToken(cwlexParser.TRUE_SYMBOL, 0); +}; + +KeywordContext.prototype.FALSE_SYMBOL = function() { + return this.getToken(cwlexParser.FALSE_SYMBOL, 0); +}; + +KeywordContext.prototype.enterRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.enterKeyword(this); + } +}; + +KeywordContext.prototype.exitRule = function(listener) { + if(listener instanceof cwlexListener ) { + listener.exitKeyword(this); + } +}; + + + + +cwlexParser.KeywordContext = KeywordContext; + +cwlexParser.prototype.keyword = function() { + + var localctx = new KeywordContext(this, this._ctx, this.state); + this.enterRule(localctx, 124, cwlexParser.RULE_keyword); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 1262; + _la = this._input.LA(1); + if(!(((((_la - 24)) & ~0x1f) == 0 && ((1 << (_la - 24)) & ((1 << (cwlexParser.WORKFLOW - 24)) | (1 << (cwlexParser.TOOL - 24)) | (1 << (cwlexParser.FILE - 24)) | (1 << (cwlexParser.DIRECTORY - 24)) | (1 << (cwlexParser.STDOUT - 24)) | (1 << (cwlexParser.FOR - 24)) | (1 << (cwlexParser.EACH - 24)) | (1 << (cwlexParser.IN - 24)) | (1 << (cwlexParser.DEF - 24)) | (1 << (cwlexParser.RUN - 24)) | (1 << (cwlexParser.RETURN - 24)) | (1 << (cwlexParser.STRUCT - 24)) | (1 << (cwlexParser.USING - 24)) | (1 << (cwlexParser.MERGE_NESTED - 24)) | (1 << (cwlexParser.MERGE_FLATTENED - 24)) | (1 << (cwlexParser.INT_SYMBOL - 24)) | (1 << (cwlexParser.FLOAT_SYMBOL - 24)) | (1 << (cwlexParser.BOOLEAN_SYMBOL - 24)) | (1 << (cwlexParser.REQUIREMENTS - 24)) | (1 << (cwlexParser.HINTS - 24)) | (1 << (cwlexParser.IMPORT - 24)) | (1 << (cwlexParser.AS - 24)) | (1 << (cwlexParser.DO - 24)) | (1 << (cwlexParser.SCATTER - 24)) | (1 << (cwlexParser.EXPR - 24)) | (1 << (cwlexParser.TRUE_SYMBOL - 24)) | (1 << (cwlexParser.FALSE_SYMBOL - 24)))) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this.consume(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + + +exports.cwlexParser = cwlexParser;