Style

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 #.

Chef.class.en.ozark
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 09. 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.