2013年6月6日

ZZZ语言的语义分析,第一步,解析Specifier(上)

摘要: 1 语义分析的任务 我们的任务是检查我们的程序语言ZZZ的语义错误以及为后续的中间代码生成创造便利条件。其中很重要的内容是有关类型的检查。首先,我们就得知道每个变量的类型, 要进行语义分析,首先就要知道每个变量的类型。我们采取解析语法树的办法,把遇到的变量和它的类型存入符号表,之后每次遇到一个变量,都查看符号表,看变量在其作用域内的声明或定义是否存在,其类型是什么,之后才能进一步判断语义是否正确。2 解析Specifier ZZZ的语言支持的类型包括基本类型(double,int,bool),数组,结构体和它们的指针,加上我们的模板类(Template,模板类只支持结构体)。要得到每个变... 阅读全文

posted @ 2013-06-06 22:47 heracles123 阅读(416) 评论(0) 推荐(0)

2013年5月3日

词法分析新版

摘要: 我们的编程语言ZZZ包含到元素如下:基本数据类型:int,double,Point , bool(true,false)四则运算:+ - * / () bool 运算: < > >= <= == != &&, ||, !Point:&(取地址), $(指针指向的内容,相当于C语言的*) , ->(指针成员)结构体:struct , .(点)数组:ID[LINTEGER]循环: for break,continue(删掉了switch case)条件:if/else函数: 类型+标示符+(*)+{*},return 模板:Template , 阅读全文

posted @ 2013-05-03 23:31 heracles123 阅读(197) 评论(0) 推荐(0)

2013年4月9日

词法分析

摘要: 基本数据类型: int,double,point?, char, boolint: +-*/^|~&double: +-*/point: *bool: ==, !=, &&, ||, !数组: [const]语句: 条件,选择,循环,强制转移条件: if/else选择: switch case :循环: for函数: 类型+标示符+(*)+{*}模板: Template<*>结构体: struct,构造函数,析构函数,::注释: //分隔符: ;, {}包含: #include<>//输入输出流: cin, cout宏:Definest... 阅读全文

posted @ 2013-04-09 18:56 heracles123 阅读(193) 评论(0) 推荐(0)

导航