Skip to content
This repository has been archived by the owner on May 22, 2022. It is now read-only.

LovesAsuna/LexicalAnalysis

Repository files navigation

词法分析器

需求分析
  • 概述

    1. 编写目的

      将C++源文件进行词法分析,生成对应属性的Token记号

    2. 术语

      Token记号: 当扫描程序将字符收集到一个记号中时,它通常是以符号表示这个记号

    3. 参考资料

      <<编译原理及实践>>

  • 标准和规范

    1. Kotlin编码规范
    2. Compose for Desktop
  • 限制

    1. 本项目针对Windows平台的GUI进行生成,若需要跨平台,请修改build.gradle中的目标平台
概要设计
  • 总体设计

    1. 组织结构

      • GUI
      • 词法分析器
      • 替换规则
      • 日志
    2. 处理流程

      通过GUI打开文件将文件内容导入至文本框,或直接在文本框上写源码。文本框实时监测内容的变化并向词法分析器发出请求,分析器按照替换窗口中定义的替换规则将源码进行分割并生成对应的token结果列表输出在程序下方的结果显示区。

    3. 模块间的关系

      用户操作图形界面将源码导入到文本框并启动分析程序并将结果返回给图形界面显示

  • 外部接口

    只对外提供词法分析器的接口

    可将输入流 文本字符串 文件对象作为参数传入并返回token结果列表

  • 数据结构

    • state: 每个窗口当拥有一个自己的state储存自己的状态信息,窗口会监听state中数据的变化做出显示上的反应
  • 容灾设计

    错误堆栈信息会通过日志输出到控制台和错误窗口

详细设计
  • 引言

    1. 编写目的

      编译原理课程实验一

    2. 背景

      在未学习有限状态自动机的情况下,只能使用最原始的扫描方法

    3. 参考资料

      • <<编译原理及实践>>
      • Compose for Desktop
  • 设计概述

    1. 任务和目标

      用最原始的方法将源代码分割成token并打上记号,最后显示在图形界面上

    2. 运行环境概述

      由于使用了图形界面,因此目标平台设为Windows

  • 系统详细设计

    项目逻辑上分为图形界面、分析程序、日志系统,他们之间的关系可表示为

    模块间的关系

Releases

No releases published

Packages

No packages published

Languages