summaryrefslogtreecommitdiff
path: root/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs
diff options
context:
space:
mode:
Diffstat (limited to 'intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs')
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp23
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/common.hpp9
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/concepts.hpp26
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.cpp69
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.hpp14
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/meaning.hpp42
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/ref.hpp13
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.cpp68
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.hpp31
9 files changed, 0 insertions, 295 deletions
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp
deleted file mode 100644
index 84c9c13..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include "common.hpp"
-#include "../level-1/ref.hpp"
-#include "statementref.hpp"
-
-namespace intellect {
-namespace level2 {
-
-template <typename ref>
-struct baseref : public level1::baseref<ref>
-{
- using level1::baseref<ref>::baseref;
- baseref(level1::ref other) : level1::baseref<ref>(other.ptr()) { }
- operator level1::ref() { return ptr(); }
-
- statementref operator=(ref other) { return assignop(self, other); }
- statementref operator,(ref other) { return commaop(self, other); }
- ref operator[](ref other) { return subop(self, other); }
-}
-
-}
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/common.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/common.hpp
deleted file mode 100644
index 25c8026..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/common.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-namespace intellect {
-namespace level2 {
-
-struct ref;
-
-}
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/concepts.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/concepts.hpp
deleted file mode 100644
index 20c5ad4..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/concepts.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include "../level-1/concepts.hpp"
-
-namespace intellect {
-namespace level2 {
-
-namespace concepts {
-
-using namespace level1::concepts;
-
-static decl(variable),
- decl(expression),
- decl(assign),
- decl(comma),
- decl(subscript),
- decl(action),
- decl(statement),
- decl(left),
- decl(right),
- decl(operand);
-
-}
-
-}
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.cpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.cpp
deleted file mode 100644
index d746f13..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "funcs.hpp"
-
-using namespace intellect;
-using namespace level2;
-using namespace concepts;
-
-static ref refassigned(ref expr)
-{
- ref lhs = ref.get(left-operand);
- ref rhs = ref.get(right-operand);
- if (lhs.isa(link) && lhs.get(link-target) == unknown) {
- // completes the target of a link, for a[b] = c
- lhs.unlink(link-target, unknown);
- lhs.set(link-target, rhs);
- ref.unlink(right-operand, rhs);
- ref src = lhs.get(link-source);
- if (lhs.get(link-type) != unknown && src != unknown) {
- src.set(lhs.get(link-type), rhs);
- return src;
- } else {
- throw std::logic_error("not sure what to do with incomplete link assignment");
- }
- } else if (isanonymous(rhs) && !isanonymous(lhs)) {
- // assignment of anonymous content to empty named concept
- ref.unlink(left-operand, lhs);
- return level1::movetoname(rhs, lhs);
- } else {
- throw std::logic_error("unexpected bare assignment");
- }
-}
-// maybe later we can have ref class itself do operators completely based on its own
-// ref content.
-
-statementref assignop(ref self, ref other)
-{
- return statementref::makebinary(
- self, concepts::assign, other,
- refassigned, refassigned
- );
-}
-statementref commaop(ref self, ref other)
-{
- if (self.isa(comma-expression)) {
- if (other.isa(comma-expression)) {
- for (auto & l : other.links()) { self.insert(l.first, l.second); }
- dealloc(other);
- } else {
- self.link(topic, other);
- }
- return self;
- } else if (other.isa(comma-expression)) {
- other.link(topic, self);
- return other;
- } else {
- return statementcallref::makebinary(
- self, comma, other,
- [](ref)->ref { return ref; },
- // um when we pass the comma-expression to
- // the [] operator that takes a ref
- // the destructor of statementref will deallocate it.
- [](ref) { throw std::logic_error("bare comma-expression"); }
- // something is wrong here. some approach is wrong.
- // would it be better to have ref itself do it all?
- );
- }
-}
-ref subop(ref self, ref other)
-{
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.hpp
deleted file mode 100644
index 6af6ce1..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/funcs.hpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "common.hpp"
-#include "../level-1/ref.hpp"
-
-namespace intellect {
-namespace level2 {
-
-statementref commaop(ref self, ref other);
-statementref assignop(ref self, ref other);
-ref subop(ref self, ref other);
-
-}
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/meaning.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/meaning.hpp
deleted file mode 100644
index 049e7f9..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/meaning.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "ref.hpp"
-#include "../level-1/helpers.hpp"
-
-namespace intellect {
-namespace level2 {
-
-// get a named variable
-ref avariable(ref name);
-
-template <typename... T>
-ref and(T... refs)
-{
- std::initializer_list<ref> rs = { refs... };
- decl(and, topic);
- ref ret = a(and);
- ref name; int count = 0;
- for (auto r : rs) {
- ret.link(topic, r);
- if (count == 0) {
- name.ptr() = r.ptr();
- } else {
- name.ptr() = (name-and-r).ptr();
- }
- ++ count;
- }
- if (count == 1) {
- throw std::invalid_argument("and needs at least two subjects");
- }
- // in level-1, we'll want to name anonymous objects after defining them
- return name = ret;
-}
-
-// make a reference to a link
-ref link(ref sourceref, ref typeref, ref targetref);
-
-// invert a meaning
-ref not(ref whatref);
-
-}
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/ref.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/ref.hpp
deleted file mode 100644
index 5b7dc4f..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/ref.hpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "common.hpp"
-#include "../level-0/baseref.hpp"
-
-namespace intellect {
-namespace level2 {
-
-struct ref ; public level0::baseref<ref,level1::vref,level0::concept>
-}
- ref(level0::concept *p): baseref(p) { }
-
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.cpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.cpp
deleted file mode 100644
index 2f23dc8..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "statementref.hpp"
-
-#include "concepts.hpp"
-#include "ref.hpp"
-
-using namespace intellect;
-using namespace level2;
-using namespace concepts;
-
-// so, anonymous-assignment is both a statement and an expression.
-// multiple-member-assignment is only an expression: it is an error to evaluate it
-// the submember operator will be both a statement and an expression, but doesn't need to be held as a ref
-// single-member-assignment is mostly a statement: using it as an expression should be an error.
-
-static statementref makebinary(
- ref lhs, ref kind, ref rhs,
- std::function<ref(ref)> expraction,
- std::function<void(ref)> stmtaction
-)
-{
- a(statement-expresion, kind-expression);
- ref r = a(kind-expression);
- r.set(left-operand, lhs);
- r.set(right-operand, rhs);
- r.vset(expression-action, expraction);
- r.vset(statement-action, stmtaction);
- return r;
-}
-
-statementref::statementref(ref r)
-: r(r.ptr())
-{
- if (!r.isa(statement-expression)) {
- throw std::logic_error("that is not a statement expression");
- }
-}
-
-static void de(ref & r)
-{
- ref lhs, rhs, expraction, stmtaction;
-
- try { lhs = r.get(left-operand); } catch(level0::no_such_link_type&) {}
- try { rhs = r.get(right-operand); } catch(level0::no_such_link_type&) {}
-
- expraction = r.get(expression-action);
- stmtaction = r.get(statement-action);
- dealloc(r);
- if (lhs != nothing) { dealloc(lhs); }
- if (rhs != nothing) { dealloc(rhs); }
- dealloc(expraction);
- dealloc(stmtaction);
- r = 0;
-}
-
-statementref::~statementref()
-{
- if (r == 0) { return; }
- r.vget<std::function<void(ref)>>(statement-action)(r);
- de(r);
-}
-
-statementref::operator ref()
-{
- if (r == 0) { throw std::logic_error("doubly evaluated expression"); }
- auto ret = r.vget<std::function<void(ref)>>(expression-action)(r);
- de(r);
- return ret;
-}
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.hpp
deleted file mode 100644
index 502ecf4..0000000
--- a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-stmtexprs/statementref.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "common.hpp"
-#include "../level-0/concept.hpp"
-
-namespace intellect {
-namespace level2 {
-
-// this class is returned by some of the baseref operators.
-// its purpose is to evaluate code when it goes out of
-// scope, so as to facilitate syntactic behavior.
-struct statementref
-{
- statementref(ref r);
- statementref(statementref const &) = delete;
- ~statementref();
-
- operator ref();
-
- static statementref makebinary(
- ref lhs, ref kind, ref rhs,
- std::function<ref(ref)> expraction = {},
- std::function<void(ref)> stmtaction = {}
- );
-
-private:
- level0::concept * r;
-};
-
-}
-}