TScript

Syntax

Homepage
TScript
Syntax
  The description of the syntax uses the EBNF ("Enhanced Bachus Nauer Form")
SCRIPT = 
	{CONSTDECL} {INSTR}

CONSTDECL =
	"const" "=" CONST ";"
	
INSTR = 	
	"if" EXPR "then" BLOCK |
	"if" EXPR "then" BLOCK "else" BLOCK |
	"for" VAR ":=" EXPR "to" EXPR "do" BLOCK |
	"for" VAR ":=" EXPR "downto" EXPR "do" BLOCK |
	"while" EXPR "do" BLOCK |
	"repeat" [BLOCK {";" BLOCK} [";"]] "until" EXPR |
	VAR ":=" EXPR |
	FUNC |
	BLOCK 

BLOCK = 
	"begin" [BLOCK {";" BLOCK} [";"]] "end" |
	INSTR

FUNC =	
	NAME [ "(" [EXPR {, EXPR}] ")" ]

EXPR = 		
	EXPRADD ["="|"+"|"-"|"OR" EXPRADD]
	
EXPRADD = 	
	EXPRMUL ["+"|"-"|"OR" EXPRADD]
	
EXPRMUL = 	
	TERM ["*"|"/"|"mod"|"div" EXPRMUL]

TERM =	
	"+" TERM |
	"-" TERM |
	"not" TERM | 
	CONST |
	VAR |
	FUNC |
	"(" EXPR ")" 
		
CONST =	
	INT |
	HEXINT |
	FLOAT |
	STRING |
	CHAR |
	"True" |
	"False"

VAR	=	
	NAME |
	NAME "[" INT "]"

NAME =	
	LIT {LIT | "0".."9" | "_"}
							   
LIT =	
	"A".."Z", "a".."z"

STRING = 
	"'" {STRINGCHAR} "'"

STRINGCHAR =
	ASCII(0)..ASCII(255) - "'" - ASCII(13) | "''"

CHAR =
	"#" NUM {NUM}

HEXINT =
	"$" NUM {NUM}

HEXNUM = 
	"0".."9"|"A".."F"|"a".."f"

FLOAT = 
	INT"."[["e"]INT]

INT = 
	["-"] NUM {NUM}

NUM = 
	"0".."9"

Syntax of TFunc-Declaraions:

DECLARATION =	
	NAME [ PARAMLIST { "," PARAMLIST } ] [":" FUNCTYPE] [ ";" ]

PARAMLIST = 
	"(" [PARAM { ";" PARAM}] ")"

PARAM = 
	[  "var"  | "func" ] [ "array" ] TYPE {TYPE} ["open"]

FUNCTYPE =
	["array"] TYPE {TYPE}

TYPE = 
	"void" |
	"boolean" |
	"integer" |
	"float" |	
	"string" |
	"all" |	
	"mult" |
	"add" |