⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 关于执行代码.txt

📁 一种CMM语言的词法分析
💻 TXT
字号:
执行代码的具体实现:

	1.执行过程使用的是语法分析通过时生成的Tree图形和存储嵌套层次的列表。过滤Tree图形的内容生成与嵌套层次对应的执行语句(字符串);根据嵌套层次可以直接确定每条执行语句的范围,而每条执行语句的起始部分均为用于识别语句类型的标志;按照语句的类型调用相应函数进行执行,直到全部语句执行完毕。
	2.遇到错误时抛出异常(使用自定义的异常类),输出部分即可获得错误的具体信息,并在输出错误后立即终止执行。
	3.变量及其作用域。    执行开始时建立了2个分别用于存储int型、array型变量的列表(全局变量)。每次进入语句块(即全部的执行语句或if\else if\else\while语句的执行体)的时候保存两个列表的长度,当语句块执行完毕时按照先前存储的长度删除列表中增加部分,于是实现了作用域的识别。
	4.表达式的计算。    表达式是存储于一个完整的字符串之中,根据优先级(中括号和小括号优先级相同)的顺序进行计算。小括号的消除是将小括号及括号内部分用括号内部分计算得到的值替换,数组具体索引处的值是根据中括号内部分计算获得索引值并在变量列表中查找获得值然后整体替换。当表达式使用了某个变量时从列表中查找相应的值,若不存在则抛出异常。
	5.变量声明的执行。    变量声明的语法已由语法分析确定,执行过程只是创建两种类型变量的对象(已经定义了用于存储int型、array型变量的类)并添加到相应变量列表中。
	6.read语句和赋值语句。    read语句分为int型变量的读入、数组变量具体索引处值的读入和数组变量的读入。前两种情况只能输入为各种算术表达式(支持复杂表达式的计算,可含有拥有值的变量,包括数组变量具体索引处的值,数组索引亦可为复杂的表达式);而对数组变量的读入则包括输入为数组变量或使用大括号包括(大括号可选)的以逗号分隔的算术表达式。具体规则是不希望改变原有值的索引处可以使用逗号与前后隔开,但是不能使用逗号结束。由于数组变量的长度在声明时已经确定,所以如果超过索引越界则会报错,而长度不够则不会改变后面索引处的值。赋值语句与此基本相同,区别在于使用具体数据对数组赋值是要求使用大括号(语法分析要求)。
	7.write语句。    除了错误以外这是唯一一中会执行输出的语句。可选的输出内容有:变量、算术表达式。其中数组变量的输出为依次输出每个索引处的值中间使用空格隔开。
	8.循环语句的执行。    程序首先检查是否关系表达式为真且其中不含有变量(这种情况将导致死循环),若是则终止执行并报错。否则,使用while循环执行循环语句,其条件就是代码中的关系表达式。
	9.条件语句的执行。    由于if\else if\else语句的个数不确定,同样采用while语句进行执行,条件是剩余内容为空。每次先分析if\else if语句的关系表达式是否为真(如果是else语句则直接执行并跳出循环),若为真则执行相应语句块并跳出循环,否则删除相应语句块。
	
吕渊
200532580144
国软5班
2007.11.15

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -