Page Menu
Home
Xreate
Search
Configure Global Search
Log In
Docs
Questions
Repository
Issues
Patches
Internal API
Files
F2718234
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Feb 15, 7:41 PM
Size
54 KB
Mime Type
text/x-diff
Expires
Tue, Feb 17, 7:41 PM (1 d, 20 h)
Engine
blob
Format
Raw Data
Handle
237768
Attached To
rXR Xreate
View Options
diff --git a/core/aux/graphs_trees_depth.lp b/core/aux/graphs_trees_depth.lp
deleted file mode 100644
index a322358..0000000
--- a/core/aux/graphs_trees_depth.lp
+++ /dev/null
@@ -1,2 +0,0 @@
-graphs_tree_depth(X, 0) :- not graphs_tree_depends(X, _); graphs_node(X).
-graphs_tree_depth(X, LEVEL):- LEVEL = #max{L+1, graphs_tree_depth(Y, L): graphs_tree_depth(Y, L), graphs_tree_depends(X, Y)}; graphs_node(X); LEVEL > 0.
\ No newline at end of file
diff --git a/core/dominators.lp b/core/dominators.lp
deleted file mode 100644
index e69de29..0000000
diff --git a/core/exploitation.lp b/core/exploitation.lp
deleted file mode 100644
index 20f47d5..0000000
--- a/core/exploitation.lp
+++ /dev/null
@@ -1,12 +0,0 @@
-expl_sites(Data, Site) :- S=(_, Site); bind(S, exploitation_initialized(file)); bind(S, static(data(Data))).
-expl_sites(Data, Site) :- S=(_, Site); bind(S, exploitation_initialized(file)); bind(S, static(ref(Root))); bind(Root, static(data(Data))).
-
-
-expl_parent(Site, dom(Parent)) :- cfa_forwdom(Parent, range(A, B)); cfa_forwdom(Site, range(A1, B1)); A<A1; B1<B.
-expl_parent(Site, postdom(Parent)) :- cfa_postdom(Parent, range(A, B)); cfa_postdom(Site, range(A1, B1)); A<A1; B1<B.
-expl_resources(Data, dom(Dom)) :- expl_parent(Site, dom(Dom)): expl_sites(Data, Site); expl_sites(Data, _); bind(_, static(data(Data))); cfa_forwdom(Dom, _).
-
-%%
-%% TODO:
-%% 1. (Post)doms are overconstrained and overpessimistic in case when
-%% function used to process different resources depending on particular caller.
diff --git a/core/null.lp b/core/null.lp
deleted file mode 100644
index 8006219..0000000
--- a/core/null.lp
+++ /dev/null
@@ -1,2 +0,0 @@
-functionRetNull(f):- bind_func(f, retsymbol(X)), bind(X, null), v(X).
-functionRetNull(f):- bind_func(f, retsymbol(X)), dfa_connection(X, Y, alias), bind(Y, null), v(X), v(Y).
\ No newline at end of file
diff --git a/core/precompilation.lp b/core/precompilation.lp
deleted file mode 120000
index b21ab11..0000000
--- a/core/precompilation.lp
+++ /dev/null
@@ -1 +0,0 @@
-/private/prg/code/xreate/scripts/precompilation-1.lp
\ No newline at end of file
diff --git a/cpp/tests/ast.cpp b/cpp/tests/ast.cpp
index 144a1f6..d1fb31f 100644
--- a/cpp/tests/ast.cpp
+++ b/cpp/tests/ast.cpp
@@ -1,68 +1,68 @@
/*
* ast.cpp
*
* Created on: Jun 11, 2015
* Author: pgess
*/
#include "gtest/gtest.h"
#include "passmanager.h"
#include "Parser.h"
using namespace std;
using namespace xreate;
TEST(AST, Containers1){
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate","r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate","r");
Scanner scanner(input);
Parser parser(&scanner);
parser.Parse();
assert(!parser.errors->count && "Parser errors");
fclose(input);
}
TEST(AST, InterfacesDataCFA) {
PassManager* man = PassManager::prepareForCode
("interface(cfa){\n"
" operator map :: annotation1.\n"
"}");
auto answer = man->root->__interfacesData.equal_range(CFA);
EXPECT_EQ(1, std::distance(answer.first, answer.second));
Expression&& scheme = move(answer.first->second);
EXPECT_EQ(Operator::MAP, scheme.op);
EXPECT_EQ("annotation1", scheme.getOperands().at(0).getValueString());
}
TEST(AST, syntax_recognizeIdentifiers){
PassManager* man = PassManager::prepareForCode(R"Code(
test= function(a:: num):: num; entry {
a = b:: int.
b = 8:: int.
a
}
)Code");
}
TEST(AST, syntax_operatorIndex){
PassManager* man = PassManager::prepareForCode(R"Code(
test= function(a:: num):: num; entry {
b = a[1].
b
}
)Code");
}
TEST(AST, DISABLED_InterfacesDataDFA){
}
TEST(AST, DISABLED_InterfacesDataExtern){
}
//TODO xreate.atg: replace all Type<> as ExprAnnotations<>
diff --git a/cpp/tests/containers.cpp b/cpp/tests/containers.cpp
index a9f3c2b..7037a8d 100644
--- a/cpp/tests/containers.cpp
+++ b/cpp/tests/containers.cpp
@@ -1,109 +1,109 @@
/*
* containers.cpp
*
* Created on: Jun 9, 2015
* Author: pgess
*/
#include "passmanager.h"
#include "query/containers.h"
#include "Parser.h"
#include "gtest/gtest.h"
using namespace std;
using namespace xreate;
using namespace containers;
TEST(Containers, ListAsArray){
PassManager* man = PassManager::prepareForCode(
R"Code(
main = function(x:: int):: int;entry {
a = [1, 2, 3]:: [int].
a[x]
}
)Code" );
void* mainPtr = man->run();
int (*main)(int) = (int (*)(int))mainPtr;
ASSERT_EQ(2, main(1));
delete man;
}
TEST(Containers, ListAsArray2){
PassManager* man = PassManager::prepareForCode(
R"Code(
// CONTAINERS
interface(dfa) {
operator map:: (op(seqaccess)) -> impl(solid).
operator list_range:: ()->impl(on_the_fly).
operator list:: ()->impl(solid).
operator fold:: (op(seqaccess)).
operator index:: (op(randaccess)).
}
import raw("core/containers.lp")
main = function:: int;entry {
a= [1, 2, 3]:: [int].
b= loop map(a->el:: int):: [int]{
2 * el
}.
sum = loop fold(b->el:: int, 0->acc):: int {
acc + el
}.
sum
}
)Code" );
void* mainPtr = man->run();
int (*main)() = (int (*)())mainPtr;
ASSERT_EQ(12, main());
delete man;
}
TEST(Containers, ContanierLinkedList1){
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate","r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate","r");
assert(input != nullptr);
Scanner scanner(input);
Parser parser(&scanner);
parser.Parse();
AST& ast = parser.root;
CodeScope* body = ast.findFunction("test")->getEntryScope();
const Symbol symb_chilrenRaw{body->getSymbol("childrenRaw"), body};
containers::ImplementationLinkedList iLL(symb_chilrenRaw);
ASSERT_EQ(true, static_cast<bool>(iLL));
ASSERT_EQ("next", iLL.fieldPointer);
Implementation impl = Implementation::create(symb_chilrenRaw);
ASSERT_NO_FATAL_FAILURE(impl.extract<ON_THE_FLY>());
ImplementationRec<ON_THE_FLY> recOnthefly = impl.extract<ON_THE_FLY>();
ASSERT_EQ(symb_chilrenRaw, recOnthefly.source);
}
TEST(Containers, Implementation_LinkedListFull){
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate","r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate","r");
assert(input != nullptr);
std::unique_ptr<PassManager> program(PassManager::prepareForCode(input));
void* mainPtr = program->run();
int (*main)() = (int (*)())(intptr_t)mainPtr;
int answer = main();
ASSERT_EQ(17, answer);
fclose(input);
}
diff --git a/cpp/tests/externc.cpp b/cpp/tests/externc.cpp
index b8f9536..4aa5d7e 100644
--- a/cpp/tests/externc.cpp
+++ b/cpp/tests/externc.cpp
@@ -1,106 +1,106 @@
#include "gtest/gtest.h"
#include "passmanager.h"
#include "Scanner.h"
#include "Parser.h"
#include <iostream>
#include <llvm/Support/DynamicLibrary.h>
using namespace std;
TEST(InterfaceExternC, testAST) {
std::string code = " \
interface(extern-c){ \
xml2 = library:: pkgconfig(\"libxml-2.0\"). \
\
include { \
xml2 = [\"libxml/tree.h\"] \
}. \
} \
";
Scanner scanner(reinterpret_cast<const unsigned char*> (code.c_str()), code.size());
Parser parser(&scanner);
parser.Parse();
ASSERT_EQ(1, parser.root.__externdata.size());
for (const ExternEntry& lib : parser.root.__externdata) {
ASSERT_EQ("libxml-2.0", lib.package);
ASSERT_EQ(1, lib.headers.size());
ASSERT_EQ("libxml/tree.h", lib.headers.at(0));
}
}
TEST(InterfaceExternC, testfetchPackageHeaders) {
ExternEntry entry{"libxml-2.0",
{}};
vector<string> args = ExternLayer::fetchPackageFlags(entry);
ASSERT_EQ(1, args.size());
ASSERT_EQ("-I/usr/include/libxml2", args.at(0));
}
TEST(InterfaceExternC, testfetchPackageLibs) {
ExternEntry entry{"libxml-2.0",
{}};
vector<string> args = ExternLayer::fetchPackageLibs(entry);
ASSERT_EQ(1, args.size());
ASSERT_EQ("xml2", args.at(0));
}
TEST(InterfaceExternC, testLoadLib) {
std::string msgErr;
if (!llvm::sys::DynamicLibrary::LoadLibraryPermanently("-lpcre -lxml2", &msgErr)) {
cout << msgErr;
ASSERT_EQ("", msgErr);
}
ASSERT_TRUE(true);
}
TEST(InterfaceExternC, testBSD1) {
std::string code = " \n\
interface(extern-c){ \n\
libbsd = library:: pkgconfig(\"libbsd\"). \n\
\n\
include { \n\
libbsd = [\"bsd/stdlib.h\"] \n\
}. \n\
} \n"
"main= function:: int; entry{arc4random_uniform(24) }";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
void* entryPtr = program->run();
int (*entry)() = (int (*)())(intptr_t) entryPtr;
int answer = 24;
answer = entry();
cout << answer;
ASSERT_LT(answer, 24);
}
TEST(InterfaceExternC, testStructFields1) {
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate", "r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate", "r");
assert(input != nullptr);
Scanner scanner(input);
Parser parser(&scanner);
parser.Parse();
AST& ast = parser.root;
CodeScope* body = ast.findFunction("test")->getEntryScope();
const TypeAnnotation& tTree = body->getDeclaration(body->getSymbol("tree")).type;
const ExpandedType& t2Tree = ast.expandType(tTree);
LLVMLayer llvm(&ast);
TypeUtils utils(&llvm);
std::vector<std::string>fields = utils.getStructFields(t2Tree);
auto field = std::find(fields.begin(), fields.end(), "children");
ASSERT_TRUE(field != fields.end());
}
diff --git a/cpp/tests/types.cpp b/cpp/tests/types.cpp
index b9d3e96..5ff99b6 100644
--- a/cpp/tests/types.cpp
+++ b/cpp/tests/types.cpp
@@ -1,163 +1,163 @@
/*
* types.cpp
*
* Created on: Jun 4, 2015
* Author: pgess
*/
#include "gtest/gtest.h"
#include "passmanager.h"
#include "llvmlayer.h"
#include "Parser.h"
using namespace std;
using namespace xreate;
TEST(Types, DependantTypes1) {
string&& code = "XmlNode = type alias {\n"
" tag:: string,\n"
" /* attrs:: [string],*/\n"
" content:: string\n"
"}.\n";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
ExpandedType typeXmlNode = program->root->findType("XmlNode");
ASSERT_EQ(TypeOperator::STRUCT, typeXmlNode->__operator);
ASSERT_EQ(2, typeXmlNode->__operands.size());
ASSERT_EQ(TypePrimitive::String, typeXmlNode->__operands.at(0).__value);
ASSERT_EQ(TypePrimitive::String, typeXmlNode->__operands.at(1).__value);
}
TEST(Types, DependantTypes2) {
string&& code = "XmlNode = type alias {\n"
" tag:: string,\n"
" /* attrs:: [string],*/\n"
" content:: string\n"
"}.\n"
""
"Template = type Template(Leaf) [Leaf, [Leaf[content]]]."
"Concrete = type alias Template(XmlNode).";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
ExpandedType typeConcrete = program->root->findType("Concrete");
ASSERT_EQ(TypeOperator::TUPLE, typeConcrete->__operator);
ASSERT_EQ(2, typeConcrete->__operands.size());
ASSERT_EQ(TypeOperator::STRUCT, typeConcrete->__operands.at(0).__operator);
ASSERT_EQ(TypeOperator::ARRAY, typeConcrete->__operands.at(1).__operator);
ASSERT_EQ(TypePrimitive::String, typeConcrete->__operands.at(1).__operands.at(0).__value);
}
TEST(Types, TreeType1) {
string&& code = "XmlNode = type alias {\n"
" tag:: string,\n"
" /* attrs:: [string],*/\n"
" content:: string\n"
"}.\n"
""
"Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]]."
"Concrete = type alias Tree(XmlNode).";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
ExpandedType typeConcrete = program->root->findType("Concrete");
ASSERT_EQ(TypeOperator::TUPLE, typeConcrete->__operator);
ASSERT_EQ(2, typeConcrete->__operands.size());
ASSERT_EQ(TypeOperator::STRUCT, typeConcrete->__operands.at(0).__operator);
ASSERT_EQ(TypeOperator::ARRAY, typeConcrete->__operands.at(1).__operator);
auto typeLink = typeConcrete->__operands.at(1).__operands.at(0);
ASSERT_EQ(TypeOperator::LINK, typeLink.__operator);
ASSERT_EQ(typeConcrete->conjuctionId,typeLink.conjuctionId);
}
TEST(Types, TreeType1LLvm){
string&& code = "XmlNode = type alias {\n"
" tag:: string,\n"
" /* attrs:: [string],*/\n"
" content:: string\n"
"}.\n"
""
"Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]]."
"Concrete = type alias Tree(XmlNode).";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
ExpandedType typeConcrete = program->root->findType("Concrete");
llvm::Type* raw = program->llvm->toLLVMType(typeConcrete);
}
TEST(Types, ArrayOfExternal1){
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate","r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate","r");
assert(input != nullptr);
Scanner scanner(input);
Parser parser(&scanner);
parser.Parse();
AST& ast = parser.root;
CodeScope* body = ast.findFunction("test")->getEntryScope();
const TypeAnnotation& t = body->getDeclaration(body->getSymbol("childrenRaw")).type;
const ExpandedType& t2 = ast.expandType(t);
EXPECT_EQ(t2->__operator, TypeOperator::ARRAY);
}
TEST(Types, ExternType1){
- FILE* input = fopen("scripts/testspass/Containers_Implementation_LinkedList1.xreate","r");
+ FILE* input = fopen("scripts/containers/Containers_Implementation_LinkedList1.xreate","r");
assert(input != nullptr);
Scanner scanner(input);
Parser parser(&scanner);
parser.Parse();
AST& ast = parser.root;
CodeScope* body = ast.findFunction("test")->getEntryScope();
const TypeAnnotation& t = body->getDeclaration(body->getSymbol("tree")).type;
const ExpandedType& t2 = ast.expandType(t);
EXPECT_EQ(t2->__operator, TypeOperator::CUSTOM);
}
TEST(Types, ast_VariantType1){
string&& code =
" colors = type variant (RED, BLUE, GREEN).\n"
" test = function:: colors; entry {GREEN}";
std::unique_ptr<PassManager> program(PassManager::prepareForCode(move(code)));
ExpandedType typ = program->root->findType("colors");
EXPECT_EQ(TypeOperator::VARIANT, typ->__operator);
Expression eRed = program->root->findFunction("test")->getEntryScope()->getBody();
EXPECT_EQ(Expression::VARIANT, eRed.__state);
const ExpandedType& typ2 = program->root->expandType(eRed.type);
EXPECT_EQ(TypeOperator::VARIANT, typ2->__operator);
program->run();
}
TEST(Types, full_VariantType_Switch1){
string&& code =
" colors = type variant (RED, BLUE, GREEN). \n"
" test = function:: colors {GREEN} \n"
"main = function:: int; entry { \n"
" switch(test()):: int \n"
" case (GREEN) {0} \n"
" case default {1} \n"
"}";
PassManager* man = PassManager::prepareForCode(move(code));
int (*main)() = (int (*)()) man->run();
EXPECT_EQ(0, main());
}
//TOTEST string type
diff --git a/scripts/cases/bugs-code.xreate b/scripts/cases/bugs-code.xreate
deleted file mode 100644
index dd8875a..0000000
--- a/scripts/cases/bugs-code.xreate
+++ /dev/null
@@ -1,32 +0,0 @@
-//unsafe code propagation rule
-rule: (X: function, Y: function)
-case X call Y, -X tag suppress(unsafe_propagation_warning)
- {
- warning Y tag unsafe -> X tag unsafe
- message "safe function should not call unsafe code"
- }
-
-//bugs propagation rule
-rule: (X: function, Y: function)
-case X call Y, - X tag suppress(bugs_propagation_warnings)
- {
- warning Y tag bug(no(No)) -> X tag bug(no(No))
- message "Function should declare bugs it aware of"
- }
-
-testfunc3 = function: (a: num, b: num)->num,unsafe, bug(no(1273)) //function tags list
-{
- x = a+b: num;
- y = a - b: num;
-
- (x + y) / 2;
-}
-
-testfunc2 = function: (a: num)->bool // because of testfunc3 marked as unsafe code,
- // testfunc2 should be marked so too
-,suppress(bugs_propagation_warnings), suppress(unsafe_propagation_warning)
-
-{
- b = testfunc3(a+1, a-1): num;
- (b==0);
-}
\ No newline at end of file
diff --git a/scripts/cases/log.xreate b/scripts/cases/log.xreate
deleted file mode 100644
index 997edf1..0000000
--- a/scripts/cases/log.xreate
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-
- Log level:
- Log entry(flat, hierarchical)
-
-*/
-
-
-
-
- // EXTERN INCLUDES
-interface(extern-c){
- xml2 = library:: pkgconfig("libxml-2.0").
-
- include {
- xml2 = ["libxml/tree.h", "string.h"]
- }.
-}
-
- // CONTAINERS
-interface(dfa) {
- operator map:: (op(seqaccess)) -> impl(solid).
- operator list_range:: ()->impl(on_the_fly).
- operator list:: ()->impl(solid).
- operator fold:: (op(seqaccess)).
- operator index:: (op(randaccess)).
- /* operator map: (op(seqaccess)) -> impl(llvm_array | on_the_fly); */
-}
-
-import raw("core/containers.lp").
-
-
- // PROGRAM
-XmlNode = type alias {
- tag:: string,
- /* attrs:: [string],*/
- content:: string
-}.
-
-Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
-XmlTree = type alias Tree(XmlNode).
-
-
-test= function():: num; entry {
- filename = "project/documentation.fodt" :: string.
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
- childrenRaw = tree["children"]:: [xmlNodePtr]; containers:linkedlist(next, null).
- size = loop fold(childrenRaw->child:: xmlNodePtr, 0->count::int):: int {
-
-// $log{
-// count +1:: warning, subsystem=xml
-// }
-
-
- //log{warning, subsystem=xml, ..}
- childName = child["name"]::string; logging.
- count + strlen(childName):: int
- }.
-
- size
-}
-
-
diff --git a/scripts/cases/unsafe-code.xreate b/scripts/cases/unsafe-code.xreate
deleted file mode 100644
index 9705f31..0000000
--- a/scripts/cases/unsafe-code.xreate
+++ /dev/null
@@ -1,23 +0,0 @@
-
-//unsafe code propagation rule
-rule: (X: function, Y: function)
-case X call Y
- {
- warning Y tag unsafe -> X tag unsafe
- message "safe function should not call unsafe code"
- }
-
-testfunc3 = function: (a: num, b: num)->num , unsafe //function tags list
-{
- x = a+b: num;
- y = a - b: num;
-
- (x + y) / 2;
-}
-
-testfunc2 = function: (a: num)->bool // since testfunc3 marked as unsafe code,
- // testfunc2 should be marked so too
-{
- b = testfunc3(a+1, a-1): num;
- (b==0);
-}
diff --git a/scripts/containers-set-intersection.xreate b/scripts/containers-set-intersection.xreate
deleted file mode 100644
index 22b378d..0000000
--- a/scripts/containers-set-intersection.xreate
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * intersection of two sets
- */
-
-intersection = function(X: [a], sorted; Y: [b], sorted)
-{
- loop map (X -> x: a | exists(Y, x))
- {x;};
-}
-
-
\ No newline at end of file
diff --git a/scripts/testspass/Containers_Implementation_LinkedList1-data.xml b/scripts/containers/Containers_Implementation_LinkedList1-data.xml
similarity index 100%
rename from scripts/testspass/Containers_Implementation_LinkedList1-data.xml
rename to scripts/containers/Containers_Implementation_LinkedList1-data.xml
diff --git a/scripts/containers/Containers_Implementation_LinkedList1.xreate b/scripts/containers/Containers_Implementation_LinkedList1.xreate
deleted file mode 120000
index 25bdd31..0000000
--- a/scripts/containers/Containers_Implementation_LinkedList1.xreate
+++ /dev/null
@@ -1 +0,0 @@
-/private/prg/code/xreate/scripts/testspass/Containers_Implementation_LinkedList1.xreate
\ No newline at end of file
diff --git a/scripts/containers/Containers_Implementation_LinkedList1.xreate b/scripts/containers/Containers_Implementation_LinkedList1.xreate
new file mode 100644
index 0000000..a645574
--- /dev/null
+++ b/scripts/containers/Containers_Implementation_LinkedList1.xreate
@@ -0,0 +1,47 @@
+
+ // EXTERN INCLUDES
+interface(extern-c){
+ xml2 = library:: pkgconfig("libxml-2.0").
+
+ include {
+ xml2 = ["libxml/tree.h"]
+ }.
+}
+
+ // CONTAINERS
+interface(dfa) {
+ operator map:: (op(seqaccess)) -> impl(solid).
+ operator list_range:: ()->impl(on_the_fly).
+ operator list:: ()->impl(solid).
+ operator fold:: (op(seqaccess)).
+ /* operator index:: (op(randaccess)). - BREAKS THE ANALYSIS. MAKE tree VIEWED AS COLLECTION */
+ /* operator map: (op(seqaccess)) -> impl(llvm_array | on_the_fly); */
+}
+
+import raw("core/containers.lp")
+
+
+ // PROGRAM
+XmlNode = type alias {
+ tag:: string,
+ /* attrs:: [string],*/
+ content:: string
+}.
+
+Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
+XmlTree = type alias Tree(XmlNode).
+
+
+test= function:: num; entry {
+ filename = "scripts/containers/Containers_Implementation_LinkedList1-data.xml" :: string.
+ docRaw = xmlParseFile(filename) :: xmlDocPtr.
+ tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
+ childrenRaw = tree["children"]:: [xmlNodePtr]; linkedlist(next, null).
+ size = loop fold(childrenRaw->child:: xmlNodePtr, 0->count):: int {
+ count +1::int
+ }.
+
+ size
+}
+
+
diff --git a/scripts/containers/containers-indexed-1.xreate b/scripts/containers/containers-indexed-1.xreate
deleted file mode 100644
index 69fd40c..0000000
--- a/scripts/containers/containers-indexed-1.xreate
+++ /dev/null
@@ -1,29 +0,0 @@
-//Expose indexes signature(anonymous):
- a:: [(string, string, num)]; byName <- index(0); byCity <- index(1);
- byNameAndCity <- index(0, 1).
-
-//Expose index signature(named)
- type Record =
- {
- name:: string,
- city:: string,
- age:: num
- }.
-
- b:: [Record]; byName <- index(Record.name).
-
-//Use determined index
- x = a["Rabat"]:: Record; index(byCity).
-
-//Determined syntax(view)
- viewByCity = a:: [Record]; index(byCIty).
- x = viewByCity["Rabat"].
-
-//Determined index(inline)
- x = a[byCity: "Rabbat"]:: Record.
-
-
-//Undefined index
- x = a[{city: "Rabat"}] :: Record. <- index byCity should be deduced
- x = a[{name: "Hind", city: "Rabat"}]
-
diff --git a/scripts/containers/containers.xreate b/scripts/containers/containers.xreate
deleted file mode 100644
index 31ecddf..0000000
--- a/scripts/containers/containers.xreate
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *
- * Show-case for a automatic adjustment of container implementations based on actual operations.
- * Possible implementations: llvm_array, llvm_const_array, on_the_fly(unwinded container)
- *
- */
-
-pass(dfa) {
- operator map: (op(seqaccess)) -> impl(solid);
- operator list_range: ()->impl(on_the_fly);
- operator list: ()->impl(solid);
- operator fold: (op(seqaccess));
- operator index: (op(randaccess));
- /* operator map: (op(seqaccess)) -> impl(llvm_array | on_the_fly); */
-}
-
-import raw("core/containers.lp");
-
-
-testfunc = function: ()->bool
-{
- a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] : [num];
- a2 = [1 .. 100] : [num];
-
- b = loop map (a1 -> el: num) : [num]
- {2 * el;};
-
- c = b : [num];
-
- d = loop fold (a2->el: num, 0->acc: num): [num]
- {acc + el;};
-
- c[5]==d;
-}
-
-
diff --git a/scripts/exploitation/test1-fixture.lp b/scripts/exploitation/test1-fixture.lp
deleted file mode 100644
index 491a935..0000000
--- a/scripts/exploitation/test1-fixture.lp
+++ /dev/null
@@ -1,50 +0,0 @@
-function(test1).
-bind_func(test1, entry).
-function(appendA; appendB; append).
-scope(0..3).
-%scope tags: no tags at all
-
-% Static analysis: CFA
-cfa_parent(0, function(test1)).
-cfa_parent(1, function(appendA)).
-cfa_parent(2, function(appendB)).
-cfa_parent(3, function(append)).
-cfa_call(0, appendA).
-cfa_call(0, appendB).
-cfa_call(1, append).
-cfa_call(2, append).
-
-% Static analysis: DFA
-dfa_connection((2, 3), (anonym(0), 1), weak). %append:msg - anonym(0)
-dfa_connection((3, 3), (anonym(1), 1), weak). %append:filename - anonym(1)
-dfa_connection((0, 1), (0, 3), strong). %appendA: *retv - append: *retv
-dfa_connection((2, 3), (anonym(2), 2), weak). %append:msg - anonym(2)
-dfa_connection((3, 3), (anonym(3), 2), weak). %append:filename - anonym(3)
-dfa_connection((0, 2), (0, 3), strong). %appendB: *retv - append: *retv
-
-v((anonym(0), 1)). %anonym(0)
-v((anonym(1), 1)). %anonym(1)
-v((0, 2)). %appendB: *retv
-v((anonym(2), 2)). %anonym(2)
-v((anonym(3), 2)). %anonym(3)
-v((0, 3)). %append: *retv
-v((2, 3)). %append:msg
-v((3, 3)). %append:filename
-
-cfa_forwdom(0, range(0, 7)).
-cfa_forwdom(1, range(1, 2)).
-cfa_forwdom(2, range(5, 6)).
-cfa_forwdom(3, range(3, 4)).
-cfa_postdom(0, range(3, 4)).
-cfa_postdom(1, range(1, 2)).
-cfa_postdom(2, range(5, 6)).
-cfa_postdom(3, range(0, 7)).
-
-% EXPLOITATION TAGS:
-bind((3,3), exploitation_initialized(file)).
-
-% BIND ACTUAL DATA FOR STATIC SYMBOLS
-bind((anonym(0), 1), static(data(a))). %anonym(0)
-bind((anonym(1), 1), static(data(tmp_test1_txt))). %anonym(1)
-bind((anonym(2), 2), static(data(b))). %anonym(2)
-bind((anonym(3), 2), static(data(tmp_test1_txt))). %anonym(3)
diff --git a/scripts/exploitation/test1.xreate b/scripts/exploitation/test1.xreate
deleted file mode 100644
index cc8eced..0000000
--- a/scripts/exploitation/test1.xreate
+++ /dev/null
@@ -1,38 +0,0 @@
-test1 = function :: int; entry {
- appendA() + appendB
-}
-
-appendA = function:: int {
- append("a", "/tmp/test1.txt")
-}
-
-appendB = function:: int {
- append("b", "/tmp/test1.txt")
-}
-
-append:: function(message::string, filename::string):: int,
-{
- f = initialize(filename):: FILE.
-
- fprintf(f, message)
-}
-
-======================================================
-initialize(filename:: string; exploitation_file_initialized)
-{
- // get cached descriptor for FileName:
- files:: cached(exploitation_files).
-
- files[filename]
-}
-
-attach scope:: openFile(FileName) {
- fid = fopen(FileName).
- (FileName, fid):: cached(exploitation_files).
-}
-
-attach scope:: closeFile(FileName){
- files:: cached(exploitation_files).
- fid = files[FileName].
- fclose(fid)
-}
diff --git a/scripts/function-modifications/current b/scripts/function-modifications/current
deleted file mode 100644
index 1cbf57d..0000000
--- a/scripts/function-modifications/current
+++ /dev/null
@@ -1,92 +0,0 @@
-interface(extern-c){
-xml2 = library:: pkgconfig(\"libxml-2.0\")
- [\"libxml/tree.h\"].
-
-include [xml2].
-}
-
-
-a = function()::int;
- enrty; bug(2530)
-{
- <entry; bug(2530)>
-
-}
-
-interface(cfg){
- context operator map:: hfgfgfgf
- context function a:: optimization: mem
-}
-
-function a :: entry;
-}
-
-a<int>::int.
-
-
-result = fold(vector->el, zero -> acc) {
-
-}
-
-
-main:: entry; bug(2711); unsafe; permissions(usb_access) = function(a::int, b::int)::string; {
-}
-
-a = function()<int>
-context
-main = function (a::xxs, b::fefe -> r::fdfd):: fdfdfd case attr x:: AA, BB
- {
- <optimization: mem>
- context:: {
- frdkfkfe
- }
-
- }
-
- case attr <optimize: mem>
- <AAA, BBB> {
- a() + b().
- }
-
- {
- <AAA, BBB>
-
- }
-
- context:: optimization: mem; warnings: off
- {
-
- } {
-
- case <odd> {
- result = a() + b() :: <odd>
- }
-
- case a::odd {
-
- }
-
- context<odd; asasa>
- result = a() + b() :: odd.
-
- result = a()::odd + b().
-}
-
-
-a = function() {}{}{}{} {}{}{}{}{}{}{}{}{}{}{}{}{}
-
-argument
-function
-result
-function context
-
-annotation several values, annotation sole value;
-function xxs;fdfdfd;fdfd, fdfd;qwqwq;trtrt;iui, aaa;bbb -> qqq; www
- :: entry
- <warnings: off>
- case <optimization: mem> {
- <warnings: important>
- a() + b()
- }
-
-
diff --git a/scripts/function-modifications/data-context.lp b/scripts/function-modifications/data-context.lp
deleted file mode 100644
index 8b13789..0000000
--- a/scripts/function-modifications/data-context.lp
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/scripts/metatests/aux/graphs_trees_depth-test1.lp b/scripts/metatests/aux/graphs_trees_depth-test1.lp
deleted file mode 100644
index 00f89f7..0000000
--- a/scripts/metatests/aux/graphs_trees_depth-test1.lp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "core/aux/graphs_trees_depth.lp".
-
-graphs_node(a; b; c; d).
-graphs_tree_depends(b,a).
-graphs_tree_depends(c,a).
-graphs_tree_depends(d, a).
-graphs_tree_depends(d, c).
-
-#show graphs_tree_depth/2.
\ No newline at end of file
diff --git a/scripts/metatests/aux/graphs_trees_depth-test2.lp b/scripts/metatests/aux/graphs_trees_depth-test2.lp
deleted file mode 100644
index 630d807..0000000
--- a/scripts/metatests/aux/graphs_trees_depth-test2.lp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "core/aux/graphs_trees_depth.lp".
-
-graphs_node(a; b; c).
-graphs_tree_depends(b,a).
-graphs_tree_depends(b,c).
-graphs_tree_depends(c,b).
-
-#show graphs_tree_depth/2.
\ No newline at end of file
diff --git a/scripts/precompilation-1.lp b/scripts/precompilation-1.lp
deleted file mode 100644
index 1c14007..0000000
--- a/scripts/precompilation-1.lp
+++ /dev/null
@@ -1,11 +0,0 @@
-%%DATA EMBEDDING:
- %bind(S, static(Data)):- Data= ref(_); bind(SymbolFrom, static(Data)); dfa_connection(S, SymbolFrom, _).
- %bind(S, static(ref(Root))):- Data= data(_); bind(Root, static(Data)); dfa_connection(S, Root, _).
-
-%% SCHEME:
- % bind(S, static).
- % dfa_static(S, data(Data))
- % dfa_static(S, ref(RootSymbol))
-
-bind(S2, static) :- bind(S1, static): dfa_connection(S2, S1, _).
-
diff --git a/scripts/sprint1_environment/current b/scripts/sprint1_environment/current
deleted file mode 100644
index ba337ec..0000000
--- a/scripts/sprint1_environment/current
+++ /dev/null
@@ -1,8 +0,0 @@
-// install cmake
-// install llvm
-// install gcc
-// install gtest
-
-function():: testEnvironment(exists(gcc)){
- exec("gcc -v") :: expectNoErrors.
-}
diff --git a/scripts/sprint1_environment/sprint1-Installation1.xreate b/scripts/sprint1_environment/sprint1-Installation1.xreate
deleted file mode 120000
index 31eab23..0000000
--- a/scripts/sprint1_environment/sprint1-Installation1.xreate
+++ /dev/null
@@ -1 +0,0 @@
-/private/prg/code/xreate/scripts/testspass/sprint1-Installation1.xreate
\ No newline at end of file
diff --git a/scripts/sprint1_environment/xreate-environment b/scripts/sprint1_environment/xreate-environment
deleted file mode 100644
index 149efed..0000000
--- a/scripts/sprint1_environment/xreate-environment
+++ /dev/null
@@ -1,73 +0,0 @@
-// install cmake
-// install llvm
-// install gcc
-// install gtest
-
-EXISTS(gcc) = function(){
- exec("gcc -v") :: ExpectNoErrors; log("Check gcc").
-}
-
-function():: provide(gcc) {
- exec("sudo apt-get install gcc"):: log("[GCC] Installation").
-}
-
-function():: TestEnvironment(exists(cmake)){
- exec("cmake /V"):: ExpectNoErrors; log("Check cmake").
-}
-
-function():: provide(cmake) {
- exec("sudo apt-get install cmake"):: log("[CMake] Installation").
-}
-
-function():: TestEnvironment(exists(subversion)){
- exec("svn --version"):: ExpectNoErrors; log("Check svn").
-}
-
-function():: provide(subversion) {
- exec("sudo apt-get install subversion"):: log("[Subversion] Installation").
-}
-
-function():: TestEnvironment(exists(scons)){
- exec("scons -v"):: ExpectNoErrors; log("Check scons").
-}
-
-function():: provide(scons) {
- exec("sudo apt-get install scons"):: log("[Scons] Installation").
-}
-
-function():: TestEnvironment(exists(bison)){
- exec("bison --version"):: ExpectNoErrors; log("Check bison").
-}
-
-function():: provide(bison) {
- exec("sudo apt-get install bison"):: log("[Bison] Installation").
-}
-
-//FEATURE dependent packages: Subversion
-function():: provide(gringo)
-{
- exec("cd /opt"). //FEATURE states: dir("/opt")
- exec("svn://svn.code.sf.net/p/potassco/code/trunk")
- :: log("[Potassco] cloning latest version");
- require(svn); require(rights("/opt", WRITE)). //"sudo chown -R user ./potassco"
-
- //
- exec("scons --build-dir=release"):: require(scons)
-}
-
-
-function()::depends(env(gringo)){
-
-}
-
-exec(cmd::string) = procedure {
- system(cmd)::ErrorCodeResult.
-}
-
-procedure :: EnvironmentTest(gcc) {
- exec("gcc -v")::ExpectNoErrors.
-}
-
-EnvironmentProvider(gcc) = procedure {
- exec("sudo apt-get install gcc"):: log("[GCC] Installation").
-}
\ No newline at end of file
diff --git a/scripts/testspass/Containers_Implementation_LinkedList1.xreate b/scripts/testspass/Containers_Implementation_LinkedList1.xreate
deleted file mode 100644
index 8340f56..0000000
--- a/scripts/testspass/Containers_Implementation_LinkedList1.xreate
+++ /dev/null
@@ -1,47 +0,0 @@
-
- // EXTERN INCLUDES
-interface(extern-c){
- xml2 = library:: pkgconfig("libxml-2.0").
-
- include {
- xml2 = ["libxml/tree.h"]
- }.
-}
-
- // CONTAINERS
-interface(dfa) {
- operator map:: (op(seqaccess)) -> impl(solid).
- operator list_range:: ()->impl(on_the_fly).
- operator list:: ()->impl(solid).
- operator fold:: (op(seqaccess)).
- /* operator index:: (op(randaccess)). - BREAKS THE ANALYSIS. MAKE tree VIEWED AS COLLECTION */
- /* operator map: (op(seqaccess)) -> impl(llvm_array | on_the_fly); */
-}
-
-import raw("core/containers.lp")
-
-
- // PROGRAM
-XmlNode = type alias {
- tag:: string,
- /* attrs:: [string],*/
- content:: string
-}.
-
-Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
-XmlTree = type alias Tree(XmlNode).
-
-
-test= function:: num; entry {
- filename = "scripts/testspass/Containers_Implementation_LinkedList1-data.xml" :: string.
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
- childrenRaw = tree["children"]:: [xmlNodePtr]; linkedlist(next, null).
- size = loop fold(childrenRaw->child:: xmlNodePtr, 0->count):: int {
- count +1::int
- }.
-
- size
-}
-
-
diff --git a/scripts/testspass/log.xreate b/scripts/testspass/log.xreate
deleted file mode 100644
index 997edf1..0000000
--- a/scripts/testspass/log.xreate
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-
- Log level:
- Log entry(flat, hierarchical)
-
-*/
-
-
-
-
- // EXTERN INCLUDES
-interface(extern-c){
- xml2 = library:: pkgconfig("libxml-2.0").
-
- include {
- xml2 = ["libxml/tree.h", "string.h"]
- }.
-}
-
- // CONTAINERS
-interface(dfa) {
- operator map:: (op(seqaccess)) -> impl(solid).
- operator list_range:: ()->impl(on_the_fly).
- operator list:: ()->impl(solid).
- operator fold:: (op(seqaccess)).
- operator index:: (op(randaccess)).
- /* operator map: (op(seqaccess)) -> impl(llvm_array | on_the_fly); */
-}
-
-import raw("core/containers.lp").
-
-
- // PROGRAM
-XmlNode = type alias {
- tag:: string,
- /* attrs:: [string],*/
- content:: string
-}.
-
-Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
-XmlTree = type alias Tree(XmlNode).
-
-
-test= function():: num; entry {
- filename = "project/documentation.fodt" :: string.
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
- childrenRaw = tree["children"]:: [xmlNodePtr]; containers:linkedlist(next, null).
- size = loop fold(childrenRaw->child:: xmlNodePtr, 0->count::int):: int {
-
-// $log{
-// count +1:: warning, subsystem=xml
-// }
-
-
- //log{warning, subsystem=xml, ..}
- childName = child["name"]::string; logging.
- count + strlen(childName):: int
- }.
-
- size
-}
-
-
diff --git a/scripts/testspass/sprint1-Installation1.xreate b/scripts/testspass/sprint1-Installation1.xreate
deleted file mode 100644
index e02797f..0000000
--- a/scripts/testspass/sprint1-Installation1.xreate
+++ /dev/null
@@ -1,100 +0,0 @@
-import raw ("core/dependencies.lp")
-import raw ("core/control-context.lp")
-import raw ("core/unit-tests.lp")
-
-InstallationStatus = type variant(NOT_INSTALLED, INSTALLED).
-
-interface(adhoc){
- pre function expectNoErrors:: InstallationStatus {
- case Error {NOT_INSTALLED}
- case Success {INSTALLED}
- }
-}
-
-interface(extern-c){
- libFake = library:: pkgconfig("libxml-2.0").
-
- include {
- libFake = ["stdio.h", "stdlib.h"]
- }.
-}
-
-exec = pre function(comm:: string) {
- result = system(comm):: num.
-
- if (result==0)::InstallationStatus
- {ad hoc "Success"}
- else {ad hoc "Error"}
-}
-
-start = function:: int; entry {
- context:: goal(artefact(gcc)).
-
- provideGoals()
-}
-
-provideGoals = function:: int {
- loop context ("goal") {
- provideArtefact()
- }
-}
-
-provideArtefact = function:: int{
- switch (actionEXISTS())::int
-
- case INSTALLED {0}
-
- case NOT_INSTALLED {
- sequence [
- provideDependencies(),
- actionPROVIDE()
- ]
- }
-
- case default {-1}
-}
-
-provideDependencies = function::int {
- rule context:: childs(Child)
- case artefact(Item) {
- artefact_depends(Item, Child)
- }
-
- loop context ("childs") {
- provideArtefact()
- }
-}
-
-case context:: artefact(subversion) {
- actionEXISTS = function::int {
- context:: expectNoErrors.
-
- exec("svn --version")
- }
-
- actionPROVIDE = function::int {
- context:: expectNoErrors.
-
- exec("sudo apt-get install subversion")
- }
-}
-
-actionEXISTS = function::int {
- -1
-}
-
-actionPROVIDE = function::int {
- -1
-}
-
-
-// DRAFT
-/*
- flagIsProvided = if(dictProvided(<item>)) {true} else
- dictProvided = dictProvided + <item>
-
-expectErrorCode = pre function(x::int){
- if (x==0)::bool {ad hoc "Success"}
- else {ad hoc "Error"}
-}
-*/
diff --git a/scripts/testspass/xml-test1.xreate b/scripts/testspass/xml-test1.xreate
deleted file mode 100644
index f5388c9..0000000
--- a/scripts/testspass/xml-test1.xreate
+++ /dev/null
@@ -1,142 +0,0 @@
-/* C++ SECTION
-Example of c++ code:
-
- xmlDocPtr doc;
- xmlNodePtr cur;
- doc = xmlParseFile(docname.c_str());
- if (doc == NULL ) {
- fprintf(stderr,"Document not parsed successfully. \n");
- return;
- }
- cur = xmlDocGetRootElement(doc);
- if (cur == NULL) {
- fprintf(stderr,"empty document\n");
- xmlFreeDoc(doc);
- return;
- }
-
- cur = cur->xmlChildrenNode;
- while (cur != NULL) {
- printf("child: %s\n", cur->name);
-
- cur = cur->next;
- }
-
-*/
-
-/* FEATURES SECTION
-
- Default strategies:
- - what to do with unspecified nodes
-
- Node content strategy:
- - send as-is
- - apply transforms (all / named)
- - ?? skip
-
- Processing order:
- - dependencies
-
- Mapping:
- * tree -> list
-
-*/
-
-/* TODO SECTION
- -- gather types aliases (tree->list mapping)
- -- flyweight implementation ('doc' field calculation, for example. based on are there more than one opened document )
-*/
-
-// REQUIREMENTS SECTION
-/* require ptrvalid */
-/* local scope doc ptr */
-/* singleton element check(::single) */
-
-XmlAttr = type alias {
- name:: string,
- content:: string
-}.
-
-XmlNode = type alias {
- name:: string, /* the name of the node, or the entity */
-
- content:: string, /* the content */
- attributes::[XmlAttr] /* properties list */
-
- /*
- children:: [xmlNode], // parent->childs link
-
- void *_private; // application data
- struct _xmlNode *parent; // child->parent link
- struct _xmlNode *next; // next sibling link
- struct _xmlNode *prev; // previous sibling link
- struct _xmlDoc *doc; // the containing document
- unsigned short line; // line number
- */
-}.
-
-interface(extern-c){
- xml2 = library:: pkgconfig("libxml-2.0").
-
- include {
- xml2 = ["libxml/tree.h", "string.h"]
- }.
-}
-
-Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
-XmlTree = type alias Tree(XmlNode).
-
-toXmlNode = function (nodeRaw:: xmlNodePtr):: XmlNode
-{
- propertiesRaw = nodeRaw["properties"]:: [xmlAttrPtr]; containers:linkedlist(next, null).
- properties = loop map(propertiesRaw -> property::xmlAttrPtr)::[XmlAttr]{
- {name=property["name"], content=property["children", "content"]}
- }.
-
- {name = nodeRaw["name"],
- content=nodeRaw["content"],
- attributes=properties}
-}
-
-children = function(nodeRaw::xmlDocPtr)::[XmlTree] {
- childrenRaw = nodeRaw["children"]:: [xmlDocPtr]; containers:linkedlist(next, null).
-
- children = loop map(childrenRaw->child:: xmlDocPtr) :: [XmlTree]{
- [toXmlNode(child), children(child)]
- }.
-
- children
-}
-
-document = function (filename:: string):: XmlTree
-{
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- nodeRaw= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
-
- [toXmlNode(nodeRaw), children(nodeRaw)]:: XmlTree
-}
-
-traverse = function(tree:: XmlTree) :: [XmlNode] {
- listOfNodes = loop fold(tree -> node:: XmlTree, []->acc):: [XmlNode]{
- acc + node[0] + traverse(node[1]):: [XmlNode]
- }.
-
- listOfNodes
-}
-
-test1 = function:: int; entry {
- filename = "project/documentation.fodt" :: string.
-
- root = document(filename):: XmlTree.
- nodesAll = traverse(root):: [XmlNode].
-
- result = loop fold(nodesAll->node:: XmlNode, 0->count):: int{
- count + if (0==strcmp(node["name"], "section")) :: int {
- 1
- } else {
- 0
- }
- }.
-
- result
-}
diff --git a/scripts/trash/ftransform.li b/scripts/trash/ftransform.li
deleted file mode 100644
index d75c454..0000000
--- a/scripts/trash/ftransform.li
+++ /dev/null
@@ -1,26 +0,0 @@
-//преобразование параметров функции
-
-function(first-function, vars-list(var(x, i32), var(y, i32)), i32,
- div(add(x, 5), y))
-
---------------------------------------------------------------------------------------------------
-
-type(name(ListNode), struct(
- field(name(caption), type(String)),
- field(name(args), type(collection(ListNode)))
-))
-
-
-
-transform(
- name(f-transform), guard(var(name(X), constraints(caption(simple-function)))),
- body(
- set (args, field(X, args),
-
-
- wrap(extract(args, 0), caption(name)),
-
- wrap
- name(field())
- )
-)
diff --git a/scripts/trash/intersection.li2 b/scripts/trash/intersection.li2
deleted file mode 100644
index 6ce957a..0000000
--- a/scripts/trash/intersection.li2
+++ /dev/null
@@ -1,93 +0,0 @@
-// пример реализации процедуры определения пересечения двух множеств
-//
-//
-// A, B - два множества
-
-
-Iterator (Set set) : (Set set, int pos)
-
-next(Iterator Set i): action of Iterator{
- pos++;
-
- return i;
-}
-
-written El_Type x = Iterator/Set/El_Type i : substitution{
- x = i.pos;
-}
-
-
-A overtake B: action of Iterator {
- elB = current (B); //эта команда может превратиться просто в использование elA из вызывающей функции, используя аннотацию context или bag
-
- repeat-post elA<elB
- elA = next(A);
-
- return elA;
-}
-
-intersect(Set A, B) : function, return Set = {
- A, B : sorted
- Set RESULT-SET;
-
-with Iterator
- repeat
- elA = next(A); // при первом вызове указывает на первый элемент
- elB = next(B);
-
- if (elA > elB)
- elB = B overtake A;
- else
- elA = A overake B;
-
- if (elA == elB)
- put(RESULT-SET, elA);
-
-return RESULT-SET
-}
-
-// repeat - бесконечный повтор?
-// repeat-pre - повтор с предусловием, repeat-post - повтор с постусловием
-
-
-
-
- Работа с Map:
- Пример отображения(view), пример №1:
-
-Map/(KEY, VALUE): type = [(KEY, VALUE)];
-
-Map-T ([KEY], [VALUE]): view, pairs: Map/(KEY, VALUE) = {
- keys = map pairs, pair
- (key, ) = pair;
- key
-
- values = map pairs, pair
- (, value) = pair;
- value
-
- return (keys, values)
-}
-
-//(SELECT key, SELECT value) - возможно ли в функцию передавать названия поля, с кот. ей нужно работать.. ?
-
- Пример №2 (свести к поиску 6):
-
-find6: function = {
-x: [int] = [1, 2, 3, 4, 5, 6, 7]; //эффективная инициализация!
-
-y = map x, el
- 2 * el
-
-return exists(x, 12);
-}
-
-
-/**
- * Построить:
- * сортировка :- необходимо ordered-list(linked-list, tree-list)
- * RA доступ :- желательно hash-list или желательно tree-list
- * последовательный доступ :- желательно ordered-list
- *
- *
-Necessarily and ◇ for Possibly
\ No newline at end of file
diff --git a/scripts/trash/opcode.comments b/scripts/trash/opcode.comments
deleted file mode 100644
index 31c457b..0000000
--- a/scripts/trash/opcode.comments
+++ /dev/null
@@ -1,30 +0,0 @@
-
-/*
-
-ASTLispNode
-
-
-transform(
-
- function(__name, __vars), function(name(__name), vars-list(__vars), body(function.body)
-)
-*/
-
-
-add(y, div(add(x, 5), 15))))
-
-
-opcode(add, LLVMAddInstruction)
-opcode(div, LLVMDivideInstruction)
-
-function(name(first-function),
- vars-list(var(name(x), type(i32)), var(name(y), type(i32))),
- return(type(i32)),
- body(
- div(add(x, 5), y)))
-
-function (name(second-f), vars-list, return(type(i32)), body(
- add(add (10, 20), first-function(11, 80))
-))
-
-main(second-f)
\ No newline at end of file
diff --git a/scripts/trash/opcode.li b/scripts/trash/opcode.li
deleted file mode 100644
index 5f62311..0000000
--- a/scripts/trash/opcode.li
+++ /dev/null
@@ -1,14 +0,0 @@
-opcode(add, LLVMAddInstruction)
-opcode(div, LLVMDivideInstruction)
-
-function(name(first-function),
- vars-list(var(name(x), type(i32)), var(name(y), type(i32))),
- return(type(i32)),
- body(
- div(add(x, 5), y)))
-
-function (name(second-f), vars-list, return(type(i32)), body(
- add(add (10, 20), first-function(80, 11))
-))
-
-main(second-f)
\ No newline at end of file
diff --git a/scripts/xml/[old] xml-client.xreate b/scripts/xml/[old] xml-client.xreate
deleted file mode 100644
index 5ea610f..0000000
--- a/scripts/xml/[old] xml-client.xreate
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-
-Example of c++ code:
-
- xmlDocPtr doc;
- xmlNodePtr cur;
- doc = xmlParseFile(docname.c_str());
- if (doc == NULL ) {
- fprintf(stderr,"Document not parsed successfully. \n");
- return;
- }
- cur = xmlDocGetRootElement(doc);
- if (cur == NULL) {
- fprintf(stderr,"empty document\n");
- xmlFreeDoc(doc);
- return;
- }
-
- cur = cur->xmlChildrenNode;
- while (cur != NULL) {
- printf("child: %s\n", cur->name);
-
- cur = cur->next;
- }
-
-*/
-
-/*
-
- Default strategies:
- - what to do with unspecified nodes
-
- Node content strategy:
- - send as-is
- - apply transforms (all / named)
- - ?? skip
-
- Processing order:
- - dependencies
-
- */
-
- default_filname = "project/documentation.fodt" : string;
-
-/* require ptrvalid */
-/* local scope doc ptr */
-
-XmlNode = type {
- tag: string;
- attrs: [string];
- content: string}.
-
-Tree = type(Leaf) Tree [Leaf; [Tree(Leaf)]];
-
-XmlTree = Tree(XmlNode);
-
-
-children = function: (tree: xmlNodePtr)->XmlTree
-{
- childrenRaw = tree[xmlChildrenNode]: [xmlNodePtr], linkedlist(next, null);
-
- map (childrenRaw->childRaw: xmlNodePtr) {
- Tree[childRaw[name] children(childRaw)]
- }
-}
-
-
-document = function: (filename: string)->XmlTree
-{
- docRaw = xmlParseFile(docname.c_str()) : xmlDocPtr;
- nodeRaw= xmlDocGetRootElement(docRaw) : xmlNodePtr;
-
- Tree [nodeRaw[name] children(nodeRaw));
-}
-
-
-query = function(tree: XmlTree): [XmlTree]
-{
- children : context(children) =
- case default
- []
-
- case (tree[0]: NeedChildren(childrenFilters), ApplyTransform(transFilters))
- {
- loop fold (tree[1]->child: Tree(Leaf) | childrenFilters; []->accum).
- {accum + traverse(child): cases(transFilters) };
- }
-
- node =
- case (node.tag == "style:style"; class = node[attrs, "style:name"]; exists(class, ParaKnownClasses))
- {
- [class, node[attrs, "style:display-name"]];
- }
-
- case default
- [] ;
-
- Tree[node children] | node + children
-}
-
-test = function: ()->num
-{
- data = query(document(default_filename)): [string, string];
-
- exists(data, "pgess1").
-}
-
- /*
-traverse = function(trees: [XmlTree]) : [XmlTree]
- loop fold(trees->tree: Tree; []->acc)
- acc + traverse(tree)
- */
\ No newline at end of file
diff --git a/scripts/xml/all.xreate b/scripts/xml/all.xreate
deleted file mode 100644
index 3cd606f..0000000
--- a/scripts/xml/all.xreate
+++ /dev/null
@@ -1,188 +0,0 @@
-/* C++ SECTION
-Example of c++ code:
-
- xmlDocPtr doc;
- xmlNodePtr cur;
- doc = xmlParseFile(docname.c_str());
- if (doc == NULL ) {
- fprintf(stderr,"Document not parsed successfully. \n");
- return;
- }
- cur = xmlDocGetRootElement(doc);
- if (cur == NULL) {
- fprintf(stderr,"empty document\n");
- xmlFreeDoc(doc);
- return;
- }
-
- cur = cur->xmlChildrenNode;
- while (cur != NULL) {
- printf("child: %s\n", cur->name);
-
- cur = cur->next;
- }
-
-*/
-
-/* FEATURES SECTION
-
- Default strategies:
- - what to do with unspecified nodes
-
- Node content strategy:
- - send as-is
- - apply transforms (all / named)
- - ?? skip
-
- Processing order:
- - dependencies
-
- Mapping:
- * tree -> list
-
-*/
-
-/* TODO SECTION
- -- gather types aliases (tree->list mapping)
- -- flyweight implementation (doc calculation, for example. based on are there more than one opened document )
-*/
-
-// REQUIREMENTS SECTION
-/* require ptrvalid */
-/* local scope doc ptr */
-/* singleton element check(::single) */
-
-XmlAttr = type alias {
- name:: String,
- content:: String
-}.
-
-XmlNode = type alias {
- name:: String, /* the name of the node, or the entity */
- children:: [xmlNode], /* parent->childs link */
- content:: String, /* the content */
- attributes::[XmlAttr] /* properties list */
-
- /*
- void *_private; // application data
- struct _xmlNode *parent; // child->parent link
- struct _xmlNode *next; // next sibling link
- struct _xmlNode *prev; // previous sibling link
- struct _xmlDoc *doc; // the containing document
- unsigned short line; // line number
- */
-}.
-
-interface(extern-c){
- xml2 = library:: pkgconfig("libxml-2.0").
-
- include {
- xml2 = ["libxml/tree.h", "string.h"]
- }.
-}
-
-Tree = type Tree(Leaf) [Leaf, [Tree(Leaf)]].
-XmlTree = type alias Tree(XmlNode).
-
-find = ..
-[xmlNodePtr]; containers:linkedlist(next, null).
-
-
-
-test1 = function():: int; entry {
- dictAliases = dictAliases():: AliasList.
-
- count = loop fold(dictAliases->alias::Alias, 0->count::int):: int{
- aliasName = alias[0]:: String; logging.
- aliasOrigClass = alias[1]::String; logging.
-
- count + 1
- }
-
- count
-}
-
-/*
-toXmlNode = function (nodeRaw:: xmlNodePtr):: XmlNode
-{
- {tag = nodeRaw["name"], content=null}
-}
-
-
-children = function (tree:: xmlNodePtr):: XmlTree
-{
- childrenRaw = tree["xmlChildrenNode"]:: [xmlNodePtr]; containers:linkedlist(next, null).
-
- loop map (childrenRaw->childRaw:: xmlNodePtr):: XmlTree {
- [toXmlNode(childRaw), children(childRaw)]
- }
-}
-
-
-document = function (filename:: string):: XmlTree
-{
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- nodeRaw= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
-
- [toXmlNode(nodeRaw), children(nodeRaw)]:: XmlTree
-}
-
-*/
-
-Alias = type alias {
- alias: String,
- original: String
-}.
-
-AliasList = type alias [Alias].
-
-classesPar = ["pgess1", "pgess2"] :: [String].
-classesAliasQuery = function(node:: xmlNodePtr):: Alias
-{
- result =
- case default {none}
-
- case node[tag] == "style", class in classesPara,
- classAlias = node[attrs, "name"],
- class=node[attrs, "parent-style-name"],
- {
- [classAlias. class]
- }.
-
- result.
-}
-
-
-
-dictAliases = function():: AliasList{
- filename = "project/documentation.fodt" :: string.
- docRaw = xmlParseFile(filename) :: xmlDocPtr.
- tree= xmlDocGetRootElement(docRaw) :: xmlNodePtr.
-
- nodeStylesRoot = findNodes(tree, "office:automatic-styles"):: xmlNodePtr; single.
- nodesStyles= findNodes(nodeStylesRoot, "style:style"):: [xmlNodePtr].
-
- nodesChildAliases = filter(nodeStyles){
- "style:parent-style-name" in classesPar
- }
-
- dictChildAliases = loop fold(nodesChilds->node:: xmlNodePtr, []->aliases::[Alias]) {
- aliases + {alias = attr(node, "style:name"), original = attr(node, "style:parent-style-name")}
- }.
-
- nodesDisplayAliases = filter(nodesStyles){
- "style:parent-style-name" in classesPar
- }
-
- dictDisplayAliases = loop fold(nodesDisplayAliases->node:: xmlNodePtr, []->aliases::[Alias]) {
- aliases + {alias = attr(node, "style:display-name"), original = attr(node, "style:name")}
- }.
-
- nodesDisplayAliases + dictDisplayAliases
-}
-
-
-
-
-
-
diff --git a/scripts/xml/xml-test1.xreate b/scripts/xml/xml-test1.xreate
deleted file mode 120000
index a65ed28..0000000
--- a/scripts/xml/xml-test1.xreate
+++ /dev/null
@@ -1 +0,0 @@
-/private/prg/code/xreate/scripts/testspass/xml-test1.xreate
\ No newline at end of file
Event Timeline
Log In to Comment