Ozark is verbose, and made to match the readability of natural English. Imperative statements within methods have a simple cadence:
subject, verb, argument, value, argument, value, ...
In some cases (when specified in the method declaration), the argument is implied. In the case of system commands (like create
) the subject is implied to be the system itself.
Ozark uses indentation to denote blocks. Whitespace is important, and indentation uses ASCII tabs. Elements should be separated, when appropriate, by a single space. Trailing whitespace on a line is not allowed.
Because of the unique control flow structures, indentation in Ozark is never deeper than two tabs.
Comments in Ozark are designated with #
.
inheritance Person property @knife: ChefsKnife? extension setup create ChefsKnife; assign to @knife; setup extension setup & knife: ChefsKnife assign knife to @knife method chop vegetable: Vegetable -> success: Boolean assign false to success with @knife vegetable chop knife: @knife assign true to success
Type names begin with a capital letter (Color
, Integer
, GameScene
) and noun and verb names begin with a lowercase letter. All words are camelCased and can include (but not start with) numbers 0
–9
. No underscores are allowed.
You can also use !
as a method name. In this case, the method name should appear after the subject name without a space. This is for classes named for verbs (e.g. Fly
) that have a method that would be sufficiently described by the class name and a semantic variable name, e.g. @fly!
. It can't be used as the initial method on a newly created object.
In addition to camelCased letter/number combinations, non-alphabetic unicode symbols (or symbol sets) can be used as method names.