# ------------------------------------------------------------------------- # # --- 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 of multiple kinds: # # - function declaractions # - expressions # - if-else branches # - while loops # - do-while loops # - return statements # - composit statements # # In general, unless it's inside strings, whitespace is ignored and # comments start with the # character. # # 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. # # ------------------------------------------------------------------------- # # --- The boolean type ---------------------------------------------------- # # # TODO # # ------------------------------------------------------------------------- # # --- The none value ------------------------------------------------------ # # # TODO # # ------------------------------------------------------------------------- # # ------------------------------------------------------------------------- #