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 +1 -1
- package/lib/utilities/bnf.js +11 -8
- package/package.json +1 -1
- package/src/constants.js +1 -0
- package/src/utilities/bnf.js +16 -6
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,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxldmVscyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuZXhwb3J0IGNvbnN0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCB9ID0gbGV2ZWxzO1xuXG5leHBvcnQgY29uc3QgTEVWRUxTID0gW1xuICBUUkFDRV9MRVZFTCxcbiAgREVCVUdfTEVWRUwsXG4gIElORk9fTEVWRUwsXG4gIFdBUk5JTkdfTEVWRUwsXG4gIEVSUk9SX0xFVkVMXG5dO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBTSU5HTEVfU1BBQ0UgPSBcIiBcIjtcbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgQlJFQUtfTUVTU0FHRSA9IFwiOjogQlJFQUsgOjpcIjtcbmV4cG9ydCBjb25zdCBMRVZFTF9NQVhJTVVNX0xFTkdUSCA9IDc7XG5cbiJdLCJuYW1lcyI6WyJCUkVBS19NRVNTQUdFIiwiREVCVUdfTEVWRUwiLCJET1VCTEVfU1BBQ0UiLCJFTVBUWV9TVFJJTkciLCJFUlJPUl9MRVZFTCIsIklORk9fTEVWRUwiLCJMRVZFTFMiLCJMRVZFTF9NQVhJTVVNX0xFTkdUSCIsIlNJTkdMRV9TUEFDRSIsIlRSQUNFX0xFVkVMIiwiV0FSTklOR19MRVZFTCIsImxldmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUJhQTtlQUFBQTs7UUFiZUM7ZUFBQUE7O1FBWWZDO2VBQUFBOztRQUZBQztlQUFBQTs7UUFWdURDO2VBQUFBOztRQUEzQkM7ZUFBQUE7O1FBRTVCQztlQUFBQTs7UUFZQUM7ZUFBQUE7O1FBSEFDO2VBQUFBOztRQVhFQztlQUFBQTs7UUFBc0NDO2VBQUFBOzs7MkJBRjlCO0FBRWhCLE1BQU0sRUFBRUQsV0FBVyxFQUFFUixXQUFXLEVBQUVJLFVBQVUsRUFBRUssYUFBYSxFQUFFTixXQUFXLEVBQUUsR0FBR08saUJBQU07QUFFbkYsTUFBTUwsU0FBUztJQUNwQkc7SUFDQVI7SUFDQUk7SUFDQUs7SUFDQU47Q0FDRDtBQUVNLE1BQU1ELGVBQWU7QUFDckIsTUFBTUssZUFBZTtBQUNyQixNQUFNTixlQUFlO0FBQ3JCLE1BQU1GLGdCQUFnQjtBQUN0QixNQUFNTyx1QkFBdUIifQ==
|
package/lib/utilities/bnf.js
CHANGED
|
@@ -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 =
|
|
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}...
|
|
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,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjaGFyYWN0ZXJzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgc3BlY2lhbFN5bWJvbHMgfSBmcm9tIFwib2NjYW0tbGV4ZXJzXCI7XG5cbmltcG9ydCB7IEJORkxleGVyIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuaW1wb3J0IHsgQk5GUGFyc2VyIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZW5kT2ZMaW5lIH0gPSBzcGVjaWFsU3ltYm9scyxcbiAgICAgIHsgTkVXX0xJTkVfQ0hBUkFDVEVSIH0gPSBjaGFyYWN0ZXJzO1xuXG5jb25zdCBibmZMZXhlciA9IEJORkxleGVyLmZyb21Ob3RoaW5nKCksXG4gICAgICBibmZQYXJzZXIgPSBCTkZQYXJzZXIuZnJvbU5vdGhpbmcoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVGcm9tUnVsZU5hbWUocnVsZU5hbWUsIGRlbGltaXRlciA9IGVuZE9mTGluZSkge1xuICBjb25zdCBibmYgPSBgIF8gOjo9ICR7cnVsZU5hbWV9Li4uICAke2RlbGltaXRlcn07IGAsXG4gICAgICAgIHRva2VucyA9IGJuZkxleGVyLnRva2Vuc0Zyb21CTkYoYm5mKSxcbiAgICAgICAgcnVsZXMgPSBibmZQYXJzZXIucnVsZXNGcm9tVG9rZW5zKHRva2VucyksXG4gICAgICAgIGZpcnN0UnVsZSA9IGZpcnN0KHJ1bGVzKSxcbiAgICAgICAgcnVsZSA9IGZpcnN0UnVsZTsgLy8vXG5cbiAgcmV0dXJuIHJ1bGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZShwbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgZGVsaW1pdGVyLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250ZXh0ID0gZGVsaW1pdGVyOyAgLy8vXG5cbiAgICBkZWxpbWl0ZXIgPSBORVdfTElORV9DSEFSQUNURVI7XG4gIH1cblxuICBsZXQgbm9kZTtcblxuICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgY29udGVudCA9IGAke3N0cmluZ30ke2RlbGltaXRlcn1gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbnN0YW50aWF0ZSxcbiAgcnVsZUZyb21SdWxlTmFtZVxufTtcbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZW5kT2ZMaW5lIiwic3BlY2lhbFN5bWJvbHMiLCJORVdfTElORV9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwiYm5mTGV4ZXIiLCJCTkZMZXhlciIsImZyb21Ob3RoaW5nIiwiYm5mUGFyc2VyIiwiQk5GUGFyc2VyIiwicnVsZU5hbWUiLCJkZWxpbWl0ZXIiLCJibmYiLCJ0b2tlbnMiLCJ0b2tlbnNGcm9tQk5GIiwicnVsZXMiLCJydWxlc0Zyb21Ub2tlbnMiLCJmaXJzdFJ1bGUiLCJydWxlIiwicGxhY2Vob2xkZXJSdWxlIiwic3RyaW5nIiwiY29udGV4dCIsInVuZGVmaW5lZCIsIm5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiY29udGVudCIsInRva2VuaXNlIiwic2V0VG9rZW5zIiwic3RhcnRSdWxlIiwicGFyc2UiLCJub25UZXJtaW5hbE5vZGUiLCJzb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5REE7ZUFBQTs7UUEvQmdCQTtlQUFBQTs7UUFWQUM7ZUFBQUE7OzsyQkFkVzs2QkFDSTs4QkFHTDtBQUcxQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUMxQixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMkJBQWMsRUFDOUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR0MscUJBQVU7QUFFekMsTUFBTUMsV0FBV0MscUJBQVEsQ0FBQ0MsV0FBVyxJQUMvQkMsWUFBWUMsdUJBQVMsQ0FBQ0YsV0FBVztBQUVoQyxTQUFTVCxpQkFBaUJZLFFBQVEsRUFBRUMsWUFBWVYsU0FBUztJQUM5RCxNQUFNVyxNQUFNLENBQUMsT0FBTyxFQUFFRixTQUFTLEtBQUssRUFBRUMsVUFBVSxFQUFFLENBQUMsRUFDN0NFLFNBQVNSLFNBQVNTLGFBQWEsQ0FBQ0YsTUFDaENHLFFBQVFQLFVBQVVRLGVBQWUsQ0FBQ0gsU0FDbENJLFlBQVlsQixNQUFNZ0IsUUFDbEJHLE9BQU9ELFdBQVcsR0FBRztJQUUzQixPQUFPQztBQUNUO0FBRU8sU0FBU3JCLFlBQVlzQixlQUFlLEVBQUVDLE1BQU0sRUFBRVQsU0FBUyxFQUFFVSxPQUFPO0lBQ3JFLElBQUlBLFlBQVlDLFdBQVc7UUFDekJELFVBQVVWLFdBQVksR0FBRztRQUV6QkEsWUFBWVI7SUFDZDtJQUVBLElBQUlvQjtJQUVKLE1BQU1DLFFBQVFILFFBQVFJLFFBQVEsSUFDeEJDLFNBQVNMLFFBQVFNLFNBQVMsSUFDMUJDLFVBQVUsR0FBR1IsU0FBU1QsV0FBVyxFQUNqQ0UsU0FBU1csTUFBTUssUUFBUSxDQUFDRDtJQUU5QlAsUUFBUVMsU0FBUyxDQUFDakI7SUFFbEIsTUFBTWtCLFlBQVlaLGlCQUFrQixHQUFHO0lBRXZDSSxPQUFPRyxPQUFPTSxLQUFLLENBQUNuQixRQUFRa0I7SUFFNUIsTUFBTUUsa0JBQWtCVixNQUFNLEdBQUc7SUFFakNVLGdCQUFnQkMsYUFBYSxDQUFDLENBQUNDO1FBQzdCWixPQUFPWSxXQUFXLEdBQUc7UUFFckIsT0FBTztJQUNUO0lBRUEsT0FBT1o7QUFDVDtNQUVBLFdBQWU7SUFDYjFCO0lBQ0FDO0FBQ0YifQ==
|
package/package.json
CHANGED
package/src/constants.js
CHANGED
package/src/utilities/bnf.js
CHANGED
|
@@ -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}...
|
|
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);
|