96 lines
2.7 KiB
Plaintext
96 lines
2.7 KiB
Plaintext
|
|
# ------------------------------------------------------------------------- #
|
|
# --- The first program --------------------------------------------------- #
|
|
#
|
|
# The sintax is similar to Python's but is more C-like. A Noja script
|
|
# is a list of statements that can be:
|
|
#
|
|
# - function declaractions
|
|
# - expressions
|
|
# - if-else branches
|
|
# - while loops
|
|
# - do-while loops
|
|
# - return statements
|
|
# - composit statements
|
|
#
|
|
# The most basic yet interesting program is:
|
|
|
|
print('Hello, world!\n');
|
|
|
|
# as in other languages, this kind of statement is an expression.
|
|
# Expression statements require a ';' to determine their end.
|
|
#
|
|
# The print function can take any number of arguments of any type
|
|
# and doesn't add any spaces or newlines to the output.
|
|
|
|
print(1, 2, 3, '\n');
|
|
|
|
#
|
|
# ------------------------------------------------------------------------- #
|
|
# --- Variables and expressions ------------------------------------------- #
|
|
#
|
|
# You can set variables without declaring them first by using the
|
|
# assignment operator:
|
|
|
|
a = 5;
|
|
|
|
# which is similar to Python's assignment, but is a little different.
|
|
# In this language, assignments are considered as expressions, in fact
|
|
# you can do things like
|
|
|
|
a = (b = 1) + 1;
|
|
|
|
# The value resulting from an assignment is the assigned value.
|
|
# After this expression, b's value is 1 and a's value is 2.
|
|
|
|
print('b = ', b, '\n'); # b = 1
|
|
print('a = ', a, '\n'); # a = 2
|
|
|
|
# all of the basic arithmetic operators are available:
|
|
|
|
x = 1 + 1;
|
|
y = 1 - 2;
|
|
z = 3 * 2;
|
|
w = 10 / 3;
|
|
|
|
print('x = ', x, '\n'); # x = 2
|
|
print('y = ', y, '\n'); # y = -1
|
|
print('z = ', z, '\n'); # z = 6
|
|
print('w = ', w, '\n'); # w = 3
|
|
|
|
# Note how the division returns the rounded down version of the result.
|
|
# This is because the division was performed on integers. By making one
|
|
# of the operands a floating point value, also a floating point result
|
|
# is returned:
|
|
|
|
w = 10 / 3.0;
|
|
|
|
print('w = ', w, '\n');
|
|
|
|
# Arithmetic operators are only available for numeric types of objects.
|
|
# If you try to apply them on other kinds of types, you get a runtime
|
|
# error:
|
|
|
|
# (Uncomment the following line and run this file to get the error)
|
|
# p = 5 + 'hello';
|
|
|
|
# And relational operators are also available:
|
|
|
|
print(1 < 2, '\n'); # true
|
|
print(1 > 2, '\n'); # false
|
|
|
|
print(1 >= 0, '\n'); # true
|
|
print(1 <= 0, '\n'); # false
|
|
|
|
print(1 == 5, '\n'); # false
|
|
print(6 == 6, '\n'); # true
|
|
|
|
print(1 != 5, '\n'); # true
|
|
print(6 != 6, '\n'); # false
|
|
|
|
# The equal and not equal operators are available on every type of object,
|
|
# while the others are only available for numeric types.
|
|
#
|
|
# ------------------------------------------------------------------------- #
|
|
# ------------------------------------------------------------------------- #
|