@dbml/core 2.3.1 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/lib/export/DbmlExporter.js +11 -6
  2. package/lib/export/MysqlExporter.js +127 -48
  3. package/lib/export/PostgresExporter.js +142 -55
  4. package/lib/export/SqlServerExporter.js +130 -52
  5. package/lib/export/utils.js +40 -0
  6. package/lib/model_structure/database.js +53 -12
  7. package/lib/model_structure/endpoint.js +2 -2
  8. package/lib/model_structure/field.js +31 -1
  9. package/lib/model_structure/ref.js +1 -2
  10. package/lib/model_structure/schema.js +3 -19
  11. package/lib/model_structure/tableGroup.js +1 -1
  12. package/lib/model_structure/utils.js +5 -0
  13. package/lib/parse/dbml/parser.pegjs +74 -24
  14. package/lib/parse/dbmlParser.js +1275 -886
  15. package/lib/parse/mssql/fk_definition/actions.js +10 -3
  16. package/lib/parse/mssql/keyword_parsers.js +12 -1
  17. package/lib/parse/mssql/statements/actions.js +37 -6
  18. package/lib/parse/mssql/statements/index.js +1 -1
  19. package/lib/parse/mssql/statements/statement_types/alter_table/actions.js +11 -5
  20. package/lib/parse/mssql/statements/statement_types/comments/actions.js +57 -0
  21. package/lib/parse/mssql/statements/statement_types/comments/index.js +97 -0
  22. package/lib/parse/mssql/statements/statement_types/create_index/actions.js +6 -1
  23. package/lib/parse/mssql/statements/statement_types/create_table/actions.js +11 -9
  24. package/lib/parse/mssql/statements/statement_types/index.js +4 -1
  25. package/lib/parse/mssql/utils.js +15 -0
  26. package/lib/parse/mysql/parser.pegjs +55 -20
  27. package/lib/parse/mysqlParser.js +479 -308
  28. package/lib/parse/postgresParser.js +15 -14
  29. package/lib/parse/postgresql/Base_rules.pegjs +24 -3
  30. package/lib/parse/postgresql/Commands/Alter_table/Alter_table.pegjs +49 -4
  31. package/lib/parse/postgresql/Commands/Comment.pegjs +18 -6
  32. package/lib/parse/postgresql/Commands/Create_table/Create_table_normal.pegjs +5 -3
  33. package/lib/parse/postgresql/Commands/Create_table/Create_table_of.pegjs +1 -1
  34. package/lib/parse/postgresql/Commands/Create_table/Create_table_partition_of.pegjs +1 -1
  35. package/lib/parse/postgresql/Commands/Create_type/Create_type_enum.pegjs +2 -2
  36. package/lib/parse/postgresql/Commands/Ignore_syntax.pegjs +10 -1
  37. package/lib/parse/postgresql/InitializerUtils.pegjs +14 -2
  38. package/lib/parse/postgresql/Keywords.pegjs +5 -1
  39. package/lib/parse/postgresql/parser.pegjs +22 -8
  40. package/package.json +2 -2
@@ -17,6 +17,12 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
17
17
 
18
18
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
19
 
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
20
26
  var _ = require("lodash"),
21
27
  pluralize = require("pluralize");
22
28
 
@@ -156,7 +162,7 @@ function peg$parse(input, options) {
156
162
  peg$c3 = peg$literalExpectation("(", false),
157
163
  peg$c4 = ")",
158
164
  peg$c5 = peg$literalExpectation(")", false),
159
- peg$c6 = function peg$c6(name, body) {
165
+ peg$c6 = function peg$c6(table_name, body, options) {
160
166
  var fields = body.fields;
161
167
  var indexes = body.indexes;
162
168
  var bodyRefs = body.refs;
@@ -173,7 +179,7 @@ function peg$parse(input, options) {
173
179
  values.push(enumValue);
174
180
  });
175
181
  var _enum = {
176
- name: "".concat(name, "_").concat(field.name, "_enum"),
182
+ name: "".concat(table_name.schemaName ? "".concat(table_name.schemaName, "_") : '').concat(table_name.name, "_").concat(field.name, "_enum"),
177
183
  values: values
178
184
  };
179
185
  enums.push(_enum);
@@ -181,19 +187,20 @@ function peg$parse(input, options) {
181
187
  }
182
188
  });
183
189
  bodyRefs.forEach(function (ref) {
184
- ref.endpoints[0].tableName = name;
190
+ ref.endpoints[0].tableName = table_name.name;
191
+ ref.endpoints[0].schemaName = table_name.schemaName;
185
192
  ref.endpoints[0].relation = '*';
186
193
  refs.push(ref);
187
- }); // return statement
194
+ });
188
195
 
189
- return indexes ? {
190
- name: name,
191
- fields: fields,
192
- indexes: indexes
193
- } : {
194
- name: name,
196
+ var res = _objectSpread(_objectSpread({}, table_name), {}, {
195
197
  fields: fields
196
- };
198
+ });
199
+
200
+ if (options && options.comment) res.note = options.comment;
201
+ if (indexes) res.indexes = indexes; // return statement
202
+
203
+ return res;
197
204
  },
198
205
  peg$c7 = function peg$c7(lines) {
199
206
  // classify lines into pk, fk, unique, index and fields
@@ -302,7 +309,8 @@ function peg$parse(input, options) {
302
309
  fieldNames: fields,
303
310
  relation: "*"
304
311
  }, {
305
- tableName: table2,
312
+ tableName: table2.name,
313
+ schemaName: table2.schemaName,
306
314
  fieldNames: fields2,
307
315
  relation: "1"
308
316
  }]
@@ -624,7 +632,8 @@ function peg$parse(input, options) {
624
632
  }));
625
633
 
626
634
  fks.forEach(function (fk) {
627
- fk.endpoints[0].tableName = table;
635
+ fk.endpoints[0].tableName = table.name;
636
+ fk.endpoints[0].schemaName = table.schemaName;
628
637
  });
629
638
  refs.push.apply(refs, _toConsumableArray(fks));
630
639
 
@@ -634,9 +643,7 @@ function peg$parse(input, options) {
634
643
  return o.pks;
635
644
  }));
636
645
 
