Mostly implemented Simultaneous Declaration, only template instantation during pass 2 remains to be implemented

This commit is contained in:
Nathan Braswell
2014-05-24 14:04:32 -04:00
parent 0f6b6c0c67
commit ae9e652f1e
10 changed files with 461 additions and 30 deletions

View File

@@ -0,0 +1 @@
12

View File

@@ -0,0 +1,17 @@
import io;
int ret1() {
return ret2() / 2;
}
int main() {
print(ret1());
print(ret2());
print("\n");
return 0;
}
int ret2() {
return 2;
}

View File

@@ -0,0 +1 @@
345Hello!Hello!Hello!

View File

@@ -0,0 +1,41 @@
import io;
import trivial_container;
typedef RegularObject {
MyInt num;
trivialContainer<char*> innerContainer;
void set(char* message, int number) {
innerContainer.data = message;
num = number;
}
char* get() {
return innerContainer.data;
}
void print() {
print(num);
innerContainer.print();
}
};
typedef MyIntContainer trivialContainer<int>;
typedef MyInt int;
MyInt c;
MyIntContainer roundabout;
RegularObject outsideDec;
void print(trivialContainer<char*> toPrint) {
print(toPrint.data);
}
int main() {
c = 3;
roundabout.data = 4;
outsideDec.set("Hello!", 5);
print(c);
roundabout.print();
outsideDec.print();
print(outsideDec.get());
print(outsideDec.innerContainer);
print("\n");
return 0;
}

View File

@@ -0,0 +1,4 @@
a: 5
b: 7
a: 9
b: Hello Templates!

View File

@@ -0,0 +1,30 @@
import io;
typedef template <T> TemplateTest {
int a;
T b;
void print() {
print("a: ");
print(a);
print("\n");
print("b: ");
print(b);
print("\n");
}
};
int main() {
TemplateTest<int> test;
TemplateTest<char*> test2;
test.a = 5;
test.b = 7;
test2.a = 9;
test2.b = "Hello Templates!";
test.print();
test2.print();
return 0;
}