程序聚合 软件案例 简易pascal-s编译器实现

简易pascal-s编译器实现

2025-10-05 13:55:44
行业:人工智能
载体:框架或代码包
技术:C

业务和功能介绍

使用yacc/lexer实现的简易的pascal-s编译器,能够将指定语法的pascal-s语言代码编译为特定的目标代码,工作流程为:源程序--词法分析器--> token流(一连串token)--语法分析器--> parser tree(or ast) --分析判断源程序是否合法,并给出语义错误,最后进行翻译-->目标语言

项目实现

源程序--词法分析器--> token流(一连串token)--语法分析器--> parser tree(or ast) --分析判断源程序是否合法,并给出语义错误,最后进行翻译-->目标语言

设计词法分析:
设计pascal-s语言的flex词法规则表达,使用flex识别pascal-s源程序中的单词。使用Flex分析单词时,需要记录单词的位置信息(行/列),用于在语义分析时提供错误定位信息。
设计语法分析器:
设计pascal-s语言的bison语法规则表达,使用bison识别pascal-s源程序中的语法符号,根据语法符号之间的关系构建出语法树。
设计语法树:
语法树是源代码程序的抽象表达,每一条语法规则中的推导关系都代表语法树中的父节点和子节点关系。使用在进行语法分析时,组装出抽象语法树,获得源代码程序的抽象表达。
设计符号
将源代码程序中的变量和值抽象成符号,将其内容(类型、名称等等)存储在符号结构体内,供语义分析过程中进行静态类型检查以及在代码生成中生成目标代码。
设计符号表
使用符号表将符号组织起来,以供查找。一个作用域对应着一个符号表。
设计作用域
将pascal-s语言中的作用域的概念具体为作用域结构体,作用域结构体拥有一个符号表,其中是在该作用域中声明的符号。
设计作用域栈
使用作用域进出作用域栈来模拟运行源代码进出作用域的过程。当在某个作用域内查找符号时,就是现在在本作用域中寻找符号,然后在比本作用域在作用域栈中更靠近栈底的作用域中寻找符号。
设计访问方法
使用访问器模式来访问语法树的每一个节点,在某个语法树节点的访问方法中可以显式地指定访问其子节点的顺序,如此就可以方便地进行语义分析和代码生成。
设计语义分析
在访问方法中收集符号的信息,组装成符号结构体,并保存在正确的符号表内。当遇到函数声明等会引入作用域的语法树节点时,创建新的作用域对象并操作作用域栈。
设计代码生成方案

示例图片视频


Bala0_O
30天前活跃
方向: 人工智能-机器学习与深度学习、后端-C++、
交付率:100.00%
相似推荐
“基于AI生成的游戏素材辅助开发工具”,-“游戏地图编辑器”,
针对独立游戏开发者地图素材缺、制作久的痛点,实现文字描述一键生成多风格游戏地图,自动适配Unity引擎格式,大幅缩短制作周期,提升开发效率,解决人工绘制耗时久、风格难统一的问题,助力快速产出可用游戏地图资源。
幻径
核心玩法: 经典的2D平台跳跃闯关,包含多关卡设计,每关有不同的地形、机关和敌人。 精心调校的跳跃物理,提供流畅、响应迅速且富有技巧性的操作体验。 角色系统: 角色收集:玩家可通过闯关或达成成就解锁多个基础角色。 角色换装系统:独立的“皮肤”系统。玩家可在游戏内商城使用游戏币购买头部、身体、腿部等多个部位的装饰物品,并实时预览、搭配和切换,实现个性化外观。 成长与商业化(单机模拟): 内置商城:使用游戏内货币(通过闯关、收集获得)购买角色、皮肤、特效等。 经济系统:管理玩家的金币、钻石等虚拟货币的获取与消费循环。 竞争与复玩: 本地排行榜:记录每个关卡的最快通关时间。玩家可以查看并挑战本地记录,激发重复挑战的动力。
休闲类游戏-拼图接龙
这是一款使用cocos2d-x c++ 引擎版本实现的游戏:将碎片化的组件拼接成完整图案的益智类游戏,核心玩法是让玩家通过观察、推理和动手操作,把打乱的零散拼块组合成预设的目标图像。游戏重点使用shader+uniform动态裁剪,配合拖动、拆散、合并的逻辑实现了完整的游戏。
棋牌游戏
2016年棋牌行业兴起,团队立项要做一款当地棋牌游戏,完美还原当地棋牌玩法。游戏包含倍率、比赛、排位、茶楼等模式(棋牌所有的玩法都做过),附玩法中还开发了扑克类,比如:斗地主、跑牌、麻将等等玩法。
用godot开发的2D横版类肉鸽游戏
原本我打算在大学期间制作一个完整的游戏出来(多角色还有剧情,可以说是很高估自己的财力了) 已经完成了大部分基础的代码如: 角色、生物的移动(以及等级血量计算等), 对话框(对话代码全是我用原生.gd手写的) 剧情引导:由于没有做到剧情那一步(没钱请画师了)只做了剧情引导页面的部分,并没有在场中的引导。 队伍(由于只有三个角色而队伍的满编是三人所以并不能直接展示换角色) 背包(就是普通的背包能存东西放东西) 地图(没做完) 存档(普通存档)
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服