637
- var tableAlter = tables.find(function (t) {
638
- return t.name === table;
639
- });
646
+ var tableAlter = findTable(table.schemaName, table.name);
640
647
  var index = {
641
648
  columns: pks.map(function (field) {
642
649
  return {
@@ -708,9 +715,7 @@ function peg$parse(input, options) {
708
715
  if (constraint.toLowerCase() === "unique") index.unique = true;
709
716
  var type = typeInOption || indexType;
710
717
  if (type) index.type = type;
711
- var table = tables.find(function (table) {
712
- return table.name === tableName;
713
- });
718
+ var table = findTable(tableName.schemaName, tableName.name);
714
719
 
715
720
  if (table.indexes) {
716
721
  table.indexes.push(index);
@@ -775,56 +780,56 @@ function peg$parse(input, options) {
775
780
  value: type
776
781
  };
777
782
  },
778
- peg$c199 = "insert",
779
- peg$c200 = peg$literalExpectation("INSERT", true),
780
- peg$c201 = ";",
781
- peg$c202 = peg$literalExpectation(";", false),
782
- peg$c203 = peg$anyExpectation(),
783
- peg$c204 = "create",
784
- peg$c205 = peg$literalExpectation("CREATE", true),
785
- peg$c206 = "schema",
786
- peg$c207 = peg$literalExpectation("SCHEMA", true),
787
- peg$c208 = "database",
788
- peg$c209 = peg$literalExpectation("DATABASE", true),
789
- peg$c210 = "use",
790
- peg$c211 = peg$literalExpectation("USE", true),
791
- peg$c212 = "begin",
792
- peg$c213 = peg$literalExpectation("BEGIN", true),
793
- peg$c214 = "commit",
794
- peg$c215 = peg$literalExpectation("COMMIT", true),
795
- peg$c216 = "rollback",
796
- peg$c217 = peg$literalExpectation("ROLLBACK", true),
797
- peg$c218 = function peg$c218(first, rest) {
783
+ peg$c199 = "alter",
784
+ peg$c200 = peg$literalExpectation("ALTER", true),
785
+ peg$c201 = peg$anyExpectation(),
786
+ peg$c202 = "insert",
787
+ peg$c203 = peg$literalExpectation("INSERT", true),
788
+ peg$c204 = ";",
789
+ peg$c205 = peg$literalExpectation(";", false),
790
+ peg$c206 = "create",
791
+ peg$c207 = peg$literalExpectation("CREATE", true),
792
+ peg$c208 = "schema",
793
+ peg$c209 = peg$literalExpectation("SCHEMA", true),
794
+ peg$c210 = "database",
795
+ peg$c211 = peg$literalExpectation("DATABASE", true),
796
+ peg$c212 = "use",
797
+ peg$c213 = peg$literalExpectation("USE", true),
798
+ peg$c214 = "begin",
799
+ peg$c215 = peg$literalExpectation("BEGIN", true),
800
+ peg$c216 = "commit",
801
+ peg$c217 = peg$literalExpectation("COMMIT", true),
802
+ peg$c218 = "rollback",
803
+ peg$c219 = peg$literalExpectation("ROLLBACK", true),
804
+ peg$c220 = function peg$c220(first, rest) {
798
805
  return [first].concat(_toConsumableArray(rest.map(function (n) {
799
806
  return n[2];
800
807
  })));
801
808
  },
802
- peg$c219 = "COMMENT",
803
- peg$c220 = peg$literalExpectation("COMMENT", false),
804
- peg$c221 = "'",
805
- peg$c222 = peg$literalExpectation("'", false),
806
- peg$c223 = /^[^']/,
807
- peg$c224 = peg$classExpectation(["'"], true, false),
808
- peg$c225 = function peg$c225(comment, c) {
809
+ peg$c221 = "COMMENT",
810
+ peg$c222 = peg$literalExpectation("COMMENT", false),
811
+ peg$c223 = "'",
812
+ peg$c224 = peg$literalExpectation("'", false),
813
+ peg$c225 = /^[^']/,
814
+ peg$c226 = peg$classExpectation(["'"], true, false),
815
+ peg$c227 = function peg$c227(comment, c) {
809
816
  return c.join('');
810
817
  },
811
- peg$c226 = "\"",
812
- peg$c227 = peg$literalExpectation("\"", false),
813
- peg$c228 = /^[^"]/,
814
- peg$c229 = peg$classExpectation(["\""], true, false),
815
- peg$c230 = peg$otherExpectation("CREATE TABLE"),
816
- peg$c231 = "temporary",
817
- peg$c232 = peg$literalExpectation("TEMPORARY", true),
818
- peg$c233 = "table",
819
- peg$c234 = peg$literalExpectation("TABLE", true),
820
- peg$c235 = peg$otherExpectation("IF NOT EXISTS"),
821
- peg$c236 = "if",
822
- peg$c237 = peg$literalExpectation("IF", true),
823
- peg$c238 = "exists",
824
- peg$c239 = peg$literalExpectation("EXISTS", true),
825
- peg$c240 = peg$otherExpectation("ALTER TABLE"),
826
- peg$c241 = "alter",
827
- peg$c242 = peg$literalExpectation("ALTER", true),
818
+ peg$c228 = "\"",
819
+ peg$c229 = peg$literalExpectation("\"", false),
820
+ peg$c230 = /^[^"]/,
821
+ peg$c231 = peg$classExpectation(["\""], true, false),
822
+ peg$c232 = peg$otherExpectation("CREATE TABLE"),
823
+ peg$c233 = "temporary",
824
+ peg$c234 = peg$literalExpectation("TEMPORARY", true),
825
+ peg$c235 = "table",
826
+ peg$c236 = peg$literalExpectation("TABLE", true),
827
+ peg$c237 = peg$otherExpectation("IF NOT EXISTS"),
828
+ peg$c238 = "if",
829
+ peg$c239 = peg$literalExpectation("IF", true),
830
+ peg$c240 = "exists",
831
+ peg$c241 = peg$literalExpectation("EXISTS", true),
832
+ peg$c242 = peg$otherExpectation("ALTER TABLE"),
828
833
  peg$c243 = peg$otherExpectation("CREATE INDEX"),
829
834
  peg$c244 = function peg$c244(type) {
830
835
  return type;
@@ -860,19 +865,40 @@ function peg$parse(input, options) {
860
865
  },
861
866
  peg$c268 = /^[^`]/,
862
867
  peg$c269 = peg$classExpectation(["`"], true, false),
863
- peg$c270 = peg$otherExpectation("valid table name"),
864
- peg$c271 = ".",
865
- peg$c272 = peg$literalExpectation(".", false),
866
- peg$c273 = peg$otherExpectation("type"),
867
- peg$c274 = function peg$c274(c) {
868
+ peg$c270 = ".",
869
+ peg$c271 = peg$literalExpectation(".", false),
870
+ peg$c272 = function peg$c272(names) {
871
+ var dbName = null;
872
+ var schemaName = null;
873
+
874
+ if (names && names.length > 0) {
875
+ if (names.length === 1) schemaName = names[0][0];else {
876
+ dbName = names[0][0];
877
+ schemaName = names[1][0];
878
+ }
879
+ }
880
+
881
+ return {
882
+ dbName: dbName,
883
+ schemaName: schemaName
884
+ };
885
+ },
886
+ peg$c273 = peg$otherExpectation("valid table name"),
887
+ peg$c274 = function peg$c274(pathName, name) {
888
+ return _objectSpread(_objectSpread({}, pathName), {}, {
889
+ name: name
890
+ });
891
+ },
892
+ peg$c275 = peg$otherExpectation("type"),
893
+ peg$c276 = function peg$c276(c) {
868
894
  return c;
869
895
  },
870
- peg$c275 = function peg$c275(c) {
896
+ peg$c277 = function peg$c277(c) {
871
897
  return {
872
898
  type_name: c
873
899
  };
874
900
  },
875
- peg$c276 = function peg$c276(type_name, args) {
901
+ peg$c278 = function peg$c278(type_name, args) {
876
902
  args = args ? args[2] : null;
877
903
 
878
904
  if (type_name.toLowerCase() !== 'enum') {
@@ -884,67 +910,67 @@ function peg$parse(input, options) {
884
910
  args: args
885
911
  };
886
912
  },
887
- peg$c277 = peg$otherExpectation("expression"),
888
- peg$c278 = function peg$c278(factors) {
913
+ peg$c279 = peg$otherExpectation("expression"),
914
+ peg$c280 = function peg$c280(factors) {
889
915
  return removeReduntdantSpNewline(_.flattenDeep(factors).join(""));
890
916
  },
891
- peg$c279 = ",",
892
- peg$c280 = peg$literalExpectation(",", false),
893
- peg$c281 = ");",
894
- peg$c282 = peg$literalExpectation(");", false),
895
- peg$c283 = function peg$c283(factors) {
917
+ peg$c281 = ",",
918
+ peg$c282 = peg$literalExpectation(",", false),
919
+ peg$c283 = ");",
920
+ peg$c284 = peg$literalExpectation(");", false),
921
+ peg$c285 = function peg$c285(factors) {
896
922
  return _.flattenDeep(factors).join("");
897
923
  },
898
- peg$c284 = /^[',.a-z0-9_+-`%]/i,
899
- peg$c285 = peg$classExpectation(["'", ",", ".", ["a", "z"], ["0", "9"], "_", ["+", "`"], "%"], false, true),
900
- peg$c286 = /^['.a-z0-9_+\-]/i,
901
- peg$c287 = peg$classExpectation(["'", ".", ["a", "z"], ["0", "9"], "_", "+", "-"], false, true),
902
- peg$c288 = peg$otherExpectation("letter, number or underscore"),
903
- peg$c289 = /^[a-z0-9_]/i,
904
- peg$c290 = peg$classExpectation([["a", "z"], ["0", "9"], "_"], false, true),
905
- peg$c291 = " ",
906
- peg$c292 = peg$literalExpectation(" ", false),
907
- peg$c293 = "`",
908
- peg$c294 = peg$literalExpectation("`", false),
909
- peg$c295 = "\t",
910
- peg$c296 = peg$literalExpectation("\t", false),
911
- peg$c297 = peg$otherExpectation("endline"),
912
- peg$c298 = peg$otherExpectation("newline"),
913
- peg$c299 = "\r\n",
914
- peg$c300 = peg$literalExpectation("\r\n", false),
915
- peg$c301 = "\n",
916
- peg$c302 = peg$literalExpectation("\n", false),
917
- peg$c303 = peg$otherExpectation("space"),
918
- peg$c304 = peg$otherExpectation("comment"),
919
- peg$c305 = "--",
920
- peg$c306 = peg$literalExpectation("--", false),
921
- peg$c307 = /^[^\n]/,
922
- peg$c308 = peg$classExpectation(["\n"], true, false),
923
- peg$c309 = "/*",
924
- peg$c310 = peg$literalExpectation("/*", false),
925
- peg$c311 = "*/",
926
- peg$c312 = peg$literalExpectation("*/", false),
927
- peg$c313 = peg$otherExpectation("string"),
928
- peg$c314 = function peg$c314(chars) {
924
+ peg$c286 = /^[',.a-z0-9_+-`%]/i,
925
+ peg$c287 = peg$classExpectation(["'", ",", ".", ["a", "z"], ["0", "9"], "_", ["+", "`"], "%"], false, true),
926
+ peg$c288 = /^['.a-z0-9_+\-]/i,
927
+ peg$c289 = peg$classExpectation(["'", ".", ["a", "z"], ["0", "9"], "_", "+", "-"], false, true),
928
+ peg$c290 = peg$otherExpectation("letter, number or underscore"),
929
+ peg$c291 = /^[a-z0-9_]/i,
930
+ peg$c292 = peg$classExpectation([["a", "z"], ["0", "9"], "_"], false, true),
931
+ peg$c293 = " ",
932
+ peg$c294 = peg$literalExpectation(" ", false),
933
+ peg$c295 = "`",
934
+ peg$c296 = peg$literalExpectation("`", false),
935
+ peg$c297 = "\t",
936
+ peg$c298 = peg$literalExpectation("\t", false),
937
+ peg$c299 = peg$otherExpectation("endline"),
938
+ peg$c300 = peg$otherExpectation("newline"),
939
+ peg$c301 = "\r\n",
940
+ peg$c302 = peg$literalExpectation("\r\n", false),
941
+ peg$c303 = "\n",
942
+ peg$c304 = peg$literalExpectation("\n", false),
943
+ peg$c305 = peg$otherExpectation("space"),
944
+ peg$c306 = peg$otherExpectation("comment"),
945
+ peg$c307 = "--",
946
+ peg$c308 = peg$literalExpectation("--", false),
947
+ peg$c309 = /^[^\n]/,
948
+ peg$c310 = peg$classExpectation(["\n"], true, false),
949
+ peg$c311 = "/*",
950
+ peg$c312 = peg$literalExpectation("/*", false),
951
+ peg$c313 = "*/",
952
+ peg$c314 = peg$literalExpectation("*/", false),
953
+ peg$c315 = peg$otherExpectation("string"),
954
+ peg$c316 = function peg$c316(chars) {
929
955
  return chars.join('');
930
956
  },
931
- peg$c315 = "\\",
932
- peg$c316 = peg$literalExpectation("\\", false),
933
- peg$c317 = function peg$c317() {
957
+ peg$c317 = "\\",
958
+ peg$c318 = peg$literalExpectation("\\", false),
959
+ peg$c319 = function peg$c319() {
934
960
  return '"';
935
961
  },
936
- peg$c318 = function peg$c318() {
962
+ peg$c320 = function peg$c320() {
937
963
  return text();
938
964
  },
939
- peg$c319 = function peg$c319() {
965
+ peg$c321 = function peg$c321() {
940
966
  return "'";
941
967
  },
942
- peg$c320 = /^[0-9]/,
943
- peg$c321 = peg$classExpectation([["0", "9"]], false, false),
944
- peg$c322 = function peg$c322(left, right) {
968
+ peg$c322 = /^[0-9]/,
969
+ peg$c323 = peg$classExpectation([["0", "9"]], false, false),
970
+ peg$c324 = function peg$c324(left, right) {
945
971
  return parseFloat(left.join("") + "." + right.join(""));
946
972
  },
947
- peg$c323 = function peg$c323(digits) {
973
+ peg$c325 = function peg$c325(digits) {
948
974
  return parseInt(digits.join(""), 10);
949
975
  },
950
976
  peg$currPos = 0,
@@ -1239,7 +1265,7 @@ function peg$parse(input, options) {
1239
1265
 
1240
1266
  if (s15 !== peg$FAILED) {
1241
1267
  peg$savedPos = s0;
1242
- s1 = peg$c6(s4, s8);
1268
+ s1 = peg$c6(s4, s8, s12);
1243
1269
  s0 = s1;
1244
1270
  } else {
1245
1271
  peg$currPos = s0;
@@ -5234,7 +5260,7 @@ function peg$parse(input, options) {
5234
5260
  s2 = peg$parse_();
5235
5261
 
5236
5262
  if (s2 !== peg$FAILED) {
5237
- s3 = peg$parsename();
5263
+ s3 = peg$parsetable_name();
5238
5264
 
5239
5265
  if (s3 !== peg$FAILED) {
5240
5266
  s4 = peg$parse_();
@@ -5788,7 +5814,7 @@ function peg$parse(input, options) {
5788
5814
  s6 = peg$parse_();
5789
5815
 
5790
5816
  if (s6 !== peg$FAILED) {
5791
- s7 = peg$parsename();
5817
+ s7 = peg$parsetable_name();
5792
5818
 
5793
5819
  if (s7 !== peg$FAILED) {
5794
5820
  s8 = peg$parse_();
@@ -6558,7 +6584,7 @@ function peg$parse(input, options) {
6558
6584
  }
6559
6585
 
6560
6586
  function peg$parseIgnoreSyntax() {
6561
- var s0, s1, s2, s3;
6587
+ var s0, s1, s2, s3, s4, s5, s6, s7;
6562
6588
  s0 = peg$currPos;
6563
6589
  s1 = peg$parseInsertSyntax();
6564
6590
 
@@ -6582,6 +6608,127 @@ function peg$parse(input, options) {
6582
6608
 
6583
6609
  if (s1 === peg$FAILED) {
6584
6610
  s1 = peg$parseRollbackSyntax();
6611
+
6612
+ if (s1 === peg$FAILED) {
6613
+ s1 = peg$currPos;
6614
+
6615
+ if (input.substr(peg$currPos, 5).toLowerCase() === peg$c199) {
6616
+ s2 = input.substr(peg$currPos, 5);
6617
+ peg$currPos += 5;
6618
+ } else {
6619
+ s2 = peg$FAILED;
6620
+
6621
+ if (peg$silentFails === 0) {
6622
+ peg$fail(peg$c200);
6623
+ }
6624
+ }
6625
+
6626
+ if (s2 !== peg$FAILED) {
6627
+ s3 = peg$parse_();
6628
+
6629
+ if (s3 !== peg$FAILED) {
6630
+ s4 = [];
6631
+ s5 = peg$parsecomment();
6632
+
6633
+ if (s5 === peg$FAILED) {
6634
+ s5 = peg$currPos;
6635
+ s6 = peg$currPos;
6636
+ peg$silentFails++;
6637
+ s7 = peg$parsesemicolon();
6638
+ peg$silentFails--;
6639
+
6640
+ if (s7 === peg$FAILED) {
6641
+ s6 = void 0;
6642
+ } else {
6643
+ peg$currPos = s6;
6644
+ s6 = peg$FAILED;
6645
+ }
6646
+
6647
+ if (s6 !== peg$FAILED) {
6648
+ if (input.length > peg$currPos) {
6649
+ s7 = input.charAt(peg$currPos);
6650
+ peg$currPos++;
6651
+ } else {
6652
+ s7 = peg$FAILED;
6653
+
6654
+ if (peg$silentFails === 0) {
6655
+ peg$fail(peg$c201);
6656
+ }
6657
+ }
6658
+
6659
+ if (s7 !== peg$FAILED) {
6660
+ s6 = [s6, s7];
6661
+ s5 = s6;
6662
+ } else {
6663
+ peg$currPos = s5;
6664
+ s5 = peg$FAILED;
6665
+ }
6666
+ } else {
6667
+ peg$currPos = s5;
6668
+ s5 = peg$FAILED;
6669
+ }
6670
+ }
6671
+
6672
+ while (s5 !== peg$FAILED) {
6673
+ s4.push(s5);
6674
+ s5 = peg$parsecomment();
6675
+
6676
+ if (s5 === peg$FAILED) {
6677
+ s5 = peg$currPos;
6678
+ s6 = peg$currPos;
6679
+ peg$silentFails++;
6680
+ s7 = peg$parsesemicolon();
6681
+ peg$silentFails--;
6682
+
6683
+ if (s7 === peg$FAILED) {
6684
+ s6 = void 0;
6685
+ } else {
6686
+ peg$currPos = s6;
6687
+ s6 = peg$FAILED;
6688
+ }
6689
+
6690
+ if (s6 !== peg$FAILED) {
6691
+ if (input.length > peg$currPos) {
6692
+ s7 = input.charAt(peg$currPos);
6693
+ peg$currPos++;
6694
+ } else {
6695
+ s7 = peg$FAILED;
6696
+
6697
+ if (peg$silentFails === 0) {
6698
+ peg$fail(peg$c201);
6699
+ }
6700
+ }
6701
+
6702
+ if (s7 !== peg$FAILED) {
6703
+ s6 = [s6, s7];
6704
+ s5 = s6;
6705
+ } else {
6706
+ peg$currPos = s5;
6707
+ s5 = peg$FAILED;
6708
+ }
6709
+ } else {
6710
+ peg$currPos = s5;
6711
+ s5 = peg$FAILED;
6712
+ }
6713
+ }
6714
+ }
6715
+
6716
+ if (s4 !== peg$FAILED) {
6717
+ s2 = [s2, s3, s4];
6718
+ s1 = s2;
6719
+ } else {
6720
+ peg$currPos = s1;
6721
+ s1 = peg$FAILED;
6722
+ }
6723
+ } else {
6724
+ peg$currPos = s1;
6725
+ s1 = peg$FAILED;
6726
+ }
6727
+ } else {
6728
+ peg$currPos = s1;
6729
+ s1 = peg$FAILED;
6730
+ }
6731
+ }
6585
6732
  }
6586
6733
  }
6587
6734
  }
@@ -6625,14 +6772,14 @@ function peg$parse(input, options) {
6625
6772
  s1 = peg$parse_();
6626
6773
 
6627
6774
  if (s1 !== peg$FAILED) {
6628
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c199) {
6775
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c202) {
6629
6776
  s2 = input.substr(peg$currPos, 6);
6630
6777
  peg$currPos += 6;
6631
6778
  } else {
6632
6779
  s2 = peg$FAILED;
6633
6780
 
6634
6781
  if (peg$silentFails === 0) {
6635
- peg$fail(peg$c200);
6782
+ peg$fail(peg$c203);
6636
6783
  }
6637
6784
  }
6638
6785
 
@@ -6659,13 +6806,13 @@ function peg$parse(input, options) {
6659
6806
 
6660
6807
  if (s8 !== peg$FAILED) {
6661
6808
  if (input.charCodeAt(peg$currPos) === 59) {
6662
- s9 = peg$c201;
6809
+ s9 = peg$c204;
6663
6810
  peg$currPos++;
6664
6811
  } else {
6665
6812
  s9 = peg$FAILED;
6666
6813
 
6667
6814
  if (peg$silentFails === 0) {
6668
- peg$fail(peg$c202);
6815
+ peg$fail(peg$c205);
6669
6816
  }
6670
6817
  }
6671
6818
 
@@ -6702,7 +6849,7 @@ function peg$parse(input, options) {
6702
6849
  s6 = peg$FAILED;
6703
6850
 
6704
6851
  if (peg$silentFails === 0) {
6705
- peg$fail(peg$c203);
6852
+ peg$fail(peg$c201);
6706
6853
  }
6707
6854
  }
6708
6855
 
@@ -6741,13 +6888,13 @@ function peg$parse(input, options) {
6741
6888
 
6742
6889
  if (s8 !== peg$FAILED) {
6743
6890
  if (input.charCodeAt(peg$currPos) === 59) {
6744
- s9 = peg$c201;
6891
+ s9 = peg$c204;
6745
6892
  peg$currPos++;
6746
6893
  } else {
6747
6894
  s9 = peg$FAILED;
6748
6895
 
6749
6896
  if (peg$silentFails === 0) {
6750
- peg$fail(peg$c202);
6897
+ peg$fail(peg$c205);
6751
6898
  }
6752
6899
  }
6753
6900
 
@@ -6784,7 +6931,7 @@ function peg$parse(input, options) {
6784
6931
  s6 = peg$FAILED;
6785
6932
 
6786
6933
  if (peg$silentFails === 0) {
6787
- peg$fail(peg$c203);
6934
+ peg$fail(peg$c201);
6788
6935
  }
6789
6936
  }
6790
6937
 
@@ -6907,14 +7054,14 @@ function peg$parse(input, options) {
6907
7054
  s1 = peg$parse_();
6908
7055
 
6909
7056
  if (s1 !== peg$FAILED) {
6910
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c204) {
7057
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c206) {
6911
7058
  s2 = input.substr(peg$currPos, 6);
6912
7059
  peg$currPos += 6;
6913
7060
  } else {
6914
7061
  s2 = peg$FAILED;
6915
7062
 
6916
7063
  if (peg$silentFails === 0) {
6917
- peg$fail(peg$c205);
7064
+ peg$fail(peg$c207);
6918
7065
  }
6919
7066
  }
6920
7067
 
@@ -6922,26 +7069,26 @@ function peg$parse(input, options) {
6922
7069
  s3 = peg$parse_();
6923
7070
 
6924
7071
  if (s3 !== peg$FAILED) {
6925
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c206) {
7072
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c208) {
6926
7073
  s4 = input.substr(peg$currPos, 6);
6927
7074
  peg$currPos += 6;
6928
7075
  } else {
6929
7076
  s4 = peg$FAILED;
6930
7077
 
6931
7078
  if (peg$silentFails === 0) {
6932
- peg$fail(peg$c207);
7079
+ peg$fail(peg$c209);
6933
7080
  }
6934
7081
  }
6935
7082
 
6936
7083
  if (s4 === peg$FAILED) {
6937
- if (input.substr(peg$currPos, 8).toLowerCase() === peg$c208) {
7084
+ if (input.substr(peg$currPos, 8).toLowerCase() === peg$c210) {
6938
7085
  s4 = input.substr(peg$currPos, 8);
6939
7086
  peg$currPos += 8;
6940
7087
  } else {
6941
7088
  s4 = peg$FAILED;
6942
7089
 
6943
7090
  if (peg$silentFails === 0) {
6944
- peg$fail(peg$c209);
7091
+ peg$fail(peg$c211);
6945
7092
  }
6946
7093
  }
6947
7094
  }
@@ -7073,14 +7220,14 @@ function peg$parse(input, options) {
7073
7220
  s1 = peg$parse_();
7074
7221
 
7075
7222
  if (s1 !== peg$FAILED) {
7076
- if (input.substr(peg$currPos, 3).toLowerCase() === peg$c210) {
7223
+ if (input.substr(peg$currPos, 3).toLowerCase() === peg$c212) {
7077
7224
  s2 = input.substr(peg$currPos, 3);
7078
7225
  peg$currPos += 3;
7079
7226
  } else {
7080
7227
  s2 = peg$FAILED;
7081
7228
 
7082
7229
  if (peg$silentFails === 0) {
7083
- peg$fail(peg$c211);
7230
+ peg$fail(peg$c213);
7084
7231
  }
7085
7232
  }
7086
7233
 
@@ -7138,14 +7285,14 @@ function peg$parse(input, options) {
7138
7285
  s1 = peg$parse_();
7139
7286
 
7140
7287
  if (s1 !== peg$FAILED) {
7141
- if (input.substr(peg$currPos, 5).toLowerCase() === peg$c212) {
7288
+ if (input.substr(peg$currPos, 5).toLowerCase() === peg$c214) {
7142
7289
  s2 = input.substr(peg$currPos, 5);
7143
7290
  peg$currPos += 5;
7144
7291
  } else {
7145
7292
  s2 = peg$FAILED;
7146
7293
 
7147
7294
  if (peg$silentFails === 0) {
7148
- peg$fail(peg$c213);
7295
+ peg$fail(peg$c215);
7149
7296
  }
7150
7297
  }
7151
7298
 
@@ -7203,14 +7350,14 @@ function peg$parse(input, options) {
7203
7350
  s1 = peg$parse_();
7204
7351
 
7205
7352
  if (s1 !== peg$FAILED) {
7206
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c214) {
7353
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c216) {
7207
7354
  s2 = input.substr(peg$currPos, 6);
7208
7355
  peg$currPos += 6;
7209
7356
  } else {
7210
7357
  s2 = peg$FAILED;
7211
7358
 
7212
7359
  if (peg$silentFails === 0) {
7213
- peg$fail(peg$c215);
7360
+ peg$fail(peg$c217);
7214
7361
  }
7215
7362
  }
7216
7363
 
@@ -7268,14 +7415,14 @@ function peg$parse(input, options) {
7268
7415
  s1 = peg$parse_();
7269
7416
 
7270
7417
  if (s1 !== peg$FAILED) {
7271
- if (input.substr(peg$currPos, 8).toLowerCase() === peg$c216) {
7418
+ if (input.substr(peg$currPos, 8).toLowerCase() === peg$c218) {
7272
7419
  s2 = input.substr(peg$currPos, 8);
7273
7420
  peg$currPos += 8;
7274
7421
  } else {
7275
7422
  s2 = peg$FAILED;
7276
7423
 
7277
7424
  if (peg$silentFails === 0) {
7278
- peg$fail(peg$c217);
7425
+ peg$fail(peg$c219);
7279
7426
  }
7280
7427
  }
7281
7428
 
@@ -7389,7 +7536,7 @@ function peg$parse(input, options) {
7389
7536
 
7390
7537
  if (s2 !== peg$FAILED) {
7391
7538
  peg$savedPos = s0;
7392
- s1 = peg$c218(s1, s2);
7539
+ s1 = peg$c220(s1, s2);
7393
7540
  s0 = s1;
7394
7541
  } else {
7395
7542
  peg$currPos = s0;
@@ -7407,14 +7554,14 @@ function peg$parse(input, options) {
7407
7554
  var s0, s1, s2, s3, s4, s5, s6;
7408
7555
  s0 = peg$currPos;
7409
7556
 
7410
- if (input.substr(peg$currPos, 7) === peg$c219) {
7411
- s1 = peg$c219;
7557
+ if (input.substr(peg$currPos, 7) === peg$c221) {
7558
+ s1 = peg$c221;
7412
7559
  peg$currPos += 7;
7413
7560
  } else {
7414
7561
  s1 = peg$FAILED;
7415
7562
 
7416
7563
  if (peg$silentFails === 0) {
7417
- peg$fail(peg$c220);
7564
+ peg$fail(peg$c222);
7418
7565
  }
7419
7566
  }
7420
7567
 
@@ -7456,60 +7603,60 @@ function peg$parse(input, options) {
7456
7603
 
7457
7604
  if (s3 !== peg$FAILED) {
7458
7605
  if (input.charCodeAt(peg$currPos) === 39) {
7459
- s4 = peg$c221;
7606
+ s4 = peg$c223;
7460
7607
  peg$currPos++;
7461
7608
  } else {
7462
7609
  s4 = peg$FAILED;
7463
7610
 
7464
7611
  if (peg$silentFails === 0) {
7465
- peg$fail(peg$c222);
7612
+ peg$fail(peg$c224);
7466
7613
  }
7467
7614
  }
7468
7615
 
7469
7616
  if (s4 !== peg$FAILED) {
7470
7617
  s5 = [];
7471
7618
 
7472
- if (peg$c223.test(input.charAt(peg$currPos))) {
7619
+ if (peg$c225.test(input.charAt(peg$currPos))) {
7473
7620
  s6 = input.charAt(peg$currPos);
7474
7621
  peg$currPos++;
7475
7622
  } else {
7476
7623
  s6 = peg$FAILED;
7477
7624
 
7478
7625
  if (peg$silentFails === 0) {
7479
- peg$fail(peg$c224);
7626
+ peg$fail(peg$c226);
7480
7627
  }
7481
7628
  }
7482
7629
 
7483
7630
  while (s6 !== peg$FAILED) {
7484
7631
  s5.push(s6);
7485
7632
 
7486
- if (peg$c223.test(input.charAt(peg$currPos))) {
7633
+ if (peg$c225.test(input.charAt(peg$currPos))) {
7487
7634
  s6 = input.charAt(peg$currPos);
7488
7635
  peg$currPos++;
7489
7636
  } else {
7490
7637
  s6 = peg$FAILED;
7491
7638
 
7492
7639
  if (peg$silentFails === 0) {
7493
- peg$fail(peg$c224);
7640
+ peg$fail(peg$c226);
7494
7641
  }
7495
7642
  }
7496
7643
  }
7497
7644
 
7498
7645
  if (s5 !== peg$FAILED) {
7499
7646
  if (input.charCodeAt(peg$currPos) === 39) {
7500
- s6 = peg$c221;
7647
+ s6 = peg$c223;
7501
7648
  peg$currPos++;
7502
7649
  } else {
7503
7650
  s6 = peg$FAILED;
7504
7651
 
7505
7652
  if (peg$silentFails === 0) {
7506
- peg$fail(peg$c222);
7653
+ peg$fail(peg$c224);
7507
7654
  }
7508
7655
  }
7509
7656
 
7510
7657
  if (s6 !== peg$FAILED) {
7511
7658
  peg$savedPos = s0;
7512
- s1 = peg$c225(s4, s5);
7659
+ s1 = peg$c227(s4, s5);
7513
7660
  s0 = s1;
7514
7661
  } else {
7515
7662
  peg$currPos = s0;
@@ -7539,14 +7686,14 @@ function peg$parse(input, options) {
7539
7686
  if (s0 === peg$FAILED) {
7540
7687
  s0 = peg$currPos;
7541
7688
 
7542
- if (input.substr(peg$currPos, 7) === peg$c219) {
7543
- s1 = peg$c219;
7689
+ if (input.substr(peg$currPos, 7) === peg$c221) {
7690
+ s1 = peg$c221;
7544
7691
  peg$currPos += 7;
7545
7692
  } else {
7546
7693
  s1 = peg$FAILED;
7547
7694
 
7548
7695
  if (peg$silentFails === 0) {
7549
- peg$fail(peg$c220);
7696
+ peg$fail(peg$c222);
7550
7697
  }
7551
7698
  }
7552
7699
 
@@ -7588,60 +7735,60 @@ function peg$parse(input, options) {
7588
7735
 
7589
7736
  if (s3 !== peg$FAILED) {
7590
7737
  if (input.charCodeAt(peg$currPos) === 34) {
7591
- s4 = peg$c226;
7738
+ s4 = peg$c228;
7592
7739
  peg$currPos++;
7593
7740
  } else {
7594
7741
  s4 = peg$FAILED;
7595
7742
 
7596
7743
  if (peg$silentFails === 0) {
7597
- peg$fail(peg$c227);
7744
+ peg$fail(peg$c229);
7598
7745
  }
7599
7746
  }
7600
7747
 
7601
7748
  if (s4 !== peg$FAILED) {
7602
7749
  s5 = [];
7603
7750
 
7604
- if (peg$c228.test(input.charAt(peg$currPos))) {
7751
+ if (peg$c230.test(input.charAt(peg$currPos))) {
7605
7752
  s6 = input.charAt(peg$currPos);
7606
7753
  peg$currPos++;
7607
7754
  } else {
7608
7755
  s6 = peg$FAILED;
7609
7756
 
7610
7757
  if (peg$silentFails === 0) {
7611
- peg$fail(peg$c229);
7758
+ peg$fail(peg$c231);
7612
7759
  }
7613
7760
  }
7614
7761
 
7615
7762
  while (s6 !== peg$FAILED) {
7616
7763
  s5.push(s6);
7617
7764
 
7618
- if (peg$c228.test(input.charAt(peg$currPos))) {
7765
+ if (peg$c230.test(input.charAt(peg$currPos))) {
7619
7766
  s6 = input.charAt(peg$currPos);
7620
7767
  peg$currPos++;
7621
7768
  } else {
7622
7769
  s6 = peg$FAILED;
7623
7770
 
7624
7771
  if (peg$silentFails === 0) {
7625
- peg$fail(peg$c229);
7772
+ peg$fail(peg$c231);
7626
7773
  }
7627
7774
  }
7628
7775
  }
7629
7776
 
7630
7777
  if (s5 !== peg$FAILED) {
7631
7778
  if (input.charCodeAt(peg$currPos) === 34) {
7632
- s6 = peg$c226;
7779
+ s6 = peg$c228;
7633
7780
  peg$currPos++;
7634
7781
  } else {
7635
7782
  s6 = peg$FAILED;
7636
7783
 
7637
7784
  if (peg$silentFails === 0) {
7638
- peg$fail(peg$c227);
7785
+ peg$fail(peg$c229);
7639
7786
  }
7640
7787
  }
7641
7788
 
7642
7789
  if (s6 !== peg$FAILED) {
7643
7790
  peg$savedPos = s0;
7644
- s1 = peg$c225(s4, s5);
7791
+ s1 = peg$c227(s4, s5);
7645
7792
  s0 = s1;
7646
7793
  } else {
7647
7794
  peg$currPos = s0;
@@ -7677,14 +7824,14 @@ function peg$parse(input, options) {
7677
7824
  peg$silentFails++;
7678
7825
  s0 = peg$currPos;
7679
7826
 
7680
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c204) {
7827
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c206) {
7681
7828
  s1 = input.substr(peg$currPos, 6);
7682
7829
  peg$currPos += 6;
7683
7830
  } else {
7684
7831
  s1 = peg$FAILED;
7685
7832
 
7686
7833
  if (peg$silentFails === 0) {
7687
- peg$fail(peg$c205);
7834
+ peg$fail(peg$c207);
7688
7835
  }
7689
7836
  }
7690
7837
 
@@ -7692,14 +7839,14 @@ function peg$parse(input, options) {
7692
7839
  s2 = peg$parse_();
7693
7840
 
7694
7841
  if (s2 !== peg$FAILED) {
7695
- if (input.substr(peg$currPos, 9).toLowerCase() === peg$c231) {
7842
+ if (input.substr(peg$currPos, 9).toLowerCase() === peg$c233) {
7696
7843
  s3 = input.substr(peg$currPos, 9);
7697
7844
  peg$currPos += 9;
7698
7845
  } else {
7699
7846
  s3 = peg$FAILED;
7700
7847
 
7701
7848
  if (peg$silentFails === 0) {
7702
- peg$fail(peg$c232);
7849
+ peg$fail(peg$c234);
7703
7850
  }
7704
7851
  }
7705
7852
 
@@ -7711,14 +7858,14 @@ function peg$parse(input, options) {
7711
7858
  s4 = peg$parse_();
7712
7859
 
7713
7860
  if (s4 !== peg$FAILED) {
7714
- if (input.substr(peg$currPos, 5).toLowerCase() === peg$c233) {
7861
+ if (input.substr(peg$currPos, 5).toLowerCase() === peg$c235) {
7715
7862
  s5 = input.substr(peg$currPos, 5);
7716
7863
  peg$currPos += 5;
7717
7864
  } else {
7718
7865
  s5 = peg$FAILED;
7719
7866
 
7720
7867
  if (peg$silentFails === 0) {
7721
- peg$fail(peg$c234);
7868
+ peg$fail(peg$c236);
7722
7869
  }
7723
7870
  }
7724
7871
 
@@ -7752,7 +7899,7 @@ function peg$parse(input, options) {
7752
7899
  s1 = peg$FAILED;
7753
7900
 
7754
7901
  if (peg$silentFails === 0) {
7755
- peg$fail(peg$c230);
7902
+ peg$fail(peg$c232);
7756
7903
  }
7757
7904
  }
7758
7905
 
@@ -7764,14 +7911,14 @@ function peg$parse(input, options) {
7764
7911
  peg$silentFails++;
7765
7912
  s0 = peg$currPos;
7766
7913
 
7767
- if (input.substr(peg$currPos, 2).toLowerCase() === peg$c236) {
7914
+ if (input.substr(peg$currPos, 2).toLowerCase() === peg$c238) {
7768
7915
  s1 = input.substr(peg$currPos, 2);
7769
7916
  peg$currPos += 2;
7770
7917
  } else {
7771
7918
  s1 = peg$FAILED;
7772
7919
 
7773
7920
  if (peg$silentFails === 0) {
7774
- peg$fail(peg$c237);
7921
+ peg$fail(peg$c239);
7775
7922
  }
7776
7923
  }
7777
7924
 
@@ -7794,14 +7941,14 @@ function peg$parse(input, options) {
7794
7941
  s4 = peg$parse_();
7795
7942
 
7796
7943
  if (s4 !== peg$FAILED) {
7797
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c238) {
7944
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c240) {
7798
7945
  s5 = input.substr(peg$currPos, 6);
7799
7946
  peg$currPos += 6;
7800
7947
  } else {
7801
7948
  s5 = peg$FAILED;
7802
7949
 
7803
7950
  if (peg$silentFails === 0) {
7804
- peg$fail(peg$c239);
7951
+ peg$fail(peg$c241);
7805
7952
  }
7806
7953
  }
7807
7954
 
@@ -7835,7 +7982,7 @@ function peg$parse(input, options) {
7835
7982
  s1 = peg$FAILED;
7836
7983
 
7837
7984
  if (peg$silentFails === 0) {
7838
- peg$fail(peg$c235);
7985
+ peg$fail(peg$c237);
7839
7986
  }
7840
7987
  }
7841
7988
 
@@ -7847,14 +7994,14 @@ function peg$parse(input, options) {
7847
7994
  peg$silentFails++;
7848
7995
  s0 = peg$currPos;
7849
7996
 
7850
- if (input.substr(peg$currPos, 5).toLowerCase() === peg$c241) {
7997
+ if (input.substr(peg$currPos, 5).toLowerCase() === peg$c199) {
7851
7998
  s1 = input.substr(peg$currPos, 5);
7852
7999
  peg$currPos += 5;
7853
8000
  } else {
7854
8001
  s1 = peg$FAILED;
7855
8002
 
7856
8003
  if (peg$silentFails === 0) {
7857
- peg$fail(peg$c242);
8004
+ peg$fail(peg$c200);
7858
8005
  }
7859
8006
  }
7860
8007
 
@@ -7862,14 +8009,14 @@ function peg$parse(input, options) {
7862
8009
  s2 = peg$parse_();
7863
8010
 
7864
8011
  if (s2 !== peg$FAILED) {
7865
- if (input.substr(peg$currPos, 5).toLowerCase() === peg$c233) {
8012
+ if (input.substr(peg$currPos, 5).toLowerCase() === peg$c235) {
7866
8013
  s3 = input.substr(peg$currPos, 5);
7867
8014
  peg$currPos += 5;
7868
8015
  } else {
7869
8016
  s3 = peg$FAILED;
7870
8017
 
7871
8018
  if (peg$silentFails === 0) {
7872
- peg$fail(peg$c234);
8019
+ peg$fail(peg$c236);
7873
8020
  }
7874
8021
  }
7875
8022
 
@@ -7895,7 +8042,7 @@ function peg$parse(input, options) {
7895
8042
  s1 = peg$FAILED;
7896
8043
 
7897
8044
  if (peg$silentFails === 0) {
7898
- peg$fail(peg$c240);
8045
+ peg$fail(peg$c242);
7899
8046
  }
7900
8047
  }
7901
8048
 
@@ -7907,14 +8054,14 @@ function peg$parse(input, options) {
7907
8054
  peg$silentFails++;
7908
8055
  s0 = peg$currPos;
7909
8056
 
7910
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c204) {
8057
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c206) {
7911
8058
  s1 = input.substr(peg$currPos, 6);
7912
8059
  peg$currPos += 6;
7913
8060
  } else {
7914
8061
  s1 = peg$FAILED;
7915
8062
 
7916
8063
  if (peg$silentFails === 0) {
7917
- peg$fail(peg$c205);
8064
+ peg$fail(peg$c207);
7918
8065
  }
7919
8066
  }
7920
8067
 
@@ -7967,14 +8114,14 @@ function peg$parse(input, options) {
7967
8114
  if (s0 === peg$FAILED) {
7968
8115
  s0 = peg$currPos;
7969
8116
 
7970
- if (input.substr(peg$currPos, 6).toLowerCase() === peg$c204) {
8117
+ if (input.substr(peg$currPos, 6).toLowerCase() === peg$c206) {
7971
8118
  s1 = input.substr(peg$currPos, 6);
7972
8119
  peg$currPos += 6;
7973
8120
  } else {
7974
8121
  s1 = peg$FAILED;
7975
8122
 
7976
8123
  if (peg$silentFails === 0) {
7977
- peg$fail(peg$c205);
8124
+ peg$fail(peg$c207);
7978
8125
  }
7979
8126
  }
7980
8127
 
@@ -8499,9 +8646,8 @@ function peg$parse(input, options) {
8499
8646
  return s0;
8500
8647
  }
8501
8648
 
8502
- function peg$parsetable_name() {
8649
+ function peg$parsepath_name() {
8503
8650
  var s0, s1, s2, s3, s4, s5, s6;
8504
- peg$silentFails++;
8505
8651
  s0 = peg$currPos;
8506
8652
  s1 = [];
8507
8653
  s2 = peg$currPos;
@@ -8512,13 +8658,13 @@ function peg$parse(input, options) {
8512
8658
 
8513
8659
  if (s4 !== peg$FAILED) {
8514
8660
  if (input.charCodeAt(peg$currPos) === 46) {
8515
- s5 = peg$c271;
8661
+ s5 = peg$c270;
8516
8662
  peg$currPos++;
8517
8663
  } else {
8518
8664
  s5 = peg$FAILED;
8519
8665
 
8520
8666
  if (peg$silentFails === 0) {
8521
- peg$fail(peg$c272);
8667
+ peg$fail(peg$c271);
8522
8668
  }
8523
8669
  }
8524
8670
 
@@ -8555,13 +8701,13 @@ function peg$parse(input, options) {
8555
8701
 
8556
8702
  if (s4 !== peg$FAILED) {
8557
8703
  if (input.charCodeAt(peg$currPos) === 46) {
8558
- s5 = peg$c271;
8704
+ s5 = peg$c270;
8559
8705
  peg$currPos++;
8560
8706
  } else {
8561
8707
  s5 = peg$FAILED;
8562
8708
 
8563
8709
  if (peg$silentFails === 0) {
8564
- peg$fail(peg$c272);
8710
+ peg$fail(peg$c271);
8565
8711
  }
8566
8712
  }
8567
8713
 
@@ -8589,12 +8735,27 @@ function peg$parse(input, options) {
8589
8735
  }
8590
8736
  }
8591
8737
 
8738
+ if (s1 !== peg$FAILED) {
8739
+ peg$savedPos = s0;
8740
+ s1 = peg$c272(s1);
8741
+ }
8742
+
8743
+ s0 = s1;
8744
+ return s0;
8745
+ }
8746
+
8747
+ function peg$parsetable_name() {
8748
+ var s0, s1, s2;
8749
+ peg$silentFails++;
8750
+ s0 = peg$currPos;
8751
+ s1 = peg$parsepath_name();
8752
+
8592
8753
  if (s1 !== peg$FAILED) {
8593
8754
  s2 = peg$parsename();
8594
8755
 
8595
8756
  if (s2 !== peg$FAILED) {
8596
8757
  peg$savedPos = s0;
8597
- s1 = peg$c28(s2);
8758
+ s1 = peg$c274(s1, s2);
8598
8759
  s0 = s1;
8599
8760
  } else {
8600
8761
  peg$currPos = s0;
@@ -8611,7 +8772,7 @@ function peg$parse(input, options) {
8611
8772
  s1 = peg$FAILED;
8612
8773
 
8613
8774
  if (peg$silentFails === 0) {
8614
- peg$fail(peg$c270);
8775
+ peg$fail(peg$c273);
8615
8776
  }
8616
8777
  }
8617
8778
 
@@ -8626,7 +8787,7 @@ function peg$parse(input, options) {
8626
8787
 
8627
8788
  if (s1 !== peg$FAILED) {
8628
8789
  peg$savedPos = s0;
8629
- s1 = peg$c274(s1);
8790
+ s1 = peg$c276(s1);
8630
8791
  }
8631
8792
 
8632
8793
  s0 = s1;
@@ -8637,7 +8798,7 @@ function peg$parse(input, options) {
8637
8798
 
8638
8799
  if (s1 !== peg$FAILED) {
8639
8800
  peg$savedPos = s0;
8640
- s1 = peg$c275(s1);
8801
+ s1 = peg$c277(s1);
8641
8802
  }
8642
8803
 
8643
8804
  s0 = s1;
@@ -8649,7 +8810,7 @@ function peg$parse(input, options) {
8649
8810
  s1 = peg$FAILED;
8650
8811
 
8651
8812
  if (peg$silentFails === 0) {
8652
- peg$fail(peg$c273);
8813
+ peg$fail(peg$c275);
8653
8814
  }
8654
8815
  }
8655
8816
 
@@ -8729,7 +8890,7 @@ function peg$parse(input, options) {
8729
8890
 
8730
8891
  if (s3 !== peg$FAILED) {
8731
8892
  peg$savedPos = s0;
8732
- s1 = peg$c276(s1, s3);
8893
+ s1 = peg$c278(s1, s3);
8733
8894
  s0 = s1;
8734
8895
  } else {
8735
8896
  peg$currPos = s0;
@@ -8761,7 +8922,7 @@ function peg$parse(input, options) {
8761
8922
 
8762
8923
  if (s1 !== peg$FAILED) {
8763
8924
  peg$savedPos = s0;
8764
- s1 = peg$c278(s1);
8925
+ s1 = peg$c280(s1);
8765
8926
  }
8766
8927
 
8767
8928
  s0 = s1;
@@ -8771,7 +8932,7 @@ function peg$parse(input, options) {
8771
8932
  s1 = peg$FAILED;
8772
8933
 
8773
8934
  if (peg$silentFails === 0) {
8774
- peg$fail(peg$c277);
8935
+ peg$fail(peg$c279);
8775
8936
  }
8776
8937
  }
8777
8938
 
@@ -8914,25 +9075,25 @@ function peg$parse(input, options) {
8914
9075
 
8915
9076
  if (s4 === peg$FAILED) {
8916
9077
  if (input.charCodeAt(peg$currPos) === 44) {
8917
- s4 = peg$c279;
9078
+ s4 = peg$c281;
8918
9079
  peg$currPos++;
8919
9080
  } else {
8920
9081
  s4 = peg$FAILED;
8921
9082
 
8922
9083
  if (peg$silentFails === 0) {
8923
- peg$fail(peg$c280);
9084
+ peg$fail(peg$c282);
8924
9085
  }
8925
9086
  }
8926
9087
 
8927
9088
  if (s4 === peg$FAILED) {
8928
- if (input.substr(peg$currPos, 2) === peg$c281) {
8929
- s4 = peg$c281;
9089
+ if (input.substr(peg$currPos, 2) === peg$c283) {
9090
+ s4 = peg$c283;
8930
9091
  peg$currPos += 2;
8931
9092
  } else {
8932
9093
  s4 = peg$FAILED;
8933
9094
 
8934
9095
  if (peg$silentFails === 0) {
8935
- peg$fail(peg$c282);
9096
+ peg$fail(peg$c284);
8936
9097
  }
8937
9098
  }
8938
9099
 
@@ -8941,14 +9102,14 @@ function peg$parse(input, options) {
8941
9102
  s5 = peg$parseendline();
8942
9103
 
8943
9104
  if (s5 !== peg$FAILED) {
8944
- if (input.substr(peg$currPos, 2) === peg$c281) {
8945
- s6 = peg$c281;
9105
+ if (input.substr(peg$currPos, 2) === peg$c283) {
9106
+ s6 = peg$c283;
8946
9107
  peg$currPos += 2;
8947
9108
  } else {
8948
9109
  s6 = peg$FAILED;
8949
9110
 
8950
9111
  if (peg$silentFails === 0) {
8951
- peg$fail(peg$c282);
9112
+ peg$fail(peg$c284);
8952
9113
  }
8953
9114
  }
8954
9115
 
@@ -9013,7 +9174,7 @@ function peg$parse(input, options) {
9013
9174
  s4 = peg$FAILED;
9014
9175
 
9015
9176
  if (peg$silentFails === 0) {
9016
- peg$fail(peg$c203);
9177
+ peg$fail(peg$c201);
9017
9178
  }
9018
9179
  }
9019
9180
 
@@ -9043,7 +9204,7 @@ function peg$parse(input, options) {
9043
9204
 
9044
9205
  if (s1 !== peg$FAILED) {
9045
9206
  peg$savedPos = s0;
9046
- s1 = peg$c283(s1);
9207
+ s1 = peg$c285(s1);
9047
9208
  }
9048
9209
 
9049
9210
  s0 = s1;
@@ -9053,14 +9214,14 @@ function peg$parse(input, options) {
9053
9214
  function peg$parseexprChar() {
9054
9215
  var s0;
9055
9216
 
9056
- if (peg$c284.test(input.charAt(peg$currPos))) {
9217
+ if (peg$c286.test(input.charAt(peg$currPos))) {
9057
9218
  s0 = input.charAt(peg$currPos);
9058
9219
  peg$currPos++;
9059
9220
  } else {
9060
9221
  s0 = peg$FAILED;
9061
9222
 
9062
9223
  if (peg$silentFails === 0) {
9063
- peg$fail(peg$c285);
9224
+ peg$fail(peg$c287);
9064
9225
  }
9065
9226
  }
9066
9227
 
@@ -9082,14 +9243,14 @@ function peg$parse(input, options) {
9082
9243
  function peg$parseexprCharNoCommaSpace() {
9083
9244
  var s0;
9084
9245
 
9085
- if (peg$c286.test(input.charAt(peg$currPos))) {
9246
+ if (peg$c288.test(input.charAt(peg$currPos))) {
9086
9247
  s0 = input.charAt(peg$currPos);
9087
9248
  peg$currPos++;
9088
9249
  } else {
9089
9250
  s0 = peg$FAILED;
9090
9251
 
9091
9252
  if (peg$silentFails === 0) {
9092
- peg$fail(peg$c287);
9253
+ peg$fail(peg$c289);
9093
9254
  }
9094
9255
  }
9095
9256
 
@@ -9100,14 +9261,14 @@ function peg$parse(input, options) {
9100
9261
  var s0, s1;
9101
9262
  peg$silentFails++;
9102
9263
 
9103
- if (peg$c289.test(input.charAt(peg$currPos))) {
9264
+ if (peg$c291.test(input.charAt(peg$currPos))) {
9104
9265
  s0 = input.charAt(peg$currPos);
9105
9266
  peg$currPos++;
9106
9267
  } else {
9107
9268
  s0 = peg$FAILED;
9108
9269
 
9109
9270
  if (peg$silentFails === 0) {
9110
- peg$fail(peg$c290);
9271
+ peg$fail(peg$c292);
9111
9272
  }
9112
9273
  }
9113
9274
 
@@ -9117,7 +9278,7 @@ function peg$parse(input, options) {
9117
9278
  s1 = peg$FAILED;
9118
9279
 
9119
9280
  if (peg$silentFails === 0) {
9120
- peg$fail(peg$c288);
9281
+ peg$fail(peg$c290);
9121
9282
  }
9122
9283
  }
9123
9284
 
@@ -9128,13 +9289,13 @@ function peg$parse(input, options) {
9128
9289
  var s0;
9129
9290
 
9130
9291
  if (input.charCodeAt(peg$currPos) === 32) {
9131
- s0 = peg$c291;
9292
+ s0 = peg$c293;
9132
9293
  peg$currPos++;
9133
9294
  } else {
9134
9295
  s0 = peg$FAILED;
9135
9296
 
9136
9297
  if (peg$silentFails === 0) {
9137
- peg$fail(peg$c292);
9298
+ peg$fail(peg$c294);
9138
9299
  }
9139
9300
  }
9140
9301
 
@@ -9145,25 +9306,25 @@ function peg$parse(input, options) {
9145
9306
  var s0;
9146
9307
 
9147
9308
  if (input.charCodeAt(peg$currPos) === 96) {
9148
- s0 = peg$c293;
9309
+ s0 = peg$c295;
9149
9310
  peg$currPos++;
9150
9311
  } else {
9151
9312
  s0 = peg$FAILED;
9152
9313
 
9153
9314
  if (peg$silentFails === 0) {
9154
- peg$fail(peg$c294);
9315
+ peg$fail(peg$c296);
9155
9316
  }
9156
9317
  }
9157
9318
 
9158
9319
  if (s0 === peg$FAILED) {
9159
9320
  if (input.charCodeAt(peg$currPos) === 34) {
9160
- s0 = peg$c226;
9321
+ s0 = peg$c228;
9161
9322
  peg$currPos++;
9162
9323
  } else {
9163
9324
  s0 = peg$FAILED;
9164
9325
 
9165
9326
  if (peg$silentFails === 0) {
9166
- peg$fail(peg$c227);
9327
+ peg$fail(peg$c229);
9167
9328
  }
9168
9329
  }
9169
9330
  }
@@ -9175,13 +9336,13 @@ function peg$parse(input, options) {
9175
9336
  var s0;
9176
9337
 
9177
9338
  if (input.charCodeAt(peg$currPos) === 44) {
9178
- s0 = peg$c279;
9339
+ s0 = peg$c281;
9179
9340
  peg$currPos++;
9180
9341
  } else {
9181
9342
  s0 = peg$FAILED;
9182
9343
 
9183
9344
  if (peg$silentFails === 0) {
9184
- peg$fail(peg$c280);
9345
+ peg$fail(peg$c282);
9185
9346
  }
9186
9347
  }
9187
9348
 
@@ -9192,13 +9353,13 @@ function peg$parse(input, options) {
9192
9353
  var s0;
9193
9354
 
9194
9355
  if (input.charCodeAt(peg$currPos) === 9) {
9195
- s0 = peg$c295;
9356
+ s0 = peg$c297;
9196
9357
  peg$currPos++;
9197
9358
  } else {
9198
9359
  s0 = peg$FAILED;
9199
9360
 
9200
9361
  if (peg$silentFails === 0) {
9201
- peg$fail(peg$c296);
9362
+ peg$fail(peg$c298);
9202
9363
  }
9203
9364
  }
9204
9365
 
@@ -9209,13 +9370,13 @@ function peg$parse(input, options) {
9209
9370
  var s0;
9210
9371
 
9211
9372
  if (input.charCodeAt(peg$currPos) === 59) {
9212
- s0 = peg$c201;
9373
+ s0 = peg$c204;
9213
9374
  peg$currPos++;
9214
9375
  } else {
9215
9376
  s0 = peg$FAILED;
9216
9377
 
9217
9378
  if (peg$silentFails === 0) {
9218
- peg$fail(peg$c202);
9379
+ peg$fail(peg$c205);
9219
9380
  }
9220
9381
  }
9221
9382
 
@@ -9255,7 +9416,7 @@ function peg$parse(input, options) {
9255
9416
  s1 = peg$FAILED;
9256
9417
 
9257
9418
  if (peg$silentFails === 0) {
9258
- peg$fail(peg$c297);
9419
+ peg$fail(peg$c299);
9259
9420
  }
9260
9421
  }
9261
9422
 
@@ -9266,26 +9427,26 @@ function peg$parse(input, options) {
9266
9427
  var s0, s1;
9267
9428
  peg$silentFails++;
9268
9429
 
9269
- if (input.substr(peg$currPos, 2) === peg$c299) {
9270
- s0 = peg$c299;
9430
+ if (input.substr(peg$currPos, 2) === peg$c301) {
9431
+ s0 = peg$c301;
9271
9432
  peg$currPos += 2;
9272
9433
  } else {
9273
9434
  s0 = peg$FAILED;
9274
9435
 
9275
9436
  if (peg$silentFails === 0) {
9276
- peg$fail(peg$c300);
9437
+ peg$fail(peg$c302);
9277
9438
  }
9278
9439
  }
9279
9440
 
9280
9441
  if (s0 === peg$FAILED) {
9281
9442
  if (input.charCodeAt(peg$currPos) === 10) {
9282
- s0 = peg$c301;
9443
+ s0 = peg$c303;
9283
9444
  peg$currPos++;
9284
9445
  } else {
9285
9446
  s0 = peg$FAILED;
9286
9447
 
9287
9448
  if (peg$silentFails === 0) {
9288
- peg$fail(peg$c302);
9449
+ peg$fail(peg$c304);
9289
9450
  }
9290
9451
  }
9291
9452
  }
@@ -9296,7 +9457,7 @@ function peg$parse(input, options) {
9296
9457
  s1 = peg$FAILED;
9297
9458
 
9298
9459
  if (peg$silentFails === 0) {
9299
- peg$fail(peg$c298);
9460
+ peg$fail(peg$c300);
9300
9461
  }
9301
9462
  }
9302
9463
 
@@ -9344,7 +9505,7 @@ function peg$parse(input, options) {
9344
9505
  s1 = peg$FAILED;
9345
9506
 
9346
9507
  if (peg$silentFails === 0) {
9347
- peg$fail(peg$c303);
9508
+ peg$fail(peg$c305);
9348
9509
  }
9349
9510
  }
9350
9511
 
@@ -9396,7 +9557,7 @@ function peg$parse(input, options) {
9396
9557
  s1 = peg$FAILED;
9397
9558
 
9398
9559
  if (peg$silentFails === 0) {
9399
- peg$fail(peg$c303);
9560
+ peg$fail(peg$c305);
9400
9561
  }
9401
9562
  }
9402
9563
 
@@ -9408,42 +9569,42 @@ function peg$parse(input, options) {
9408
9569
  peg$silentFails++;
9409
9570
  s0 = peg$currPos;
9410
9571
 
9411
- if (input.substr(peg$currPos, 2) === peg$c305) {
9412
- s1 = peg$c305;
9572
+ if (input.substr(peg$currPos, 2) === peg$c307) {
9573
+ s1 = peg$c307;
9413
9574
  peg$currPos += 2;
9414
9575
  } else {
9415
9576
  s1 = peg$FAILED;
9416
9577
 
9417
9578
  if (peg$silentFails === 0) {
9418
- peg$fail(peg$c306);
9579
+ peg$fail(peg$c308);
9419
9580
  }
9420
9581
  }
9421
9582
 
9422
9583
  if (s1 !== peg$FAILED) {
9423
9584
  s2 = [];
9424
9585
 
9425
- if (peg$c307.test(input.charAt(peg$currPos))) {
9586
+ if (peg$c309.test(input.charAt(peg$currPos))) {
9426
9587
  s3 = input.charAt(peg$currPos);
9427
9588
  peg$currPos++;
9428
9589
  } else {
9429
9590
  s3 = peg$FAILED;
9430
9591
 
9431
9592
  if (peg$silentFails === 0) {
9432
- peg$fail(peg$c308);
9593
+ peg$fail(peg$c310);
9433
9594
  }
9434
9595
  }
9435
9596
 
9436
9597
  while (s3 !== peg$FAILED) {
9437
9598
  s2.push(s3);
9438
9599
 
9439
- if (peg$c307.test(input.charAt(peg$currPos))) {
9600
+ if (peg$c309.test(input.charAt(peg$currPos))) {
9440
9601
  s3 = input.charAt(peg$currPos);
9441
9602
  peg$currPos++;
9442
9603
  } else {
9443
9604
  s3 = peg$FAILED;
9444
9605
 
9445
9606
  if (peg$silentFails === 0) {
9446
- peg$fail(peg$c308);
9607
+ peg$fail(peg$c310);
9447
9608
  }
9448
9609
  }
9449
9610
  }
@@ -9463,14 +9624,14 @@ function peg$parse(input, options) {
9463
9624
  if (s0 === peg$FAILED) {
9464
9625
  s0 = peg$currPos;
9465
9626
 
9466
- if (input.substr(peg$currPos, 2) === peg$c309) {
9467
- s1 = peg$c309;
9627
+ if (input.substr(peg$currPos, 2) === peg$c311) {
9628
+ s1 = peg$c311;
9468
9629
  peg$currPos += 2;
9469
9630
  } else {
9470
9631
  s1 = peg$FAILED;
9471
9632
 
9472
9633
  if (peg$silentFails === 0) {
9473
- peg$fail(peg$c310);
9634
+ peg$fail(peg$c312);
9474
9635
  }
9475
9636
  }
9476
9637
 
@@ -9480,14 +9641,14 @@ function peg$parse(input, options) {
9480
9641
  s4 = peg$currPos;
9481
9642
  peg$silentFails++;
9482
9643
 
9483
- if (input.substr(peg$currPos, 2) === peg$c311) {
9484
- s5 = peg$c311;
9644
+ if (input.substr(peg$currPos, 2) === peg$c313) {
9645
+ s5 = peg$c313;
9485
9646
  peg$currPos += 2;
9486
9647
  } else {
9487
9648
  s5 = peg$FAILED;
9488
9649
 
9489
9650
  if (peg$silentFails === 0) {
9490
- peg$fail(peg$c312);
9651
+ peg$fail(peg$c314);
9491
9652
  }
9492
9653
  }
9493
9654
 
@@ -9508,7 +9669,7 @@ function peg$parse(input, options) {
9508
9669
  s5 = peg$FAILED;
9509
9670
 
9510
9671
  if (peg$silentFails === 0) {
9511
- peg$fail(peg$c203);
9672
+ peg$fail(peg$c201);
9512
9673
  }
9513
9674
  }
9514
9675
 
@@ -9530,14 +9691,14 @@ function peg$parse(input, options) {
9530
9691
  s4 = peg$currPos;
9531
9692
  peg$silentFails++;
9532
9693
 
9533
- if (input.substr(peg$currPos, 2) === peg$c311) {
9534
- s5 = peg$c311;
9694
+ if (input.substr(peg$currPos, 2) === peg$c313) {
9695
+ s5 = peg$c313;
9535
9696
  peg$currPos += 2;
9536
9697
  } else {
9537
9698
  s5 = peg$FAILED;
9538
9699
 
9539
9700
  if (peg$silentFails === 0) {
9540
- peg$fail(peg$c312);
9701
+ peg$fail(peg$c314);
9541
9702
  }
9542
9703
  }
9543
9704
 
@@ -9558,7 +9719,7 @@ function peg$parse(input, options) {
9558
9719
  s5 = peg$FAILED;
9559
9720
 
9560
9721
  if (peg$silentFails === 0) {
9561
- peg$fail(peg$c203);
9722
+ peg$fail(peg$c201);
9562
9723
  }
9563
9724
  }
9564
9725
 
@@ -9576,14 +9737,14 @@ function peg$parse(input, options) {
9576
9737
  }
9577
9738
 
9578
9739
  if (s2 !== peg$FAILED) {
9579
- if (input.substr(peg$currPos, 2) === peg$c311) {
9580
- s3 = peg$c311;
9740
+ if (input.substr(peg$currPos, 2) === peg$c313) {
9741
+ s3 = peg$c313;
9581
9742
  peg$currPos += 2;
9582
9743
  } else {
9583
9744
  s3 = peg$FAILED;
9584
9745
 
9585
9746
  if (peg$silentFails === 0) {
9586
- peg$fail(peg$c312);
9747
+ peg$fail(peg$c314);
9587
9748
  }
9588
9749
  }
9589
9750
 
@@ -9621,7 +9782,7 @@ function peg$parse(input, options) {
9621
9782
  s1 = peg$FAILED;
9622
9783
 
9623
9784
  if (peg$silentFails === 0) {
9624
- peg$fail(peg$c304);
9785
+ peg$fail(peg$c306);
9625
9786
  }
9626
9787
  }
9627
9788
 
@@ -9634,13 +9795,13 @@ function peg$parse(input, options) {
9634
9795
  s0 = peg$currPos;
9635
9796
 
9636
9797
  if (input.charCodeAt(peg$currPos) === 34) {
9637
- s1 = peg$c226;
9798
+ s1 = peg$c228;
9638
9799
  peg$currPos++;
9639
9800
  } else {
9640
9801
  s1 = peg$FAILED;
9641
9802
 
9642
9803
  if (peg$silentFails === 0) {
9643
- peg$fail(peg$c227);
9804
+ peg$fail(peg$c229);
9644
9805
  }
9645
9806
  }
9646
9807
 
@@ -9655,19 +9816,19 @@ function peg$parse(input, options) {
9655
9816
 
9656
9817
  if (s2 !== peg$FAILED) {
9657
9818
  if (input.charCodeAt(peg$currPos) === 34) {
9658
- s3 = peg$c226;
9819
+ s3 = peg$c228;
9659
9820
  peg$currPos++;
9660
9821
  } else {
9661
9822
  s3 = peg$FAILED;
9662
9823
 
9663
9824
  if (peg$silentFails === 0) {
9664
- peg$fail(peg$c227);
9825
+ peg$fail(peg$c229);
9665
9826
  }
9666
9827
  }
9667
9828
 
9668
9829
  if (s3 !== peg$FAILED) {
9669
9830
  peg$savedPos = s0;
9670
- s1 = peg$c314(s2);
9831
+ s1 = peg$c316(s2);
9671
9832
  s0 = s1;
9672
9833
  } else {
9673
9834
  peg$currPos = s0;
@@ -9686,13 +9847,13 @@ function peg$parse(input, options) {
9686
9847
  s0 = peg$currPos;
9687
9848
 
9688
9849
  if (input.charCodeAt(peg$currPos) === 39) {
9689
- s1 = peg$c221;
9850
+ s1 = peg$c223;
9690
9851
  peg$currPos++;
9691
9852
  } else {
9692
9853
  s1 = peg$FAILED;
9693
9854
 
9694
9855
  if (peg$silentFails === 0) {
9695
- peg$fail(peg$c222);
9856
+ peg$fail(peg$c224);
9696
9857
  }
9697
9858
  }
9698
9859
 
@@ -9707,19 +9868,19 @@ function peg$parse(input, options) {
9707
9868
 
9708
9869
  if (s2 !== peg$FAILED) {
9709
9870
  if (input.charCodeAt(peg$currPos) === 39) {
9710
- s3 = peg$c221;
9871
+ s3 = peg$c223;
9711
9872
  peg$currPos++;
9712
9873
  } else {
9713
9874
  s3 = peg$FAILED;
9714
9875
 
9715
9876
  if (peg$silentFails === 0) {
9716
- peg$fail(peg$c222);
9877
+ peg$fail(peg$c224);
9717
9878
  }
9718
9879
  }
9719
9880
 
9720
9881
  if (s3 !== peg$FAILED) {
9721
9882
  peg$savedPos = s0;
9722
- s1 = peg$c314(s2);
9883
+ s1 = peg$c316(s2);
9723
9884
  s0 = s1;
9724
9885
  } else {
9725
9886
  peg$currPos = s0;
@@ -9741,7 +9902,7 @@ function peg$parse(input, options) {
9741
9902
  s1 = peg$FAILED;
9742
9903
 
9743
9904
  if (peg$silentFails === 0) {
9744
- peg$fail(peg$c313);
9905
+ peg$fail(peg$c315);
9745
9906
  }
9746
9907
  }
9747
9908
 
@@ -9753,31 +9914,31 @@ function peg$parse(input, options) {
9753
9914
  s0 = peg$currPos;
9754
9915
 
9755
9916
  if (input.charCodeAt(peg$currPos) === 92) {
9756
- s1 = peg$c315;
9917
+ s1 = peg$c317;
9757
9918
  peg$currPos++;
9758
9919
  } else {
9759
9920
  s1 = peg$FAILED;
9760
9921
 
9761
9922
  if (peg$silentFails === 0) {
9762
- peg$fail(peg$c316);
9923
+ peg$fail(peg$c318);
9763
9924
  }
9764
9925
  }
9765
9926
 
9766
9927
  if (s1 !== peg$FAILED) {
9767
9928
  if (input.charCodeAt(peg$currPos) === 34) {
9768
- s2 = peg$c226;
9929
+ s2 = peg$c228;
9769
9930
  peg$currPos++;
9770
9931
  } else {
9771
9932
  s2 = peg$FAILED;
9772
9933
 
9773
9934
  if (peg$silentFails === 0) {
9774
- peg$fail(peg$c227);
9935
+ peg$fail(peg$c229);
9775
9936
  }
9776
9937
  }
9777
9938
 
9778
9939
  if (s2 !== peg$FAILED) {
9779
9940
  peg$savedPos = s0;
9780
- s1 = peg$c317();
9941
+ s1 = peg$c319();
9781
9942
  s0 = s1;
9782
9943
  } else {
9783
9944
  peg$currPos = s0;
@@ -9794,13 +9955,13 @@ function peg$parse(input, options) {
9794
9955
  peg$silentFails++;
9795
9956
 
9796
9957
  if (input.charCodeAt(peg$currPos) === 34) {
9797
- s2 = peg$c226;
9958
+ s2 = peg$c228;
9798
9959
  peg$currPos++;
9799
9960
  } else {
9800
9961
  s2 = peg$FAILED;
9801
9962
 
9802
9963
  if (peg$silentFails === 0) {
9803
- peg$fail(peg$c227);
9964
+ peg$fail(peg$c229);
9804
9965
  }
9805
9966
  }
9806
9967
 
@@ -9818,7 +9979,7 @@ function peg$parse(input, options) {
9818
9979
 
9819
9980
  if (s2 !== peg$FAILED) {
9820
9981
  peg$savedPos = s0;
9821
- s1 = peg$c318();
9982
+ s1 = peg$c320();
9822
9983
  s0 = s1;
9823
9984
  } else {
9824
9985
  peg$currPos = s0;
@@ -9838,31 +9999,31 @@ function peg$parse(input, options) {
9838
9999
  s0 = peg$currPos;
9839
10000
 
9840
10001
  if (input.charCodeAt(peg$currPos) === 92) {
9841
- s1 = peg$c315;
10002
+ s1 = peg$c317;
9842
10003
  peg$currPos++;
9843
10004
  } else {
9844
10005
  s1 = peg$FAILED;
9845
10006
 
9846
10007
  if (peg$silentFails === 0) {
9847
- peg$fail(peg$c316);
10008
+ peg$fail(peg$c318);
9848
10009
  }
9849
10010
  }
9850
10011
 
9851
10012
  if (s1 !== peg$FAILED) {
9852
10013
  if (input.charCodeAt(peg$currPos) === 39) {
9853
- s2 = peg$c221;
10014
+ s2 = peg$c223;
9854
10015
  peg$currPos++;
9855
10016
  } else {
9856
10017
  s2 = peg$FAILED;
9857
10018
 
9858
10019
  if (peg$silentFails === 0) {
9859
- peg$fail(peg$c222);
10020
+ peg$fail(peg$c224);
9860
10021
  }
9861
10022
  }
9862
10023
 
9863
10024
  if (s2 !== peg$FAILED) {
9864
10025
  peg$savedPos = s0;
9865
- s1 = peg$c319();
10026
+ s1 = peg$c321();
9866
10027
  s0 = s1;
9867
10028
  } else {
9868
10029
  peg$currPos = s0;
@@ -9879,13 +10040,13 @@ function peg$parse(input, options) {
9879
10040
  peg$silentFails++;
9880
10041
 
9881
10042
  if (input.charCodeAt(peg$currPos) === 39) {
9882
- s2 = peg$c221;
10043
+ s2 = peg$c223;
9883
10044
  peg$currPos++;
9884
10045
  } else {
9885
10046
  s2 = peg$FAILED;
9886
10047
 
9887
10048
  if (peg$silentFails === 0) {
9888
- peg$fail(peg$c222);
10049
+ peg$fail(peg$c224);
9889
10050
  }
9890
10051
  }
9891
10052
 
@@ -9903,7 +10064,7 @@ function peg$parse(input, options) {
9903
10064
 
9904
10065
  if (s2 !== peg$FAILED) {
9905
10066
  peg$savedPos = s0;
9906
- s1 = peg$c318();
10067
+ s1 = peg$c320();
9907
10068
  s0 = s1;
9908
10069
  } else {
9909
10070
  peg$currPos = s0;
@@ -9928,7 +10089,7 @@ function peg$parse(input, options) {
9928
10089
  s0 = peg$FAILED;
9929
10090
 
9930
10091
  if (peg$silentFails === 0) {
9931
- peg$fail(peg$c203);
10092
+ peg$fail(peg$c201);
9932
10093
  }
9933
10094
  }
9934
10095
 
@@ -9951,14 +10112,14 @@ function peg$parse(input, options) {
9951
10112
  s0 = peg$currPos;
9952
10113
  s1 = [];
9953
10114
 
9954
- if (peg$c320.test(input.charAt(peg$currPos))) {
10115
+ if (peg$c322.test(input.charAt(peg$currPos))) {
9955
10116
  s2 = input.charAt(peg$currPos);
9956
10117
  peg$currPos++;
9957
10118
  } else {
9958
10119
  s2 = peg$FAILED;
9959
10120
 
9960
10121
  if (peg$silentFails === 0) {
9961
- peg$fail(peg$c321);
10122
+ peg$fail(peg$c323);
9962
10123
  }
9963
10124
  }
9964
10125
 
@@ -9966,14 +10127,14 @@ function peg$parse(input, options) {
9966
10127
  while (s2 !== peg$FAILED) {
9967
10128
  s1.push(s2);
9968
10129
 
9969
- if (peg$c320.test(input.charAt(peg$currPos))) {
10130
+ if (peg$c322.test(input.charAt(peg$currPos))) {
9970
10131
  s2 = input.charAt(peg$currPos);
9971
10132
  peg$currPos++;
9972
10133
  } else {
9973
10134
  s2 = peg$FAILED;
9974
10135
 
9975
10136
  if (peg$silentFails === 0) {
9976
- peg$fail(peg$c321);
10137
+ peg$fail(peg$c323);
9977
10138
  }
9978
10139
  }
9979
10140
  }
@@ -9983,27 +10144,27 @@ function peg$parse(input, options) {
9983
10144
 
9984
10145
  if (s1 !== peg$FAILED) {
9985
10146
  if (input.charCodeAt(peg$currPos) === 46) {
9986
- s2 = peg$c271;
10147
+ s2 = peg$c270;
9987
10148
  peg$currPos++;
9988
10149
  } else {
9989
10150
  s2 = peg$FAILED;
9990
10151
 
9991
10152
  if (peg$silentFails === 0) {
9992
- peg$fail(peg$c272);
10153
+ peg$fail(peg$c271);
9993
10154
  }
9994
10155
  }
9995
10156
 
9996
10157
  if (s2 !== peg$FAILED) {
9997
10158
  s3 = [];
9998
10159
 
9999
- if (peg$c320.test(input.charAt(peg$currPos))) {
10160
+ if (peg$c322.test(input.charAt(peg$currPos))) {
10000
10161
  s4 = input.charAt(peg$currPos);
10001
10162
  peg$currPos++;
10002
10163
  } else {
10003
10164
  s4 = peg$FAILED;
10004
10165
 
10005
10166
  if (peg$silentFails === 0) {
10006
- peg$fail(peg$c321);
10167
+ peg$fail(peg$c323);
10007
10168
  }
10008
10169
  }
10009
10170
 
@@ -10011,14 +10172,14 @@ function peg$parse(input, options) {
10011
10172
  while (s4 !== peg$FAILED) {
10012
10173
  s3.push(s4);
10013
10174
 
10014
- if (peg$c320.test(input.charAt(peg$currPos))) {
10175
+ if (peg$c322.test(input.charAt(peg$currPos))) {
10015
10176
  s4 = input.charAt(peg$currPos);
10016
10177
  peg$currPos++;
10017
10178
  } else {
10018
10179
  s4 = peg$FAILED;
10019
10180
 
10020
10181
  if (peg$silentFails === 0) {
10021
- peg$fail(peg$c321);
10182
+ peg$fail(peg$c323);
10022
10183
  }
10023
10184
  }
10024
10185
  }
@@ -10028,7 +10189,7 @@ function peg$parse(input, options) {
10028
10189
 
10029
10190
  if (s3 !== peg$FAILED) {
10030
10191
  peg$savedPos = s0;
10031
- s1 = peg$c322(s1, s3);
10192
+ s1 = peg$c324(s1, s3);
10032
10193
  s0 = s1;
10033
10194
  } else {
10034
10195
  peg$currPos = s0;
@@ -10051,14 +10212,14 @@ function peg$parse(input, options) {
10051
10212
  s0 = peg$currPos;
10052
10213
  s1 = [];
10053
10214
 
10054
- if (peg$c320.test(input.charAt(peg$currPos))) {
10215
+ if (peg$c322.test(input.charAt(peg$currPos))) {
10055
10216
  s2 = input.charAt(peg$currPos);
10056
10217
  peg$currPos++;
10057
10218
  } else {
10058
10219
  s2 = peg$FAILED;
10059
10220
 
10060
10221
  if (peg$silentFails === 0) {
10061
- peg$fail(peg$c321);
10222
+ peg$fail(peg$c323);
10062
10223
  }
10063
10224
  }
10064
10225
 
@@ -10066,14 +10227,14 @@ function peg$parse(input, options) {
10066
10227
  while (s2 !== peg$FAILED) {
10067
10228
  s1.push(s2);
10068
10229
 
10069
- if (peg$c320.test(input.charAt(peg$currPos))) {
10230
+ if (peg$c322.test(input.charAt(peg$currPos))) {
10070
10231
  s2 = input.charAt(peg$currPos);
10071
10232
  peg$currPos++;
10072
10233
  } else {
10073
10234
  s2 = peg$FAILED;
10074
10235
 
10075
10236
  if (peg$silentFails === 0) {
10076
- peg$fail(peg$c321);
10237
+ peg$fail(peg$c323);
10077
10238
  }
10078
10239
  }
10079
10240
  }
@@ -10083,7 +10244,7 @@ function peg$parse(input, options) {
10083
10244
 
10084
10245
  if (s1 !== peg$FAILED) {
10085
10246
  peg$savedPos = s0;
10086
- s1 = peg$c323(s1);
10247
+ s1 = peg$c325(s1);
10087
10248
  }
10088
10249
 
10089
10250
  s0 = s1;
@@ -10094,7 +10255,16 @@ function peg$parse(input, options) {
10094
10255
 
10095
10256
  var tables = [];
10096
10257
  var refs = [];
10097
- var enums = []; // intput:
10258
+ var enums = []; // TODO: support configurable default schema name other than 'public'
10259
+
10260
+ var findTable = function findTable(schemaName, tableName) {
10261
+ var realSchemaName = schemaName || 'public';
10262
+ var table = tables.find(function (table) {
10263
+ var targetSchemaName = table.schemaName || 'public';
10264
+ return targetSchemaName === realSchemaName && table.name === tableName;
10265
+ });
10266
+ return table;
10267
+ }; // intput:
10098
10268
  // `
10099
10269
  // 'created'
10100
10270
  // ,
@@ -10102,6 +10272,7 @@ function peg$parse(input, options) {
10102
10272
  // `
10103
10273
  // => `'created', 'pending', 'done'`
10104
10274
 
10275
+
10105
10276
  var removeReduntdantSpNewline = function removeReduntdantSpNewline(str) {
10106
10277
  var arr = str.split(/[\s\r\n]*,[\s\r\n]*/); // need to trim spaces and newlines of the first and last element
10107
10278