您现在的位置是:首页 > 正文

简单C语言的词法分析器(Java实现)

2024-02-01 05:59:18阅读 5

一、C语言子集的单词符号及内置码

单词符号 种别编号 助记符 内置码
while 1 while null
if 2 if null
else 3 else null
switch 4 switch null
case 5 case null
标识符 6 id id的实际内容
常数 7 num nmu的实际内容
+ 8 + null
- 9 - null
* 10 * null
<= 11 <= null
< 12 < null
== 13 == null
= 14 = null
; 15 ; null

二、状态转换图
在这里插入图片描述
三、实验结果截图
在这里插入图片描述
四、实验使用的类的方法、属性及其作用截图
在这里插入图片描述
五、实验代码

import java.util.Scanner;
public class Test{
   
    public static void main(String[] args){
   
        System.out.println("请输入源程序(以“#”结束):");
        Scanner input = new Scanner(System.in);
        input.useDelimiter("\n");  //将分隔符号修改为“\n”(回车)
        String1 test = new String1(input.next());
        test.result();
        System.out.println("分析结束!");
    }//测试的主函数
}
class String1{
   
    private String string1 =null;  //存放输入的字符串
    private String token = null;  //存放构成单词符号的字符串
    private int point = 0; //设置指针指向当前所读string1的位置
    private char character = ' ';  //字符变量,存放最新读入的源程序字符
    private final String[] reserved ={
   " ","while","if","else","switch","case"};  //保留字
    public String1(){
   
    }  //无参构造函数
    public String1(String a){
   
        string1 = a;
        point = -1;  //方便之后对character的判断
    }  //含参构造函数
    public void updateCharacter(){
   
        point++;
        character = string1.charAt(point);
    }  //更新字符character的内容
    public void getbe(){
   
        while(character == ' '){
   
            updateCharacter();
        } 
    }  //滤除空格
    public 

网站文章

  • springboot整合Elasticsearch简单操作

    springboot整合Elasticsearch简单操作

    以下步骤均参考Elasticsearch操作文档:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java...

    2024-02-01 05:58:47
  • 怎样修改iis 服务器日期,怎么在IIS里设置服务器端缓存时间?

    设置IIS缓存的方法1.测试,可以缓存整个Share工程(经测试IIS中的缓存测试对ASPX页面不起作用,估计与页面压缩的设置原理一样);2.需要设置缓存的工程: Share,Portal(根据IIS...

    2024-02-01 05:58:40
  • 盘点6个实用的Python 技巧

    盘点6个实用的Python 技巧

    每种产品具体的特征都不一样,如果用静态属性的将字典转成对象的话,代码会非常乱而且无法管理,但如果用动态属性的话,下面三行代码就能搞定(用 setattr())。当登录时,你需要输入你的用户名和密码,用...

    2024-02-01 05:58:07
  • SUCTF-2019-EasySQL

    SUCTF-2019-EasySQL

    看一下源代码 Give me your flag, I will tell you if the flag is right.

    2024-02-01 05:58:00
  • 计算机基础知识表格斜线,在WORD中,其中一个表格里画一斜线怎么画?

    计算机基础知识表格斜线,在WORD中,其中一个表格里画一斜线怎么画?

    说的细,所以看起来多,其实很简单。比用word中的插入表头好用多了,word中的插入表头,首限条件太多,比如字数,超过四个字相当费事,调来调去,气死。1、 打开绘图工具栏:右击菜单栏,在绘图前面打上钩...

    2024-02-01 05:57:55
  • 定时网页截图php,浏览器实现网页定时自动截图

    定时网页截图php,浏览器实现网页定时自动截图

    提要:在这里介绍一款软件可以定时的截某一个网站的图片,这种对于关注股票的行走趋势和网购物品的价格变化有一个很好的记录,本文以某东上面的一件物品做案例不少人想了解关于浏览器实现网页定时自动截图这个话题的...

    2024-02-01 05:57:28
  • Java分层领域模型的DO、DTO、DAO、BO、AO、VO、POJO、Query定义

    Java分层领域模型的DO、DTO、DAO、BO、AO、VO、POJO、Query定义

    分层领域模型: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。 DTO( Data Transfer Object):数据传输对象,Service或Mana...

    2024-02-01 05:57:22
  • FreeRtos源码分析之任务切换原理(四)

    FreeRtos源码分析之任务切换原理(四)

    一、CortexM3中断优先级CortexM3支持多达240个外部中断和16个内部中断,每一个中断都对应一个中断都对应一个优先级寄存器。每一个优先级寄存器占用8位,STM32采用其中的高四位来表示优先...

    2024-02-01 05:57:16
  • 路由守卫大全

    路由守卫是一个路由的访问机制,如果允许访问就放行,不允许访问就不放行,可以通过 router.beforeEach() 方法来实现对应的操作。

    2024-02-01 05:57:09
  • html如何修改span的值,如何动态改变div span的内容

    本文介绍了javascript动态改变div span的内容的教程,希望能帮助到大家先看一个实例对span的控制与div类似,但是它是按照行来显示的,看下面的代码:function chagespan...

    2024-02-01 05:56:39