C语言语法分析器内容摘要:
C语言语法分析器 1郑州轻工业学院编译原理课程设计总结报告设 计 题 目 : 词 法 分 析 器 ( 语 法 分 析 器 )学 生 姓 名 :系 别 :专 业 :班 级 :学 号 :指 导 教 师 : 20013年 6 月 2日2目 录一 、 设 计 题 目 3二 、 运 行 环 境 ( 软 、 硬 件 环 境 ) 3三 、 算 法 设 计 的 思 想 3四 、 算 法 流 程 图 5五 、 算 法 设 计 分 析 5六 、 源 代 码 6七 、 运 行 结 果 11八 、 收 获 及 体 会 123( 一 ) 设 计 题 目词 法 分 析 器( 二 ) 运 行 环 境(三 )算 法 设 计 的 思 想源 程 序 词 法 分 析 器 单 词 符 号 对 应 的 种 别 码 :单 词 符 号 种 别 码 单 词 符 号 种 别 码 : 17 := 18 21 23 10 >= 2411 = 25+ 13 ( 26- 14 ) 27* 15 ; 28/ 16 # 0算 法 的 基 本 任 务 是 从 字 符 串 表 示 的 源 程 序 中 识 别 出 具 有 独 立 意 义 的 单 词 符号 , 其 基 本 思 想 是 根 据 扫 描 到 单 词 符 号 的 第 一 个 字 符 的 种 类 , 拼 出 相 应 的单 词 符 号。 1. 主 程 序 示 意 图 :主 程 序 示 意 图 如 下 ; 其 中 初 值 包 括 如 下 两 个 方 面 :4( 1) 关 键 字 表 的 初 值。 关 键 字 作 为 特 殊 标 示 符 处 理 , 把 它 们 预 先 安 排 到 一 张 表 格 中( 称 为 关 键 字 表 ) , 当 扫 描 程 序 识 别 出 标 识 符 时 , 查 关 键 字 表。 如 果 能 查 到 匹 配 的 单 词 , 则 该 单 词 为 关 键 字 , 否 则 为 一 般 的 标识 符。 关 键 字 表 为 一 个 字 符 串 数 组 , 其 描 述 如 下 :=“”;否 是(2)程 序 需 要 用 到 的 主 要 变 量 为 扫 描 子 程 序 的 算 法 思 想首 先 设 置 3个 变 量 : ( 1) 存 放 构 成 单 词 符 号 的 字 符 串 ; ( 2) 存 放 整 型 单 词 ( 3) 来 存 放 单 词 符 号 的 种 别 码。 置 初 值调 用 扫 描 子 程 序输 出 单 词 二 元 组输 入 串 结 束。 结 束5( 四 ) 算 法 的 流 程 图 否其 它 字 符数 字( 五 ) 算 法 设 计 分 析算 法 的 基 本 任 务 是 从 字 符 串 表 示 的 源 程 序 中 识 别 出 具 有 独 立 意 义 的 单 词 符号 , 其 基 本 思 想 是 根 据 扫 描 到 单 词 符 号 的 第 一 个 字 符 的 种 类 , 拼 出 相 应 的单 词 符 号。 其 中 初 值 包 括 如 下 两 个 方 面 : ( 一 ) 关 键 字 表 的 初 值。 关 键 字 作 为 特 殊 标 示符 处 理 , 把 它 们 预 先 安 排 到 一 张 表 格 中 ( 称 为 关 键 字 表 ) , 当 扫 描 程 序 识 别出 标 识 符 时 , 查 关 键 字 表。 如 果 能 查 到 匹 配 的 单 词 , 则 该 单 词 为 关 键 字 ,否 则 为 一 般 的 标 识 符。 关 键 字 表 为 一 个 字 符 串 数 组 , 其 描 述 如 下 :=“”;(2)程 序 需 要 用 到 的 主 要 变 量 为 扫 描 子 程 序 的 算 法 思 想 初 始 化忽 略 空 格文 件 结 束 否 结 束拼 字 符 串 拼 数是 否 是 关 对 不 同 符 号 给出 相 应 的 错0 1 对 应 单词 的 种 别 码 结 束6首 先 设 置 3个 变 量 : ( 1) 存 放 构 成 单 词 符 号 的 字 符 串 ; ( 2) 存 放 整 型 单 词 ( 3) 来 存 放 单 词 符 号 的 种 别 码。 ( 六 ) 源 代 码#50 /词 法 分 析 表 的 最 大 容 量#55/缓 冲 区 的 最 大 缓 冲 量ch;p,m,n,=""""""/词 法 分 析 程 序/ m=0;m=65&&5&&8&&8&&8&& 1;m+=if(=) 2;m+=0;p=;8: m+=ch=p+;/读 取 下 一 个 字 符 ;if(=) 4;/将 >=的 中 别 码 =>m+=3;p=;: m+=ch=p+;/读 取 下 一 个 字 符 ;if(=) 8;m+=7;p=;: 3;=ch;: 4;=ch;: 5;=ch;: 6;=ch;: 5;=ch;: 6;=ch;: 7;=ch;: 8;=ch;: ;=ch;1;/主 函 数/ ;) S: =>E+T*F=>E+T*(E)即 有 E=>E+T*(E)存 在 左 递 归。 用 直 接 改写 法 消 除 左 递 归 , 得 到 如 下 :E +T *|F (E)|对 于 以 上 改 进 的 方 法。 可 得 :对 于 E: )= =+, , 对 于 T: )= =*, , 而 且 : E ) = T ) = F )=E) i)=(, i由 此 我 们 容 易 得 出 各 非 终 结 符 的 合 如 下 :)=), #)=)=), #)=) )=+, , ), #)=)=+, , ), #17)=) )=*, , +, , ), #由 以 上 以 我 们 可 以 得 出 下 :对 E E =E)=)=(, i对 E E+ =+E =E) =, ), #对 T T =(, i对 T T* =*T = T) =, +, , ), #对 F F(E) ) =(Fi) =i + E E) =* T T) =F(E) ) Fi) =由 上 可 知 , 有 相 同 左 部 产 生 式 的 合 的 交 集 为 空 , 所 以 文 法 是1) 文 法。 因 此 , 转 化 后 的 文 法 可 以 用 递 归 下 降 分 析 法 作 语 法 分 析。 ( 六 ) 源 代 码#a50 ,b50,d200,e10;ch;n1,n=5;();1();();();();();18; /*递 归 分 析 */ f,p,j=0;x;d0=E;d1=;d2=>d3=T;d4=G;d5=#;t",;f=T();。C语言语法分析器
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。