Starting to build a Forge parser
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// header comment (the initial space is purposeful)
|
||||
|
||||
fn blah() {
|
||||
// comment
|
||||
foo = 3; // normal assignment
|
||||
x = 3 * -2; // unary minus
|
||||
y = 3 - -3;
|
||||
blah = foo + 5 * bar / 2; // Complex expr in assignment
|
||||
arr[3] = 7; // Subscript in lvalue
|
||||
arr[n * 2 - 1] = foo + 7; // expr in subscript
|
||||
a[3] = b[70 - foo]; // subscripted rvalues
|
||||
b = foo * (bar + 3); // expr parens
|
||||
x1 = something(); // fn calls
|
||||
something(1); // unary calls, call statements
|
||||
something(1, foo, bar + 7, ha[0]); // exprs in calls
|
||||
s = "hello"; // strings
|
||||
s2 = "hello\n\tthere\0";
|
||||
print("bah");
|
||||
f = &x;
|
||||
}
|
||||
|
||||
// fn with args
|
||||
fn foo(a, b) {}
|
||||
|
||||
// fn with an annotation
|
||||
fn foo2<org=0x400>(x) { return x * x; }
|
||||
|
||||
fn iftest() {
|
||||
if (blah) {
|
||||
foo();
|
||||
} else {
|
||||
bar();
|
||||
}
|
||||
}
|
||||
|
||||
fn whiletest() {
|
||||
while (foo) {
|
||||
bar();
|
||||
}
|
||||
}
|
||||
|
||||
fn repeatTest(x) {
|
||||
repeat(x * 3) a {
|
||||
blah(whatever + a);
|
||||
}
|
||||
}
|
||||
|
||||
global foo;
|
||||
global bar:Thing;
|
||||
|
||||
fn varTest(t:Some) {
|
||||
var x;
|
||||
var y = 2 + x;
|
||||
var z:Thingy;
|
||||
}
|
||||
|
||||
struct Foo {}
|
||||
struct Bar {
|
||||
x, y, name:Str
|
||||
}
|
||||
struct Str {
|
||||
chars[100]
|
||||
}
|
||||
const LEN = 100;
|
||||
const STR = "Hey";
|
||||
struct What { foo[100] }
|
||||
Reference in New Issue
Block a user