modl 0.3.26 → 0.3.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -149
  3. data/Gemfile +4 -2
  4. data/LICENSE.txt +1 -1
  5. data/README.md +19 -11
  6. data/Rakefile +5 -3
  7. data/lib/modl/interpreter.rb +38 -0
  8. data/lib/modl/model/model.rb +264 -0
  9. data/lib/modl/parser/parser.rb +272 -59
  10. data/lib/modl/tokeniser/context.rb +113 -0
  11. data/lib/modl/tokeniser/tokeniser.rb +28 -0
  12. data/lib/modl/util/functions.rb +74 -0
  13. data/lib/modl/util/unicode.rb +44 -0
  14. data/lib/modl/version.rb +5 -0
  15. data/lib/modl.rb +7 -32
  16. data/modl.gemspec +8 -11
  17. metadata +16 -75
  18. data/.DS_Store +0 -0
  19. data/.idea/vcs.xml +0 -6
  20. data/.rspec +0 -3
  21. data/.rubocop.yml +0 -5
  22. data/.travis.yml +0 -7
  23. data/bin/console +0 -14
  24. data/bin/setup +0 -8
  25. data/lib/modl/parser/MODLLexer.interp +0 -132
  26. data/lib/modl/parser/MODLLexer.rb +0 -324
  27. data/lib/modl/parser/MODLLexer.tokens +0 -40
  28. data/lib/modl/parser/MODLParser.interp +0 -93
  29. data/lib/modl/parser/MODLParser.rb +0 -2492
  30. data/lib/modl/parser/MODLParser.tokens +0 -40
  31. data/lib/modl/parser/MODLParserBaseListener.rb +0 -164
  32. data/lib/modl/parser/MODLParserBaseVisitor.rb +0 -107
  33. data/lib/modl/parser/MODLParserListener.rb +0 -151
  34. data/lib/modl/parser/MODLParserVisitor.rb +0 -56
  35. data/lib/modl/parser/class_processor.rb +0 -411
  36. data/lib/modl/parser/evaluator.rb +0 -125
  37. data/lib/modl/parser/file_importer.rb +0 -101
  38. data/lib/modl/parser/global_parse_context.rb +0 -318
  39. data/lib/modl/parser/instruction_processor.rb +0 -82
  40. data/lib/modl/parser/interpreter.rb +0 -75
  41. data/lib/modl/parser/modl_class.rb +0 -138
  42. data/lib/modl/parser/modl_index.rb +0 -54
  43. data/lib/modl/parser/modl_keylist.rb +0 -81
  44. data/lib/modl/parser/modl_method.rb +0 -172
  45. data/lib/modl/parser/object_cache.rb +0 -88
  46. data/lib/modl/parser/orphan_handler.rb +0 -98
  47. data/lib/modl/parser/parsed.rb +0 -1469
  48. data/lib/modl/parser/ref_processor.rb +0 -258
  49. data/lib/modl/parser/substitutions.rb +0 -101
  50. data/lib/modl/parser/sutil.rb +0 -108
  51. data/lib/modl/parser/throwing_error_listener.rb +0 -44
  52. data/lib/modl/parser/unicode_escape_replacer.rb +0 -148
  53. data/lib/modl/parser/unicode_escapes.rb +0 -112
  54. data/lib/modl/parser/version.rb +0 -29
