Skip to content

Commit aeb008c

Browse files
committed
Fixed unary negation bug, removed newline from print
1 parent 53012db commit aeb008c

File tree

11 files changed

+96
-25
lines changed

11 files changed

+96
-25
lines changed

scripts/example-entity.toy

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn getY(node: opaque) {
2424

2525
//lifecycle functions
2626
fn onInit(node: opaque) {
27-
print "render.toy:onInit() called";
27+
print "render.toy:onInit() called\n";
2828

2929
node.loadTexture("sprites:/character.png");
3030
parent = node.getNodeParent();
@@ -36,13 +36,13 @@ fn onStep(node: opaque) {
3636
}
3737

3838
fn onFree(node: opaque) {
39-
print "render.toy:onFree() called";
39+
print "render.toy:onFree() called\n";
4040

4141
node.freeTexture();
4242
}
4343

4444
fn onDraw(node: opaque) {
45-
// print "render.toy:onDraw() called";
45+
// print "render.toy:onDraw() called\n";
4646

4747
var px = parent.callNode("getX");
4848
var py = parent.callNode("getY");
@@ -104,22 +104,22 @@ fn onKeyUp(node: opaque, event: string) {
104104
}
105105

106106
fn onMouseMotion(node: opaque, x: int, y: int, xrel: int, yrel: int) {
107-
print "entity.toy:onMouseMotion(" + string x + ", " + string y + ", " + string xrel + ", " + string yrel + ")";
107+
// print "entity.toy:onMouseMotion(" + string x + ", " + string y + ", " + string xrel + ", " + string yrel + ")\n";
108108
}
109109

110110
fn onMouseButtonDown(node: opaque, x: int, y: int, button: string) {
111-
print "entity.toy:onMouseButtonDown(" + string x + ", " + string y + ", " + button + ")";
111+
// print "entity.toy:onMouseButtonDown(" + string x + ", " + string y + ", " + button + ")\n";
112112

113113
//jump to pos
114114
posX = x - WIDTH / 2;
115115
posY = y - HEIGHT / 2;
116116
}
117117

118118
fn onMouseButtonUp(node: opaque, x: int, y: int, button: string) {
119-
print "entity.toy:onMouseButtonUp(" + string x + ", " + string y + ", " + button + ")";
119+
// print "entity.toy:onMouseButtonUp(" + string x + ", " + string y + ", " + button + ")\n";
120120
}
121121

122122
fn onMouseWheel(node: opaque, xrel: int, yrel: int) {
123-
print "entity.toy:onMouseWheel(" + string xrel + ", " + string yrel + ")";
123+
// print "entity.toy:onMouseWheel(" + string xrel + ", " + string yrel + ")\n";
124124
}
125125

scripts/fib-memo.toy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ fn fib(n : int) {
1717

1818
for (var i = 0; i < 40; i++) {
1919
var res = fib(i);
20-
print string i + ": " + string res;
20+
print string i + ": " + string res + "\n";
2121
}

scripts/fib.toy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ fn fib(n : int) {
55

66
for (var i = 0; i < 20; i++) {
77
var res = fib(i);
8-
print string i + ": " + string res;
8+
print string i + ": " + string res + "\n";
99
}

scripts/level.toy

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
//constants
2+
var WIDTH: int const = 10;
3+
var HEIGHT: int const = 10;
4+
5+
//WIDTH * HEIGHT in size
6+
var tiles: [[int]] const = [
7+
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
8+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
9+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
10+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
11+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
12+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
13+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
14+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
15+
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
16+
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
17+
];
18+
19+
var tileset: [int: string] const = [
20+
0: " ",
21+
1: " X "
22+
];
23+
24+
//variables
25+
var posX: int = 5;
26+
var posY: int = 5;
27+
28+
//functions
29+
fn draw() {
30+
for (var j: int = 0; j < HEIGHT; j++) {
31+
for (var i: int = 0; i < WIDTH; i++) {
32+
//draw the player pos
33+
if (i == posX && j == posY) {
34+
print " O ";
35+
continue;
36+
}
37+
38+
print tileset[ tiles[i][j] ];
39+
}
40+
print "\n";
41+
}
42+
print "\n";
43+
}
44+
45+
fn move(xrel: int, yrel: int) {
46+
if (xrel > 1 || xrel < -1 || yrel > 1 || yrel < -1 || (xrel != 0 && yrel != 0)) {
47+
print "too fast!\n";
48+
return;
49+
}
50+
51+
if (tiles[posX + xrel][posY + yrel] > 0) {
52+
print "Can't move that way\n";
53+
return;
54+
}
55+
56+
posX += xrel;
57+
posY += yrel;
58+
59+
draw();
60+
}
61+

scripts/rule110.toy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ for (var i = 0; i < SIZE -1; i++) {
2929
prev += " ";
3030
}
3131
prev += "*"; //initial
32-
print prev;
32+
print prev + "\n";
3333

3434
//run
3535
for (var iteration = 0; iteration < SIZE -1; iteration++) {
@@ -44,6 +44,6 @@ for (var iteration = 0; iteration < SIZE -1; iteration++) {
4444
//right
4545
output += (lookup[prev[SIZE-2]][prev[SIZE-1]][" "]);
4646

47-
print output;
47+
print output + "\n";
4848
prev = output;
4949
}

scripts/small.toy

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import compound;
21

3-
var a = [false, false, false];
4-
var d = ["one": false, "two": false];
5-
6-
print d.containsKey("one");
7-
print d.containsKey("three");
2+
var xrel: int = 0;
3+
var yrel: int = 0;
84

5+
if (xrel > 1 || xrel < -1 || yrel > 1 || yrel < -1) {
6+
print "outside";
7+
}
8+
else {
9+
print "inside";
10+
}

source/toy_interpreter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
static void printWrapper(const char* output) {
1515
printf("%s", output);
16-
printf("\n"); //default new line
16+
// printf("\n"); //default new line
1717
}
1818

1919
static void assertWrapper(const char* output) {

source/toy_parser.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -428,12 +428,12 @@ static Toy_Opcode binary(Toy_Parser* parser, Toy_ASTNode** nodeHandle) {
428428
}
429429

430430
case TOY_TOKEN_AND: {
431-
parsePrecedence(parser, nodeHandle, PREC_COMPARISON);
431+
parsePrecedence(parser, nodeHandle, PREC_AND);
432432
return TOY_OP_AND;
433433
}
434434

435435
case TOY_TOKEN_OR: {
436-
parsePrecedence(parser, nodeHandle, PREC_COMPARISON);
436+
parsePrecedence(parser, nodeHandle, PREC_OR);
437437
return TOY_OP_OR;
438438
}
439439

@@ -448,7 +448,7 @@ static Toy_Opcode unary(Toy_Parser* parser, Toy_ASTNode** nodeHandle) {
448448

449449
if (parser->previous.type == TOY_TOKEN_MINUS) {
450450
//temp handle to potentially negate values
451-
parsePrecedence(parser, &tmpNode, PREC_TERNARY); //can be a literal
451+
parsePrecedence(parser, &tmpNode, PREC_TERM); //can be a literal
452452

453453
//optimisation: check for negative literals
454454
if (tmpNode != NULL && tmpNode->type == TOY_AST_NODE_LITERAL && (TOY_IS_INTEGER(tmpNode->atomic.literal) || TOY_IS_FLOAT(tmpNode->atomic.literal))) {

test/scripts/or-chaining-bugfix.toy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//This is just a check to ensure that unary minus doesn't screw up the AST
2+
3+
var xrel: int = 0;
4+
var yrel: int = 0;
5+
6+
assert (xrel > 1 || xrel < -1 || yrel > 1 || yrel < -1) == false, "or-chaining bugfix failed";
7+

test/test_call_from_host.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ int main() {
4141

4242
//test answer
4343
{
44-
interpreter.printOutput("Testing answer");
44+
interpreter.printOutput("Testing answer\n");
4545

4646
Toy_LiteralArray arguments;
4747
Toy_initLiteralArray(&arguments);
@@ -69,7 +69,7 @@ int main() {
6969

7070
//test identity
7171
{
72-
interpreter.printOutput("Testing identity");
72+
interpreter.printOutput("Testing identity\n");
7373

7474
Toy_LiteralArray arguments;
7575
Toy_initLiteralArray(&arguments);
@@ -104,7 +104,7 @@ int main() {
104104

105105
//test makeCounter (closures)
106106
{
107-
interpreter.printOutput("Testing makeCounter (closures)");
107+
interpreter.printOutput("Testing makeCounter (closures)\n");
108108

109109
Toy_LiteralArray arguments;
110110
Toy_initLiteralArray(&arguments);
@@ -209,7 +209,7 @@ int main() {
209209

210210
//test assertion failure
211211
{
212-
interpreter.printOutput("Testing assertion failure");
212+
interpreter.printOutput("Testing assertion failure\n");
213213

214214
Toy_setInterpreterAssert(&interpreter, noPrintFn);
215215

test/test_interpreter.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ int main() {
126126
"long-dictionary.toy",
127127
"long-literals.toy",
128128
"native-functions.toy",
129+
"or-chaining-bugfix.toy",
129130
"panic-within-functions.toy",
130131
"ternary-expressions.toy",
131132
"types.toy",

0 commit comments

Comments
 (0)