Skip to content

Commit b2ca984

Browse files
committed
[Alan] Add two correct and some erroneous programs, courtesy of Pantosx2
1 parent 1f47612 commit b2ca984

15 files changed

+193
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
main() : proc
2+
arr : int [10];
3+
x : int;
4+
{
5+
x = arr; -- Using array variable without an index
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
main() : proc
2+
x : int;
3+
x : int; -- Redeclaring the variable 'x'
4+
{
5+
x = 42;
6+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
main() : proc
2+
3+
add (a: int, b: int) : int
4+
{
5+
return a + b;
6+
}
7+
8+
result : int;
9+
{
10+
result = add(42); -- Missing one argument
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
main() : proc
2+
3+
outerFunction () : proc
4+
innerFunction () : proc
5+
{
6+
y = 42; -- 'y' is not declared in any accessible scope
7+
}
8+
{
9+
innerFunction();
10+
}
11+
12+
{
13+
outerFunction();
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
main() : proc
2+
3+
printMessage () : proc
4+
{
5+
writeString("Hello\n");
6+
}
7+
8+
x : int;
9+
{
10+
x = printMessage() + 42; -- Using a procedure in an expression
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
main() : proc
2+
3+
printMessage () : proc
4+
{
5+
return 42; -- Returning a value from a procedure, which is invalid
6+
}
7+
8+
{
9+
printMessage();
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
main() : proc
2+
x : int;
3+
{
4+
x = "hello"; -- Assigning string to an integer variable
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
main() : proc
2+
{
3+
x = 42; -- 'x' is undeclared
4+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
main() : proc
2+
3+
getValue () : int
4+
{
5+
return "string"; -- Returning a string instead of an integer
6+
}
7+
8+
result : int;
9+
{
10+
result = getValue();
11+
}

alan/programs/concat.alan

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
main() : proc
2+
3+
concat (s1: reference byte [], s2: reference byte []) : proc
4+
i : int;
5+
l1 : int;
6+
l2 : int;
7+
{
8+
l1 = strlen(s1);
9+
l2 = strlen(s2);
10+
i = 0;
11+
while (i < l2) {
12+
s1[l1+i] = s2[i];
13+
i = i+1;
14+
}
15+
s1[l1+l2] = '\0';
16+
}
17+
18+
str1 : byte [64];
19+
str2 : byte [32];
20+
{
21+
readString(64, str1);
22+
readString(32, str2);
23+
24+
concat(str1, str2);
25+
26+
writeString(str1);
27+
writeChar('\n');
28+
}

0 commit comments

Comments
 (0)