基于编译技术的可视化计算系统设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
和 目标 代 码 生 成 几 个 阶 段 ,最 主 要 的 是 前 3大 阶 段 。
T-T F f 、 F - * 聊 f *
F () Id 一 E i
23 算 符 优 先 分 析 法 -
算符 优先分析 法是一种 特别适 用于表 达式运 算的 自下而
上 的语 法 分 析 方 法 。 当文 法 G 的产 生 式 中没 有 两 个 连 续 的 非
()数字 7 1 进栈 ()栈顶运算符 #<+ + 2 进栈 ()栈顶运算符+< ( ( 3 进栈
() 数 字 5进 栈 4
3 可 视化 计算 系统
系统主要包 含两个 方面 的内容 :一是输 入算符 运算流 时 对算 符运算 流进行 词法分 析 ,二是对 通过词 法分析 生成 的符 号进行语 法分析 ,并 同时进行语义分析及其计算得到结果 。
(aya stt o l r a P w r T iun0 0 1 C ia T iu nI tue f e i l o e , a a 3 0 3, hn ) n i E tc y
Absr c : On t e c mp lt n o e ia n y i a d s n a n l ss u e Viu t do 0 8 d v lp n o l o d s n a ta t : o i i flx c la a s n y tx a ay i, s s a S u i 2 0 e eo me t os t e i h ao l s l t g s ta c r i g t p r trp e e e c ea in r r y c mp r o iu a c lt n s se I i y tm, h n u a at e c o d n o e ao r c d n e r lt sp o t o a i n v s a c u ai y tm. n t ss s o o ii s l l o h e t e i p td t o h i a a a ss s n a a a ss s ma t a ay i n h n c u a e h e u t t e lx c n y i, y t n y i, e n i n l ssa d t e ac lt d t e r s l . e l l x l c l s Ke r s y wo d :Op r t r r c d n e r lt n Viu ac lt n s se e a o e e e c ea i s; s a c u ai y t m p o l l o
如 输 入 的是 特 殊 字 符 或 非数 值 时 ,如 @ ,S ,将 会 给 出错 误 提
实际上 ,程序在 执行 时 ,使用 了一个堆栈 ,用 于存放 表 达式 中的运算符 与运算数 。当程序开 始执行 时 ,依 次读入 构 成 表达式 的各项元素 ,并 将之存入 到堆栈 中。当读人 的是数 值 时 ,先存入 堆栈 ;当读 入的是运 算符 时 ,则使 用堆栈 栈顶 的运算 符与读 到 的这个 运算符 进行优 先级 的 比较 ,若是 > 关 系 ,则表示找到 了句柄的末尾 ,然后 在堆栈 内找 到句 柄的头 , 再根据赋 予语法规则 所定义 的语 义规则 进行计 算直 至得到 结
式 ,而毒R…a或吉R…Q 。 a 其中 P 、R代 表非 终结 符 ,a 、b代 表 终 结 符 。
词 法分析 阶段就 是扫描 构成 源程序 的字符 串 ,根据源语 言 的构词 规则分 析并识别 出源语 言 中的一个个 独立 的单词符 号 ,如关键 字、标识 符 、常量 、运算符 与分界符等 。 词 法分析用 来保证 用户 输入 的运算 表达式 数字及 运算符 的正确性 ,而不 是在 运行 程序 时才发 现运 算 表达 式不 正确 。 这 就需要 通 过采 用正 规式 来定 义表达 式 ,如下 列 定义 规则 ,
A T I A TLIE C N E T I T NTC NQ E R I C L N EL N E DI N I C I H IU S FI I G A D FA O E
人 工 智 能及 识 别 技 术
基于编译 技术 的可视化计 算系统 设计
赵 丽 ,齐兴 斌 。李 雪梅
( 太原 电力高等专科学校 ,太原 0 0 1) 3 0 3
对 只 有 一 个 非 终 结 符 的 子 句 无 法 进 行 归 约 。 但 由 于 在 具 有 优
先 级的高级 语言 的算术 运算 中 ,不存 在不含有运 算符 ,只有
语法分 析 阶段 就是 对词法 分析 的结果 ,根据 源语 言 的语
运 算数据 的表达式 出现 ,所 以 ,使用这 种分析法来进 行算 术
作者简介 :赵丽 (9 0 ) 18 一 ,女 ,讲师 ,硕士 ,研究方 向:计
算机语言 ;齐兴斌 ,讲 师,硕 士;李雪梅 ,教授 ,学 士。
收 稿 日期 :2 1 — 7 1 020— 8
电脑编程技巧与维护
运算 也 足够 了 。
词法 分析结束 后进入语 法分析 ,采 用 自底 向上 的算符优
l 引 言
在 计 算 机 科 学 技 术 的 发 展 进 程 中 , 编 译 技 术 占据 了 非 常
下 列 定 义 规 则 。采 用 大 写 字 母 表 示 非 终 结 符 ,小 写 字 母 表 示 终 结符 。
E— E+T E l I T
重要 的位 置 ,它是 每个优 秀的计算 机专业 人员 必修 的一 门课 程 。编译 其实就是将源语 言 ( 高级语 言)所写 的程序 转换为与 之等价 的 目标 语言 f 级语言)所写 的程序 ,如把 C或 c + f 氐 + 所 写 的程 序转 换成汇 编语言所 写的 目标 代码 的程序 就是编 译程 序 。当编译 程序把 高级语 言翻译成低 级语 言时 ,一 般要 经历 词法 分析 、语 法分 析 、语义分 析与 中间代码 生成 、代码 优化
果。
关 键 词 :算 符 优 先 关 系 ; 可视 化 计 算 系统
Ba e n m pie c no o y o s lCa c a i n y t m sg s d o Co l d Te h l g fViua lul to S se De i n
Z HA L , n - i L e me O i QI Xig bn, I Xu - i
采 用 d表 示 单 个 数 字 0 9。 —, < 字 > +dI< 字 > 数 _ d 数 < 算符 > +I l I l( ) l 运 一 — , 1
2 语 法 分 析 . 2
算 符优先分 析法借 鉴了算术 表达式 运算 中不 同优 先顺序
的概念 ,在终结符 之间定义 了某 种优先 关系 ,从 而在 句型 中 寻找 可归 约串并 对可 归约 串进行 归约从 而得 到最 终 的结果 。 当然 ,在 这种文法 中 ,没有考 虑非终 结符 的优 先关 系 ,所 以
终结符 与空 串时 ,考查 文法 中的任意两 个终结符 a和 b之 间
的关 系 , 当 a和 b之 间 有 优 先 关 系 时 ,最 多 存 在 下 列 优 先 关
系之一 :
本系 统从 编译 程序 的原理 与技 术 出发 ,利用 Vsa Su i l t— u d20 i 0 8作为 开发工具 ,设计 了一个具有词 法分析 、语法 分析 o 的可视化计算系统。
示 。接着进入 语法分 析 ,采用 编译 技术 中的 自下 而上 的语法 分析 方法——算符 优先分 析法 ,对 算符 运算流 中的数据 与运 算符进行分析 ,并根据语义进行计 算直 至得 到正确 的结果 。
果。如当读入 的表达式是 7 ( 2 3 2时 ,其执行顺序 为 : + 5 — )+
摘 要 :针 对 编 译技 术 中的 词 法分 析 与语 法 分 析 ,利 用 Vsa tdo 0 8开 发 工 具 设 计 出一 套 根 据 算 符 优 先 关 系进 i l ui 0 u S 2
行优先级 比较的 可视化计算 系统。在这套 系统 中,可对输入 的数据进行词法分析 、语 法分析 ,语 义分析 并计算 出结
法规则 ,识别 出相应 的语法 范畴 ,如程序 、函数 、语句 、表
达式等 。
基金项 目:太原 市科技项 目 ( o 2 14 9 ) N :10 6 0 3 。
语 法分 析用来 保证 用户输 入的运 算表达 式逻 辑上 的正确 性 ,只有词法 与语法都 正确 的表达式 才能通 过运 算得到 正确 的结果 。采用 上下文无 关文 法来定义 输入表 达式 的语法 ,如
()a b 1 ,当且仅 当文法 中含有形 如 P …a 开发 工具
2 1 词 法 分 析 .
a … 的产 生 式 。 b
()a ,当且仅 当文法 中含有 形如 P …a 2 《b 一 R…的产 生 式 ,而与R …或粤R b b Q …。 ()a ,当且仅 当文法 中含有 形如 P …R …的产 生 3 ≯b 一 b
罂 里 …
I . 薷l 糯2
相幻 帝 : 霸瘁符:
瓣
鞯谱 :
§ 辖进
臼 班 操榫{ 岛 苷; (
i 步 I 2 § 躺 进 { 新 : t
} 如 m r : j s
妇 寿 攘 恒 : t f 一 撩f符 : 一 蒋 }
№ ’ , 黼
31 输 入 算 符 运 算 流 并 进 行 词 法分 析 .
()栈顶运算符 ( 5 < ()数字 2进栈 6
进栈
系统 提供两种 输入方 法 :可通 过键 盘输入 ,也可使 用 鼠 标按屏 幕上 的按键输入 ,如 图 1 示 。当输入一 个系统 不能 所
()栈顶运算符 >一满足规则 T 7 — F归约 52 , * ()栈顶运算符 ( 一 一 8 < 进栈 ()数 字 3 9 进栈 (0 1)栈顶运算符一>) 满足规则 E E r归约 1— — -, r 03
规则 ,得到最终 的运算结果 。
句 柄 的定 义是通过 终结符 之间 的优先关 系来界定 的 。如 用 N表示 非终结符 ,n表示终结符 ,用< 、= 、> 表示终结符 之 间 的优先关系 ,则可用如下方法来定义句柄 。
在 句 型 nN ln… . 1 onN 2 . N +中 N
稿灌
若 有 n <n 0 l
n I n2 … … n】
IO拳 羹惟辑 : 一 ) ) i
避 - 蜘 :03 T j 1- I1辱 : I 滞 一蛳 , 擀} f 1 :
ni >niI +
图 2 计 算 系统 的 执 行 界 面
则 N 。n… .N nN : . n N构成 了当前句型的句柄。 本 系统从 输入算符 运算 流开始 ,先根据 编译技术 中 的词 法分 析技术 ,识别 出构成 算符运算 流 中的一 个个运 算符号及 运算数据 。当词法分析 时有错误产生 ,能 给出 出错信 息提示,
先 分 析 法 , 每 次 当词 法 分 析 识 别 出 一 个 数 字 或 操 作 符 后 ,根 据 相 应 规 则 进 行 归 约 操 作 , 同 时将 进 行 值 的运 算 。 整 个 过 程 反 复 执行 ,直 到 最 后 结 果 生 成 ,如 图 2 示 。 所
算符优 先分析法 中 的可 归约 串称 为句 柄 。其分 析过程 就 是 首先 查找 当前句型 的句柄 ,然后用 相应 的产生 式左部替 换 它 ,这个过 程就是俗称 的归约 ,继续 归约 ,直到 文法 的开始 过 程 ,即完 成整个分 析过程 ,并 同时通 过对规则 赋予 的语义
T-T F f 、 F - * 聊 f *
F () Id 一 E i
23 算 符 优 先 分 析 法 -
算符 优先分析 法是一种 特别适 用于表 达式运 算的 自下而
上 的语 法 分 析 方 法 。 当文 法 G 的产 生 式 中没 有 两 个 连 续 的 非
()数字 7 1 进栈 ()栈顶运算符 #<+ + 2 进栈 ()栈顶运算符+< ( ( 3 进栈
() 数 字 5进 栈 4
3 可 视化 计算 系统
系统主要包 含两个 方面 的内容 :一是输 入算符 运算流 时 对算 符运算 流进行 词法分 析 ,二是对 通过词 法分析 生成 的符 号进行语 法分析 ,并 同时进行语义分析及其计算得到结果 。
(aya stt o l r a P w r T iun0 0 1 C ia T iu nI tue f e i l o e , a a 3 0 3, hn ) n i E tc y
Absr c : On t e c mp lt n o e ia n y i a d s n a n l ss u e Viu t do 0 8 d v lp n o l o d s n a ta t : o i i flx c la a s n y tx a ay i, s s a S u i 2 0 e eo me t os t e i h ao l s l t g s ta c r i g t p r trp e e e c ea in r r y c mp r o iu a c lt n s se I i y tm, h n u a at e c o d n o e ao r c d n e r lt sp o t o a i n v s a c u ai y tm. n t ss s o o ii s l l o h e t e i p td t o h i a a a ss s n a a a ss s ma t a ay i n h n c u a e h e u t t e lx c n y i, y t n y i, e n i n l ssa d t e ac lt d t e r s l . e l l x l c l s Ke r s y wo d :Op r t r r c d n e r lt n Viu ac lt n s se e a o e e e c ea i s; s a c u ai y t m p o l l o
如 输 入 的是 特 殊 字 符 或 非数 值 时 ,如 @ ,S ,将 会 给 出错 误 提
实际上 ,程序在 执行 时 ,使用 了一个堆栈 ,用 于存放 表 达式 中的运算符 与运算数 。当程序开 始执行 时 ,依 次读入 构 成 表达式 的各项元素 ,并 将之存入 到堆栈 中。当读人 的是数 值 时 ,先存入 堆栈 ;当读 入的是运 算符 时 ,则使 用堆栈 栈顶 的运算 符与读 到 的这个 运算符 进行优 先级 的 比较 ,若是 > 关 系 ,则表示找到 了句柄的末尾 ,然后 在堆栈 内找 到句 柄的头 , 再根据赋 予语法规则 所定义 的语 义规则 进行计 算直 至得到 结
式 ,而毒R…a或吉R…Q 。 a 其中 P 、R代 表非 终结 符 ,a 、b代 表 终 结 符 。
词 法分析 阶段就 是扫描 构成 源程序 的字符 串 ,根据源语 言 的构词 规则分 析并识别 出源语 言 中的一个个 独立 的单词符 号 ,如关键 字、标识 符 、常量 、运算符 与分界符等 。 词 法分析用 来保证 用户 输入 的运算 表达式 数字及 运算符 的正确性 ,而不 是在 运行 程序 时才发 现运 算 表达 式不 正确 。 这 就需要 通 过采 用正 规式 来定 义表达 式 ,如下 列 定义 规则 ,
A T I A TLIE C N E T I T NTC NQ E R I C L N EL N E DI N I C I H IU S FI I G A D FA O E
人 工 智 能及 识 别 技 术
基于编译 技术 的可视化计 算系统 设计
赵 丽 ,齐兴 斌 。李 雪梅
( 太原 电力高等专科学校 ,太原 0 0 1) 3 0 3
对 只 有 一 个 非 终 结 符 的 子 句 无 法 进 行 归 约 。 但 由 于 在 具 有 优
先 级的高级 语言 的算术 运算 中 ,不存 在不含有运 算符 ,只有
语法分 析 阶段 就是 对词法 分析 的结果 ,根据 源语 言 的语
运 算数据 的表达式 出现 ,所 以 ,使用这 种分析法来进 行算 术
作者简介 :赵丽 (9 0 ) 18 一 ,女 ,讲师 ,硕士 ,研究方 向:计
算机语言 ;齐兴斌 ,讲 师,硕 士;李雪梅 ,教授 ,学 士。
收 稿 日期 :2 1 — 7 1 020— 8
电脑编程技巧与维护
运算 也 足够 了 。
词法 分析结束 后进入语 法分析 ,采 用 自底 向上 的算符优
l 引 言
在 计 算 机 科 学 技 术 的 发 展 进 程 中 , 编 译 技 术 占据 了 非 常
下 列 定 义 规 则 。采 用 大 写 字 母 表 示 非 终 结 符 ,小 写 字 母 表 示 终 结符 。
E— E+T E l I T
重要 的位 置 ,它是 每个优 秀的计算 机专业 人员 必修 的一 门课 程 。编译 其实就是将源语 言 ( 高级语 言)所写 的程序 转换为与 之等价 的 目标 语言 f 级语言)所写 的程序 ,如把 C或 c + f 氐 + 所 写 的程 序转 换成汇 编语言所 写的 目标 代码 的程序 就是编 译程 序 。当编译 程序把 高级语 言翻译成低 级语 言时 ,一 般要 经历 词法 分析 、语 法分 析 、语义分 析与 中间代码 生成 、代码 优化
果。
关 键 词 :算 符 优 先 关 系 ; 可视 化 计 算 系统
Ba e n m pie c no o y o s lCa c a i n y t m sg s d o Co l d Te h l g fViua lul to S se De i n
Z HA L , n - i L e me O i QI Xig bn, I Xu - i
采 用 d表 示 单 个 数 字 0 9。 —, < 字 > +dI< 字 > 数 _ d 数 < 算符 > +I l I l( ) l 运 一 — , 1
2 语 法 分 析 . 2
算 符优先分 析法借 鉴了算术 表达式 运算 中不 同优 先顺序
的概念 ,在终结符 之间定义 了某 种优先 关系 ,从 而在 句型 中 寻找 可归 约串并 对可 归约 串进行 归约从 而得 到最 终 的结果 。 当然 ,在 这种文法 中 ,没有考 虑非终 结符 的优 先关 系 ,所 以
终结符 与空 串时 ,考查 文法 中的任意两 个终结符 a和 b之 间
的关 系 , 当 a和 b之 间 有 优 先 关 系 时 ,最 多 存 在 下 列 优 先 关
系之一 :
本系 统从 编译 程序 的原理 与技 术 出发 ,利用 Vsa Su i l t— u d20 i 0 8作为 开发工具 ,设计 了一个具有词 法分析 、语法 分析 o 的可视化计算系统。
示 。接着进入 语法分 析 ,采用 编译 技术 中的 自下 而上 的语法 分析 方法——算符 优先分 析法 ,对 算符 运算流 中的数据 与运 算符进行分析 ,并根据语义进行计 算直 至得 到正确 的结果 。
果。如当读入 的表达式是 7 ( 2 3 2时 ,其执行顺序 为 : + 5 — )+
摘 要 :针 对 编 译技 术 中的 词 法分 析 与语 法 分 析 ,利 用 Vsa tdo 0 8开 发 工 具 设 计 出一 套 根 据 算 符 优 先 关 系进 i l ui 0 u S 2
行优先级 比较的 可视化计算 系统。在这套 系统 中,可对输入 的数据进行词法分析 、语 法分析 ,语 义分析 并计算 出结
法规则 ,识别 出相应 的语法 范畴 ,如程序 、函数 、语句 、表
达式等 。
基金项 目:太原 市科技项 目 ( o 2 14 9 ) N :10 6 0 3 。
语 法分 析用来 保证 用户输 入的运 算表达 式逻 辑上 的正确 性 ,只有词法 与语法都 正确 的表达式 才能通 过运 算得到 正确 的结果 。采用 上下文无 关文 法来定义 输入表 达式 的语法 ,如
()a b 1 ,当且仅 当文法 中含有形 如 P …a 开发 工具
2 1 词 法 分 析 .
a … 的产 生 式 。 b
()a ,当且仅 当文法 中含有 形如 P …a 2 《b 一 R…的产 生 式 ,而与R …或粤R b b Q …。 ()a ,当且仅 当文法 中含有 形如 P …R …的产 生 3 ≯b 一 b
罂 里 …
I . 薷l 糯2
相幻 帝 : 霸瘁符:
瓣
鞯谱 :
§ 辖进
臼 班 操榫{ 岛 苷; (
i 步 I 2 § 躺 进 { 新 : t
} 如 m r : j s
妇 寿 攘 恒 : t f 一 撩f符 : 一 蒋 }
№ ’ , 黼
31 输 入 算 符 运 算 流 并 进 行 词 法分 析 .
()栈顶运算符 ( 5 < ()数字 2进栈 6
进栈
系统 提供两种 输入方 法 :可通 过键 盘输入 ,也可使 用 鼠 标按屏 幕上 的按键输入 ,如 图 1 示 。当输入一 个系统 不能 所
()栈顶运算符 >一满足规则 T 7 — F归约 52 , * ()栈顶运算符 ( 一 一 8 < 进栈 ()数 字 3 9 进栈 (0 1)栈顶运算符一>) 满足规则 E E r归约 1— — -, r 03
规则 ,得到最终 的运算结果 。
句 柄 的定 义是通过 终结符 之间 的优先关 系来界定 的 。如 用 N表示 非终结符 ,n表示终结符 ,用< 、= 、> 表示终结符 之 间 的优先关系 ,则可用如下方法来定义句柄 。
在 句 型 nN ln… . 1 onN 2 . N +中 N
稿灌
若 有 n <n 0 l
n I n2 … … n】
IO拳 羹惟辑 : 一 ) ) i
避 - 蜘 :03 T j 1- I1辱 : I 滞 一蛳 , 擀} f 1 :
ni >niI +
图 2 计 算 系统 的 执 行 界 面
则 N 。n… .N nN : . n N构成 了当前句型的句柄。 本 系统从 输入算符 运算 流开始 ,先根据 编译技术 中 的词 法分 析技术 ,识别 出构成 算符运算 流 中的一 个个运 算符号及 运算数据 。当词法分析 时有错误产生 ,能 给出 出错信 息提示,
先 分 析 法 , 每 次 当词 法 分 析 识 别 出 一 个 数 字 或 操 作 符 后 ,根 据 相 应 规 则 进 行 归 约 操 作 , 同 时将 进 行 值 的运 算 。 整 个 过 程 反 复 执行 ,直 到 最 后 结 果 生 成 ,如 图 2 示 。 所
算符优 先分析法 中 的可 归约 串称 为句 柄 。其分 析过程 就 是 首先 查找 当前句型 的句柄 ,然后用 相应 的产生 式左部替 换 它 ,这个过 程就是俗称 的归约 ,继续 归约 ,直到 文法 的开始 过 程 ,即完 成整个分 析过程 ,并 同时通 过对规则 赋予 的语义