2. Bimodal behaviour

Apart from the usual set of special processing options, Viper has two major modes of operation: native Viper mode provides all the extensions and restrictions detailed below, while Python mode tries to retain python compatibility: the mode is selected automatically based on the file extension.

Really, three modes are required: viper mode for extended functionality, upgrade compatibility, for processing python programs as Viper, and downgrade compatibility, for testing codes targetted at Python with Viper. The difference between the two compatibility modes is that python upgrade mode supports viper extensions, but defers to python rules when there is a conflict, whereas downgrade mode denies all viper extensions. The latter is useful if Viper is used to help debug python programs.

Modal behaviour is not implemented yet.