?? dws2syntax.html
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="en-us">
<title>DelphiWebScript II - Syntax</title>
</head>
<body>
<h1>Syntax of DelphiWebScript II</h1>
<h2>EBNF</h2>
<p>The description of the syntax uses the EBNF ("Enhanced
Bachus Nauer Form").</p>
<ul>
<li>[ ] = Optional</li>
<li>{ } = Zero, one or many times</li>
<li>Names in capital letters are symbols (non-terminals)</li>
<li>Names in quotes ("name") are part of the input string (terminals)</li>
</ul>
<h2>Syntax</h2>
<p>The start non-terminal is SCRIPT</p>
<pre>
SCRIPT =
[ ROOTSTATEMENT { ";" ROOTSTATEMENT } [ ";" ] ]
ROOTSTATEMENT =
TYPEDECL |
PROCDECL |
STATEMENT
STATEMENT =
VARDECL |
CONSTDECL |
BLOCK
VARDECL =
"var" NAME ":" TYPEDEF [ "=" EXPR ]
TYPEDECL =
"type" NAME "=" TYPEDEF
TYPEDEF =
"Boolean" | "Integer" | "Float" | "String" | "DateTime" | "Variant"
NAME |
ENUMDEF |
ARRAYDEF |
RECORDDEF |
CLASSDEF
ENUMDEF =
"(" NAME [ "=" EXPR ] { "," NAME [ "=" EXPR ] } ")"
ARRAYDEF =
"array" "[" EXPR ".." EXPR {"," EXPR ".." EXPR} "]" "of" TYPEDEF |
"array" "of" TYPEDEF
RECORDDEF =
"record" ARGLIST "end"
ARGLIST =
ARGDECL { ";" ARGDECL }
ARGDECL =
NAME ":" TYPEDEF
CLASSDEF =
"class" [ "(" NAME ")" ]
[ "private" | "public" | "protected" ]
[ ARGLIST ";" ]
[ METHODDECL { ";" METHODDECL } ";" ]
[ "property" NAME [ "[" ARGLIST "]" ] ":" TYPEDEF [ "read" NAME ] [ "write" NAME ] ";" ] [ "default" ";" ]
"end"
METHODDECL =
[ "class" ] "procedure" NAME ["(" [ARGLIST] ")"] [ ";" "override" | "virtual" | "reintroduce" ] |
[ "class" ] "function" NAME ["(" [ARGLIST] ")"] ":" TYPEDEF [ ";" "override" | "virtual" | "reintroduce" ] |
"constructor" NAME ["(" [ARGLIST] ")"] [ ";" "override" | "virtual" | "reintroduce" ] |
"destructor" NAME ["(" [ARGLIST] ")"] [ ";" "override" | "virtual" | "reintroduce" ]</pre>
PROCDECL =
PROCHEAD ";" PROCBODY |
PROCHEAD ";" "forward" |
METHODDEF ";" PROCBODY
PROCHEAD
"procedure" NAME ["(" [ARGLIST] ")"]
"function" NAME ["(" [ARGLIST] ")"] ":" TYPEDEF
PROCBODY =
{VARDECL ";"} "begin" SCRIPT "end"
METHODDEF =
[ "class" ] "procedure" NAME "." NAME ["(" [ARGLIST] ")"] |
[ "class" ] "function" NAME "." NAME ["(" [ARGLIST] ")"] ":" TYPEDEF |
"constructor" NAME "." NAME ["(" [ARGLIST] ")"] |
"destructor" NAME "." NAME ["(" [ARGLIST] ")"]
CONSTDECL =
"const" NAME "=" EXPR
BLOCK =
"begin" [STATEMENT {";" STATEMENT} [";"]] "end" |
INSTR
INSTR =
"if" EXPR "then" BLOCK |
"if" EXPR "then" BLOCK "else" BLOCK |
CASEINSTR |
"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 |
EXCEPT |
FINALLY |
BLOCK
CASECOND =
EXPR |
EXPR ".." EXPR |
CASEINSTR =
"case" EXPR "of"
{ CASECOND {"," CASECOND } : BLOCK ";" }
[ "default" ":" BLOCK ";" ]
"end"
FUNC =
NAME [ "(" [EXPR {, EXPR}] ")" ]
EXCEPT =
"try"
STATEMENT { ";" STATEMENT } [ ";" ]
"except"
{ "on" NAME ":" NAME "do" BLOCK; }
"end"
FINALLY =
"try"
STATEMENT { ";" STATEMENT } [ ";" ]
"finally"
{ "on" NAME ":" NAME "do" BLOCK; }
"end"
EXPR =
EXPRADD [ "=" | "+" | "-" | "OR" EXPRADD]
EXPRADD =
EXPRMUL [ "+" | "-" | "OR" EXPRADD]
EXPRMUL =
TERM [ "*" | "/" | "mod" | "div" EXPRMUL]
TERM =
"+" TERM |
"-" TERM |
"not" TERM |
CONST |
VAR |
FUNC |
"(" EXPR ")"
"[" [ EXPR { "," EXPR } ] "]"
CONST =
INT |
HEXINT |
FLOAT |
STR |
CHAR |
"True" |
"False"
VAR =
NAME |
NAME "[" INT "]" |
NAME "." VAR |
VAR "." FUNC
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"
</pre>
<h2>Reserved Words</h2>
<ul>
<li>and</li>
<li>array</li>
<li>as</li>
<li>begin</li>
<li>case</li>
<li>class</li>
<li>const</li>
<li>constructor</li>
<li>destructor</li>
<li>div</li>
<li>do</li>
<li>downto</li>
<li>else</li>
<li>end</li>
<li>except</li>
<li>finally</li>
<li>for</li>
<li>forward</li>
<li>function</li>
<li>if</li>
<li>inherited</li>
<li>is</li>
<li>label</li>
<li>mod</li>
<li>nil</li>
<li>not</li>
<li>of</li>
<li>or</li>
<li>procedure</li>
<li>property</li>
<li>raise</li>
<li>record</li>
<li>repeat</li>
<li>string</li>
<li>then</li>
<li>to</li>
<li>try</li>
<li>type</li>
<li>until</li>
<li>var</li>
<li>while</li>
<li>xor</li>
</ul>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -