• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 解析四则表达式的编译过程及生成汇编代码

解析四则表达式的编译过程及生成汇编代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了光合作用过程的表达式,存储过程缺失表达式,解析式和表达式,解析表达式,正则表达式解析等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、前序
这是编译原理的实验,自认为是上大学以来做过的最难的一个实验。
实验用到的基础知识:C语言、数据结构、汇编(只需简单的了解)。
开发工具:VC

2、问题描述
编译整数四则运算表达式,将整数四则运算表达式翻译为汇编语言代码。
消除左递归后的文法:
E→TE'
E'→+TE' |ε
T→FT'
T'→*FT' |ε
F→(E) | i
消除左递归后的翻译模式:
E ::=     T    {E'.i:=T.nptr}
E'    {E.nptr:=E'.s}
E'::=      + T  {E'1.i:=mknode(‘+',E'.i,T.nptr)}
E'1   {E'.s:=E1.s}
E'::=       - T   {E'1.i:=mknode(‘-',E'.i,T.nptr)}
E'1   {E'.s:=E1.s}
E'::=      ε     {E'.s:= E'.i}
T ::=      F    {T'.i:=F.nptr}
T'    {T.nptr:=T'.s}
T'::=      * F  {T'1.i:=mknode(‘*',T'.i,F.nptr)}
T'1   {T'.s:=T1.s}
T'::=      / F   {T'1.i:=mknode(‘/',T'.i,F.nptr)}
T'1   {T'.s:=T1.s}
T' ::= ε  {T'.s:= T'.i}
F ::= (E) {F.nptr:=E.nptr}
F ::= num {F.nptr:=mkleaf(num,num.val)}

3、全局定义
test.c文件



test1.c文件用代码表示如下:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析四则表达式的编译过程及生成汇编代码

相关文章

  • 2017-05-28Linux编程实现制作文件的ed2k链
  • 2017-05-28C语言的Struct Hack笔记
  • 2017-05-28C/C++位操作实例总结
  • 2017-05-28C++设计模式之组合模式
  • 2017-05-28C语言入门之指针用法教程
  • 2017-05-28详解C语言中的rename()函数和remove()函数的使用方法
  • 2017-05-28深入理解C/C++混合编程
  • 2017-05-28Linux网络编程之基于UDP实现可靠的文件传输示例
  • 2017-05-28C++实现添加桌面右键新建菜单
  • 2017-05-28整理C语言中各种类型指针的特性与用法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • .h和.cpp文件的区别(zt)详细介绍
    • 解析C/C++中如何终止线程的运行
    • C语言中求余弦值的相关函数总结
    • C语言双向链表的表示与实现实例详解
    • C语言 位段的详细介绍
    • c++实现发送http请求通过get方式获取网页源代码
    • C++ 中重载和运算符重载加号实现矩阵相加实例代码
    • c语言实现顺序表的基本操作
    • 深入解析函数指针与返回函数的指针
    • C语言const的修饰符

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有