简单词法分析程序设计

一、实验目的了解词法分析程序的基本构造原理,掌握词法分析程序的手工构造方法。二、实验内容1、了解编译程序的词法分析过程。2、根据PASCAL语言的说明语句形式,用手工方法构造一个对说明语句进行词法分析的程序。该程序能对从键盘输入或从文件读入形如:“const count=10,sum=81.5, char1=’f’, string1=”hj”,max=169;”的常量说明串进行处理,分析常量说明串...
摘要由CSDN通过智能技术生成

一、实验目的

了解词法分析程序的基本构造原理,掌握词法分析程序的手工构造方法。

二、实验内容

1、了解编译程序的词法分析过程。

2根据PASCAL语言的说明语句形式,用手工方法构造一个对说明语句进行词法分析的程序。该程序能对从键盘输入或从文件读入形如:

“const count=10,sum=81.5, char1=’f’, string1=”hj”,max=169;”

的常量说明串进行处理,分析常量说明串中各常量名、常量类型及常量值,并统计各种类型常量个数。

三、实验要求

1、输入的常量说明串,要求最后以分号作结束标志;

2、根据输入串或读入的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容;

3、识别输入串或打开的文本文件中的常量名。常量名必须是标识符,定义为字母开头,后跟若干个字母,数字或下划线;

4、根据各常量名紧跟等号“=”后面的内容判断常量的类型。其中:字符型常量定义为放在单引号内的一个字符;字符串常量定义为放在双引号内所有内容;整型常量定义为带或不带+、- 号,不以0开头的若干数字的组合;实型常量定义为带或不带+、- 号,不以0开头的若干数字加上小数点再后跟若干数字的组合;

5、统计并输出串或文件中包含的各种类型的常量个数;

6、以二元组(类型,值)的形式输出各常量的类型和值;

7、根据常量说明串置于高级语言源程序中时可能出现的错误情况,模仿高级语言编译器对不同错误情况做出相应处理;

四、运行结果

1、输入如下正确的常量说明串:

const count=10,sum=81.5,char1=’f’,max=169,str1=”h*54 2..4S!AAsj”, char2=‘@’,str2=”aa!+h”;

输出:

count(integer,10)

sum(float,81.5)

char1(char, ‘f’)

max(integer,169)

str1(string,“h*54  2..4S!AAsj”)

char2(char, ‘@’)

str2(string,“aa!+h”)

int_num=2;  char_num=2; string_num=2; float_num=1.

2、输入类似如下的保留字const错误的常量说明串:

Aconstt count=10,sum=81.5,char1=’f’;

输出类似下面的错误提示信息:

It is not a constant declaration statement!

Please input a string again!

3、输入类似如下含常量名或常量值错误的常量说明串:

const count=10,12sum=81.5,char1=’ff’,max=0016;

输出类似下面的错误提示信息:

count(integer,10)

12sum(Wrong! It is not a identifier!)

char1(Wrong! There are  more than one char in ‘’.)

max(Wrong! The integer can’t be started with ‘0’.)

int_num=1;  char_num=0; string_num=0; float_num=0.

4、其他类型的错误处理情况(略)。

import java.util.Scanner;




public class test01 {
    static String name; //存放常量名
   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值