ohm-js 16.3.0-dev.unicode-code-point-escape → 16.3.0
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.
- package/README.md +223 -0
- package/dist/ohm-grammar.js +1 -1
- package/dist/ohm.esm.js +54 -40
- package/dist/ohm.js +36 -28
- package/dist/ohm.min.js +1 -1
- package/package.json +12 -10
- package/src/common.js +2 -17
- package/src/errors.js +16 -3
- package/src/main.js +9 -2
- package/src/ohm-grammar.ohm +2 -1
- package/src/pexprs-eval.js +5 -4
- package/src/pexprs-main.js +3 -0
package/dist/ohm.esm.js
CHANGED
|
@@ -143,7 +143,7 @@ exports.abstract = function(optMethodName) {
|
|
|
143
143
|
|
|
144
144
|
exports.assert = function(cond, message) {
|
|
145
145
|
if (!cond) {
|
|
146
|
-
throw new Error(message);
|
|
146
|
+
throw new Error(message || 'Assertion failed');
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
149
|
|
|
@@ -237,24 +237,9 @@ exports.StringBuffer.prototype.contents = function() {
|
|
|
237
237
|
return this.strings.join('');
|
|
238
238
|
};
|
|
239
239
|
|
|
240
|
-
// Character escaping and unescaping
|
|
241
|
-
|
|
242
|
-
exports.escapeChar = function(c, optDelim) {
|
|
243
|
-
const charCode = c.charCodeAt(0);
|
|
244
|
-
if ((c === '"' || c === "'") && optDelim && c !== optDelim) {
|
|
245
|
-
return c;
|
|
246
|
-
} else if (charCode < 128) {
|
|
247
|
-
return escapeStringFor[charCode];
|
|
248
|
-
} else if (128 <= charCode && charCode < 256) {
|
|
249
|
-
return '\\x' + exports.padLeft(charCode.toString(16), 2, '0');
|
|
250
|
-
} else {
|
|
251
|
-
return '\\u' + exports.padLeft(charCode.toString(16), 4, '0');
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
|
|
255
240
|
const escapeUnicode = str => String.fromCodePoint(parseInt(str, 16));
|
|
256
241
|
|
|
257
|
-
exports.
|
|
242
|
+
exports.unescapeCodePoint = function(s) {
|
|
258
243
|
if (s.charAt(0) === '\\') {
|
|
259
244
|
switch (s.charAt(1)) {
|
|
260
245
|
case 'b':
|
|
@@ -591,6 +576,9 @@ class Range extends PExpr$1 {
|
|
|
591
576
|
super();
|
|
592
577
|
this.from = from;
|
|
593
578
|
this.to = to;
|
|
579
|
+
// If either `from` or `to` is made up of multiple code units, then
|
|
580
|
+
// the range should consume a full code point, not a single code unit.
|
|
581
|
+
this.matchCodePoint = from.length > 1 || to.length > 1;
|
|
594
582
|
}
|
|
595
583
|
}
|
|
596
584
|
|
|
@@ -850,9 +838,9 @@ var Namespace_1 = Namespace$2;
|
|
|
850
838
|
// Imports
|
|
851
839
|
// --------------------------------------------------------------------
|
|
852
840
|
|
|
853
|
-
const
|
|
854
|
-
|
|
841
|
+
const {assert: assert$3} = common$l;
|
|
855
842
|
const Namespace$1 = Namespace_1;
|
|
843
|
+
const pexprs$l = pexprsMain;
|
|
856
844
|
|
|
857
845
|
// --------------------------------------------------------------------
|
|
858
846
|
// Private stuff
|
|
@@ -982,7 +970,7 @@ function wrongNumberOfArguments(ruleName, expected, actual, expr) {
|
|
|
982
970
|
', got ' +
|
|
983
971
|
actual +
|
|
984
972
|
')',
|
|
985
|
-
expr
|
|
973
|
+
expr
|
|
986
974
|
);
|
|
987
975
|
}
|
|
988
976
|
|
|
@@ -1055,6 +1043,18 @@ function multipleSuperSplices(expr) {
|
|
|
1055
1043
|
return createError("'...' can appear at most once in a rule body", expr.source);
|
|
1056
1044
|
}
|
|
1057
1045
|
|
|
1046
|
+
// Unicode code point escapes
|
|
1047
|
+
|
|
1048
|
+
function invalidCodePoint(applyWrapper) {
|
|
1049
|
+
const node = applyWrapper._node;
|
|
1050
|
+
assert$3(node && node.isNonterminal() && node.ctorName === 'escapeChar_unicodeCodePoint');
|
|
1051
|
+
|
|
1052
|
+
// Get an interval that covers all of the hex digits.
|
|
1053
|
+
const digitIntervals = applyWrapper.children.slice(1, -1).map(d => d.source);
|
|
1054
|
+
const fullInterval = digitIntervals[0].coverageWith(...digitIntervals.slice(1));
|
|
1055
|
+
return createError(`U+${fullInterval.contents} is not a valid Unicode code point`, fullInterval);
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
1058
|
// ----------------- Kleene operators -----------------
|
|
1059
1059
|
|
|
1060
1060
|
function kleeneExprHasNullableOperand(kleeneExpr, applicationStack) {
|
|
@@ -1160,6 +1160,7 @@ var errors$9 = {
|
|
|
1160
1160
|
inconsistentArity,
|
|
1161
1161
|
incorrectArgumentType,
|
|
1162
1162
|
intervalSourcesDontMatch,
|
|
1163
|
+
invalidCodePoint,
|
|
1163
1164
|
invalidConstructorCall,
|
|
1164
1165
|
invalidParameter,
|
|
1165
1166
|
grammarSyntaxError,
|
|
@@ -2055,13 +2056,12 @@ pexprs$h.Range.prototype.eval = function(state) {
|
|
|
2055
2056
|
const {inputStream} = state;
|
|
2056
2057
|
const origPos = inputStream.pos;
|
|
2057
2058
|
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
} else {
|
|
2062
|
-
cp = inputStream.atEnd() ? undefined : inputStream.next().codePointAt(0);
|
|
2063
|
-
}
|
|
2059
|
+
// A range can operate in one of two modes: matching a single, 16-bit _code unit_,
|
|
2060
|
+
// or matching a _code point_. (Code points over 0xFFFF take up two 16-bit code units.)
|
|
2061
|
+
const cp = this.matchCodePoint ? inputStream.nextCodePoint() : inputStream.nextCharCode();
|
|
2064
2062
|
|
|
2063
|
+
// Always compare by code point value to get the correct result in all scenarios.
|
|
2064
|
+
// Note that for strings of length 1, codePointAt(0) and charPointAt(0) are equivalent.
|
|
2065
2065
|
if (cp !== undefined && this.from.codePointAt(0) <= cp && cp <= this.to.codePointAt(0)) {
|
|
2066
2066
|
state.pushBinding(new TerminalNode$1(state.grammar, String.fromCodePoint(cp)), origPos);
|
|
2067
2067
|
return true;
|
|
@@ -3227,7 +3227,12 @@ InputStream$3.prototype = {
|
|
|
3227
3227
|
return ans;
|
|
3228
3228
|
},
|
|
3229
3229
|
|
|
3230
|
-
|
|
3230
|
+
nextCharCode() {
|
|
3231
|
+
const nextChar = this.next();
|
|
3232
|
+
return nextChar && nextChar.charCodeAt(0);
|
|
3233
|
+
},
|
|
3234
|
+
|
|
3235
|
+
nextCodePoint() {
|
|
3231
3236
|
const cp = this.source.slice(this.pos++).codePointAt(0);
|
|
3232
3237
|
// If the code point is beyond plane 0, it takes up two characters.
|
|
3233
3238
|
if (cp > 0xffff) {
|
|
@@ -5481,7 +5486,7 @@ Builder$2.prototype = {
|
|
|
5481
5486
|
var Builder_1 = Builder$2;
|
|
5482
5487
|
|
|
5483
5488
|
var name = "ohm-js";
|
|
5484
|
-
var version$2 = "16.
|
|
5489
|
+
var version$2 = "16.3.0";
|
|
5485
5490
|
var description = "An object-oriented language for parsing and pattern matching";
|
|
5486
5491
|
var repository = "https://github.com/harc/ohm";
|
|
5487
5492
|
var keywords = [
|
|
@@ -5540,33 +5545,35 @@ var contributors = [
|
|
|
5540
5545
|
"Jason Merrill <jwmerrill@gmail.com>",
|
|
5541
5546
|
"Ray Toal <rtoal@lmu.edu>",
|
|
5542
5547
|
"Yoshiki Ohshima <Yoshiki.Ohshima@acm.org>",
|
|
5548
|
+
"megabuz <3299889+megabuz@users.noreply.github.com>",
|
|
5543
5549
|
"stagas <gstagas@gmail.com>",
|
|
5544
5550
|
"Jonathan Edwards <JonathanMEdwards@gmail.com>",
|
|
5545
5551
|
"Milan Lajtoš <milan.lajtos@me.com>",
|
|
5546
5552
|
"Neil Jewers <njjewers@uwaterloo.ca>",
|
|
5547
|
-
"megabuz <3299889+megabuz@users.noreply.github.com>",
|
|
5548
5553
|
"Mike Niebling <(none)>",
|
|
5549
|
-
"
|
|
5550
|
-
"
|
|
5554
|
+
"AngryPowman <angrypowman@qq.com>",
|
|
5555
|
+
"Patrick Dubroy <patrick@sourcegraph.com>",
|
|
5556
|
+
"Leslie Ying <acetophore@users.noreply.github.com>",
|
|
5551
5557
|
"Pierre Donias <pierre.donias@gmail.com>",
|
|
5558
|
+
"Justin Chase <justin.m.chase@gmail.com>",
|
|
5552
5559
|
"Ian Harris <ian@fofgof.xyz>",
|
|
5553
|
-
"Daniel Tomlinson <DanielTomlinson@me.com>",
|
|
5554
5560
|
"Stan Rozenraukh <stan@stanistan.com>",
|
|
5555
5561
|
"Stephan Seidt <stephan.seidt@gmail.com>",
|
|
5556
5562
|
"Steve Phillips <steve@tryingtobeawesome.com>",
|
|
5557
5563
|
"Szymon Kaliski <kaliskiszymon@gmail.com>",
|
|
5558
5564
|
"Thomas Nyberg <tomnyberg@gmail.com>",
|
|
5559
|
-
"
|
|
5565
|
+
"Daniel Tomlinson <DanielTomlinson@me.com>",
|
|
5560
5566
|
"Vse Mozhet Byt <vsemozhetbyt@gmail.com>",
|
|
5561
5567
|
"Wil Chung <10446+iamwilhelm@users.noreply.github.com>",
|
|
5562
|
-
"
|
|
5568
|
+
"Casey Olson <casey.m.olson@gmail.com>",
|
|
5563
5569
|
"abego <ub@abego-software.de>",
|
|
5564
5570
|
"acslk <d_vd415@hotmail.com>",
|
|
5565
5571
|
"codeZeilen <codeZeilen@users.noreply.github.com>",
|
|
5566
|
-
"
|
|
5572
|
+
"kassadin <kassadin@foxmail.com>",
|
|
5573
|
+
"Arthur Carabott <arthurc@gmail.com>",
|
|
5574
|
+
"owch <bowenrainyday@gmail.com>",
|
|
5567
5575
|
"Luca Guzzon <luca.guzzon@gmail.com>",
|
|
5568
|
-
"
|
|
5569
|
-
"owch <bowenrainyday@gmail.com>"
|
|
5576
|
+
"sfinnie <scott.finnie@gmail.com>"
|
|
5570
5577
|
];
|
|
5571
5578
|
var dependencies = {
|
|
5572
5579
|
};
|
|
@@ -5739,7 +5746,7 @@ function initPrototypeParser(grammar) {
|
|
|
5739
5746
|
}
|
|
5740
5747
|
|
|
5741
5748
|
var {makeRecipe: makeRecipe$1} = makeRecipe$5;
|
|
5742
|
-
var ohmGrammar$1 = makeRecipe$1(["grammar",{"source":"Ohm {\n\n Grammars\n = Grammar*\n\n Grammar\n = ident SuperGrammar? \"{\" Rule* \"}\"\n\n SuperGrammar\n = \"<:\" ident\n\n Rule\n = ident Formals? ruleDescr? \"=\" RuleBody -- define\n | ident Formals? \":=\" OverrideRuleBody -- override\n | ident Formals? \"+=\" RuleBody -- extend\n\n RuleBody\n = \"|\"? NonemptyListOf<TopLevelTerm, \"|\">\n\n TopLevelTerm\n = Seq caseName -- inline\n | Seq\n\n OverrideRuleBody\n = \"|\"? NonemptyListOf<OverrideTopLevelTerm, \"|\">\n\n OverrideTopLevelTerm\n = \"...\" -- superSplice\n | TopLevelTerm\n\n Formals\n = \"<\" ListOf<ident, \",\"> \">\"\n\n Params\n = \"<\" ListOf<Seq, \",\"> \">\"\n\n Alt\n = NonemptyListOf<Seq, \"|\">\n\n Seq\n = Iter*\n\n Iter\n = Pred \"*\" -- star\n | Pred \"+\" -- plus\n | Pred \"?\" -- opt\n | Pred\n\n Pred\n = \"~\" Lex -- not\n | \"&\" Lex -- lookahead\n | Lex\n\n Lex\n = \"#\" Base -- lex\n | Base\n\n Base\n = ident Params? ~(ruleDescr? \"=\" | \":=\" | \"+=\") -- application\n | oneCharTerminal \"..\" oneCharTerminal -- range\n | terminal -- terminal\n | \"(\" Alt \")\" -- paren\n\n ruleDescr (a rule description)\n = \"(\" ruleDescrText \")\"\n\n ruleDescrText\n = (~\")\" any)*\n\n caseName\n = \"--\" (~\"\\n\" space)* name (~\"\\n\" space)* (\"\\n\" | &\"}\")\n\n name (a name)\n = nameFirst nameRest*\n\n nameFirst\n = \"_\"\n | letter\n\n nameRest\n = \"_\"\n | alnum\n\n ident (an identifier)\n = name\n\n terminal\n = \"\\\"\" terminalChar* \"\\\"\"\n\n oneCharTerminal\n = \"\\\"\" terminalChar \"\\\"\"\n\n terminalChar\n = escapeChar\n// | ~\"\\\\\" ~\"\\\"\" ~\"\\n\" any\n | ~\"\\\\\" ~\"\\\"\" ~\"\\n\" \"\\u{0}\"..\"\\u{10FFFF}\"\n\n escapeChar (an escape sequence)\n = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\\\'\" -- singleQuote\n | \"\\\\b\" -- backspace\n | \"\\\\n\" -- lineFeed\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\u{\" hexDigit+ \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n space\n += comment\n\n comment\n = \"//\" (~\"\\n\" any)* &(\"\\n\" | end) -- singleLine\n | \"/*\" (~\"*/\" any)* \"*/\" -- multiLine\n\n tokens = token*\n\n token = caseName | comment | ident | operator | punctuation | terminal | any\n\n operator = \"<:\" | \"=\" | \":=\" | \"+=\" | \"*\" | \"+\" | \"?\" | \"~\" | \"&\"\n\n punctuation = \"<\" | \">\" | \",\" | \"--\"\n}"},"Ohm",null,"Grammars",{"Grammars":["define",{"sourceInterval":[9,32]},null,[],["star",{"sourceInterval":[24,32]},["app",{"sourceInterval":[24,31]},"Grammar",[]]]],"Grammar":["define",{"sourceInterval":[36,83]},null,[],["seq",{"sourceInterval":[50,83]},["app",{"sourceInterval":[50,55]},"ident",[]],["opt",{"sourceInterval":[56,69]},["app",{"sourceInterval":[56,68]},"SuperGrammar",[]]],["terminal",{"sourceInterval":[70,73]},"{"],["star",{"sourceInterval":[74,79]},["app",{"sourceInterval":[74,78]},"Rule",[]]],["terminal",{"sourceInterval":[80,83]},"}"]]],"SuperGrammar":["define",{"sourceInterval":[87,116]},null,[],["seq",{"sourceInterval":[106,116]},["terminal",{"sourceInterval":[106,110]},"<:"],["app",{"sourceInterval":[111,116]},"ident",[]]]],"Rule_define":["define",{"sourceInterval":[131,181]},null,[],["seq",{"sourceInterval":[131,170]},["app",{"sourceInterval":[131,136]},"ident",[]],["opt",{"sourceInterval":[137,145]},["app",{"sourceInterval":[137,144]},"Formals",[]]],["opt",{"sourceInterval":[146,156]},["app",{"sourceInterval":[146,155]},"ruleDescr",[]]],["terminal",{"sourceInterval":[157,160]},"="],["app",{"sourceInterval":[162,170]},"RuleBody",[]]]],"Rule_override":["define",{"sourceInterval":[188,248]},null,[],["seq",{"sourceInterval":[188,235]},["app",{"sourceInterval":[188,193]},"ident",[]],["opt",{"sourceInterval":[194,202]},["app",{"sourceInterval":[194,201]},"Formals",[]]],["terminal",{"sourceInterval":[214,218]},":="],["app",{"sourceInterval":[219,235]},"OverrideRuleBody",[]]]],"Rule_extend":["define",{"sourceInterval":[255,305]},null,[],["seq",{"sourceInterval":[255,294]},["app",{"sourceInterval":[255,260]},"ident",[]],["opt",{"sourceInterval":[261,269]},["app",{"sourceInterval":[261,268]},"Formals",[]]],["terminal",{"sourceInterval":[281,285]},"+="],["app",{"sourceInterval":[286,294]},"RuleBody",[]]]],"Rule":["define",{"sourceInterval":[120,305]},null,[],["alt",{"sourceInterval":[131,305]},["app",{"sourceInterval":[131,170]},"Rule_define",[]],["app",{"sourceInterval":[188,235]},"Rule_override",[]],["app",{"sourceInterval":[255,294]},"Rule_extend",[]]]],"RuleBody":["define",{"sourceInterval":[309,362]},null,[],["seq",{"sourceInterval":[324,362]},["opt",{"sourceInterval":[324,328]},["terminal",{"sourceInterval":[324,327]},"|"]],["app",{"sourceInterval":[329,362]},"NonemptyListOf",[["app",{"sourceInterval":[344,356]},"TopLevelTerm",[]],["terminal",{"sourceInterval":[358,361]},"|"]]]]],"TopLevelTerm_inline":["define",{"sourceInterval":[385,408]},null,[],["seq",{"sourceInterval":[385,397]},["app",{"sourceInterval":[385,388]},"Seq",[]],["app",{"sourceInterval":[389,397]},"caseName",[]]]],"TopLevelTerm":["define",{"sourceInterval":[366,418]},null,[],["alt",{"sourceInterval":[385,418]},["app",{"sourceInterval":[385,397]},"TopLevelTerm_inline",[]],["app",{"sourceInterval":[415,418]},"Seq",[]]]],"OverrideRuleBody":["define",{"sourceInterval":[422,491]},null,[],["seq",{"sourceInterval":[445,491]},["opt",{"sourceInterval":[445,449]},["terminal",{"sourceInterval":[445,448]},"|"]],["app",{"sourceInterval":[450,491]},"NonemptyListOf",[["app",{"sourceInterval":[465,485]},"OverrideTopLevelTerm",[]],["terminal",{"sourceInterval":[487,490]},"|"]]]]],"OverrideTopLevelTerm_superSplice":["define",{"sourceInterval":[522,543]},null,[],["terminal",{"sourceInterval":[522,527]},"..."]],"OverrideTopLevelTerm":["define",{"sourceInterval":[495,562]},null,[],["alt",{"sourceInterval":[522,562]},["app",{"sourceInterval":[522,527]},"OverrideTopLevelTerm_superSplice",[]],["app",{"sourceInterval":[550,562]},"TopLevelTerm",[]]]],"Formals":["define",{"sourceInterval":[566,606]},null,[],["seq",{"sourceInterval":[580,606]},["terminal",{"sourceInterval":[580,583]},"<"],["app",{"sourceInterval":[584,602]},"ListOf",[["app",{"sourceInterval":[591,596]},"ident",[]],["terminal",{"sourceInterval":[598,601]},","]]],["terminal",{"sourceInterval":[603,606]},">"]]],"Params":["define",{"sourceInterval":[610,647]},null,[],["seq",{"sourceInterval":[623,647]},["terminal",{"sourceInterval":[623,626]},"<"],["app",{"sourceInterval":[627,643]},"ListOf",[["app",{"sourceInterval":[634,637]},"Seq",[]],["terminal",{"sourceInterval":[639,642]},","]]],["terminal",{"sourceInterval":[644,647]},">"]]],"Alt":["define",{"sourceInterval":[651,685]},null,[],["app",{"sourceInterval":[661,685]},"NonemptyListOf",[["app",{"sourceInterval":[676,679]},"Seq",[]],["terminal",{"sourceInterval":[681,684]},"|"]]]],"Seq":["define",{"sourceInterval":[689,704]},null,[],["star",{"sourceInterval":[699,704]},["app",{"sourceInterval":[699,703]},"Iter",[]]]],"Iter_star":["define",{"sourceInterval":[719,736]},null,[],["seq",{"sourceInterval":[719,727]},["app",{"sourceInterval":[719,723]},"Pred",[]],["terminal",{"sourceInterval":[724,727]},"*"]]],"Iter_plus":["define",{"sourceInterval":[743,760]},null,[],["seq",{"sourceInterval":[743,751]},["app",{"sourceInterval":[743,747]},"Pred",[]],["terminal",{"sourceInterval":[748,751]},"+"]]],"Iter_opt":["define",{"sourceInterval":[767,783]},null,[],["seq",{"sourceInterval":[767,775]},["app",{"sourceInterval":[767,771]},"Pred",[]],["terminal",{"sourceInterval":[772,775]},"?"]]],"Iter":["define",{"sourceInterval":[708,794]},null,[],["alt",{"sourceInterval":[719,794]},["app",{"sourceInterval":[719,727]},"Iter_star",[]],["app",{"sourceInterval":[743,751]},"Iter_plus",[]],["app",{"sourceInterval":[767,775]},"Iter_opt",[]],["app",{"sourceInterval":[790,794]},"Pred",[]]]],"Pred_not":["define",{"sourceInterval":[809,824]},null,[],["seq",{"sourceInterval":[809,816]},["terminal",{"sourceInterval":[809,812]},"~"],["app",{"sourceInterval":[813,816]},"Lex",[]]]],"Pred_lookahead":["define",{"sourceInterval":[831,852]},null,[],["seq",{"sourceInterval":[831,838]},["terminal",{"sourceInterval":[831,834]},"&"],["app",{"sourceInterval":[835,838]},"Lex",[]]]],"Pred":["define",{"sourceInterval":[798,862]},null,[],["alt",{"sourceInterval":[809,862]},["app",{"sourceInterval":[809,816]},"Pred_not",[]],["app",{"sourceInterval":[831,838]},"Pred_lookahead",[]],["app",{"sourceInterval":[859,862]},"Lex",[]]]],"Lex_lex":["define",{"sourceInterval":[876,892]},null,[],["seq",{"sourceInterval":[876,884]},["terminal",{"sourceInterval":[876,879]},"#"],["app",{"sourceInterval":[880,884]},"Base",[]]]],"Lex":["define",{"sourceInterval":[866,903]},null,[],["alt",{"sourceInterval":[876,903]},["app",{"sourceInterval":[876,884]},"Lex_lex",[]],["app",{"sourceInterval":[899,903]},"Base",[]]]],"Base_application":["define",{"sourceInterval":[918,979]},null,[],["seq",{"sourceInterval":[918,963]},["app",{"sourceInterval":[918,923]},"ident",[]],["opt",{"sourceInterval":[924,931]},["app",{"sourceInterval":[924,930]},"Params",[]]],["not",{"sourceInterval":[932,963]},["alt",{"sourceInterval":[934,962]},["seq",{"sourceInterval":[934,948]},["opt",{"sourceInterval":[934,944]},["app",{"sourceInterval":[934,943]},"ruleDescr",[]]],["terminal",{"sourceInterval":[945,948]},"="]],["terminal",{"sourceInterval":[951,955]},":="],["terminal",{"sourceInterval":[958,962]},"+="]]]]],"Base_range":["define",{"sourceInterval":[986,1041]},null,[],["seq",{"sourceInterval":[986,1022]},["app",{"sourceInterval":[986,1001]},"oneCharTerminal",[]],["terminal",{"sourceInterval":[1002,1006]},".."],["app",{"sourceInterval":[1007,1022]},"oneCharTerminal",[]]]],"Base_terminal":["define",{"sourceInterval":[1048,1106]},null,[],["app",{"sourceInterval":[1048,1056]},"terminal",[]]],"Base_paren":["define",{"sourceInterval":[1113,1168]},null,[],["seq",{"sourceInterval":[1113,1124]},["terminal",{"sourceInterval":[1113,1116]},"("],["app",{"sourceInterval":[1117,1120]},"Alt",[]],["terminal",{"sourceInterval":[1121,1124]},")"]]],"Base":["define",{"sourceInterval":[907,1168]},null,[],["alt",{"sourceInterval":[918,1168]},["app",{"sourceInterval":[918,963]},"Base_application",[]],["app",{"sourceInterval":[986,1022]},"Base_range",[]],["app",{"sourceInterval":[1048,1056]},"Base_terminal",[]],["app",{"sourceInterval":[1113,1124]},"Base_paren",[]]]],"ruleDescr":["define",{"sourceInterval":[1172,1231]},"a rule description",[],["seq",{"sourceInterval":[1210,1231]},["terminal",{"sourceInterval":[1210,1213]},"("],["app",{"sourceInterval":[1214,1227]},"ruleDescrText",[]],["terminal",{"sourceInterval":[1228,1231]},")"]]],"ruleDescrText":["define",{"sourceInterval":[1235,1266]},null,[],["star",{"sourceInterval":[1255,1266]},["seq",{"sourceInterval":[1256,1264]},["not",{"sourceInterval":[1256,1260]},["terminal",{"sourceInterval":[1257,1260]},")"]],["app",{"sourceInterval":[1261,1264]},"any",[]]]]],"caseName":["define",{"sourceInterval":[1270,1338]},null,[],["seq",{"sourceInterval":[1285,1338]},["terminal",{"sourceInterval":[1285,1289]},"--"],["star",{"sourceInterval":[1290,1304]},["seq",{"sourceInterval":[1291,1302]},["not",{"sourceInterval":[1291,1296]},["terminal",{"sourceInterval":[1292,1296]},"\n"]],["app",{"sourceInterval":[1297,1302]},"space",[]]]],["app",{"sourceInterval":[1305,1309]},"name",[]],["star",{"sourceInterval":[1310,1324]},["seq",{"sourceInterval":[1311,1322]},["not",{"sourceInterval":[1311,1316]},["terminal",{"sourceInterval":[1312,1316]},"\n"]],["app",{"sourceInterval":[1317,1322]},"space",[]]]],["alt",{"sourceInterval":[1326,1337]},["terminal",{"sourceInterval":[1326,1330]},"\n"],["lookahead",{"sourceInterval":[1333,1337]},["terminal",{"sourceInterval":[1334,1337]},"}"]]]]],"name":["define",{"sourceInterval":[1342,1382]},"a name",[],["seq",{"sourceInterval":[1363,1382]},["app",{"sourceInterval":[1363,1372]},"nameFirst",[]],["star",{"sourceInterval":[1373,1382]},["app",{"sourceInterval":[1373,1381]},"nameRest",[]]]]],"nameFirst":["define",{"sourceInterval":[1386,1418]},null,[],["alt",{"sourceInterval":[1402,1418]},["terminal",{"sourceInterval":[1402,1405]},"_"],["app",{"sourceInterval":[1412,1418]},"letter",[]]]],"nameRest":["define",{"sourceInterval":[1422,1452]},null,[],["alt",{"sourceInterval":[1437,1452]},["terminal",{"sourceInterval":[1437,1440]},"_"],["app",{"sourceInterval":[1447,1452]},"alnum",[]]]],"ident":["define",{"sourceInterval":[1456,1489]},"an identifier",[],["app",{"sourceInterval":[1485,1489]},"name",[]]],"terminal":["define",{"sourceInterval":[1493,1531]},null,[],["seq",{"sourceInterval":[1508,1531]},["terminal",{"sourceInterval":[1508,1512]},"\""],["star",{"sourceInterval":[1513,1526]},["app",{"sourceInterval":[1513,1525]},"terminalChar",[]]],["terminal",{"sourceInterval":[1527,1531]},"\""]]],"oneCharTerminal":["define",{"sourceInterval":[1535,1579]},null,[],["seq",{"sourceInterval":[1557,1579]},["terminal",{"sourceInterval":[1557,1561]},"\""],["app",{"sourceInterval":[1562,1574]},"terminalChar",[]],["terminal",{"sourceInterval":[1575,1579]},"\""]]],"terminalChar":["define",{"sourceInterval":[1583,1690]},null,[],["alt",{"sourceInterval":[1602,1690]},["app",{"sourceInterval":[1602,1612]},"escapeChar",[]],["seq",{"sourceInterval":[1651,1690]},["not",{"sourceInterval":[1651,1656]},["terminal",{"sourceInterval":[1652,1656]},"\\"]],["not",{"sourceInterval":[1657,1662]},["terminal",{"sourceInterval":[1658,1662]},"\""]],["not",{"sourceInterval":[1663,1668]},["terminal",{"sourceInterval":[1664,1668]},"\n"]],["range",{"sourceInterval":[1669,1690]},"\u0000",""]]]],"escapeChar_backslash":["define",{"sourceInterval":[1733,1788]},null,[],["terminal",{"sourceInterval":[1733,1739]},"\\\\"]],"escapeChar_doubleQuote":["define",{"sourceInterval":[1795,1852]},null,[],["terminal",{"sourceInterval":[1795,1801]},"\\\""]],"escapeChar_singleQuote":["define",{"sourceInterval":[1859,1916]},null,[],["terminal",{"sourceInterval":[1859,1865]},"\\'"]],"escapeChar_backspace":["define",{"sourceInterval":[1923,1978]},null,[],["terminal",{"sourceInterval":[1923,1928]},"\\b"]],"escapeChar_lineFeed":["define",{"sourceInterval":[1985,2039]},null,[],["terminal",{"sourceInterval":[1985,1990]},"\\n"]],"escapeChar_carriageReturn":["define",{"sourceInterval":[2046,2106]},null,[],["terminal",{"sourceInterval":[2046,2051]},"\\r"]],"escapeChar_tab":["define",{"sourceInterval":[2113,2162]},null,[],["terminal",{"sourceInterval":[2113,2118]},"\\t"]],"escapeChar_unicodeCodePoint":["define",{"sourceInterval":[2169,2231]},null,[],["seq",{"sourceInterval":[2169,2189]},["terminal",{"sourceInterval":[2169,2175]},"\\u{"],["plus",{"sourceInterval":[2176,2185]},["app",{"sourceInterval":[2176,2184]},"hexDigit",[]]],["terminal",{"sourceInterval":[2186,2189]},"}"]]],"escapeChar_unicodeEscape":["define",{"sourceInterval":[2238,2297]},null,[],["seq",{"sourceInterval":[2238,2279]},["terminal",{"sourceInterval":[2238,2243]},"\\u"],["app",{"sourceInterval":[2244,2252]},"hexDigit",[]],["app",{"sourceInterval":[2253,2261]},"hexDigit",[]],["app",{"sourceInterval":[2262,2270]},"hexDigit",[]],["app",{"sourceInterval":[2271,2279]},"hexDigit",[]]]],"escapeChar_hexEscape":["define",{"sourceInterval":[2304,2359]},null,[],["seq",{"sourceInterval":[2304,2327]},["terminal",{"sourceInterval":[2304,2309]},"\\x"],["app",{"sourceInterval":[2310,2318]},"hexDigit",[]],["app",{"sourceInterval":[2319,2327]},"hexDigit",[]]]],"escapeChar":["define",{"sourceInterval":[1694,2359]},"an escape sequence",[],["alt",{"sourceInterval":[1733,2359]},["app",{"sourceInterval":[1733,1739]},"escapeChar_backslash",[]],["app",{"sourceInterval":[1795,1801]},"escapeChar_doubleQuote",[]],["app",{"sourceInterval":[1859,1865]},"escapeChar_singleQuote",[]],["app",{"sourceInterval":[1923,1928]},"escapeChar_backspace",[]],["app",{"sourceInterval":[1985,1990]},"escapeChar_lineFeed",[]],["app",{"sourceInterval":[2046,2051]},"escapeChar_carriageReturn",[]],["app",{"sourceInterval":[2113,2118]},"escapeChar_tab",[]],["app",{"sourceInterval":[2169,2189]},"escapeChar_unicodeCodePoint",[]],["app",{"sourceInterval":[2238,2279]},"escapeChar_unicodeEscape",[]],["app",{"sourceInterval":[2304,2327]},"escapeChar_hexEscape",[]]]],"space":["extend",{"sourceInterval":[2363,2382]},null,[],["app",{"sourceInterval":[2375,2382]},"comment",[]]],"comment_singleLine":["define",{"sourceInterval":[2400,2446]},null,[],["seq",{"sourceInterval":[2400,2431]},["terminal",{"sourceInterval":[2400,2404]},"//"],["star",{"sourceInterval":[2405,2417]},["seq",{"sourceInterval":[2406,2415]},["not",{"sourceInterval":[2406,2411]},["terminal",{"sourceInterval":[2407,2411]},"\n"]],["app",{"sourceInterval":[2412,2415]},"any",[]]]],["lookahead",{"sourceInterval":[2418,2431]},["alt",{"sourceInterval":[2420,2430]},["terminal",{"sourceInterval":[2420,2424]},"\n"],["app",{"sourceInterval":[2427,2430]},"end",[]]]]]],"comment_multiLine":["define",{"sourceInterval":[2453,2489]},null,[],["seq",{"sourceInterval":[2453,2475]},["terminal",{"sourceInterval":[2453,2457]},"/*"],["star",{"sourceInterval":[2458,2470]},["seq",{"sourceInterval":[2459,2468]},["not",{"sourceInterval":[2459,2464]},["terminal",{"sourceInterval":[2460,2464]},"*/"]],["app",{"sourceInterval":[2465,2468]},"any",[]]]],["terminal",{"sourceInterval":[2471,2475]},"*/"]]],"comment":["define",{"sourceInterval":[2386,2489]},null,[],["alt",{"sourceInterval":[2400,2489]},["app",{"sourceInterval":[2400,2431]},"comment_singleLine",[]],["app",{"sourceInterval":[2453,2475]},"comment_multiLine",[]]]],"tokens":["define",{"sourceInterval":[2493,2508]},null,[],["star",{"sourceInterval":[2502,2508]},["app",{"sourceInterval":[2502,2507]},"token",[]]]],"token":["define",{"sourceInterval":[2512,2588]},null,[],["alt",{"sourceInterval":[2520,2588]},["app",{"sourceInterval":[2520,2528]},"caseName",[]],["app",{"sourceInterval":[2531,2538]},"comment",[]],["app",{"sourceInterval":[2541,2546]},"ident",[]],["app",{"sourceInterval":[2549,2557]},"operator",[]],["app",{"sourceInterval":[2560,2571]},"punctuation",[]],["app",{"sourceInterval":[2574,2582]},"terminal",[]],["app",{"sourceInterval":[2585,2588]},"any",[]]]],"operator":["define",{"sourceInterval":[2592,2657]},null,[],["alt",{"sourceInterval":[2603,2657]},["terminal",{"sourceInterval":[2603,2607]},"<:"],["terminal",{"sourceInterval":[2610,2613]},"="],["terminal",{"sourceInterval":[2616,2620]},":="],["terminal",{"sourceInterval":[2623,2627]},"+="],["terminal",{"sourceInterval":[2630,2633]},"*"],["terminal",{"sourceInterval":[2636,2639]},"+"],["terminal",{"sourceInterval":[2642,2645]},"?"],["terminal",{"sourceInterval":[2648,2651]},"~"],["terminal",{"sourceInterval":[2654,2657]},"&"]]],"punctuation":["define",{"sourceInterval":[2661,2697]},null,[],["alt",{"sourceInterval":[2675,2697]},["terminal",{"sourceInterval":[2675,2678]},"<"],["terminal",{"sourceInterval":[2681,2684]},">"],["terminal",{"sourceInterval":[2687,2690]},","],["terminal",{"sourceInterval":[2693,2697]},"--"]]]}]);
|
|
5749
|
+
var ohmGrammar$1 = makeRecipe$1(["grammar",{"source":"Ohm {\n\n Grammars\n = Grammar*\n\n Grammar\n = ident SuperGrammar? \"{\" Rule* \"}\"\n\n SuperGrammar\n = \"<:\" ident\n\n Rule\n = ident Formals? ruleDescr? \"=\" RuleBody -- define\n | ident Formals? \":=\" OverrideRuleBody -- override\n | ident Formals? \"+=\" RuleBody -- extend\n\n RuleBody\n = \"|\"? NonemptyListOf<TopLevelTerm, \"|\">\n\n TopLevelTerm\n = Seq caseName -- inline\n | Seq\n\n OverrideRuleBody\n = \"|\"? NonemptyListOf<OverrideTopLevelTerm, \"|\">\n\n OverrideTopLevelTerm\n = \"...\" -- superSplice\n | TopLevelTerm\n\n Formals\n = \"<\" ListOf<ident, \",\"> \">\"\n\n Params\n = \"<\" ListOf<Seq, \",\"> \">\"\n\n Alt\n = NonemptyListOf<Seq, \"|\">\n\n Seq\n = Iter*\n\n Iter\n = Pred \"*\" -- star\n | Pred \"+\" -- plus\n | Pred \"?\" -- opt\n | Pred\n\n Pred\n = \"~\" Lex -- not\n | \"&\" Lex -- lookahead\n | Lex\n\n Lex\n = \"#\" Base -- lex\n | Base\n\n Base\n = ident Params? ~(ruleDescr? \"=\" | \":=\" | \"+=\") -- application\n | oneCharTerminal \"..\" oneCharTerminal -- range\n | terminal -- terminal\n | \"(\" Alt \")\" -- paren\n\n ruleDescr (a rule description)\n = \"(\" ruleDescrText \")\"\n\n ruleDescrText\n = (~\")\" any)*\n\n caseName\n = \"--\" (~\"\\n\" space)* name (~\"\\n\" space)* (\"\\n\" | &\"}\")\n\n name (a name)\n = nameFirst nameRest*\n\n nameFirst\n = \"_\"\n | letter\n\n nameRest\n = \"_\"\n | alnum\n\n ident (an identifier)\n = name\n\n terminal\n = \"\\\"\" terminalChar* \"\\\"\"\n\n oneCharTerminal\n = \"\\\"\" terminalChar \"\\\"\"\n\n terminalChar\n = escapeChar\n | ~\"\\\\\" ~\"\\\"\" ~\"\\n\" \"\\u{0}\"..\"\\u{10FFFF}\"\n\n escapeChar (an escape sequence)\n = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\\\'\" -- singleQuote\n | \"\\\\b\" -- backspace\n | \"\\\\n\" -- lineFeed\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\u{\" hexDigit hexDigit? hexDigit?\n hexDigit? hexDigit? hexDigit? \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n space\n += comment\n\n comment\n = \"//\" (~\"\\n\" any)* &(\"\\n\" | end) -- singleLine\n | \"/*\" (~\"*/\" any)* \"*/\" -- multiLine\n\n tokens = token*\n\n token = caseName | comment | ident | operator | punctuation | terminal | any\n\n operator = \"<:\" | \"=\" | \":=\" | \"+=\" | \"*\" | \"+\" | \"?\" | \"~\" | \"&\"\n\n punctuation = \"<\" | \">\" | \",\" | \"--\"\n}"},"Ohm",null,"Grammars",{"Grammars":["define",{"sourceInterval":[9,32]},null,[],["star",{"sourceInterval":[24,32]},["app",{"sourceInterval":[24,31]},"Grammar",[]]]],"Grammar":["define",{"sourceInterval":[36,83]},null,[],["seq",{"sourceInterval":[50,83]},["app",{"sourceInterval":[50,55]},"ident",[]],["opt",{"sourceInterval":[56,69]},["app",{"sourceInterval":[56,68]},"SuperGrammar",[]]],["terminal",{"sourceInterval":[70,73]},"{"],["star",{"sourceInterval":[74,79]},["app",{"sourceInterval":[74,78]},"Rule",[]]],["terminal",{"sourceInterval":[80,83]},"}"]]],"SuperGrammar":["define",{"sourceInterval":[87,116]},null,[],["seq",{"sourceInterval":[106,116]},["terminal",{"sourceInterval":[106,110]},"<:"],["app",{"sourceInterval":[111,116]},"ident",[]]]],"Rule_define":["define",{"sourceInterval":[131,181]},null,[],["seq",{"sourceInterval":[131,170]},["app",{"sourceInterval":[131,136]},"ident",[]],["opt",{"sourceInterval":[137,145]},["app",{"sourceInterval":[137,144]},"Formals",[]]],["opt",{"sourceInterval":[146,156]},["app",{"sourceInterval":[146,155]},"ruleDescr",[]]],["terminal",{"sourceInterval":[157,160]},"="],["app",{"sourceInterval":[162,170]},"RuleBody",[]]]],"Rule_override":["define",{"sourceInterval":[188,248]},null,[],["seq",{"sourceInterval":[188,235]},["app",{"sourceInterval":[188,193]},"ident",[]],["opt",{"sourceInterval":[194,202]},["app",{"sourceInterval":[194,201]},"Formals",[]]],["terminal",{"sourceInterval":[214,218]},":="],["app",{"sourceInterval":[219,235]},"OverrideRuleBody",[]]]],"Rule_extend":["define",{"sourceInterval":[255,305]},null,[],["seq",{"sourceInterval":[255,294]},["app",{"sourceInterval":[255,260]},"ident",[]],["opt",{"sourceInterval":[261,269]},["app",{"sourceInterval":[261,268]},"Formals",[]]],["terminal",{"sourceInterval":[281,285]},"+="],["app",{"sourceInterval":[286,294]},"RuleBody",[]]]],"Rule":["define",{"sourceInterval":[120,305]},null,[],["alt",{"sourceInterval":[131,305]},["app",{"sourceInterval":[131,170]},"Rule_define",[]],["app",{"sourceInterval":[188,235]},"Rule_override",[]],["app",{"sourceInterval":[255,294]},"Rule_extend",[]]]],"RuleBody":["define",{"sourceInterval":[309,362]},null,[],["seq",{"sourceInterval":[324,362]},["opt",{"sourceInterval":[324,328]},["terminal",{"sourceInterval":[324,327]},"|"]],["app",{"sourceInterval":[329,362]},"NonemptyListOf",[["app",{"sourceInterval":[344,356]},"TopLevelTerm",[]],["terminal",{"sourceInterval":[358,361]},"|"]]]]],"TopLevelTerm_inline":["define",{"sourceInterval":[385,408]},null,[],["seq",{"sourceInterval":[385,397]},["app",{"sourceInterval":[385,388]},"Seq",[]],["app",{"sourceInterval":[389,397]},"caseName",[]]]],"TopLevelTerm":["define",{"sourceInterval":[366,418]},null,[],["alt",{"sourceInterval":[385,418]},["app",{"sourceInterval":[385,397]},"TopLevelTerm_inline",[]],["app",{"sourceInterval":[415,418]},"Seq",[]]]],"OverrideRuleBody":["define",{"sourceInterval":[422,491]},null,[],["seq",{"sourceInterval":[445,491]},["opt",{"sourceInterval":[445,449]},["terminal",{"sourceInterval":[445,448]},"|"]],["app",{"sourceInterval":[450,491]},"NonemptyListOf",[["app",{"sourceInterval":[465,485]},"OverrideTopLevelTerm",[]],["terminal",{"sourceInterval":[487,490]},"|"]]]]],"OverrideTopLevelTerm_superSplice":["define",{"sourceInterval":[522,543]},null,[],["terminal",{"sourceInterval":[522,527]},"..."]],"OverrideTopLevelTerm":["define",{"sourceInterval":[495,562]},null,[],["alt",{"sourceInterval":[522,562]},["app",{"sourceInterval":[522,527]},"OverrideTopLevelTerm_superSplice",[]],["app",{"sourceInterval":[550,562]},"TopLevelTerm",[]]]],"Formals":["define",{"sourceInterval":[566,606]},null,[],["seq",{"sourceInterval":[580,606]},["terminal",{"sourceInterval":[580,583]},"<"],["app",{"sourceInterval":[584,602]},"ListOf",[["app",{"sourceInterval":[591,596]},"ident",[]],["terminal",{"sourceInterval":[598,601]},","]]],["terminal",{"sourceInterval":[603,606]},">"]]],"Params":["define",{"sourceInterval":[610,647]},null,[],["seq",{"sourceInterval":[623,647]},["terminal",{"sourceInterval":[623,626]},"<"],["app",{"sourceInterval":[627,643]},"ListOf",[["app",{"sourceInterval":[634,637]},"Seq",[]],["terminal",{"sourceInterval":[639,642]},","]]],["terminal",{"sourceInterval":[644,647]},">"]]],"Alt":["define",{"sourceInterval":[651,685]},null,[],["app",{"sourceInterval":[661,685]},"NonemptyListOf",[["app",{"sourceInterval":[676,679]},"Seq",[]],["terminal",{"sourceInterval":[681,684]},"|"]]]],"Seq":["define",{"sourceInterval":[689,704]},null,[],["star",{"sourceInterval":[699,704]},["app",{"sourceInterval":[699,703]},"Iter",[]]]],"Iter_star":["define",{"sourceInterval":[719,736]},null,[],["seq",{"sourceInterval":[719,727]},["app",{"sourceInterval":[719,723]},"Pred",[]],["terminal",{"sourceInterval":[724,727]},"*"]]],"Iter_plus":["define",{"sourceInterval":[743,760]},null,[],["seq",{"sourceInterval":[743,751]},["app",{"sourceInterval":[743,747]},"Pred",[]],["terminal",{"sourceInterval":[748,751]},"+"]]],"Iter_opt":["define",{"sourceInterval":[767,783]},null,[],["seq",{"sourceInterval":[767,775]},["app",{"sourceInterval":[767,771]},"Pred",[]],["terminal",{"sourceInterval":[772,775]},"?"]]],"Iter":["define",{"sourceInterval":[708,794]},null,[],["alt",{"sourceInterval":[719,794]},["app",{"sourceInterval":[719,727]},"Iter_star",[]],["app",{"sourceInterval":[743,751]},"Iter_plus",[]],["app",{"sourceInterval":[767,775]},"Iter_opt",[]],["app",{"sourceInterval":[790,794]},"Pred",[]]]],"Pred_not":["define",{"sourceInterval":[809,824]},null,[],["seq",{"sourceInterval":[809,816]},["terminal",{"sourceInterval":[809,812]},"~"],["app",{"sourceInterval":[813,816]},"Lex",[]]]],"Pred_lookahead":["define",{"sourceInterval":[831,852]},null,[],["seq",{"sourceInterval":[831,838]},["terminal",{"sourceInterval":[831,834]},"&"],["app",{"sourceInterval":[835,838]},"Lex",[]]]],"Pred":["define",{"sourceInterval":[798,862]},null,[],["alt",{"sourceInterval":[809,862]},["app",{"sourceInterval":[809,816]},"Pred_not",[]],["app",{"sourceInterval":[831,838]},"Pred_lookahead",[]],["app",{"sourceInterval":[859,862]},"Lex",[]]]],"Lex_lex":["define",{"sourceInterval":[876,892]},null,[],["seq",{"sourceInterval":[876,884]},["terminal",{"sourceInterval":[876,879]},"#"],["app",{"sourceInterval":[880,884]},"Base",[]]]],"Lex":["define",{"sourceInterval":[866,903]},null,[],["alt",{"sourceInterval":[876,903]},["app",{"sourceInterval":[876,884]},"Lex_lex",[]],["app",{"sourceInterval":[899,903]},"Base",[]]]],"Base_application":["define",{"sourceInterval":[918,979]},null,[],["seq",{"sourceInterval":[918,963]},["app",{"sourceInterval":[918,923]},"ident",[]],["opt",{"sourceInterval":[924,931]},["app",{"sourceInterval":[924,930]},"Params",[]]],["not",{"sourceInterval":[932,963]},["alt",{"sourceInterval":[934,962]},["seq",{"sourceInterval":[934,948]},["opt",{"sourceInterval":[934,944]},["app",{"sourceInterval":[934,943]},"ruleDescr",[]]],["terminal",{"sourceInterval":[945,948]},"="]],["terminal",{"sourceInterval":[951,955]},":="],["terminal",{"sourceInterval":[958,962]},"+="]]]]],"Base_range":["define",{"sourceInterval":[986,1041]},null,[],["seq",{"sourceInterval":[986,1022]},["app",{"sourceInterval":[986,1001]},"oneCharTerminal",[]],["terminal",{"sourceInterval":[1002,1006]},".."],["app",{"sourceInterval":[1007,1022]},"oneCharTerminal",[]]]],"Base_terminal":["define",{"sourceInterval":[1048,1106]},null,[],["app",{"sourceInterval":[1048,1056]},"terminal",[]]],"Base_paren":["define",{"sourceInterval":[1113,1168]},null,[],["seq",{"sourceInterval":[1113,1124]},["terminal",{"sourceInterval":[1113,1116]},"("],["app",{"sourceInterval":[1117,1120]},"Alt",[]],["terminal",{"sourceInterval":[1121,1124]},")"]]],"Base":["define",{"sourceInterval":[907,1168]},null,[],["alt",{"sourceInterval":[918,1168]},["app",{"sourceInterval":[918,963]},"Base_application",[]],["app",{"sourceInterval":[986,1022]},"Base_range",[]],["app",{"sourceInterval":[1048,1056]},"Base_terminal",[]],["app",{"sourceInterval":[1113,1124]},"Base_paren",[]]]],"ruleDescr":["define",{"sourceInterval":[1172,1231]},"a rule description",[],["seq",{"sourceInterval":[1210,1231]},["terminal",{"sourceInterval":[1210,1213]},"("],["app",{"sourceInterval":[1214,1227]},"ruleDescrText",[]],["terminal",{"sourceInterval":[1228,1231]},")"]]],"ruleDescrText":["define",{"sourceInterval":[1235,1266]},null,[],["star",{"sourceInterval":[1255,1266]},["seq",{"sourceInterval":[1256,1264]},["not",{"sourceInterval":[1256,1260]},["terminal",{"sourceInterval":[1257,1260]},")"]],["app",{"sourceInterval":[1261,1264]},"any",[]]]]],"caseName":["define",{"sourceInterval":[1270,1338]},null,[],["seq",{"sourceInterval":[1285,1338]},["terminal",{"sourceInterval":[1285,1289]},"--"],["star",{"sourceInterval":[1290,1304]},["seq",{"sourceInterval":[1291,1302]},["not",{"sourceInterval":[1291,1296]},["terminal",{"sourceInterval":[1292,1296]},"\n"]],["app",{"sourceInterval":[1297,1302]},"space",[]]]],["app",{"sourceInterval":[1305,1309]},"name",[]],["star",{"sourceInterval":[1310,1324]},["seq",{"sourceInterval":[1311,1322]},["not",{"sourceInterval":[1311,1316]},["terminal",{"sourceInterval":[1312,1316]},"\n"]],["app",{"sourceInterval":[1317,1322]},"space",[]]]],["alt",{"sourceInterval":[1326,1337]},["terminal",{"sourceInterval":[1326,1330]},"\n"],["lookahead",{"sourceInterval":[1333,1337]},["terminal",{"sourceInterval":[1334,1337]},"}"]]]]],"name":["define",{"sourceInterval":[1342,1382]},"a name",[],["seq",{"sourceInterval":[1363,1382]},["app",{"sourceInterval":[1363,1372]},"nameFirst",[]],["star",{"sourceInterval":[1373,1382]},["app",{"sourceInterval":[1373,1381]},"nameRest",[]]]]],"nameFirst":["define",{"sourceInterval":[1386,1418]},null,[],["alt",{"sourceInterval":[1402,1418]},["terminal",{"sourceInterval":[1402,1405]},"_"],["app",{"sourceInterval":[1412,1418]},"letter",[]]]],"nameRest":["define",{"sourceInterval":[1422,1452]},null,[],["alt",{"sourceInterval":[1437,1452]},["terminal",{"sourceInterval":[1437,1440]},"_"],["app",{"sourceInterval":[1447,1452]},"alnum",[]]]],"ident":["define",{"sourceInterval":[1456,1489]},"an identifier",[],["app",{"sourceInterval":[1485,1489]},"name",[]]],"terminal":["define",{"sourceInterval":[1493,1531]},null,[],["seq",{"sourceInterval":[1508,1531]},["terminal",{"sourceInterval":[1508,1512]},"\""],["star",{"sourceInterval":[1513,1526]},["app",{"sourceInterval":[1513,1525]},"terminalChar",[]]],["terminal",{"sourceInterval":[1527,1531]},"\""]]],"oneCharTerminal":["define",{"sourceInterval":[1535,1579]},null,[],["seq",{"sourceInterval":[1557,1579]},["terminal",{"sourceInterval":[1557,1561]},"\""],["app",{"sourceInterval":[1562,1574]},"terminalChar",[]],["terminal",{"sourceInterval":[1575,1579]},"\""]]],"terminalChar":["define",{"sourceInterval":[1583,1660]},null,[],["alt",{"sourceInterval":[1602,1660]},["app",{"sourceInterval":[1602,1612]},"escapeChar",[]],["seq",{"sourceInterval":[1621,1660]},["not",{"sourceInterval":[1621,1626]},["terminal",{"sourceInterval":[1622,1626]},"\\"]],["not",{"sourceInterval":[1627,1632]},["terminal",{"sourceInterval":[1628,1632]},"\""]],["not",{"sourceInterval":[1633,1638]},["terminal",{"sourceInterval":[1634,1638]},"\n"]],["range",{"sourceInterval":[1639,1660]},"\u0000",""]]]],"escapeChar_backslash":["define",{"sourceInterval":[1703,1758]},null,[],["terminal",{"sourceInterval":[1703,1709]},"\\\\"]],"escapeChar_doubleQuote":["define",{"sourceInterval":[1765,1822]},null,[],["terminal",{"sourceInterval":[1765,1771]},"\\\""]],"escapeChar_singleQuote":["define",{"sourceInterval":[1829,1886]},null,[],["terminal",{"sourceInterval":[1829,1835]},"\\'"]],"escapeChar_backspace":["define",{"sourceInterval":[1893,1948]},null,[],["terminal",{"sourceInterval":[1893,1898]},"\\b"]],"escapeChar_lineFeed":["define",{"sourceInterval":[1955,2009]},null,[],["terminal",{"sourceInterval":[1955,1960]},"\\n"]],"escapeChar_carriageReturn":["define",{"sourceInterval":[2016,2076]},null,[],["terminal",{"sourceInterval":[2016,2021]},"\\r"]],"escapeChar_tab":["define",{"sourceInterval":[2083,2132]},null,[],["terminal",{"sourceInterval":[2083,2088]},"\\t"]],"escapeChar_unicodeCodePoint":["define",{"sourceInterval":[2139,2243]},null,[],["seq",{"sourceInterval":[2139,2221]},["terminal",{"sourceInterval":[2139,2145]},"\\u{"],["app",{"sourceInterval":[2146,2154]},"hexDigit",[]],["opt",{"sourceInterval":[2155,2164]},["app",{"sourceInterval":[2155,2163]},"hexDigit",[]]],["opt",{"sourceInterval":[2165,2174]},["app",{"sourceInterval":[2165,2173]},"hexDigit",[]]],["opt",{"sourceInterval":[2188,2197]},["app",{"sourceInterval":[2188,2196]},"hexDigit",[]]],["opt",{"sourceInterval":[2198,2207]},["app",{"sourceInterval":[2198,2206]},"hexDigit",[]]],["opt",{"sourceInterval":[2208,2217]},["app",{"sourceInterval":[2208,2216]},"hexDigit",[]]],["terminal",{"sourceInterval":[2218,2221]},"}"]]],"escapeChar_unicodeEscape":["define",{"sourceInterval":[2250,2309]},null,[],["seq",{"sourceInterval":[2250,2291]},["terminal",{"sourceInterval":[2250,2255]},"\\u"],["app",{"sourceInterval":[2256,2264]},"hexDigit",[]],["app",{"sourceInterval":[2265,2273]},"hexDigit",[]],["app",{"sourceInterval":[2274,2282]},"hexDigit",[]],["app",{"sourceInterval":[2283,2291]},"hexDigit",[]]]],"escapeChar_hexEscape":["define",{"sourceInterval":[2316,2371]},null,[],["seq",{"sourceInterval":[2316,2339]},["terminal",{"sourceInterval":[2316,2321]},"\\x"],["app",{"sourceInterval":[2322,2330]},"hexDigit",[]],["app",{"sourceInterval":[2331,2339]},"hexDigit",[]]]],"escapeChar":["define",{"sourceInterval":[1664,2371]},"an escape sequence",[],["alt",{"sourceInterval":[1703,2371]},["app",{"sourceInterval":[1703,1709]},"escapeChar_backslash",[]],["app",{"sourceInterval":[1765,1771]},"escapeChar_doubleQuote",[]],["app",{"sourceInterval":[1829,1835]},"escapeChar_singleQuote",[]],["app",{"sourceInterval":[1893,1898]},"escapeChar_backspace",[]],["app",{"sourceInterval":[1955,1960]},"escapeChar_lineFeed",[]],["app",{"sourceInterval":[2016,2021]},"escapeChar_carriageReturn",[]],["app",{"sourceInterval":[2083,2088]},"escapeChar_tab",[]],["app",{"sourceInterval":[2139,2221]},"escapeChar_unicodeCodePoint",[]],["app",{"sourceInterval":[2250,2291]},"escapeChar_unicodeEscape",[]],["app",{"sourceInterval":[2316,2339]},"escapeChar_hexEscape",[]]]],"space":["extend",{"sourceInterval":[2375,2394]},null,[],["app",{"sourceInterval":[2387,2394]},"comment",[]]],"comment_singleLine":["define",{"sourceInterval":[2412,2458]},null,[],["seq",{"sourceInterval":[2412,2443]},["terminal",{"sourceInterval":[2412,2416]},"//"],["star",{"sourceInterval":[2417,2429]},["seq",{"sourceInterval":[2418,2427]},["not",{"sourceInterval":[2418,2423]},["terminal",{"sourceInterval":[2419,2423]},"\n"]],["app",{"sourceInterval":[2424,2427]},"any",[]]]],["lookahead",{"sourceInterval":[2430,2443]},["alt",{"sourceInterval":[2432,2442]},["terminal",{"sourceInterval":[2432,2436]},"\n"],["app",{"sourceInterval":[2439,2442]},"end",[]]]]]],"comment_multiLine":["define",{"sourceInterval":[2465,2501]},null,[],["seq",{"sourceInterval":[2465,2487]},["terminal",{"sourceInterval":[2465,2469]},"/*"],["star",{"sourceInterval":[2470,2482]},["seq",{"sourceInterval":[2471,2480]},["not",{"sourceInterval":[2471,2476]},["terminal",{"sourceInterval":[2472,2476]},"*/"]],["app",{"sourceInterval":[2477,2480]},"any",[]]]],["terminal",{"sourceInterval":[2483,2487]},"*/"]]],"comment":["define",{"sourceInterval":[2398,2501]},null,[],["alt",{"sourceInterval":[2412,2501]},["app",{"sourceInterval":[2412,2443]},"comment_singleLine",[]],["app",{"sourceInterval":[2465,2487]},"comment_multiLine",[]]]],"tokens":["define",{"sourceInterval":[2505,2520]},null,[],["star",{"sourceInterval":[2514,2520]},["app",{"sourceInterval":[2514,2519]},"token",[]]]],"token":["define",{"sourceInterval":[2524,2600]},null,[],["alt",{"sourceInterval":[2532,2600]},["app",{"sourceInterval":[2532,2540]},"caseName",[]],["app",{"sourceInterval":[2543,2550]},"comment",[]],["app",{"sourceInterval":[2553,2558]},"ident",[]],["app",{"sourceInterval":[2561,2569]},"operator",[]],["app",{"sourceInterval":[2572,2583]},"punctuation",[]],["app",{"sourceInterval":[2586,2594]},"terminal",[]],["app",{"sourceInterval":[2597,2600]},"any",[]]]],"operator":["define",{"sourceInterval":[2604,2669]},null,[],["alt",{"sourceInterval":[2615,2669]},["terminal",{"sourceInterval":[2615,2619]},"<:"],["terminal",{"sourceInterval":[2622,2625]},"="],["terminal",{"sourceInterval":[2628,2632]},":="],["terminal",{"sourceInterval":[2635,2639]},"+="],["terminal",{"sourceInterval":[2642,2645]},"*"],["terminal",{"sourceInterval":[2648,2651]},"+"],["terminal",{"sourceInterval":[2654,2657]},"?"],["terminal",{"sourceInterval":[2660,2663]},"~"],["terminal",{"sourceInterval":[2666,2669]},"&"]]],"punctuation":["define",{"sourceInterval":[2673,2709]},null,[],["alt",{"sourceInterval":[2687,2709]},["terminal",{"sourceInterval":[2687,2690]},"<"],["terminal",{"sourceInterval":[2693,2696]},">"],["terminal",{"sourceInterval":[2699,2702]},","],["terminal",{"sourceInterval":[2705,2709]},"--"]]]}]);
|
|
5743
5750
|
|
|
5744
5751
|
// --------------------------------------------------------------------
|
|
5745
5752
|
// Imports
|
|
@@ -5967,8 +5974,15 @@ function buildGrammar(match, namespace, optOhmGrammarForTesting) {
|
|
|
5967
5974
|
return c.visit();
|
|
5968
5975
|
},
|
|
5969
5976
|
|
|
5970
|
-
|
|
5971
|
-
|
|
5977
|
+
escapeChar(c) {
|
|
5978
|
+
try {
|
|
5979
|
+
return common.unescapeCodePoint(this.sourceString);
|
|
5980
|
+
} catch (err) {
|
|
5981
|
+
if (err instanceof RangeError && err.message.startsWith('Invalid code point ')) {
|
|
5982
|
+
throw errors.invalidCodePoint(c);
|
|
5983
|
+
}
|
|
5984
|
+
throw err; // Rethrow
|
|
5985
|
+
}
|
|
5972
5986
|
},
|
|
5973
5987
|
|
|
5974
5988
|
NonemptyListOf(x, _, xs) {
|