# Language

The CASM language is an Abstract State Machine (ASM) modeling and specification language. Its syntax is influenced in part by CoreASM and other ASM languages, but includes language concepts which are well known in modern programming languages as well. Different to existing ASM implementations is that CASM is a static strong inferred typed ASM language. Before we describe various language constructs lets have a look at the Hello World specification to outline the basic structure of the CASM modeling language:

The Hello World application specified in CASM:
1  CASM
2  init HelloWorld
3  rule HelloWorld =
4  {
5      println( "Hello world!" )
6  }

Every CASM specification starts with a header containing the keyword CASM (line 1). The header part is followed by definitions. In line 2 an init definition is specified to set the starting rule of the single execution agent to the rule named HelloWorld. The rule HelloWorld is defined in line 3 ranging to line 6 through a rule definition. Notice that CASM does not require symbol names to be declared before usage. Inside the HelloWorld rule a block rule creates a parallel execution semantics scope (line 4, 6). Last but not least the actual statement to print out the Hello world! string defined by a call rule to a built-in function named println.

CASM does not require any newlines, tabulators, or statement separators like in other specification or programming languages.

TBA

TBA

TBA

TBA

TBA