@会网络的老鼠

涂飞平的博客空间

一个脚本语言的粗略设计 [原]

12 年前 0

这里列出了我写的一个简单的脚本语言规范式,具体的功能部分只有等到有时间的时候来完成了(咳!什么时候才会有业余时间啊?!)
由于脚本只支持函数形式,所以这里尽量简单化,输出打算采用嵌入式对象来支持了。
整个脚本应该在一个虚拟机环境中执行,但嵌入式对象可以与虚拟机进行交互。
下面是简单的语言规范:
proceduredecl->procedureheading ';'
block '.'
procedureheading->PROCEDURE Ident [parameters]
parametes->'(' param / ';' ... ')'
param->[VAR|CONST|OUT] parameter
parameter->Ident ':' simpletype
simpletype->(ordinaltype|realtype)
block->[declsection]
compoundstmt
declsection->varsection
varsection->VAR (vardecl ';'/...)
vardecl->Identlist ':' type
compoundstmt->BEGIN stmtlist END
stmtlist->statement /';'...
statement->[simplestatement|structstatement]
simplestatement->expression ':=' expression
expression->simpleexpression [relop simpleexpression]...
simpleexpression->['+'|'-']term[addop term]...
term->factor [mulop factor]...
relop->'>'
->''>='
->'''
->'IN'
->'IS'
->'AS'
addop->'+'
->'-'
->'OR'
->'XOR'
mulop->'*'
->'/'
->'DIV'
->'MOD'
->'AND'
->'SHL'
->'SHR'
factor->number|string|'(' expression ')' |'NOT' factor
structstatement->compoundstmt
->ifstmt
->loopstmt
ifstmt->IF expression THEN statement [ELSE statement]
loopstmt->repeatstmt
->whilestmt
->forstmt
repeatstmt->REPEAT statement UNTIL expression
whilestmt->WHILE expression DO statement
forstmt->FOR ID ':=' expression (TO|DOWNTO) expression DO statement

这里部分符号的表示没有那么规范,比如TO作为关键字,也有写地方直接写成字符串,例如:':='
所以这里全部大写的关键字可以直接作为加上引号的词(Token)

编写评论