Fixed Parser issues and simplified AST
This commit is contained in:
@ -1,16 +1,64 @@
|
||||
# Create an enum
|
||||
enum AnimalType {
|
||||
Dog,
|
||||
Cat,
|
||||
Dog,
|
||||
Cat,
|
||||
}
|
||||
|
||||
# Create a struct
|
||||
struct Pet {
|
||||
name: [char], # A list of characters
|
||||
age: uint, # An unsigned 32-bit integer
|
||||
type: AnimalType,
|
||||
living: bool,
|
||||
name: [char], # A list of characters
|
||||
age: uint, # An unsigned 32-bit integer
|
||||
type: AnimalType,
|
||||
living: bool,
|
||||
}
|
||||
|
||||
# Create a function that can be called on a Pet
|
||||
fn on Pet rename(newName: [char]) {
|
||||
return "test";
|
||||
self.name = newName;
|
||||
}
|
||||
|
||||
# Create another struct
|
||||
struct Person {
|
||||
pet: Pet,
|
||||
name: [char],
|
||||
age: uint,
|
||||
living: bool,
|
||||
}
|
||||
|
||||
fn on Person growUp() {
|
||||
self.age += 1;
|
||||
}
|
||||
fn main() -> int {
|
||||
# Create an instance of Pet
|
||||
# "let" creates an immutable binding
|
||||
var dog = Pet {
|
||||
name: "Fido",
|
||||
age: 3,
|
||||
type: AnimalType.Dog,
|
||||
};
|
||||
|
||||
# Create a (variable) instance of Person
|
||||
# "var" creates a mutable binding
|
||||
var person = Person {
|
||||
pet: dog,
|
||||
name: "Fred",
|
||||
age: 41,
|
||||
};
|
||||
|
||||
# Create a new name for the Pet
|
||||
var new_name = "George";
|
||||
person.pet.rename(new_name);
|
||||
|
||||
# Print out the person's name and age
|
||||
# Uses C for I/O
|
||||
printf("Person %s is %u years old.\n", person.name, person.age);
|
||||
if person.age % 2 == 0 {
|
||||
printf("Age is even\n");
|
||||
} else {
|
||||
printf("Age is odd\n");
|
||||
}
|
||||
|
||||
*test[12](3);
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user