zoukankan      html  css  js  c++  java
  • 编译原理课程设计总结

    1.题目

    设计并实现SNL语言的编译程序,需要包括词法分析模块、语法分析模块(递归下降法或者LL(1)方法)。

    要求语法分析模块最后输出语法树为语义分析做准备。

    SNL是一种类似PASCAL的高级程序设计语言。

    SNL语言介绍:

     程序头

    声明部分(类型声明、变量声明、过程声明)

    程序体部分(begin....end)

     2.代码思路

    1. 如何进行的词法分析呢?

    词法分析是为了得到每个符号的语义,转换成token记号表示,其中左边的都是它们的语义信息,为下一步语法分析做准备。

    doToken()函数:获取到输入的字符串,按行进行存储,调用函数进行词法分析。

    getTokenList()词法分析函数:对每行数据分别进行处理:

    对每行从第一个字符开始读入:

    ①DFA的初始状态是start,根据读入的字符是数字、字符、赋值符:、单引号‘、数组下标、转义符、注释开始{、空格制表符等,确定本标识符的状态

    并且同时判定其存不存储,如果均不是那么就标记为结束状态,表示之前的DFA进入终止状态,并且判断当前是否是=、<、>、-*+这些操作,并且设计上分别的标记,比如=就是EQ。

    ②如果之前是评论状态的话,就不处理,或者是其出错;判断是不是}也就是,是不是注释结束状态,那么就是下一个标识符识别的开始。

    彡如果之前是赋值状态,那么当前处理的一定是=,如果不是,就标记为冒号。

    ④如果是数组下标状态 . ,如果是字符状态,如果是标识符状态。

    五并且结束后对每个字符判断是不是存储起来,

    存储起来?默认是存储的,

    不存储的?比如转义符、引住字符的单引号、注释。

    ⑥是字母串的时候, 先标记为ID,最后done了再去判断是否是标识符。

    2.如何进行的递归下降呢?

    3.如果用LL1该怎么实现呢?

  • 相关阅读:
    作业要求 20200924-5 四则运算试题生成,结对
    作业要求 20200924-1 每周例行报告
    作业要求20200924-3 单元测试,结对
    作业要求20200924-4 代码规范,结对要求
    20200910-1每周例行报告
    20200910-博客作业
    通读《构建之法》
    20200910-3 命令行和控制台编程
    20200924-2 功能测试
    20200924-5 四则运算试题生成,结对
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/9642574.html
Copyright © 2011-2022 走看看