DelphiWebScript

Syntax

Homepage
DWS
Syntax
  The description of the syntax uses the EBNF ("Enhanced Bachus Nauer Form").
SCRIPT = 
	[ BLOCK { ";" BLOCK } [ ";" ] ]

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

STMNT = 	
	"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 |
	CONSTDECL

CONSTDECL =
	"const" "=" CONST

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

EXPR = 		
	EXPRADD { "=" | "<" | "<="| "=>"| ">" | "<>" EXPRADD }
	
EXPRADD = 	
	EXPRMUL { "+" | "-" | "or" | "xor" EXPRMUL }
	
EXPRMUL = 	
	TERM { "*" | "/" | "mod" | "div" | "and" TERM }

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

VAR =
	NAME [ "." NAME ]

NAME =	
	LIT {LIT | "0".."9" | "_"}

LIT =
	"A".."Z", "a".."z"

STR =
	CHAR |
	STRING { CHAR [ STRING ] } 

STRING =
	" ' " { STRINGCHAR } " ' " { " ' " STRING }

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

CHAR =
	"#" INT | "#" HEXINT

HEXINT =
	"$" HEXNUM { HEXNUM }

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

FLOAT = 
	INT [ "." INT]  [ "E" | "e" ["+" | "-" ] INT ]

INT = 
	NUM {NUM}

NUM = 
	"0".."9"