@@ -1,324 +0,0 @@
1
- # Generated from MODLLexer.g4 by ANTLR 4.7.2
2
- require 'antlr4/runtime'
3
-
4
- module MODL::Parser
5
-
6
-
7
- class MODLLexer < Antlr4::Runtime::Lexer
8
-
9
- @_shared_context_cache = Antlr4::Runtime::PredictionContextCache.new
10
- WS=1
11
- NULL=2
12
- TRUE=3
13
- FALSE=4
14
- COLON=5
15
- EQUALS=6
16
- STRUCT_SEP=7
17
- ARR_SEP=8
18
- LBRAC=9
19
- RBRAC=10
20
- LSBRAC=11
21
- RSBRAC=12
22
- NUMBER=13
23
- COMMENT=14
24
- QUOTED = 15
25
- STRING = 16
26
- HASH_PREFIX = 17
27
- LCBRAC = 18
28
- CWS = 19
29
- QMARK = 20
30
- FSLASH = 21
31
- GTHAN = 22
32
- LTHAN = 23
33
- ASTERISK = 24
34
- AMP = 25
35
- PIPE = 26
36
- EXCLAM = 27
37
- CCOMMENT = 28
38
- RCBRAC = 29
39
- CONDITIONAL=1
40
- @@channelNames = [
41
- "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
42
- ]
43
-
44
- @@modeNames = [
45
- "DEFAULT_MODE", "CONDITIONAL"
46
- ]
47
-
48
- @@ruleNames = [
49
- "WS", "NULL", "TRUE", "FALSE", "COLON", "EQUALS", "STRUCT_SEP", "ARR_SEP",
50
- "LBRAC", "RBRAC", "LSBRAC", "RSBRAC", "NUMBER", "INT", "EXP", "COMMENT",
51
- "INSIDE_COMMENT", "QUOTED", "INSIDE_QUOTES", "INSIDE_GRAVES", "STRING",
52
- "UNRESERVED", "RESERVED_CHARS", "ESCAPED", "UNICODE", "HEX", "HASH_PREFIX",
53
- "LCBRAC", "CWS", "CNULL", "CTRUE", "CFALSE", "CCOLON", "CEQUALS", "CSTRUCT_SEP",
54
- "CLBRAC", "CRBRAC", "CLSBRAC", "CRSBRAC", "CNUMBER", "QMARK", "FSLASH",
55
- "GTHAN", "LTHAN", "ASTERISK", "AMP", "PIPE", "EXCLAM", "CLCBRAC", "CQUOTED",
56
- "CSTRING", "CUNRESERVED", "CRESERVED_CHARS", "CESCAPED", "CCOMMENT",
57
- "RCBRAC"
58
- ]
59
-
60
- @@_LITERAL_NAMES = [
61
- nil, nil, nil, nil, nil, nil, nil, nil, "','", nil, nil, nil, nil, nil,
62
- nil, nil, nil, nil, "'{'", nil, "'?'", "'/'", "'>'", "'<'", "'*'", "'&'",
63
- "'|'", "'!'", nil, "'}'"
64
- ]
65
-
66
- @@_SYMBOLIC_NAMES = [
67
- nil, "WS", "NULL", "TRUE", "FALSE", "COLON", "EQUALS", "STRUCT_SEP",
68
- "ARR_SEP", "LBRAC", "RBRAC", "LSBRAC", "RSBRAC", "NUMBER", "COMMENT",
69
- "QUOTED", "STRING", "HASH_PREFIX", "LCBRAC", "CWS", "QMARK", "FSLASH",
70
- "GTHAN", "LTHAN", "ASTERISK", "AMP", "PIPE", "EXCLAM", "CCOMMENT", "RCBRAC"
71
- ]
72
-
73
- @@VOCABULARY = Antlr4::Runtime::VocabularyImpl.new(@@_LITERAL_NAMES, @@_SYMBOLIC_NAMES)
74
-
75
- def get_vocabulary
76
- @@VOCABULARY
77
- end
78
-
79
-
80
- @@_serializedATN = ["\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
81
- "\2\37\u01f6\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7",
82
- "\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t",
83
- "\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26",
84
- "\t\26\4\27\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4",
85
- "\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%",
86
- "\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60",
87
- "\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4",
88
- "\67\t\67\48\t8\49\t9\3\2\6\2v\n\2\r\2\16\2w\3\2\3\2\3\3\3\3\3\3\3\3",
89
- "\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u0087\n\3\3\4\3\4\3\4\3\4\3\4\3\4",
90
- "\3\4\3\4\3\4\3\4\5\4\u0093\n\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5",
91
- "\3\5\3\5\3\5\5\5\u00a1\n\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n",
92
- "\3\13\3\13\3\f\3\f\3\r\3\r\3\16\5\16\u00b4\n\16\3\16\3\16\3\16\6\16",
93
- "\u00b9\n\16\r\16\16\16\u00ba\5\16\u00bd\n\16\3\16\5\16\u00c0\n\16\3",
94
- "\17\3\17\3\17\7\17\u00c5\n\17\f\17\16\17\u00c8\13\17\5\17\u00ca\n\17",
95
- "\3\20\3\20\5\20\u00ce\n\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21",
96
- "\3\21\3\22\7\22\u00da\n\22\f\22\16\22\u00dd\13\22\3\23\3\23\3\23\3",
97
- "\23\3\23\3\23\7\23\u00e5\n\23\f\23\16\23\u00e8\13\23\3\23\3\23\3\23",
98
- "\3\23\3\23\5\23\u00ef\n\23\3\24\3\24\3\25\7\25\u00f4\n\25\f\25\16\25",
99
- "\u00f7\13\25\3\26\3\26\5\26\u00fb\n\26\3\26\3\26\3\26\6\26\u0100\n",
100
- "\26\r\26\16\26\u0101\3\26\5\26\u0105\n\26\3\26\6\26\u0108\n\26\r\26",
101
- "\16\26\u0109\3\26\5\26\u010d\n\26\3\26\3\26\6\26\u0111\n\26\r\26\16",
102
- "\26\u0112\7\26\u0115\n\26\f\26\16\26\u0118\13\26\3\27\3\27\3\30\3\30",
103
- "\3\31\3\31\3\31\5\31\u0121\n\31\3\31\3\31\3\31\3\31\3\31\5\31\u0128",
104
- "\n\31\5\31\u012a\n\31\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\34",
105
- "\3\34\3\34\3\35\3\35\3\35\3\35\3\36\6\36\u013c\n\36\r\36\16\36\u013d",
106
- "\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\5",
107
- "\37\u014d\n\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \5 \u015b\n ",
108
- "\3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u016b\n!\3!\3!\3\"\3",
109
- "\"\3\"\3\"\3#\3#\3#\3#\3$\3$\3$\3$\3%\3%\3%\3%\3&\3&\3&\3&\3\'\3\'",
110
- "\3\'\3\'\3(\3(\3(\3(\3)\5)\u018c\n)\3)\3)\3)\6)\u0191\n)\r)\16)\u0192",
111
- "\5)\u0195\n)\3)\5)\u0198\n)\3)\3)\3*\3*\3+\3+\3,\3,\3-\3-\3.\3.\3/",
112
- "\3/\3\60\3\60\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63",
113
- "\3\63\3\63\7\63\u01b7\n\63\f\63\16\63\u01ba\13\63\3\63\3\63\3\63\3",
114
- "\63\3\63\5\63\u01c1\n\63\3\63\3\63\3\64\3\64\6\64\u01c7\n\64\r\64\16",
115
- "\64\u01c8\3\64\6\64\u01cc\n\64\r\64\16\64\u01cd\3\64\3\64\6\64\u01d2",
116
- "\n\64\r\64\16\64\u01d3\7\64\u01d6\n\64\f\64\16\64\u01d9\13\64\3\64",
117
- "\3\64\3\65\3\65\3\66\3\66\3\67\3\67\3\67\5\67\u01e4\n\67\3\67\3\67",
118
- "\3\67\3\67\5\67\u01ea\n\67\38\38\38\38\38\38\38\39\39\39\39\2\2:\4",
119
- "\3\6\4\b\5\n\6\f\7\16\b\20\t\22\n\24\13\26\f\30\r\32\16\34\17\36\2",
120
- " \2\"\20$\2&\21(\2*\2,\22.\2\60\2\62\2\64\2\66\28\23:\24<\25>\2@\2",
121
- "B\2D\2F\2H\2J\2L\2N\2P\2R\2T\26V\27X\30Z\31\\\32^\33`\34b\35d\2f\2",
122
- "h\2j\2l\2n\2p\36r\37\4\2\3\16\5\2\13\f\17\17\"\"\3\2\62;\3\2\63;\4",
123
- "\2GGgg\4\2--//\4\2\f\f\17\17\3\2$$\3\2bb\f\2\n\f\16\17\"\"$%*+<=??",
124
- "]_}}\177\u0080\t\2\61\61^^ddhhppttvv\5\2\62;CHch\13\2\n\f\16\17\"%",
125
- "((*+\61\61<A]_}\u0080\2\u0221\2\4\3\2\2\2\2\6\3\2\2\2\2\b\3\2\2\2\2",
126
- "\n\3\2\2\2\2\f\3\2\2\2\2\16\3\2\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24",
127
- "\3\2\2\2\2\26\3\2\2\2\2\30\3\2\2\2\2\32\3\2\2\2\2\34\3\2\2\2\2\"\3",
128
- "\2\2\2\2&\3\2\2\2\2,\3\2\2\2\28\3\2\2\2\2:\3\2\2\2\3<\3\2\2\2\3>\3",
129
- "\2\2\2\3@\3\2\2\2\3B\3\2\2\2\3D\3\2\2\2\3F\3\2\2\2\3H\3\2\2\2\3J\3",
130
- "\2\2\2\3L\3\2\2\2\3N\3\2\2\2\3P\3\2\2\2\3R\3\2\2\2\3T\3\2\2\2\3V\3",
131
- "\2\2\2\3X\3\2\2\2\3Z\3\2\2\2\3\\\3\2\2\2\3^\3\2\2\2\3`\3\2\2\2\3b\3",
132
- "\2\2\2\3d\3\2\2\2\3f\3\2\2\2\3h\3\2\2\2\3p\3\2\2\2\3r\3\2\2\2\4u\3",
133
- "\2\2\2\6\u0086\3\2\2\2\b\u0092\3\2\2\2\n\u00a0\3\2\2\2\f\u00a2\3\2",
134
- "\2\2\16\u00a4\3\2\2\2\20\u00a6\3\2\2\2\22\u00a8\3\2\2\2\24\u00aa\3",
135
- "\2\2\2\26\u00ac\3\2\2\2\30\u00ae\3\2\2\2\32\u00b0\3\2\2\2\34\u00b3",
136
- "\3\2\2\2\36\u00c9\3\2\2\2 \u00cb\3\2\2\2\"\u00d1\3\2\2\2$\u00db\3\2",
137
- "\2\2&\u00ee\3\2\2\2(\u00f0\3\2\2\2*\u00f5\3\2\2\2,\u00fa\3\2\2\2.\u0119",
138
- "\3\2\2\2\60\u011b\3\2\2\2\62\u0129\3\2\2\2\64\u012b\3\2\2\2\66\u0131",
139
- "\3\2\2\28\u0133\3\2\2\2:\u0136\3\2\2\2<\u013b\3\2\2\2>\u014c\3\2\2",
140
- "\2@\u015a\3\2\2\2B\u016a\3\2\2\2D\u016e\3\2\2\2F\u0172\3\2\2\2H\u0176",
141
- "\3\2\2\2J\u017a\3\2\2\2L\u017e\3\2\2\2N\u0182\3\2\2\2P\u0186\3\2\2",
142
- "\2R\u018b\3\2\2\2T\u019b\3\2\2\2V\u019d\3\2\2\2X\u019f\3\2\2\2Z\u01a1",
143
- "\3\2\2\2\\\u01a3\3\2\2\2^\u01a5\3\2\2\2`\u01a7\3\2\2\2b\u01a9\3\2\2",
144
- "\2d\u01ab\3\2\2\2f\u01c0\3\2\2\2h\u01c6\3\2\2\2j\u01dc\3\2\2\2l\u01de",
145
- "\3\2\2\2n\u01e9\3\2\2\2p\u01eb\3\2\2\2r\u01f2\3\2\2\2tv\t\2\2\2ut\3",
146
- "\2\2\2vw\3\2\2\2wu\3\2\2\2wx\3\2\2\2xy\3\2\2\2yz\b\2\2\2z\5\3\2\2\2",
147
- "{|\7\62\2\2|}\7\62\2\2}\u0087\7\62\2\2~\177\7p\2\2\177\u0080\7w\2\2",
148
- "\u0080\u0081\7n\2\2\u0081\u0087\7n\2\2\u0082\u0083\7P\2\2\u0083\u0084",
149
- "\7W\2\2\u0084\u0085\7N\2\2\u0085\u0087\7N\2\2\u0086{\3\2\2\2\u0086",
150
- "~\3\2\2\2\u0086\u0082\3\2\2\2\u0087\7\3\2\2\2\u0088\u0089\7\62\2\2",
151
- "\u0089\u0093\7\63\2\2\u008a\u008b\7v\2\2\u008b\u008c\7t\2\2\u008c\u008d",
152
- "\7w\2\2\u008d\u0093\7g\2\2\u008e\u008f\7V\2\2\u008f\u0090\7T\2\2\u0090",
153
- "\u0091\7W\2\2\u0091\u0093\7G\2\2\u0092\u0088\3\2\2\2\u0092\u008a\3",
154
- "\2\2\2\u0092\u008e\3\2\2\2\u0093\t\3\2\2\2\u0094\u0095\7\62\2\2\u0095",
155
- "\u00a1\7\62\2\2\u0096\u0097\7h\2\2\u0097\u0098\7c\2\2\u0098\u0099\7",
156
- "n\2\2\u0099\u009a\7u\2\2\u009a\u00a1\7g\2\2\u009b\u009c\7H\2\2\u009c",
157
- "\u009d\7C\2\2\u009d\u009e\7N\2\2\u009e\u009f\7U\2\2\u009f\u00a1\7G",
158
- "\2\2\u00a0\u0094\3\2\2\2\u00a0\u0096\3\2\2\2\u00a0\u009b\3\2\2\2\u00a1",
159
- "\13\3\2\2\2\u00a2\u00a3\7<\2\2\u00a3\r\3\2\2\2\u00a4\u00a5\7?\2\2\u00a5",
160
- "\17\3\2\2\2\u00a6\u00a7\7=\2\2\u00a7\21\3\2\2\2\u00a8\u00a9\7.\2\2",
161
- "\u00a9\23\3\2\2\2\u00aa\u00ab\7*\2\2\u00ab\25\3\2\2\2\u00ac\u00ad\7",
162
- "+\2\2\u00ad\27\3\2\2\2\u00ae\u00af\7]\2\2\u00af\31\3\2\2\2\u00b0\u00b1",
163
- "\7_\2\2\u00b1\33\3\2\2\2\u00b2\u00b4\7/\2\2\u00b3\u00b2\3\2\2\2\u00b3",
164
- "\u00b4\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00bc\5\36\17\2\u00b6\u00b8",
165
- "\7\60\2\2\u00b7\u00b9\t\3\2\2\u00b8\u00b7\3\2\2\2\u00b9\u00ba\3\2\2",
166
- "\2\u00ba\u00b8\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00bd\3\2\2\2\u00bc",
167
- "\u00b6\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u00bf\3\2\2\2\u00be\u00c0",
168
- "\5 \20\2\u00bf\u00be\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\35\3\2\2\2\u00c1",
169
- "\u00ca\7\62\2\2\u00c2\u00c6\t\4\2\2\u00c3\u00c5\t\3\2\2\u00c4\u00c3",
170
- "\3\2\2\2\u00c5\u00c8\3\2\2\2\u00c6\u00c4\3\2\2\2\u00c6\u00c7\3\2\2",
171
- "\2\u00c7\u00ca\3\2\2\2\u00c8\u00c6\3\2\2\2\u00c9\u00c1\3\2\2\2\u00c9",
172
- "\u00c2\3\2\2\2\u00ca\37\3\2\2\2\u00cb\u00cd\t\5\2\2\u00cc\u00ce\t\6",
173
- "\2\2\u00cd\u00cc\3\2\2\2\u00cd\u00ce\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf",
174
- "\u00d0\5\36\17\2\u00d0!\3\2\2\2\u00d1\u00d2\7%\2\2\u00d2\u00d3\7%\2",
175
- "\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\5$\22\2\u00d5\u00d6\3\2\2\2\u00d6",
176
- "\u00d7\b\21\2\2\u00d7#\3\2\2\2\u00d8\u00da\n\7\2\2\u00d9\u00d8\3\2",
177
- "\2\2\u00da\u00dd\3\2\2\2\u00db\u00d9\3\2\2\2\u00db\u00dc\3\2\2\2\u00dc",
178
- "%\3\2\2\2\u00dd\u00db\3\2\2\2\u00de\u00e6\7$\2\2\u00df\u00e5\5(\24",
179
- "\2\u00e0\u00e1\7\u0080\2\2\u00e1\u00e5\7$\2\2\u00e2\u00e3\7^\2\2\u00e3",
180
- "\u00e5\7$\2\2\u00e4\u00df\3\2\2\2\u00e4\u00e0\3\2\2\2\u00e4\u00e2\3",
181
- "\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e6\u00e7\3\2\2\2",
182
- "\u00e7\u00e9\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00ef\7$\2\2\u00ea\u00eb",
183
- "\7b\2\2\u00eb\u00ec\5*\25\2\u00ec\u00ed\7b\2\2\u00ed\u00ef\3\2\2\2",
184
- "\u00ee\u00de\3\2\2\2\u00ee\u00ea\3\2\2\2\u00ef\'\3\2\2\2\u00f0\u00f1",
185
- "\n\b\2\2\u00f1)\3\2\2\2\u00f2\u00f4\n\t\2\2\u00f3\u00f2\3\2\2\2\u00f4",
186
- "\u00f7\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6+\3\2\2",
187
- "\2\u00f7\u00f5\3\2\2\2\u00f8\u00f9\7%\2\2\u00f9\u00fb\7\"\2\2\u00fa",
188
- "\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00ff\3\2\2\2\u00fc\u0100",
189
- "\5\62\31\2\u00fd\u0100\5.\27\2\u00fe\u0100\58\34\2\u00ff\u00fc\3\2",
190
- "\2\2\u00ff\u00fd\3\2\2\2\u00ff\u00fe\3\2\2\2\u0100\u0101\3\2\2\2\u0101",
191
- "\u00ff\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0116\3\2\2\2\u0103\u0105",
192
- "\7%\2\2\u0104\u0103\3\2\2\2\u0104\u0105\3\2\2\2\u0105\u0107\3\2\2\2",
193
- "\u0106\u0108\7\"\2\2\u0107\u0106\3\2\2\2\u0108\u0109\3\2\2\2\u0109",
194
- "\u0107\3\2\2\2\u0109\u010a\3\2\2\2\u010a\u010c\3\2\2\2\u010b\u010d",
195
- "\7%\2\2\u010c\u010b\3\2\2\2\u010c\u010d\3\2\2\2\u010d\u0110\3\2\2\2",
196
- "\u010e\u0111\5\62\31\2\u010f\u0111\5.\27\2\u0110\u010e\3\2\2\2\u0110",
197
- "\u010f\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0110\3\2\2\2\u0112\u0113",
198
- "\3\2\2\2\u0113\u0115\3\2\2\2\u0114\u0104\3\2\2\2\u0115\u0118\3\2\2",
199
- "\2\u0116\u0114\3\2\2\2\u0116\u0117\3\2\2\2\u0117-\3\2\2\2\u0118\u0116",
200
- "\3\2\2\2\u0119\u011a\n\n\2\2\u011a/\3\2\2\2\u011b\u011c\t\n\2\2\u011c",
201
- "\61\3\2\2\2\u011d\u0120\7^\2\2\u011e\u0121\t\13\2\2\u011f\u0121\5\64",
202
- "\32\2\u0120\u011e\3\2\2\2\u0120\u011f\3\2\2\2\u0121\u012a\3\2\2\2\u0122",
203
- "\u0123\7^\2\2\u0123\u012a\5\60\30\2\u0124\u0127\7\u0080\2\2\u0125\u0128",
204
- "\5\60\30\2\u0126\u0128\5\64\32\2\u0127\u0125\3\2\2\2\u0127\u0126\3",
205
- "\2\2\2\u0128\u012a\3\2\2\2\u0129\u011d\3\2\2\2\u0129\u0122\3\2\2\2",
206
- "\u0129\u0124\3\2\2\2\u012a\63\3\2\2\2\u012b\u012c\7w\2\2\u012c\u012d",
207
- "\5\66\33\2\u012d\u012e\5\66\33\2\u012e\u012f\5\66\33\2\u012f\u0130",
208
- "\5\66\33\2\u0130\65\3\2\2\2\u0131\u0132\t\f\2\2\u0132\67\3\2\2\2\u0133",
209
- "\u0134\7%\2\2\u0134\u0135\5,\26\2\u01359\3\2\2\2\u0136\u0137\7}\2\2",
210
- "\u0137\u0138\3\2\2\2\u0138\u0139\b\35\3\2\u0139;\3\2\2\2\u013a\u013c",
211
- "\t\2\2\2\u013b\u013a\3\2\2\2\u013c\u013d\3\2\2\2\u013d\u013b\3\2\2",
212
- "\2\u013d\u013e\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\b\36\2\2\u0140",
213
- "=\3\2\2\2\u0141\u0142\7\62\2\2\u0142\u0143\7\62\2\2\u0143\u014d\7\62",
214
- "\2\2\u0144\u0145\7p\2\2\u0145\u0146\7w\2\2\u0146\u0147\7n\2\2\u0147",
215
- "\u014d\7n\2\2\u0148\u0149\7P\2\2\u0149\u014a\7W\2\2\u014a\u014b\7N",
216
- "\2\2\u014b\u014d\7N\2\2\u014c\u0141\3\2\2\2\u014c\u0144\3\2\2\2\u014c",
217
- "\u0148\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u014f\b\37\4\2\u014f?\3\2",
218
- "\2\2\u0150\u0151\7\62\2\2\u0151\u015b\7\63\2\2\u0152\u0153\7v\2\2\u0153",
219
- "\u0154\7t\2\2\u0154\u0155\7w\2\2\u0155\u015b\7g\2\2\u0156\u0157\7V",
220
- "\2\2\u0157\u0158\7T\2\2\u0158\u0159\7W\2\2\u0159\u015b\7G\2\2\u015a",
221
- "\u0150\3\2\2\2\u015a\u0152\3\2\2\2\u015a\u0156\3\2\2\2\u015b\u015c",
222
- "\3\2\2\2\u015c\u015d\b \5\2\u015dA\3\2\2\2\u015e\u015f\7\62\2\2\u015f",
223
- "\u016b\7\62\2\2\u0160\u0161\7h\2\2\u0161\u0162\7c\2\2\u0162\u0163\7",
224
- "n\2\2\u0163\u0164\7u\2\2\u0164\u016b\7g\2\2\u0165\u0166\7H\2\2\u0166",
225
- "\u0167\7C\2\2\u0167\u0168\7N\2\2\u0168\u0169\7U\2\2\u0169\u016b\7G",
226
- "\2\2\u016a\u015e\3\2\2\2\u016a\u0160\3\2\2\2\u016a\u0165\3\2\2\2\u016b",
227
- "\u016c\3\2\2\2\u016c\u016d\b!\6\2\u016dC\3\2\2\2\u016e\u016f\7<\2\2",
228
- "\u016f\u0170\3\2\2\2\u0170\u0171\b\"\7\2\u0171E\3\2\2\2\u0172\u0173",
229
- "\7?\2\2\u0173\u0174\3\2\2\2\u0174\u0175\b#\b\2\u0175G\3\2\2\2\u0176",
230
- "\u0177\7=\2\2\u0177\u0178\3\2\2\2\u0178\u0179\b$\t\2\u0179I\3\2\2\2",
231
- "\u017a\u017b\7*\2\2\u017b\u017c\3\2\2\2\u017c\u017d\b%\n\2\u017dK\3",
232
- "\2\2\2\u017e\u017f\7+\2\2\u017f\u0180\3\2\2\2\u0180\u0181\b&\13\2\u0181",
233
- "M\3\2\2\2\u0182\u0183\7]\2\2\u0183\u0184\3\2\2\2\u0184\u0185\b\'\f",
234
- "\2\u0185O\3\2\2\2\u0186\u0187\7_\2\2\u0187\u0188\3\2\2\2\u0188\u0189",
235
- "\b(\r\2\u0189Q\3\2\2\2\u018a\u018c\7/\2\2\u018b\u018a\3\2\2\2\u018b",
236
- "\u018c\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u0194\5\36\17\2\u018e\u0190",
237
- "\7\60\2\2\u018f\u0191\t\3\2\2\u0190\u018f\3\2\2\2\u0191\u0192\3\2\2",
238
- "\2\u0192\u0190\3\2\2\2\u0192\u0193\3\2\2\2\u0193\u0195\3\2\2\2\u0194",
239
- "\u018e\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u0197\3\2\2\2\u0196\u0198",
240
- "\5 \20\2\u0197\u0196\3\2\2\2\u0197\u0198\3\2\2\2\u0198\u0199\3\2\2",
241
- "\2\u0199\u019a\b)\16\2\u019aS\3\2\2\2\u019b\u019c\7A\2\2\u019cU\3\2",
242
- "\2\2\u019d\u019e\7\61\2\2\u019eW\3\2\2\2\u019f\u01a0\7@\2\2\u01a0Y",
243
- "\3\2\2\2\u01a1\u01a2\7>\2\2\u01a2[\3\2\2\2\u01a3\u01a4\7,\2\2\u01a4",
244
- "]\3\2\2\2\u01a5\u01a6\7(\2\2\u01a6_\3\2\2\2\u01a7\u01a8\7~\2\2\u01a8",
245
- "a\3\2\2\2\u01a9\u01aa\7#\2\2\u01aac\3\2\2\2\u01ab\u01ac\7}\2\2\u01ac",
246
- "\u01ad\3\2\2\2\u01ad\u01ae\b\62\3\2\u01ae\u01af\b\62\17\2\u01afe\3",
247
- "\2\2\2\u01b0\u01b8\7$\2\2\u01b1\u01b7\5(\24\2\u01b2\u01b3\7\u0080\2",
248
- "\2\u01b3\u01b7\7$\2\2\u01b4\u01b5\7^\2\2\u01b5\u01b7\7$\2\2\u01b6\u01b1",
249
- "\3\2\2\2\u01b6\u01b2\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01ba\3\2\2",
250
- "\2\u01b8\u01b6\3\2\2\2\u01b8\u01b9\3\2\2\2\u01b9\u01bb\3\2\2\2\u01ba",
251
- "\u01b8\3\2\2\2\u01bb\u01c1\7$\2\2\u01bc\u01bd\7b\2\2\u01bd\u01be\5",
252
- "*\25\2\u01be\u01bf\7b\2\2\u01bf\u01c1\3\2\2\2\u01c0\u01b0\3\2\2\2\u01c0",
253
- "\u01bc\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2\u01c3\b\63\20\2\u01c3g\3\2",
254
- "\2\2\u01c4\u01c7\5n\67\2\u01c5\u01c7\5j\65\2\u01c6\u01c4\3\2\2\2\u01c6",
255
- "\u01c5\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u01c6\3\2\2\2\u01c8\u01c9",
256
- "\3\2\2\2\u01c9\u01d7\3\2\2\2\u01ca\u01cc\7\"\2\2\u01cb\u01ca\3\2\2",
257
- "\2\u01cc\u01cd\3\2\2\2\u01cd\u01cb\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce",
258
- "\u01d1\3\2\2\2\u01cf\u01d2\5n\67\2\u01d0\u01d2\5j\65\2\u01d1\u01cf",
259
- "\3\2\2\2\u01d1\u01d0\3\2\2\2\u01d2\u01d3\3\2\2\2\u01d3\u01d1\3\2\2",
260
- "\2\u01d3\u01d4\3\2\2\2\u01d4\u01d6\3\2\2\2\u01d5\u01cb\3\2\2\2\u01d6",
261
- "\u01d9\3\2\2\2\u01d7\u01d5\3\2\2\2\u01d7\u01d8\3\2\2\2\u01d8\u01da",
262
- "\3\2\2\2\u01d9\u01d7\3\2\2\2\u01da\u01db\b\64\21\2\u01dbi\3\2\2\2\u01dc",
263
- "\u01dd\n\r\2\2\u01ddk\3\2\2\2\u01de\u01df\t\r\2\2\u01dfm\3\2\2\2\u01e0",
264
- "\u01e3\7^\2\2\u01e1\u01e4\t\13\2\2\u01e2\u01e4\5\64\32\2\u01e3\u01e1",
265
- "\3\2\2\2\u01e3\u01e2\3\2\2\2\u01e4\u01ea\3\2\2\2\u01e5\u01e6\7^\2\2",
266
- "\u01e6\u01ea\5l\66\2\u01e7\u01e8\7\u0080\2\2\u01e8\u01ea\5l\66\2\u01e9",
267
- "\u01e0\3\2\2\2\u01e9\u01e5\3\2\2\2\u01e9\u01e7\3\2\2\2\u01eao\3\2\2",
268
- "\2\u01eb\u01ec\7%\2\2\u01ec\u01ed\7%\2\2\u01ed\u01ee\3\2\2\2\u01ee",
269
- "\u01ef\5$\22\2\u01ef\u01f0\3\2\2\2\u01f0\u01f1\b8\2\2\u01f1q\3\2\2",
270
- "\2\u01f2\u01f3\7\177\2\2\u01f3\u01f4\3\2\2\2\u01f4\u01f5\b9\22\2\u01f5",
271
- "s\3\2\2\2\63\2\3w\u0086\u0092\u00a0\u00b3\u00ba\u00bc\u00bf\u00c6\u00c9",
272
- "\u00cd\u00db\u00e4\u00e6\u00ee\u00f5\u00fa\u00ff\u0101\u0104\u0109",
273
- "\u010c\u0110\u0112\u0116\u0120\u0127\u0129\u013d\u014c\u015a\u016a",
274
- "\u018b\u0192\u0194\u0197\u01b6\u01b8\u01c0\u01c6\u01c8\u01cd\u01d1",
275
- "\u01d3\u01d7\u01e3\u01e9\23\b\2\2\7\3\2\t\4\2\t\5\2\t\6\2\t\7\2\t\b",
276
- "\2\t\t\2\t\13\2\t\f\2\t\r\2\t\16\2\t\17\2\t\24\2\t\21\2\t\22\2\6\2",
277
- "\2"].join("")
278
-
279
- @@_ATN = Antlr4::Runtime::ATNDeserializer.new().deserialize(@@_serializedATN)
280
-
281
-
282
- class << self
283
- @@_decisionToDFA = []
284
- end
285
-
286
- def initialize(input)
287
- super(input)
288
-
289
- i = 0
290
- while i < @@_ATN.number_of_decisions()
291
- @@_decisionToDFA[i] = Antlr4::Runtime::DFA.new(@@_ATN.decision_state(i), i)
292
- i+=1
293
- end
294
-
295
- @_interp = Antlr4::Runtime::LexerATNSimulator.new(self,@@_ATN,@@_decisionToDFA,@_sharedContextCache)
296
- end
297
-
298
- def getGrammarFileName()
299
- return "MODLLexer.g4"
300
- end
301
-
302
- def rule_names()
303
- return @@ruleNames
304
- end
305
-
306
- def serialized_atn()
307
- return @@_serializedATN
308
- end
309
-
310
- def channel_names()
311
- return @@channelNames
312
- end
313
-
314
- def mode_names()
315
- return @@modeNames
316
- end
317
-
318
- def atn()
319
- return @@_ATN
320
- end
321
-
322
- end
323
-
324
- end
@@ -1,40 +0,0 @@
1
- WS=1
2
- NULL=2
3
- TRUE=3
4
- FALSE=4
5
- COLON=5
6
- EQUALS=6
7
- STRUCT_SEP=7
8
- ARR_SEP=8
9
- LBRAC=9
10
- RBRAC=10
11
- LSBRAC=11
12
- RSBRAC=12
13
- NUMBER=13
14
- COMMENT=14
15
- QUOTED=15
16
- STRING=16
17
- HASH_PREFIX=17
18
- LCBRAC=18
19
- CWS=19
20
- QMARK=20
21
- FSLASH=21
22
- GTHAN=22
23
- LTHAN=23
24
- ASTERISK=24
25
- AMP=25
26
- PIPE=26
27
- EXCLAM=27
28
- CCOMMENT=28
29
- RCBRAC=29
30
- ','=8
31
- '{'=18
32
- '?'=20
33
- '/'=21
34
- '>'=22
35
- '<'=23
36
- '*'=24
37
- '&'=25
38
- '|'=26
39
- '!'=27
40
- '}'=29
@@ -1,93 +0,0 @@
1
- token literal names:
2
- null
3
- null
4
- null
5
- null
6
- null
7
- null
8
- null
9
- null
10
- ','
11
- null
12
- null
13
- null
14
- null
15
- null
16
- null
17
- null
18
- null
19
- null
20
- '{'
21
- null
22
- '?'
23
- '/'
24
- '>'
25
- '<'
26
- '*'
27
- '&'
28
- '|'
29
- '!'
30
- null
31
- '}'
32
-
33
- token symbolic names:
34
- null
35
- WS
36
- NULL
37
- TRUE
38
- FALSE
39
- COLON
40
- EQUALS
41
- STRUCT_SEP
42
- ARR_SEP
43
- LBRAC
44
- RBRAC
45
- LSBRAC
46
- RSBRAC
47
- NUMBER
48
- COMMENT
49
- QUOTED
50
- STRING
51
- HASH_PREFIX
52
- LCBRAC
53
- CWS
54
- QMARK
55
- FSLASH
56
- GTHAN
57
- LTHAN
58
- ASTERISK
59
- AMP
60
- PIPE
61
- EXCLAM
62
- CCOMMENT
63
- RCBRAC
64
-
65
- rule names:
66
- modl
67
- modl_structure
68
- modl_map
69
- modl_array
70
- modl_nb_array
71
- modl_pair
72
- modl_value_item
73
- modl_top_level_conditional
74
- modl_top_level_conditional_return
75
- modl_map_conditional
76
- modl_map_conditional_return
77
- modl_map_item
78
- modl_array_conditional
79
- modl_array_conditional_return
80
- modl_array_item
81
- modl_value_conditional
82
- modl_value_conditional_return
83
- modl_condition_test
84
- modl_operator
85
- modl_condition
86
- modl_condition_group
87
- modl_value
88
- modl_array_value_item
89
- modl_primitive
90
-
91
-
92
- atn:
93
- [3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 31, 327, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 3, 2, 5, 2, 52, 10, 2, 3, 2, 3, 2, 3, 2, 7, 2, 57, 10, 2, 12, 2, 14, 2, 60, 11, 2, 3, 2, 5, 2, 63, 10, 2, 5, 2, 65, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 73, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 79, 10, 4, 12, 4, 14, 4, 82, 11, 4, 5, 4, 84, 10, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 5, 5, 91, 10, 5, 3, 5, 6, 5, 94, 10, 5, 13, 5, 14, 5, 95, 3, 5, 3, 5, 5, 5, 100, 10, 5, 3, 5, 7, 5, 103, 10, 5, 12, 5, 14, 5, 106, 11, 5, 7, 5, 108, 10, 5, 12, 5, 14, 5, 111, 11, 5, 5, 5, 113, 10, 5, 3, 5, 3, 5, 3, 6, 3, 6, 6, 6, 119, 10, 6, 13, 6, 14, 6, 120, 6, 6, 123, 10, 6, 13, 6, 14, 6, 124, 3, 6, 7, 6, 128, 10, 6, 12, 6, 14, 6, 131, 11, 6, 3, 6, 5, 6, 134, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 143, 10, 7, 3, 8, 3, 8, 5, 8, 147, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 155, 10, 9, 3, 9, 3, 9, 7, 9, 159, 10, 9, 12, 9, 14, 9, 162, 11, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 7, 10, 169, 10, 10, 12, 10, 14, 10, 172, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 180, 10, 11, 3, 11, 3, 11, 7, 11, 184, 10, 11, 12, 11, 14, 11, 187, 11, 11, 3, 11, 3, 11, 3, 12, 6, 12, 192, 10, 12, 13, 12, 14, 12, 193, 3, 13, 3, 13, 5, 13, 198, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 206, 10, 14, 3, 14, 3, 14, 7, 14, 210, 10, 14, 12, 14, 14, 14, 213, 11, 14, 3, 14, 3, 14, 3, 15, 6, 15, 218, 10, 15, 13, 15, 14, 15, 219, 3, 16, 3, 16, 5, 16, 224, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 235, 10, 17, 12, 17, 14, 17, 238, 11, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 244, 10, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 7, 18, 251, 10, 18, 12, 18, 14, 18, 254, 11, 18, 3, 19, 5, 19, 257, 10, 19, 3, 19, 3, 19, 5, 19, 261, 10, 19, 3, 19, 3, 19, 5, 19, 265, 10, 19, 3, 19, 3, 19, 5, 19, 269, 10, 19, 7, 19, 271, 10, 19, 12, 19, 14, 19, 274, 11, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 285, 10, 20, 3, 21, 5, 21, 288, 10, 21, 3, 21, 5, 21, 291, 10, 21, 3, 21, 3, 21, 3, 21, 7, 21, 296, 10, 21, 12, 21, 14, 21, 299, 11, 21, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 305, 10, 22, 12, 22, 14, 22, 308, 11, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 317, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 323, 10, 24, 3, 25, 3, 25, 3, 25, 2, 2, 26, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 2, 5, 3, 2, 17, 18, 3, 2, 27, 28, 5, 2, 4, 6, 15, 15, 17, 18, 2, 359, 2, 64, 3, 2, 2, 2, 4, 72, 3, 2, 2, 2, 6, 74, 3, 2, 2, 2, 8, 87, 3, 2, 2, 2, 10, 122, 3, 2, 2, 2, 12, 142, 3, 2, 2, 2, 14, 146, 3, 2, 2, 2, 16, 148, 3, 2, 2, 2, 18, 165, 3, 2, 2, 2, 20, 173, 3, 2, 2, 2, 22, 191, 3, 2, 2, 2, 24, 197, 3, 2, 2, 2, 26, 199, 3, 2, 2, 2, 28, 217, 3, 2, 2, 2, 30, 223, 3, 2, 2, 2, 32, 225, 3, 2, 2, 2, 34, 247, 3, 2, 2, 2, 36, 256, 3, 2, 2, 2, 38, 284, 3, 2, 2, 2, 40, 287, 3, 2, 2, 2, 42, 300, 3, 2, 2, 2, 44, 316, 3, 2, 2, 2, 46, 322, 3, 2, 2, 2, 48, 324, 3, 2, 2, 2, 50, 52, 5, 4, 3, 2, 51, 50, 3, 2, 2, 2, 51, 52, 3, 2, 2, 2, 52, 65, 3, 2, 2, 2, 53, 58, 5, 4, 3, 2, 54, 55, 7, 9, 2, 2, 55, 57, 5, 4, 3, 2, 56, 54, 3, 2, 2, 2, 57, 60, 3, 2, 2, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 62, 3, 2, 2, 2, 60, 58, 3, 2, 2, 2, 61, 63, 7, 9, 2, 2, 62, 61, 3, 2, 2, 2, 62, 63, 3, 2, 2, 2, 63, 65, 3, 2, 2, 2, 64, 51, 3, 2, 2, 2, 64, 53, 3, 2, 2, 2, 65, 66, 3, 2, 2, 2, 66, 67, 7, 2, 2, 3, 67, 3, 3, 2, 2, 2, 68, 73, 5, 6, 4, 2, 69, 73, 5, 8, 5, 2, 70, 73, 5, 16, 9, 2, 71, 73, 5, 12, 7, 2, 72, 68, 3, 2, 2, 2, 72, 69, 3, 2, 2, 2, 72, 70, 3, 2, 2, 2, 72, 71, 3, 2, 2, 2, 73, 5, 3, 2, 2, 2, 74, 83, 7, 11, 2, 2, 75, 80, 5, 24, 13, 2, 76, 77, 7, 9, 2, 2, 77, 79, 5, 24, 13, 2, 78, 76, 3, 2, 2, 2, 79, 82, 3, 2, 2, 2, 80, 78, 3, 2, 2, 2, 80, 81, 3, 2, 2, 2, 81, 84, 3, 2, 2, 2, 82, 80, 3, 2, 2, 2, 83, 75, 3, 2, 2, 2, 83, 84, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 86, 7, 12, 2, 2, 86, 7, 3, 2, 2, 2, 87, 112, 7, 13, 2, 2, 88, 91, 5, 30, 16, 2, 89, 91, 5, 10, 6, 2, 90, 88, 3, 2, 2, 2, 90, 89, 3, 2, 2, 2, 91, 109, 3, 2, 2, 2, 92, 94, 7, 9, 2, 2, 93, 92, 3, 2, 2, 2, 94, 95, 3, 2, 2, 2, 95, 93, 3, 2, 2, 2, 95, 96, 3, 2, 2, 2, 96, 99, 3, 2, 2, 2, 97, 100, 5, 30, 16, 2, 98, 100, 5, 10, 6, 2, 99, 97, 3, 2, 2, 2, 99, 98, 3, 2, 2, 2, 100, 104, 3, 2, 2, 2, 101, 103, 7, 9, 2, 2, 102, 101, 3, 2, 2, 2, 103, 106, 3, 2, 2, 2, 104, 102, 3, 2, 2, 2, 104, 105, 3, 2, 2, 2, 105, 108, 3, 2, 2, 2, 106, 104, 3, 2, 2, 2, 107, 93, 3, 2, 2, 2, 108, 111, 3, 2, 2, 2, 109, 107, 3, 2, 2, 2, 109, 110, 3, 2, 2, 2, 110, 113, 3, 2, 2, 2, 111, 109, 3, 2, 2, 2, 112, 90, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 115, 7, 14, 2, 2, 115, 9, 3, 2, 2, 2, 116, 118, 5, 30, 16, 2, 117, 119, 7, 7, 2, 2, 118, 117, 3, 2, 2, 2, 119, 120, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 123, 3, 2, 2, 2, 122, 116, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 122, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 129, 3, 2, 2, 2, 126, 128, 5, 30, 16, 2, 127, 126, 3, 2, 2, 2, 128, 131, 3, 2, 2, 2, 129, 127, 3, 2, 2, 2, 129, 130, 3, 2, 2, 2, 130, 133, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 132, 134, 7, 7, 2, 2, 133, 132, 3, 2, 2, 2, 133, 134, 3, 2, 2, 2, 134, 11, 3, 2, 2, 2, 135, 136, 9, 2, 2, 2, 136, 137, 7, 8, 2, 2, 137, 143, 5, 14, 8, 2, 138, 139, 7, 18, 2, 2, 139, 143, 5, 6, 4, 2, 140, 141, 7, 18, 2, 2, 141, 143, 5, 8, 5, 2, 142, 135, 3, 2, 2, 2, 142, 138, 3, 2, 2, 2, 142, 140, 3, 2, 2, 2, 143, 13, 3, 2, 2, 2, 144, 147, 5, 44, 23, 2, 145, 147, 5, 32, 17, 2, 146, 144, 3, 2, 2, 2, 146, 145, 3, 2, 2, 2, 147, 15, 3, 2, 2, 2, 148, 149, 7, 20, 2, 2, 149, 150, 5, 36, 19, 2, 150, 151, 7, 22, 2, 2, 151, 160, 5, 18, 10, 2, 152, 154, 7, 23, 2, 2, 153, 155, 5, 36, 19, 2, 154, 153, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 156, 3, 2, 2, 2, 156, 157, 7, 22, 2, 2, 157, 159, 5, 18, 10, 2, 158, 152, 3, 2, 2, 2, 159, 162, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 160, 161, 3, 2, 2, 2, 161, 163, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 163, 164, 7, 31, 2, 2, 164, 17, 3, 2, 2, 2, 165, 170, 5, 4, 3, 2, 166, 167, 7, 9, 2, 2, 167, 169, 5, 4, 3, 2, 168, 166, 3, 2, 2, 2, 169, 172, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 19, 3, 2, 2, 2, 172, 170, 3, 2, 2, 2, 173, 174, 7, 20, 2, 2, 174, 175, 5, 36, 19, 2, 175, 176, 7, 22, 2, 2, 176, 185, 5, 22, 12, 2, 177, 179, 7, 23, 2, 2, 178, 180, 5, 36, 19, 2, 179, 178, 3, 2, 2, 2, 179, 180, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 182, 7, 22, 2, 2, 182, 184, 5, 22, 12, 2, 183, 177, 3, 2, 2, 2, 184, 187, 3, 2, 2, 2, 185, 183, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 188, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 188, 189, 7, 31, 2, 2, 189, 21, 3, 2, 2, 2, 190, 192, 5, 24, 13, 2, 191, 190, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 191, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 23, 3, 2, 2, 2, 195, 198, 5, 12, 7, 2, 196, 198, 5, 20, 11, 2, 197, 195, 3, 2, 2, 2, 197, 196, 3, 2, 2, 2, 198, 25, 3, 2, 2, 2, 199, 200, 7, 20, 2, 2, 200, 201, 5, 36, 19, 2, 201, 202, 7, 22, 2, 2, 202, 211, 5, 28, 15, 2, 203, 205, 7, 23, 2, 2, 204, 206, 5, 36, 19, 2, 205, 204, 3, 2, 2, 2, 205, 206, 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 208, 7, 22, 2, 2, 208, 210, 5, 28, 15, 2, 209, 203, 3, 2, 2, 2, 210, 213, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 214, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 214, 215, 7, 31, 2, 2, 215, 27, 3, 2, 2, 2, 216, 218, 5, 30, 16, 2, 217, 216, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 219, 217, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 29, 3, 2, 2, 2, 221, 224, 5, 46, 24, 2, 222, 224, 5, 26, 14, 2, 223, 221, 3, 2, 2, 2, 223, 222, 3, 2, 2, 2, 224, 31, 3, 2, 2, 2, 225, 226, 7, 20, 2, 2, 226, 227, 5, 36, 19, 2, 227, 243, 7, 22, 2, 2, 228, 236, 5, 34, 18, 2, 229, 230, 7, 23, 2, 2, 230, 231, 5, 36, 19, 2, 231, 232, 7, 22, 2, 2, 232, 233, 5, 34, 18, 2, 233, 235, 3, 2, 2, 2, 234, 229, 3, 2, 2, 2, 235, 238, 3, 2, 2, 2, 236, 234, 3, 2, 2, 2, 236, 237, 3, 2, 2, 2, 237, 239, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 239, 240, 7, 23, 2, 2, 240, 241, 7, 22, 2, 2, 241, 242, 5, 34, 18, 2, 242, 244, 3, 2, 2, 2, 243, 228, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 31, 2, 2, 246, 33, 3, 2, 2, 2, 247, 252, 5, 14, 8, 2, 248, 249, 7, 7, 2, 2, 249, 251, 5, 14, 8, 2, 250, 248, 3, 2, 2, 2, 251, 254, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 35, 3, 2, 2, 2, 254, 252, 3, 2, 2, 2, 255, 257, 7, 29, 2, 2, 256, 255, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 257, 260, 3, 2, 2, 2, 258, 261, 5, 40, 21, 2, 259, 261, 5, 42, 22, 2, 260, 258, 3, 2, 2, 2, 260, 259, 3, 2, 2, 2, 261, 272, 3, 2, 2, 2, 262, 264, 9, 3, 2, 2, 263, 265, 7, 29, 2, 2, 264, 263, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 268, 3, 2, 2, 2, 266, 269, 5, 40, 21, 2, 267, 269, 5, 42, 22, 2, 268, 266, 3, 2, 2, 2, 268, 267, 3, 2, 2, 2, 269, 271, 3, 2, 2, 2, 270, 262, 3, 2, 2, 2, 271, 274, 3, 2, 2, 2, 272, 270, 3, 2, 2, 2, 272, 273, 3, 2, 2, 2, 273, 37, 3, 2, 2, 2, 274, 272, 3, 2, 2, 2, 275, 285, 7, 8, 2, 2, 276, 285, 7, 24, 2, 2, 277, 278, 7, 24, 2, 2, 278, 285, 7, 8, 2, 2, 279, 285, 7, 25, 2, 2, 280, 281, 7, 25, 2, 2, 281, 285, 7, 8, 2, 2, 282, 283, 7, 29, 2, 2, 283, 285, 7, 8, 2, 2, 284, 275, 3, 2, 2, 2, 284, 276, 3, 2, 2, 2, 284, 277, 3, 2, 2, 2, 284, 279, 3, 2, 2, 2, 284, 280, 3, 2, 2, 2, 284, 282, 3, 2, 2, 2, 285, 39, 3, 2, 2, 2, 286, 288, 7, 18, 2, 2, 287, 286, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 290, 3, 2, 2, 2, 289, 291, 5, 38, 20, 2, 290, 289, 3, 2, 2, 2, 290, 291, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 297, 5, 44, 23, 2, 293, 294, 7, 23, 2, 2, 294, 296, 5, 44, 23, 2, 295, 293, 3, 2, 2, 2, 296, 299, 3, 2, 2, 2, 297, 295, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 41, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 300, 301, 7, 20, 2, 2, 301, 306, 5, 36, 19, 2, 302, 303, 9, 3, 2, 2, 303, 305, 5, 36, 19, 2, 304, 302, 3, 2, 2, 2, 305, 308, 3, 2, 2, 2, 306, 304, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 309, 3, 2, 2, 2, 308, 306, 3, 2, 2, 2, 309, 310, 7, 31, 2, 2, 310, 43, 3, 2, 2, 2, 311, 317, 5, 6, 4, 2, 312, 317, 5, 8, 5, 2, 313, 317, 5, 10, 6, 2, 314, 317, 5, 12, 7, 2, 315, 317, 5, 48, 25, 2, 316, 311, 3, 2, 2, 2, 316, 312, 3, 2, 2, 2, 316, 313, 3, 2, 2, 2, 316, 314, 3, 2, 2, 2, 316, 315, 3, 2, 2, 2, 317, 45, 3, 2, 2, 2, 318, 323, 5, 6, 4, 2, 319, 323, 5, 12, 7, 2, 320, 323, 5, 8, 5, 2, 321, 323, 5, 48, 25, 2, 322, 318, 3, 2, 2, 2, 322, 319, 3, 2, 2, 2, 322, 320, 3, 2, 2, 2, 322, 321, 3, 2, 2, 2, 323, 47, 3, 2, 2, 2, 324, 325, 9, 4, 2, 2, 325, 49, 3, 2, 2, 2, 47, 51, 58, 62, 64, 72, 80, 83, 90, 95, 99, 104, 109, 112, 120, 124, 129, 133, 142, 146, 154, 160, 170, 179, 185, 193, 197, 205, 211, 219, 223, 236, 243, 252, 256, 260, 264, 268, 272, 284, 287, 290, 297, 306, 316, 322]