occam-languages 1.0.30 → 1.0.31

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/lib/constants.js CHANGED
@@ -58,4 +58,4 @@ const DOUBLE_SPACE = " ";
58
58
  const BREAK_MESSAGE = ":: BREAK ::";
59
59
  const LEVEL_MAXIMUM_LENGTH = 7;
60
60
 
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxldmVscyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuZXhwb3J0IGNvbnN0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCB9ID0gbGV2ZWxzO1xuXG5leHBvcnQgY29uc3QgTEVWRUxTID0gW1xuICBUUkFDRV9MRVZFTCxcbiAgREVCVUdfTEVWRUwsXG4gIElORk9fTEVWRUwsXG4gIFdBUk5JTkdfTEVWRUwsXG4gIEVSUk9SX0xFVkVMXG5dO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBTSU5HTEVfU1BBQ0UgPSBcIiBcIjtcbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgQlJFQUtfTUVTU0FHRSA9IFwiOjogQlJFQUsgOjpcIjtcbmV4cG9ydCBjb25zdCBMRVZFTF9NQVhJTVVNX0xFTkdUSCA9IDc7XG4iXSwibmFtZXMiOlsiQlJFQUtfTUVTU0FHRSIsIkRFQlVHX0xFVkVMIiwiRE9VQkxFX1NQQUNFIiwiRU1QVFlfU1RSSU5HIiwiRVJST1JfTEVWRUwiLCJJTkZPX0xFVkVMIiwiTEVWRUxTIiwiTEVWRUxfTUFYSU1VTV9MRU5HVEgiLCJTSU5HTEVfU1BBQ0UiLCJUUkFDRV9MRVZFTCIsIldBUk5JTkdfTEVWRUwiLCJsZXZlbHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlCYUE7ZUFBQUE7O1FBYmVDO2VBQUFBOztRQVlmQztlQUFBQTs7UUFGQUM7ZUFBQUE7O1FBVnVEQztlQUFBQTs7UUFBM0JDO2VBQUFBOztRQUU1QkM7ZUFBQUE7O1FBWUFDO2VBQUFBOztRQUhBQztlQUFBQTs7UUFYRUM7ZUFBQUE7O1FBQXNDQztlQUFBQTs7OzJCQUY5QjtBQUVoQixNQUFNLEVBQUVELFdBQVcsRUFBRVIsV0FBVyxFQUFFSSxVQUFVLEVBQUVLLGFBQWEsRUFBRU4sV0FBVyxFQUFFLEdBQUdPLGlCQUFNO0FBRW5GLE1BQU1MLFNBQVM7SUFDcEJHO0lBQ0FSO0lBQ0FJO0lBQ0FLO0lBQ0FOO0NBQ0Q7QUFFTSxNQUFNRCxlQUFlO0FBQ3JCLE1BQU1LLGVBQWU7QUFDckIsTUFBTU4sZUFBZTtBQUNyQixNQUFNRixnQkFBZ0I7QUFDdEIsTUFBTU8sdUJBQXVCIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxldmVscyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuZXhwb3J0IGNvbnN0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCB9ID0gbGV2ZWxzO1xuXG5leHBvcnQgY29uc3QgTEVWRUxTID0gW1xuICBUUkFDRV9MRVZFTCxcbiAgREVCVUdfTEVWRUwsXG4gIElORk9fTEVWRUwsXG4gIFdBUk5JTkdfTEVWRUwsXG4gIEVSUk9SX0xFVkVMXG5dO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBTSU5HTEVfU1BBQ0UgPSBcIiBcIjtcbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgQlJFQUtfTUVTU0FHRSA9IFwiOjogQlJFQUsgOjpcIjtcbmV4cG9ydCBjb25zdCBMRVZFTF9NQVhJTVVNX0xFTkdUSCA9IDc7XG5cbiJdLCJuYW1lcyI6WyJCUkVBS19NRVNTQUdFIiwiREVCVUdfTEVWRUwiLCJET1VCTEVfU1BBQ0UiLCJFTVBUWV9TVFJJTkciLCJFUlJPUl9MRVZFTCIsIklORk9fTEVWRUwiLCJMRVZFTFMiLCJMRVZFTF9NQVhJTVVNX0xFTkdUSCIsIlNJTkdMRV9TUEFDRSIsIlRSQUNFX0xFVkVMIiwiV0FSTklOR19MRVZFTCIsImxldmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUJhQTtlQUFBQTs7UUFiZUM7ZUFBQUE7O1FBWWZDO2VBQUFBOztRQUZBQztlQUFBQTs7UUFWdURDO2VBQUFBOztRQUEzQkM7ZUFBQUE7O1FBRTVCQztlQUFBQTs7UUFZQUM7ZUFBQUE7O1FBSEFDO2VBQUFBOztRQVhFQztlQUFBQTs7UUFBc0NDO2VBQUFBOzs7MkJBRjlCO0FBRWhCLE1BQU0sRUFBRUQsV0FBVyxFQUFFUixXQUFXLEVBQUVJLFVBQVUsRUFBRUssYUFBYSxFQUFFTixXQUFXLEVBQUUsR0FBR08saUJBQU07QUFFbkYsTUFBTUwsU0FBUztJQUNwQkc7SUFDQVI7SUFDQUk7SUFDQUs7SUFDQU47Q0FDRDtBQUVNLE1BQU1ELGVBQWU7QUFDckIsTUFBTUssZUFBZTtBQUNyQixNQUFNTixlQUFlO0FBQ3JCLE1BQU1GLGdCQUFnQjtBQUN0QixNQUFNTyx1QkFBdUIifQ==
@@ -19,19 +19,22 @@ _export(exports, {
19
19
  return ruleFromRuleName;
20
20
  }
21
21
  });
22
+ const _necessary = require("necessary");
22
23
  const _occamlexers = require("occam-lexers");
23
24
  const _occamparsers = require("occam-parsers");
24
- const _necessary = require("necessary");
25
- const { first } = _necessary.arrayUtilities;
25
+ const { first } = _necessary.arrayUtilities, { endOfLine } = _occamlexers.specialSymbols, { NEW_LINE_CHARACTER } = _necessary.characters;
26
26
  const bnfLexer = _occamlexers.BNFLexer.fromNothing(), bnfParser = _occamparsers.BNFParser.fromNothing();
27
- function ruleFromRuleName(ruleName) {
28
- const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `, tokens = bnfLexer.tokensFromBNF(bnf), rules = bnfParser.rulesFromTokens(tokens), firstRule = first(rules), rule = firstRule; ///
27
+ function ruleFromRuleName(ruleName, delimiter = endOfLine) {
28
+ const bnf = ` _ ::= ${ruleName}... ${delimiter}; `, tokens = bnfLexer.tokensFromBNF(bnf), rules = bnfParser.rulesFromTokens(tokens), firstRule = first(rules), rule = firstRule; ///
29
29
  return rule;
30
30
  }
31
- function instantiate(placeholderRule, string, context) {
31
+ function instantiate(placeholderRule, string, delimiter, context) {
32
+ if (context === undefined) {
33
+ context = delimiter; ///
34
+ delimiter = NEW_LINE_CHARACTER;
35
+ }
32
36
  let node;
33
- const lexer = context.getLexer(), parser = context.getParser(), content = `${string}
34
- `, tokens = lexer.tokenise(content);
37
+ const lexer = context.getLexer(), parser = context.getParser(), content = `${string}${delimiter}`, tokens = lexer.tokenise(content);
35
38
  context.setTokens(tokens);
36
39
  const startRule = placeholderRule; ///
37
40
  node = parser.parse(tokens, startRule);
@@ -47,4 +50,4 @@ const _default = {
47
50
  ruleFromRuleName
48
51
  };
49
52
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBCTkZMZXhlciB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcbmltcG9ydCB7IEJORlBhcnNlciB9IGZyb20gXCJvY2NhbS1wYXJzZXJzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGJuZkxleGVyID0gQk5GTGV4ZXIuZnJvbU5vdGhpbmcoKSxcbiAgICAgIGJuZlBhcnNlciA9IEJORlBhcnNlci5mcm9tTm90aGluZygpO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVsZUZyb21SdWxlTmFtZShydWxlTmFtZSkge1xuICBjb25zdCBibmYgPSBgIF8gOjo9ICR7cnVsZU5hbWV9Li4uIDxFTkRfT0ZfTElORT4gOyBgLFxuICAgICAgICB0b2tlbnMgPSBibmZMZXhlci50b2tlbnNGcm9tQk5GKGJuZiksXG4gICAgICAgIHJ1bGVzID0gYm5mUGFyc2VyLnJ1bGVzRnJvbVRva2Vucyh0b2tlbnMpLFxuICAgICAgICBmaXJzdFJ1bGUgPSBmaXJzdChydWxlcyksXG4gICAgICAgIHJ1bGUgPSBmaXJzdFJ1bGU7IC8vL1xuXG4gIHJldHVybiBydWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbnN0YW50aWF0ZSxcbiAgcnVsZUZyb21SdWxlTmFtZVxufTtcbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiYm5mTGV4ZXIiLCJCTkZMZXhlciIsImZyb21Ob3RoaW5nIiwiYm5mUGFyc2VyIiwiQk5GUGFyc2VyIiwicnVsZU5hbWUiLCJibmYiLCJ0b2tlbnMiLCJ0b2tlbnNGcm9tQk5GIiwicnVsZXMiLCJydWxlc0Zyb21Ub2tlbnMiLCJmaXJzdFJ1bGUiLCJydWxlIiwicGxhY2Vob2xkZXJSdWxlIiwic3RyaW5nIiwiY29udGV4dCIsIm5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiY29udGVudCIsInRva2VuaXNlIiwic2V0VG9rZW5zIiwic3RhcnRSdWxlIiwicGFyc2UiLCJub25UZXJtaW5hbE5vZGUiLCJzb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUErQ0E7ZUFBQTs7UUExQmdCQTtlQUFBQTs7UUFWQUM7ZUFBQUE7Ozs2QkFUUzs4QkFDQzsyQkFDSztBQUUvQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUVoQyxNQUFNQyxXQUFXQyxxQkFBUSxDQUFDQyxXQUFXLElBQy9CQyxZQUFZQyx1QkFBUyxDQUFDRixXQUFXO0FBRWhDLFNBQVNMLGlCQUFpQlEsUUFBUTtJQUN2QyxNQUFNQyxNQUFNLENBQUMsT0FBTyxFQUFFRCxTQUFTLG9CQUFvQixDQUFDLEVBQzlDRSxTQUFTUCxTQUFTUSxhQUFhLENBQUNGLE1BQ2hDRyxRQUFRTixVQUFVTyxlQUFlLENBQUNILFNBQ2xDSSxZQUFZYixNQUFNVyxRQUNsQkcsT0FBT0QsV0FBVyxHQUFHO0lBRTNCLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTaEIsWUFBWWlCLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxPQUFPO0lBQzFELElBQUlDO0lBRUosTUFBTUMsUUFBUUYsUUFBUUcsUUFBUSxJQUN4QkMsU0FBU0osUUFBUUssU0FBUyxJQUMxQkMsVUFBVSxHQUFHUCxPQUFPO0FBQzVCLENBQUMsRUFDT1AsU0FBU1UsTUFBTUssUUFBUSxDQUFDRDtJQUU5Qk4sUUFBUVEsU0FBUyxDQUFDaEI7SUFFbEIsTUFBTWlCLFlBQVlYLGlCQUFrQixHQUFHO0lBRXZDRyxPQUFPRyxPQUFPTSxLQUFLLENBQUNsQixRQUFRaUI7SUFFNUIsTUFBTUUsa0JBQWtCVixNQUFNLEdBQUc7SUFFakNVLGdCQUFnQkMsYUFBYSxDQUFDLENBQUNDO1FBQzdCWixPQUFPWSxXQUFXLEdBQUc7UUFFckIsT0FBTztJQUNUO0lBRUEsT0FBT1o7QUFDVDtNQUVBLFdBQWU7SUFDYnBCO0lBQ0FDO0FBQ0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCB7IEJORkxleGVyIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuaW1wb3J0IHsgQk5GUGFyc2VyIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZW5kT2ZMaW5lIH0gPSBzcGVjaWFsU3ltYm9scyxcbiAgICAgIHsgTkVXX0xJTkVfQ0hBUkFDVEVSIH0gPSBjaGFyYWN0ZXJzO1xuXG5jb25zdCBibmZMZXhlciA9IEJORkxleGVyLmZyb21Ob3RoaW5nKCksXG4gICAgICBibmZQYXJzZXIgPSBCTkZQYXJzZXIuZnJvbU5vdGhpbmcoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVGcm9tUnVsZU5hbWUocnVsZU5hbWUsIGRlbGltaXRlciA9IGVuZE9mTGluZSkge1xuICBjb25zdCBibmYgPSBgIF8gOjo9ICR7cnVsZU5hbWV9Li4uICAke2RlbGltaXRlcn07IGAsXG4gICAgICAgIHRva2VucyA9IGJuZkxleGVyLnRva2Vuc0Zyb21CTkYoYm5mKSxcbiAgICAgICAgcnVsZXMgPSBibmZQYXJzZXIucnVsZXNGcm9tVG9rZW5zKHRva2VucyksXG4gICAgICAgIGZpcnN0UnVsZSA9IGZpcnN0KHJ1bGVzKSxcbiAgICAgICAgcnVsZSA9IGZpcnN0UnVsZTsgLy8vXG5cbiAgcmV0dXJuIHJ1bGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZShwbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgZGVsaW1pdGVyLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250ZXh0ID0gZGVsaW1pdGVyOyAgLy8vXG5cbiAgICBkZWxpbWl0ZXIgPSBORVdfTElORV9DSEFSQUNURVI7XG4gIH1cblxuICBsZXQgbm9kZTtcblxuICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgY29udGVudCA9IGAke3N0cmluZ30ke2RlbGltaXRlcn1gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbnN0YW50aWF0ZSxcbiAgcnVsZUZyb21SdWxlTmFtZVxufTtcbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZW5kT2ZMaW5lIiwic3BlY2lhbFN5bWJvbHMiLCJORVdfTElORV9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwiYm5mTGV4ZXIiLCJCTkZMZXhlciIsImZyb21Ob3RoaW5nIiwiYm5mUGFyc2VyIiwiQk5GUGFyc2VyIiwicnVsZU5hbWUiLCJkZWxpbWl0ZXIiLCJibmYiLCJ0b2tlbnMiLCJ0b2tlbnNGcm9tQk5GIiwicnVsZXMiLCJydWxlc0Zyb21Ub2tlbnMiLCJmaXJzdFJ1bGUiLCJydWxlIiwicGxhY2Vob2xkZXJSdWxlIiwic3RyaW5nIiwiY29udGV4dCIsInVuZGVmaW5lZCIsIm5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiY29udGVudCIsInRva2VuaXNlIiwic2V0VG9rZW5zIiwic3RhcnRSdWxlIiwicGFyc2UiLCJub25UZXJtaW5hbE5vZGUiLCJzb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5REE7ZUFBQTs7UUEvQmdCQTtlQUFBQTs7UUFWQUM7ZUFBQUE7OzsyQkFkVzs2QkFDSTs4QkFHTDtBQUcxQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUMxQixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMkJBQWMsRUFDOUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR0MscUJBQVU7QUFFekMsTUFBTUMsV0FBV0MscUJBQVEsQ0FBQ0MsV0FBVyxJQUMvQkMsWUFBWUMsdUJBQVMsQ0FBQ0YsV0FBVztBQUVoQyxTQUFTVCxpQkFBaUJZLFFBQVEsRUFBRUMsWUFBWVYsU0FBUztJQUM5RCxNQUFNVyxNQUFNLENBQUMsT0FBTyxFQUFFRixTQUFTLEtBQUssRUFBRUMsVUFBVSxFQUFFLENBQUMsRUFDN0NFLFNBQVNSLFNBQVNTLGFBQWEsQ0FBQ0YsTUFDaENHLFFBQVFQLFVBQVVRLGVBQWUsQ0FBQ0gsU0FDbENJLFlBQVlsQixNQUFNZ0IsUUFDbEJHLE9BQU9ELFdBQVcsR0FBRztJQUUzQixPQUFPQztBQUNUO0FBRU8sU0FBU3JCLFlBQVlzQixlQUFlLEVBQUVDLE1BQU0sRUFBRVQsU0FBUyxFQUFFVSxPQUFPO0lBQ3JFLElBQUlBLFlBQVlDLFdBQVc7UUFDekJELFVBQVVWLFdBQVksR0FBRztRQUV6QkEsWUFBWVI7SUFDZDtJQUVBLElBQUlvQjtJQUVKLE1BQU1DLFFBQVFILFFBQVFJLFFBQVEsSUFDeEJDLFNBQVNMLFFBQVFNLFNBQVMsSUFDMUJDLFVBQVUsR0FBR1IsU0FBU1QsV0FBVyxFQUNqQ0UsU0FBU1csTUFBTUssUUFBUSxDQUFDRDtJQUU5QlAsUUFBUVMsU0FBUyxDQUFDakI7SUFFbEIsTUFBTWtCLFlBQVlaLGlCQUFrQixHQUFHO0lBRXZDSSxPQUFPRyxPQUFPTSxLQUFLLENBQUNuQixRQUFRa0I7SUFFNUIsTUFBTUUsa0JBQWtCVixNQUFNLEdBQUc7SUFFakNVLGdCQUFnQkMsYUFBYSxDQUFDLENBQUNDO1FBQzdCWixPQUFPWSxXQUFXLEdBQUc7UUFFckIsT0FBTztJQUNUO0lBRUEsT0FBT1o7QUFDVDtNQUVBLFdBQWU7SUFDYjFCO0lBQ0FDO0FBQ0YifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "1.0.30",
4
+ "version": "1.0.31",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
package/src/constants.js CHANGED
@@ -17,3 +17,4 @@ export const SINGLE_SPACE = " ";
17
17
  export const DOUBLE_SPACE = " ";
18
18
  export const BREAK_MESSAGE = ":: BREAK ::";
19
19
  export const LEVEL_MAXIMUM_LENGTH = 7;
20
+
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ import { characters } from "necessary";
4
+ import { specialSymbols } from "occam-lexers";
5
+
3
6
  import { BNFLexer } from "occam-lexers";
4
7
  import { BNFParser } from "occam-parsers";
5
8
  import { arrayUtilities } from "necessary";
6
9
 
7
- const { first } = arrayUtilities;
10
+ const { first } = arrayUtilities,
11
+ { endOfLine } = specialSymbols,
12
+ { NEW_LINE_CHARACTER } = characters;
8
13
 
9
14
  const bnfLexer = BNFLexer.fromNothing(),
10
15
  bnfParser = BNFParser.fromNothing();
11
16
 
12
- export function ruleFromRuleName(ruleName) {
13
- const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `,
17
+ export function ruleFromRuleName(ruleName, delimiter = endOfLine) {
18
+ const bnf = ` _ ::= ${ruleName}... ${delimiter}; `,
14
19
  tokens = bnfLexer.tokensFromBNF(bnf),
15
20
  rules = bnfParser.rulesFromTokens(tokens),
16
21
  firstRule = first(rules),
@@ -19,13 +24,18 @@ export function ruleFromRuleName(ruleName) {
19
24
  return rule;
20
25
  }
21
26
 
22
- export function instantiate(placeholderRule, string, context) {
27
+ export function instantiate(placeholderRule, string, delimiter, context) {
28
+ if (context === undefined) {
29
+ context = delimiter; ///
30
+
31
+ delimiter = NEW_LINE_CHARACTER;
32
+ }
33
+
23
34
  let node;
24
35
 
25
36
  const lexer = context.getLexer(),
26
37
  parser = context.getParser(),
27
- content = `${string}
28
- `,
38
+ content = `${string}${delimiter}`,
29
39
  tokens = lexer.tokenise(content);
30
40
 
31
41
  context.setTokens(tokens);