Compile using blc my-file-name.bl
and run ./out
.
// Global variable is visible in whole source. This variable is initialized
// by constant literal '10' which is known in compile time.
MyGlobal : s32 = 10;
// Global immutable variable
CannotChangeThis : f32 : 10.f;
// Global without initialization will be automatically set to it's default
// value, in this case it's zero.
DefaultValueGlobal: s32;
main :: fn () s32 {
// Local variables are declared in local scope of main function or
// any other function.
number : s32 = 10; // This is number of s32 type set to 10.
number = 20; // Number is mutable, and since now it's value is 20.
// Use of the print function to print out variable value.
// '%' is used as placeholder in the string saying where the print
// function should place our value.
print("number is %\n", number);
// Variable without initialization will be automatically set to default
// value. In this case 'other_number' will be zero. This initialization
// can be disabled by #noinit flag 'other_number: u8 #noinit;'.
other_number: u8;
other_number = 16;
print("other_number is %\n", other_number);
// Type of the variable can be inferred from type of initialization
// value.
boolean := true; // Inferred bool type.
// We can print bools in the same way as numbers.
print("boolean is %\n", boolean);
// Declare local immutable number
immut_number : s32 : 10;
// This is illegal, variable is immutable.
// immut_number = 10;
print("immut_number is %\n", immut_number);
// Or just do this...
immut_other_number :: 20;
print("immut_other_number is %\n", immut_other_number);
return 0;
}