编写了路径控制脚本后,准备尝试编写一个比它稍微复杂一点的脚本,该脚本具有变量定义,流程控制语句,和比较完善的布尔逻辑和混合四则表达式运算的功能.

// Unnamed simple script language products define as the flowing:
program ::= declaration_list
declaration_list ::= var_declaration | fun_declaration
var_declaration ::= DECLARE type_specifier_list ID; END
type_specifier_list ::= type_specifier type_specifier_list | EMPTY
type_specifier ::= VAR
fun_declaration ::= BEGIN statement_list END
statement_list ::= statement statement_list | EMPTY
statement ::= expression_stmt | compund_list | selection_stmt | iteration_stmt
expression_stmt ::= expression; | ;
compund_list ::= { statement_list }
selection_stmt :: IF ( expression ) statement | IF ( expression ) statement ELSE statement
ireation_stmt ::= WHILE ( expression ) statement
expression ::= var = expression | simple_expression
var ::= ID
simple_expression ::= additive_expression relop additive_expression | additive_expression
relop ::= <= | < | > | >= | == | !=
additive_expression ::= additive_expression addop term | term
addop ::= + | -
term ::= term mulop factor | factor
mulop ::= * | /
factor ::= ( expression ) | var | NUM
posted on 2009-12-24 23:51 Reno 阅读(194) 评论(3)  编辑 收藏 引用 所属分类: 编译原理/脚本语言开发
评论
  • # re: 第2个简单的语言
    黑色灵猫
    Posted @ 2009-12-27 01:27
    继续支持楼主的脚本研究。个人觉得词法解析不难,难就难在虚拟机指令设计,以及C与脚本的交叉迭代调用的栈处理  回复  更多评论   
  • # re: 第2个简单的语言[未登录]
    Reno
    Posted @ 2009-12-29 14:49
    本人还没研究到如此深的境地呢,希望以后能和你探讨  回复  更多评论   
  • # re: 第2个简单的语言[未登录]
    Reno
    Posted @ 2009-12-29 14:52
    如果为了练习编写VM,我会直接找本书比如《虚拟机的设计与实现》,按着上面的指令集实现,呵呵,最多修改下  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


统计