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.