本科实验报告
课程名称: 编译原理
实验项目:无符号数的词法分析程序(实验一)
实验地点: 计算机学院软件实验室
专业班级: 学号:
学生:
指导教师: 秀芳
2013年 11 月16日
一、实验目的和要求
培养学生初步掌握编译原理实验的技能。
验证所学理论、巩固所学知识并加深理解。
对学生进行实验研究的基本训练。
二、实验容和原理
实验一、 无符号数的词法分析程序(4学时)
容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。
要求:从键盘上输入一串字符(包括字母、数字等),最后以“;”结束,编写程序识别出其中的无符号数。
无符号数文法规则可定义如下:
<无符号数>→<无符号实数>│<无符号整数>
<无符号实数>→<无符号整数>.<数字串>[E<比例因子>]│
<无符号整数>E<比例因子>
<比例因子>→<有符号整数>
<有符号整数>→[+│-]<无符号整数>
<无符号整数>→<数字串>
<数字串>→<数字>{<数字>}
<数字>→0 1 2 3...... 9
读无符号数的程序流程图见下图
三、主要仪器设备
PC机+Java语言编程环境
四、实验结果与分析
:
package text1;
import ;
import ;
public class Text1 {
/**
* param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
int p = 0, w = 0, w1 = 0, j = 0, i = 0, d = 0, e = 1;
double w2 = 0;
String str;
("请输入一串字符以;结束:");
BufferedReader buf = new BufferedReader(
new InputStreamReader());
str = ();
char m[] = new char[100];
for (i = 0; i < (); i++) {
m[i] = (i);
}
i = 0;
while (i < ()) {
if (m[i] < 48 || m[i] > 57) {
i++;
} else {
do {
d = m[i] - 48;
w = w * 10 + d;
j++;
i++;
} while (m[i] >= 48 && m[i] <= 57);
// ("chesi"+m[i]);
if (m[i] != '.') {
if (m[i] != 'E') {
("整型数为:" + w);
j = 0;
w = 0;
} else {
i++;
if (m[i] == '-') {
e = -1;
i++;
if (m[i] >= 48 && m[i] <= 57) {
do {
d = m[i] - 48;
p = p * 10 + d;
i++;
} while (m[i] >= 48 && m[i] <= 57);
if (j > 1)
w2 = w
太原理工大学编译原理实验 来自淘豆网m.daumloan.com转载请标明出处.