occam-languages 1.0.26 → 1.0.27

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/index.js CHANGED
@@ -63,6 +63,9 @@ _export(exports, {
63
63
  get asynchronousUtilities () {
64
64
  return _asynchronous.default;
65
65
  },
66
+ get bnfUtilities () {
67
+ return _bnf.default;
68
+ },
66
69
  get breakPointUtilities () {
67
70
  return _breakPoint1.default;
68
71
  },
@@ -106,6 +109,7 @@ const _lexer1 = /*#__PURE__*/ _interop_require_default(require("./nominal/lexer"
106
109
  const _parser1 = /*#__PURE__*/ _interop_require_default(require("./nominal/parser"));
107
110
  const _nonTerminalNode = /*#__PURE__*/ _interop_require_default(require("./nonTerminalNode"));
108
111
  const _node = /*#__PURE__*/ _interop_require_default(require("./mixins/node"));
112
+ const _bnf = /*#__PURE__*/ _interop_require_default(require("./utilities/bnf"));
109
113
  const _node1 = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
110
114
  const _furtle = /*#__PURE__*/ _interop_require_default(require("./utilities/furtle"));
111
115
  const _nominal = /*#__PURE__*/ _interop_require_default(require("./utilities/nominal"));
@@ -120,4 +124,4 @@ function _interop_require_default(obj) {
120
124
  };
121
125
  }
122
126
 
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTaW1wbGVQYXNzIH0gZnJvbSBcIi4vcGFzcy9zaW1wbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRaaXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXF1aXZhbGVuY2VQYXNzIH0gZnJvbSBcIi4vcGFzcy9lcXVpdmFsZW5jZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZnVydGxlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2Z1cnRsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub21pbmFsVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vbWluYWxcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9icmVha1BvaW50XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbGVDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2ZpbGVDb250ZXh0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcmlmaWNhdGlvblV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy92ZXJpZmljYXRpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlQ29udGV4dFwiO1xuIl0sIm5hbWVzIjpbIkFzeW5jUGFzcyIsIkJyZWFrUG9pbnQiLCJDb250ZXh0IiwiRWxlbWVudCIsIkVxdWl2YWxlbmNlUGFzcyIsIkZpbGVDb250ZXh0IiwiRm9yd2FyZFBhc3MiLCJGb3J3YXJkWmlwUGFzcyIsIkZ1cnRsZUxleGVyIiwiRnVydGxlUGFyc2VyIiwiTG9nIiwiTm9taW5hbExleGVyIiwiTm9taW5hbFBhcnNlciIsIk5vblRlcm1pbmFsTm9kZSIsIlJlbGVhc2VDb250ZXh0IiwiU2ltcGxlUGFzcyIsIlppcFBhc3MiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZmlsZUNvbnRleHRVdGlsaXRpZXMiLCJmdXJ0bGVVdGlsaXRpZXMiLCJub2RlTWl4aW5zIiwibm9kZVV0aWxpdGllcyIsIm5vbWluYWxVdGlsaXRpZXMiLCJyZWxlYXNlQ29udGV4dFV0aWxpdGllcyIsInZlcmlmaWNhdGlvblV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVW9CQTtlQUFBQSxjQUFTOztRQUxUQztlQUFBQSxtQkFBVTs7UUFEVkM7ZUFBQUEsZ0JBQU87O1FBRFBDO2VBQUFBLGdCQUFPOztRQVdQQztlQUFBQSxvQkFBZTs7UUFSZkM7ZUFBQUEsYUFBVzs7UUFNWEM7ZUFBQUEsZ0JBQVc7O1FBQ1hDO2VBQUFBLG1CQUFjOztRQUdkQztlQUFBQSxjQUFXOztRQUNYQztlQUFBQSxlQUFZOztRQWZaQztlQUFBQSxZQUFHOztRQWdCSEM7ZUFBQUEsZUFBWTs7UUFDWkM7ZUFBQUEsZ0JBQWE7O1FBRWJDO2VBQUFBLHdCQUFlOztRQWRmQztlQUFBQSxnQkFBYzs7UUFJZEM7ZUFBQUEsZUFBVTs7UUFGVkM7ZUFBQUEsWUFBTzs7UUFzQlBDO2VBQUFBLHFCQUFxQjs7UUFIckJDO2VBQUFBLG9CQUFtQjs7UUFDbkJDO2VBQUFBLG9CQUFvQjs7UUFIcEJDO2VBQUFBLGVBQWU7O1FBSGZDO2VBQUFBLGFBQVU7O1FBRVZDO2VBQUFBLGNBQWE7O1FBRWJDO2VBQUFBLGdCQUFnQjs7UUFLaEJDO2VBQUFBLHVCQUF1Qjs7UUFGdkJDO2VBQUFBLHFCQUFxQjs7OzREQTVCVjtnRUFDSTtnRUFDQTttRUFDRzs2REFDQztnRUFDRzs0REFFUDs4REFDRTsrREFDQztnRUFDQzttRUFDRztvRUFDQzs4REFFSjsrREFDQzsrREFDQTtnRUFDQzt3RUFFRTs2REFFTDs4REFFRzsrREFDRTtnRUFDQztvRUFDRztvRUFDQztxRUFDQztxRUFDQTt1RUFDRSJ9
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTaW1wbGVQYXNzIH0gZnJvbSBcIi4vcGFzcy9zaW1wbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRaaXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXF1aXZhbGVuY2VQYXNzIH0gZnJvbSBcIi4vcGFzcy9lcXVpdmFsZW5jZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkZvcndhcmRaaXBQYXNzIiwiRnVydGxlTGV4ZXIiLCJGdXJ0bGVQYXJzZXIiLCJMb2ciLCJOb21pbmFsTGV4ZXIiLCJOb21pbmFsUGFyc2VyIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImJuZlV0aWxpdGllcyIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJmaWxlQ29udGV4dFV0aWxpdGllcyIsImZ1cnRsZVV0aWxpdGllcyIsIm5vZGVNaXhpbnMiLCJub2RlVXRpbGl0aWVzIiwibm9taW5hbFV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZpY2F0aW9uVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVb0JBO2VBQUFBLGNBQVM7O1FBTFRDO2VBQUFBLG1CQUFVOztRQURWQztlQUFBQSxnQkFBTzs7UUFEUEM7ZUFBQUEsZ0JBQU87O1FBV1BDO2VBQUFBLG9CQUFlOztRQVJmQztlQUFBQSxhQUFXOztRQU1YQztlQUFBQSxnQkFBVzs7UUFDWEM7ZUFBQUEsbUJBQWM7O1FBR2RDO2VBQUFBLGNBQVc7O1FBQ1hDO2VBQUFBLGVBQVk7O1FBZlpDO2VBQUFBLFlBQUc7O1FBZ0JIQztlQUFBQSxlQUFZOztRQUNaQztlQUFBQSxnQkFBYTs7UUFFYkM7ZUFBQUEsd0JBQWU7O1FBZGZDO2VBQUFBLGdCQUFjOztRQUlkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQXVCUEM7ZUFBQUEscUJBQXFCOztRQVByQkM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUNuQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQUtoQkM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEscUJBQXFCOzs7NERBN0JWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOzhEQUNFOytEQUNDO2dFQUNDO21FQUNHO29FQUNDOzhEQUVKOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3FFQUNDO3FFQUNBO3VFQUNFIn0=
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get default () {
13
+ return _default;
14
+ },
15
+ get ruleFromRuleName () {
16
+ return ruleFromRuleName;
17
+ }
18
+ });
19
+ const _occamlexers = require("occam-lexers");
20
+ const _occamparsers = require("occam-parsers");
21
+ const _necessary = require("necessary");
22
+ const { first } = _necessary.arrayUtilities;
23
+ const bnfLexer = _occamlexers.BNFLexer.fromNothing(), bnfParser = _occamparsers.BNFParser.fromNothing();
24
+ function ruleFromRuleName(ruleName) {
25
+ const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `, tokens = bnfLexer.tokensFromBNF(bnf), rules = bnfParser.rulesFromTokens(tokens), firstRule = first(rules), rule = firstRule; ///
26
+ return rule;
27
+ }
28
+ const _default = {
29
+ ruleFromRuleName
30
+ };
31
+
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBCTkZMZXhlciB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcbmltcG9ydCB7IEJORlBhcnNlciB9IGZyb20gXCJvY2NhbS1wYXJzZXJzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGJuZkxleGVyID0gQk5GTGV4ZXIuZnJvbU5vdGhpbmcoKSxcbiAgICAgIGJuZlBhcnNlciA9IEJORlBhcnNlci5mcm9tTm90aGluZygpO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVsZUZyb21SdWxlTmFtZShydWxlTmFtZSkge1xuICBjb25zdCBibmYgPSBgIF8gOjo9ICR7cnVsZU5hbWV9Li4uIDxFTkRfT0ZfTElORT4gOyBgLFxuICAgICAgICB0b2tlbnMgPSBibmZMZXhlci50b2tlbnNGcm9tQk5GKGJuZiksXG4gICAgICAgIHJ1bGVzID0gYm5mUGFyc2VyLnJ1bGVzRnJvbVRva2Vucyh0b2tlbnMpLFxuICAgICAgICBmaXJzdFJ1bGUgPSBmaXJzdChydWxlcyksXG4gICAgICAgIHJ1bGUgPSBmaXJzdFJ1bGU7IC8vL1xuXG4gIHJldHVybiBydWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJ1bGVGcm9tUnVsZU5hbWVcbn07XG4iXSwibmFtZXMiOlsicnVsZUZyb21SdWxlTmFtZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJibmZMZXhlciIsIkJORkxleGVyIiwiZnJvbU5vdGhpbmciLCJibmZQYXJzZXIiLCJCTkZQYXJzZXIiLCJydWxlTmFtZSIsImJuZiIsInRva2VucyIsInRva2Vuc0Zyb21CTkYiLCJydWxlcyIsInJ1bGVzRnJvbVRva2VucyIsImZpcnN0UnVsZSIsInJ1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXFCQTtlQUFBOztRQVZnQkE7ZUFBQUE7Ozs2QkFUUzs4QkFDQzsyQkFDSztBQUUvQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUVoQyxNQUFNQyxXQUFXQyxxQkFBUSxDQUFDQyxXQUFXLElBQy9CQyxZQUFZQyx1QkFBUyxDQUFDRixXQUFXO0FBRWhDLFNBQVNMLGlCQUFpQlEsUUFBUTtJQUN2QyxNQUFNQyxNQUFNLENBQUMsT0FBTyxFQUFFRCxTQUFTLG9CQUFvQixDQUFDLEVBQzlDRSxTQUFTUCxTQUFTUSxhQUFhLENBQUNGLE1BQ2hDRyxRQUFRTixVQUFVTyxlQUFlLENBQUNILFNBQ2xDSSxZQUFZYixNQUFNVyxRQUNsQkcsT0FBT0QsV0FBVyxHQUFHO0lBRTNCLE9BQU9DO0FBQ1Q7TUFFQSxXQUFlO0lBQ2JmO0FBQ0YifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "1.0.26",
4
+ "version": "1.0.27",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -14,8 +14,9 @@
14
14
  "occam-custom-grammars": "^6.0.125",
15
15
  "occam-grammar-utilities": "^8.1.17",
16
16
  "occam-grammars": "^1.3.628",
17
+ "occam-lexers": "^23.2.4",
17
18
  "occam-model": "^1.0.559",
18
- "occam-parsers": "^23.2.4",
19
+ "occam-parsers": "^23.2.7",
19
20
  "occam-query": "^4.1.198"
20
21
  },
21
22
  "devDependencies": {
package/src/index.js CHANGED
@@ -23,6 +23,7 @@ export { default as NonTerminalNode } from "./nonTerminalNode";
23
23
 
24
24
  export { default as nodeMixins } from "./mixins/node";
25
25
 
26
+ export { default as bnfUtilities } from "./utilities/bnf";
26
27
  export { default as nodeUtilities } from "./utilities/node";
27
28
  export { default as furtleUtilities } from "./utilities/furtle";
28
29
  export { default as nominalUtilities } from "./utilities/nominal";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ import { BNFLexer } from "occam-lexers";
4
+ import { BNFParser } from "occam-parsers";
5
+ import { arrayUtilities } from "necessary";
6
+
7
+ const { first } = arrayUtilities;
8
+
9
+ const bnfLexer = BNFLexer.fromNothing(),
10
+ bnfParser = BNFParser.fromNothing();
11
+
12
+ export function ruleFromRuleName(ruleName) {
13
+ const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `,
14
+ tokens = bnfLexer.tokensFromBNF(bnf),
15
+ rules = bnfParser.rulesFromTokens(tokens),
16
+ firstRule = first(rules),
17
+ rule = firstRule; ///
18
+
19
+ return rule;
20
+ }
21
+
22
+ export default {
23
+ ruleFromRuleName
24
+ };