Clef Programming Languages, Syntax
Note, this is not yet correct or complete
program ::= function_definition_list compound_stmt
function_definition_list ::=
function_definition_list ::= function_definition function_definition_list
function_definition ::= identifier ( parameter_list > optional_variable_declaration compound_stmt
parameter_list ::=
parameter_list ::= identifier , parameter_list
optional_variable_list ::=
optional_variable_list ::= var variable_list ;
variable_list ::= identifier
variable_list ::= identifier , variable_list
statement ::= expression ;
statement ::= if ( expression ) statement
statement ::= if ( expression ) statement else statement
statement ::= while ( expression ) statement
statement ::= return expression ;
statement ::= compound_stmt
compound_stmt ::= { stmt_list }
expression ::= integer
expression ::= identifier
expression ::= symbol
expression ::= function_call
expression ::= assignment
expression ::= ( expression )
expression ::= - expression
expression ::= ! expression
expression ::= expression + expression
expression ::= expression - expression
expression ::= expression * expression
expression ::= expression / expression
expression ::= expression % expression
expression ::= expression == expression
expression ::= expression != expression
expression ::= expression < expression
expression ::= expression > expression
expression ::= expression <= expression
expression ::= expression >= expression
expression ::= expression && expression
expression ::= expression || expression
function_call ::= identifier ( argument_list )
argument_list ::=
argument_list ::= expression , parameter_list