occam-furtle 2.0.1 → 2.0.4

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 CHANGED
@@ -6,52 +6,67 @@
6
6
 
7
7
  - [Introduction](#introduction)
8
8
  - [Installation](#installation)
9
- - [Examples](#examples)
10
- - [Usage](#usage)
9
+ - [Example](#example)
11
10
  - [Building](#building)
12
11
  - [Contact](#contact)
13
12
 
14
13
  ## Introduction
15
14
 
16
- Furtle is a dynamically but nonetheless strictly typed language for traversing parse trees. The
15
+ Furtle is a dynamically but nonetheless strictly typed, procedural language meant primarily for traversing parse trees.
16
+ It is called from Nominal thus...
17
17
 
18
- ## Installation
19
-
20
- With [npm](https://www.npmjs.com/):
18
+ ```
19
+ Rule (FreeVariable)
20
+ Premise
21
+ @isVariableFree(u, P)
22
+ Conclusion
23
+ u is free in P
24
+ ```
21
25
 
22
- npm install occam-furtle
26
+ ...and looks as follows:
23
27
 
24
- You can also clone the repository with [Git](https://git-scm.com/)...
28
+ ```
29
+ Boolean isVariableFree(Node termNode, Node statementNode) {
30
+ Boolean variableFree = true;
25
31
 
26
- git clone https://github.com/djalbat/occam-furtle.git
32
+ Boolean variableBound = isVariableBound(termNode, statementNode);
27
33
 
28
- ...and then install the dependencies with npm from within the project's root directory:
34
+ If (variableBound) {
35
+ variableFree = false;
36
+ }
29
37
 
30
- npm install
38
+ Return variableFree;
39
+ }
40
+ ```
31
41
 
32
- You can also run a development server, see the section on building later on.
42
+ The above procedure ascertains whether or not the given term's sole variable is bound in the given statement.
43
+ Boundedness is usually defined by induction over the structure of statements, however Occam's custom grammars make this practically unworkable.
44
+ Hence Furtle fulfills this role procedurally, so to speak.
33
45
 
34
- ## Examples
46
+ ## Installation
35
47
 
36
- There is a small development server that can be run from within the project's directory with the following command:
48
+ With [npm](https://www.npmjs.com/):
37
49
 
38
- npm start
50
+ npm install occam-furtle
39
51
 
40
- The examples will then be available at the following URL:
52
+ You can also clone the repository with [Git](https://git-scm.com/)...
41
53
 
42
- http://localhost:8888
54
+ git clone https://github.com/djalbat/occam-furtle.git
43
55
 
44
- The source for the examples can be found in the `src/example.js` file and corresponding `src/example` folder. You are encouraged to try the examples whilst reading what follows. You can rebuild them on the fly with the following command:
56
+ ...and then install the dependencies with npm from within the project's root directory:
45
57
 
46
- npm run watch-debug
58
+ npm install
47
59
 
48
- The development server will reload the page whenever you make changes.
60
+ ## Example
49
61
 
50
- One last thing to bear in mind is that this package is included by way of a relative rather than a package import. If you are importing it into your own application, however, you should use the standard package import.
62
+ The example runs directly on Node:
51
63
 
52
- ## Usage
64
+ ```
65
+ node example.js
66
+ ```
53
67
 
54
- ...
68
+ The `Free and bound variables.ftl` file in the `example/` directory can be changed and the example can be rebuilt, see below.
69
+ Obviously one thing to try is changing the value of the `free` variable.
55
70
 
56
71
  ## Building
57
72
 
@@ -61,7 +61,7 @@ String boundVariableNameFromStatementNode(Node statementNode) {
61
61
  If ((content == "∀") || (content == "∃")) {
62
62
  [ _, Node argumentNode ] = childNodes;
63
63
 
64
- Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable/@name);
64
+ Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable!/@name);
65
65
 
66
66
  If (boundVariableNameTerminalNode != null) {
67
67
  { String content } = boundVariableNameTerminalNode;
@@ -12,17 +12,18 @@ var _occamquery = require("occam-query");
12
12
  var _index = require("../../index");
13
13
  var _necessary = require("necessary");
14
14
  var first = _necessary.arrayUtilities.first;
15
- var termNodeQuery = _occamquery.Query.fromExpressionString("//term[1]");
15
+ var freeTermNodeQuery = _occamquery.Query.fromExpressionString("//term[1]"), boundTermNodeQuery = _occamquery.Query.fromExpressionString("//term[0]");
16
16
  function valuesFromFileContext(fileContext) {
17
- var context = fileContext, nodes = nodesFromFileContext(fileContext), values = _index.Values.fromNodes(nodes, context);
17
+ var free = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
18
+ var context = fileContext, nodes = nodesFromFileContext(fileContext, free), values = _index.Values.fromNodes(nodes, context);
18
19
  return values;
19
20
  }
20
- function nodesFromFileContext(fileContext) {
21
- var node = fileContext.getNode(), termNodes = termNodeQuery.execute(node), firstTermNode = first(termNodes), termNode = firstTermNode, statementNode = node, nodes = [
21
+ function nodesFromFileContext(fileContext, free) {
22
+ var termNodeQuery = free ? freeTermNodeQuery : boundTermNodeQuery, node = fileContext.getNode(), termNodes = termNodeQuery.execute(node), firstTermNode = first(termNodes), termNode = firstTermNode, statementNode = node, nodes = [
22
23
  termNode,
23
24
  statementNode
24
25
  ];
25
26
  return nodes;
26
27
  }
27
28
 
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3V0aWxpdGllcy92YWx1ZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBWYWx1ZXMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjsgLy8vXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhcIi8vdGVybVsxXVwiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgbm9kZXMgPSBub2Rlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgIHZhbHVlcyA9IFZhbHVlcy5mcm9tTm9kZXMobm9kZXMsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG5cbmZ1bmN0aW9uIG5vZGVzRnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IG5vZGUgPSBmaWxlQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgIHRlcm1Ob2RlcyA9IHRlcm1Ob2RlUXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgZmlyc3RUZXJtTm9kZSA9IGZpcnN0KHRlcm1Ob2RlcyksXG4gICAgICAgIHRlcm1Ob2RlID0gZmlyc3RUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgbm9kZXMgPSBbXG4gICAgICAgICAgdGVybU5vZGUsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBub2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZXNGcm9tRmlsZUNvbnRleHQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwidGVybU5vZGVRdWVyeSIsIlF1ZXJ5IiwiZnJvbUV4cHJlc3Npb25TdHJpbmciLCJmaWxlQ29udGV4dCIsImNvbnRleHQiLCJub2RlcyIsIm5vZGVzRnJvbUZpbGVDb250ZXh0IiwidmFsdWVzIiwiVmFsdWVzIiwiZnJvbU5vZGVzIiwibm9kZSIsImdldE5vZGUiLCJ0ZXJtTm9kZXMiLCJleGVjdXRlIiwiZmlyc3RUZXJtTm9kZSIsInRlcm1Ob2RlIiwic3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVWdCQTs7O2VBQUFBOzs7MEJBUk07cUJBQ0M7eUJBQ1E7QUFFL0IsSUFBTSxBQUFFQyxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFUixJQUFNRSxnQkFBZ0JDLGlCQUFLLENBQUNDLG9CQUFvQixDQUFDO0FBRTFDLFNBQVNMLHNCQUFzQk0sV0FBVztJQUMvQyxJQUFNQyxVQUFVRCxhQUNWRSxRQUFRQyxxQkFBcUJILGNBQzdCSSxTQUFTQyxhQUFNLENBQUNDLFNBQVMsQ0FBQ0osT0FBT0Q7SUFFdkMsT0FBT0c7QUFDVDtBQUVBLFNBQVNELHFCQUFxQkgsV0FBVztJQUN2QyxJQUFNTyxPQUFPUCxZQUFZUSxPQUFPLElBQzFCQyxZQUFZWixjQUFjYSxPQUFPLENBQUNILE9BQ2xDSSxnQkFBZ0JoQixNQUFNYyxZQUN0QkcsV0FBV0QsZUFDWEUsZ0JBQWdCTixNQUNoQkwsUUFBUTtRQUNOVTtRQUNBQztLQUNEO0lBRVAsT0FBT1g7QUFDVCJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3V0aWxpdGllcy92YWx1ZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBWYWx1ZXMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjsgLy8vXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGZyZWVUZXJtTm9kZVF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb25TdHJpbmcoXCIvL3Rlcm1bMV1cIiksXG4gICAgICBib3VuZFRlcm1Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhcIi8vdGVybVswXVwiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCwgZnJlZSA9IHRydWUpIHtcbiAgY29uc3QgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgIG5vZGVzID0gbm9kZXNGcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQsIGZyZWUpLFxuICAgICAgICB2YWx1ZXMgPSBWYWx1ZXMuZnJvbU5vZGVzKG5vZGVzLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5mdW5jdGlvbiBub2Rlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCwgZnJlZSkge1xuICBjb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gZnJlZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVUZXJtTm9kZVF1ZXJ5IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZFRlcm1Ob2RlUXVlcnksXG4gICAgICAgIG5vZGUgPSBmaWxlQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgIHRlcm1Ob2RlcyA9IHRlcm1Ob2RlUXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgZmlyc3RUZXJtTm9kZSA9IGZpcnN0KHRlcm1Ob2RlcyksXG4gICAgICAgIHRlcm1Ob2RlID0gZmlyc3RUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgbm9kZXMgPSBbXG4gICAgICAgICAgdGVybU5vZGUsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBub2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZXNGcm9tRmlsZUNvbnRleHQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZnJlZVRlcm1Ob2RlUXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uU3RyaW5nIiwiYm91bmRUZXJtTm9kZVF1ZXJ5IiwiZmlsZUNvbnRleHQiLCJmcmVlIiwiY29udGV4dCIsIm5vZGVzIiwibm9kZXNGcm9tRmlsZUNvbnRleHQiLCJ2YWx1ZXMiLCJWYWx1ZXMiLCJmcm9tTm9kZXMiLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZSIsImdldE5vZGUiLCJ0ZXJtTm9kZXMiLCJleGVjdXRlIiwiZmlyc3RUZXJtTm9kZSIsInRlcm1Ob2RlIiwic3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV2dCQTs7O2VBQUFBOzs7MEJBVE07cUJBQ0M7eUJBQ1E7QUFFL0IsSUFBTSxBQUFFQyxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFUixJQUFNRSxvQkFBb0JDLGlCQUFLLENBQUNDLG9CQUFvQixDQUFDLGNBQy9DQyxxQkFBcUJGLGlCQUFLLENBQUNDLG9CQUFvQixDQUFDO0FBRS9DLFNBQVNMLHNCQUFzQk8sV0FBVztRQUFFQyxPQUFBQSxpRUFBTztJQUN4RCxJQUFNQyxVQUFVRixhQUNWRyxRQUFRQyxxQkFBcUJKLGFBQWFDLE9BQzFDSSxTQUFTQyxhQUFNLENBQUNDLFNBQVMsQ0FBQ0osT0FBT0Q7SUFFdkMsT0FBT0c7QUFDVDtBQUVBLFNBQVNELHFCQUFxQkosV0FBVyxFQUFFQyxJQUFJO0lBQzdDLElBQU1PLGdCQUFnQlAsT0FDRUwsb0JBQ0VHLG9CQUNwQlUsT0FBT1QsWUFBWVUsT0FBTyxJQUMxQkMsWUFBWUgsY0FBY0ksT0FBTyxDQUFDSCxPQUNsQ0ksZ0JBQWdCbkIsTUFBTWlCLFlBQ3RCRyxXQUFXRCxlQUNYRSxnQkFBZ0JOLE1BQ2hCTixRQUFRO1FBQ05XO1FBQ0FDO0tBQ0Q7SUFFUCxPQUFPWjtBQUNUIn0=
package/lib/example.js CHANGED
@@ -11,15 +11,15 @@ var _nominal = require("./example/utilities/nominal");
11
11
  var releaseContext = _release.ReleaseContext.fromNothing(), furtleFile = (0, _furtle.furtleFileFromNothing)(), file = furtleFile; ///
12
12
  releaseContext.addFile(file);
13
13
  releaseContext.verify();
14
- var nominalFileContext = (0, _nominal.nominalFileContextFromReleaseContext)(releaseContext), fileContext = nominalFileContext, values = (0, _values.valuesFromFileContext)(fileContext);
14
+ var nominalFileContext = (0, _nominal.nominalFileContextFromReleaseContext)(releaseContext), fileContext = nominalFileContext; ///
15
15
  releaseContext.addFileContext(fileContext);
16
- var procedure = (0, _procedure.procedureFromReleaseContext)(releaseContext);
17
- // try {
18
- var value = procedure.call(values, fileContext), boolean = value.getBoolean(), free = boolean; ///
19
- console.log(free); // } catch (exception) {
20
- // const message = exception.getMessage();
21
- //
22
- // console.log(message);
23
- // }
16
+ var free = true, values = (0, _values.valuesFromFileContext)(fileContext, free), procedure = (0, _procedure.procedureFromReleaseContext)(releaseContext);
17
+ try {
18
+ var value = procedure.call(values, fileContext), boolean = value.getBoolean(), free1 = boolean; ///
19
+ console.log(free1);
20
+ } catch (exception) {
21
+ var message = exception.getMessage();
22
+ console.log(message);
23
+ }
24
24
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCIuL2luZGV4XCI7XG5cbmltcG9ydCB7IFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vZXhhbXBsZS9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgZnVydGxlRmlsZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4vZXhhbXBsZS91dGlsaXRpZXMvZnVydGxlXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9leGFtcGxlL3V0aWxpdGllcy92YWx1ZXNcIjtcbmltcG9ydCB7IHByb2NlZHVyZUZyb21SZWxlYXNlQ29udGV4dCB9IGZyb20gXCIuL2V4YW1wbGUvdXRpbGl0aWVzL3Byb2NlZHVyZVwiO1xuaW1wb3J0IHsgbm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vZXhhbXBsZS91dGlsaXRpZXMvbm9taW5hbFwiO1xuXG5jb25zdCByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Ob3RoaW5nKCksXG4gICAgICBmdXJ0bGVGaWxlID0gZnVydGxlRmlsZUZyb21Ob3RoaW5nKCksXG4gICAgICBmaWxlID0gZnVydGxlRmlsZTsgIC8vL1xuXG5yZWxlYXNlQ29udGV4dC5hZGRGaWxlKGZpbGUpO1xuXG5yZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuY29uc3Qgbm9taW5hbEZpbGVDb250ZXh0ID0gbm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0KSxcbiAgICAgIGZpbGVDb250ZXh0ID0gbm9taW5hbEZpbGVDb250ZXh0LCAvLy9cbiAgICAgIHZhbHVlcyA9IHZhbHVlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCk7XG5cbnJlbGVhc2VDb250ZXh0LmFkZEZpbGVDb250ZXh0KGZpbGVDb250ZXh0KTtcblxuY29uc3QgcHJvY2VkdXJlID0gcHJvY2VkdXJlRnJvbVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0KTtcblxuLy8gdHJ5IHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZWR1cmUuY2FsbCh2YWx1ZXMsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgYm9vbGVhbiA9IHZhbHVlLmdldEJvb2xlYW4oKSxcbiAgICAgICAgZnJlZSA9IGJvb2xlYW47IC8vL1xuXG4gIGNvbnNvbGUubG9nKGZyZWUpO1xuLy8gfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4vLyAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlcHRpb24uZ2V0TWVzc2FnZSgpO1xuLy9cbi8vICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4vLyB9XG4iXSwibmFtZXMiOlsicmVsZWFzZUNvbnRleHQiLCJSZWxlYXNlQ29udGV4dCIsImZyb21Ob3RoaW5nIiwiZnVydGxlRmlsZSIsImZ1cnRsZUZpbGVGcm9tTm90aGluZyIsImZpbGUiLCJhZGRGaWxlIiwidmVyaWZ5Iiwibm9taW5hbEZpbGVDb250ZXh0Iiwibm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0IiwiZmlsZUNvbnRleHQiLCJ2YWx1ZXMiLCJ2YWx1ZXNGcm9tRmlsZUNvbnRleHQiLCJhZGRGaWxlQ29udGV4dCIsInByb2NlZHVyZSIsInByb2NlZHVyZUZyb21SZWxlYXNlQ29udGV4dCIsInZhbHVlIiwiY2FsbCIsImJvb2xlYW4iLCJnZXRCb29sZWFuIiwiZnJlZSIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUFBOzs7O1FBRU87dUJBRXdCO3NCQUVPO3NCQUNBO3lCQUNNO3VCQUNTO0FBRXJELElBQU1BLGlCQUFpQkMsdUJBQWMsQ0FBQ0MsV0FBVyxJQUMzQ0MsYUFBYUMsSUFBQUEsNkJBQXFCLEtBQ2xDQyxPQUFPRixZQUFhLEdBQUc7QUFFN0JILGVBQWVNLE9BQU8sQ0FBQ0Q7QUFFdkJMLGVBQWVPLE1BQU07QUFFckIsSUFBTUMscUJBQXFCQyxJQUFBQSw2Q0FBb0MsRUFBQ1QsaUJBQzFEVSxjQUFjRixvQkFDZEcsU0FBU0MsSUFBQUEsNkJBQXFCLEVBQUNGO0FBRXJDVixlQUFlYSxjQUFjLENBQUNIO0FBRTlCLElBQU1JLFlBQVlDLElBQUFBLHNDQUEyQixFQUFDZjtBQUU5QyxRQUFRO0FBQ04sSUFBTWdCLFFBQVFGLFVBQVVHLElBQUksQ0FBQ04sUUFBUUQsY0FDL0JRLFVBQVVGLE1BQU1HLFVBQVUsSUFDMUJDLE9BQU9GLFNBQVMsR0FBRztBQUV6QkcsUUFBUUMsR0FBRyxDQUFDRixPQUNkLHdCQUF3QjtDQUN4Qiw0Q0FBNEM7Q0FDNUMsRUFBRTtDQUNGLDBCQUEwQjtDQUMxQixJQUFJIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCIuL2luZGV4XCI7XG5cbmltcG9ydCB7IFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vZXhhbXBsZS9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgZnVydGxlRmlsZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4vZXhhbXBsZS91dGlsaXRpZXMvZnVydGxlXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9leGFtcGxlL3V0aWxpdGllcy92YWx1ZXNcIjtcbmltcG9ydCB7IHByb2NlZHVyZUZyb21SZWxlYXNlQ29udGV4dCB9IGZyb20gXCIuL2V4YW1wbGUvdXRpbGl0aWVzL3Byb2NlZHVyZVwiO1xuaW1wb3J0IHsgbm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vZXhhbXBsZS91dGlsaXRpZXMvbm9taW5hbFwiO1xuXG5jb25zdCByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Ob3RoaW5nKCksXG4gICAgICBmdXJ0bGVGaWxlID0gZnVydGxlRmlsZUZyb21Ob3RoaW5nKCksXG4gICAgICBmaWxlID0gZnVydGxlRmlsZTsgIC8vL1xuXG5yZWxlYXNlQ29udGV4dC5hZGRGaWxlKGZpbGUpO1xuXG5yZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuY29uc3Qgbm9taW5hbEZpbGVDb250ZXh0ID0gbm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0KSxcbiAgICAgIGZpbGVDb250ZXh0ID0gbm9taW5hbEZpbGVDb250ZXh0OyAvLy9cblxucmVsZWFzZUNvbnRleHQuYWRkRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpO1xuXG5jb25zdCBmcmVlID0gdHJ1ZSxcbiAgICAgIHZhbHVlcyA9IHZhbHVlc0Zyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCwgZnJlZSksXG4gICAgICBwcm9jZWR1cmUgPSBwcm9jZWR1cmVGcm9tUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQpO1xuXG50cnkge1xuICBjb25zdCB2YWx1ZSA9IHByb2NlZHVyZS5jYWxsKHZhbHVlcywgZmlsZUNvbnRleHQpLFxuICAgICAgICBib29sZWFuID0gdmFsdWUuZ2V0Qm9vbGVhbigpLFxuICAgICAgICBmcmVlID0gYm9vbGVhbjsgLy8vXG5cbiAgY29uc29sZS5sb2coZnJlZSk7XG59IGNhdGNoIChleGNlcHRpb24pIHtcbiAgY29uc3QgbWVzc2FnZSA9IGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCk7XG5cbiAgY29uc29sZS5sb2cobWVzc2FnZSk7XG59XG4iXSwibmFtZXMiOlsicmVsZWFzZUNvbnRleHQiLCJSZWxlYXNlQ29udGV4dCIsImZyb21Ob3RoaW5nIiwiZnVydGxlRmlsZSIsImZ1cnRsZUZpbGVGcm9tTm90aGluZyIsImZpbGUiLCJhZGRGaWxlIiwidmVyaWZ5Iiwibm9taW5hbEZpbGVDb250ZXh0Iiwibm9taW5hbEZpbGVDb250ZXh0RnJvbVJlbGVhc2VDb250ZXh0IiwiZmlsZUNvbnRleHQiLCJhZGRGaWxlQ29udGV4dCIsImZyZWUiLCJ2YWx1ZXMiLCJ2YWx1ZXNGcm9tRmlsZUNvbnRleHQiLCJwcm9jZWR1cmUiLCJwcm9jZWR1cmVGcm9tUmVsZWFzZUNvbnRleHQiLCJ2YWx1ZSIsImNhbGwiLCJib29sZWFuIiwiZ2V0Qm9vbGVhbiIsImNvbnNvbGUiLCJsb2ciLCJleGNlcHRpb24iLCJtZXNzYWdlIiwiZ2V0TWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7UUFFTzt1QkFFd0I7c0JBRU87c0JBQ0E7eUJBQ007dUJBQ1M7QUFFckQsSUFBTUEsaUJBQWlCQyx1QkFBYyxDQUFDQyxXQUFXLElBQzNDQyxhQUFhQyxJQUFBQSw2QkFBcUIsS0FDbENDLE9BQU9GLFlBQWEsR0FBRztBQUU3QkgsZUFBZU0sT0FBTyxDQUFDRDtBQUV2QkwsZUFBZU8sTUFBTTtBQUVyQixJQUFNQyxxQkFBcUJDLElBQUFBLDZDQUFvQyxFQUFDVCxpQkFDMURVLGNBQWNGLG9CQUFvQixHQUFHO0FBRTNDUixlQUFlVyxjQUFjLENBQUNEO0FBRTlCLElBQU1FLE9BQU8sTUFDUEMsU0FBU0MsSUFBQUEsNkJBQXFCLEVBQUNKLGFBQWFFLE9BQzVDRyxZQUFZQyxJQUFBQSxzQ0FBMkIsRUFBQ2hCO0FBRTlDLElBQUk7SUFDRixJQUFNaUIsUUFBUUYsVUFBVUcsSUFBSSxDQUFDTCxRQUFRSCxjQUMvQlMsVUFBVUYsTUFBTUcsVUFBVSxJQUMxQlIsUUFBT08sU0FBUyxHQUFHO0lBRXpCRSxRQUFRQyxHQUFHLENBQUNWO0FBQ2QsRUFBRSxPQUFPVyxXQUFXO0lBQ2xCLElBQU1DLFVBQVVELFVBQVVFLFVBQVU7SUFFcENKLFFBQVFDLEdBQUcsQ0FBQ0U7QUFDZCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-furtle",
3
3
  "author": "James Smith",
4
- "version": "2.0.1",
4
+ "version": "2.0.4",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-furtle",
7
7
  "description": "Occam's Furtle language.",
@@ -6,18 +6,22 @@ import { arrayUtilities } from "necessary";
6
6
 
7
7
  const { first } = arrayUtilities;
8
8
 
9
- const termNodeQuery = Query.fromExpressionString("//term[1]");
9
+ const freeTermNodeQuery = Query.fromExpressionString("//term[1]"),
10
+ boundTermNodeQuery = Query.fromExpressionString("//term[0]");
10
11
 
11
- export function valuesFromFileContext(fileContext) {
12
+ export function valuesFromFileContext(fileContext, free = true) {
12
13
  const context = fileContext, ///
13
- nodes = nodesFromFileContext(fileContext),
14
+ nodes = nodesFromFileContext(fileContext, free),
14
15
  values = Values.fromNodes(nodes, context);
15
16
 
16
17
  return values;
17
18
  }
18
19
 
19
- function nodesFromFileContext(fileContext) {
20
- const node = fileContext.getNode(),
20
+ function nodesFromFileContext(fileContext, free) {
21
+ const termNodeQuery = free ?
22
+ freeTermNodeQuery :
23
+ boundTermNodeQuery,
24
+ node = fileContext.getNode(),
21
25
  termNodes = termNodeQuery.execute(node),
22
26
  firstTermNode = first(termNodes),
23
27
  termNode = firstTermNode, ///
package/src/example.js CHANGED
@@ -18,21 +18,22 @@ releaseContext.addFile(file);
18
18
  releaseContext.verify();
19
19
 
20
20
  const nominalFileContext = nominalFileContextFromReleaseContext(releaseContext),
21
- fileContext = nominalFileContext, ///
22
- values = valuesFromFileContext(fileContext);
21
+ fileContext = nominalFileContext; ///
23
22
 
24
23
  releaseContext.addFileContext(fileContext);
25
24
 
26
- const procedure = procedureFromReleaseContext(releaseContext);
25
+ const free = true,
26
+ values = valuesFromFileContext(fileContext, free),
27
+ procedure = procedureFromReleaseContext(releaseContext);
27
28
 
28
- // try {
29
+ try {
29
30
  const value = procedure.call(values, fileContext),
30
31
  boolean = value.getBoolean(),
31
32
  free = boolean; ///
32
33
 
33
34
  console.log(free);
34
- // } catch (exception) {
35
- // const message = exception.getMessage();
36
- //
37
- // console.log(message);
38
- // }
35
+ } catch (exception) {
36
+ const message = exception.getMessage();
37
+
38
+ console.log(message);
39
+ }