Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
lmpythw-zh
提交
0b3524f3
L
lmpythw-zh
项目概览
OpenDocCN
/
lmpythw-zh
8 个月 前同步成功
通知
0
Star
18
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
lmpythw-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0b3524f3
编写于
8月 16, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ex47
上级
832b4752
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
7 deletion
+7
-7
ex47.md
ex47.md
+7
-7
未找到文件。
ex47.md
浏览文件 @
0b3524f3
...
...
@@ -8,28 +8,28 @@
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
你应该热身并准备处理这个新项目。我通常假设,
您将在一两天内的 2~3 小时的会话中完成这些项目,但您
通常可以尽可能多地实现这些项目。
你应该热身并准备处理这个新项目。我通常假设,
你将在一两天内的 2~3 小时的会话中完成这些项目,但你
通常可以尽可能多地实现这些项目。
这个项目是,使用第五部分学到的内容,来为
`bc`
程序创建语言。我们已经在练习 36 中,为
`bc`
实现了简单的数学运算,但现在你将尽可能多地实现
`bc`
语言。
`bc`
大量运算符、函数和控制结构。
您的目标是使用您
对递归下降解析器的了解,来逐步实现它。
这个项目是,使用第五部分学到的内容,来为
`bc`
程序创建语言。我们已经在练习 36 中,为
`bc`
实现了简单的数学运算,但现在你将尽可能多地实现
`bc`
语言。
`bc`
大量运算符、函数和控制结构。
你的目标是使用你
对递归下降解析器的了解,来逐步实现它。
我将重点关注你的扫描器的构建,从扫描、解析、分析开始,并使用
`bc`
的样例代码进行测试。这个项目可能是巨大的,因为
您
手动实现语言,但尽可能多地完成语法。
我将重点关注你的扫描器的构建,从扫描、解析、分析开始,并使用
`bc`
的样例代码进行测试。这个项目可能是巨大的,因为
你
手动实现语言,但尽可能多地完成语法。
## 挑战练习
`bc`
语言不仅仅拥有处理数学运算的能力。我从不仅仅使用基础数学运算,完整的语言相当强大。
您有能力定义函数,使用
`if`
语句,并实现许多其他常见的编程结构。在实现中,您无法实现整个
`bc`
语言,因为它太大了。相反,您
应该实现这些东西:
`bc`
语言不仅仅拥有处理数学运算的能力。我从不仅仅使用基础数学运算,完整的语言相当强大。
你有能力定义函数,使用
`if`
语句,并实现许多其他常见的编程结构。在实现中,你无法实现整个
`bc`
语言,因为它太大了。相反,你
应该实现这些东西:
+
所有的数学运算符
+
变量
+
函数
+
`if`
语句
这实际上是
您应该实现该语言的顺序。首先,让运算符工作和解析良好。随意借鉴您在练习 35 中创建的简约实现,来起步。一旦实现了它,实现变量,这将需要使分析器正确处理变量的存储和检索。最后,您
可以实现函数,然后是
`if`
语句。
这实际上是
你应该实现该语言的顺序。首先,让运算符工作和解析良好。随意借鉴你在练习 35 中创建的简约实现,来起步。一旦实现了它,实现变量,这将需要使分析器正确处理变量的存储和检索。最后,你
可以实现函数,然后是
`if`
语句。
您需要钻研 GNU 版本的
`bc`
的任何文档,因为它拥有语言的相当不错的完整描述,以便您
可以实现它。它没有什么神奇的,因为他们大多从 C 复制一切,许多其他语言都类似于它。
你需要钻研 GNU 版本的
`bc`
的任何文档,因为它拥有语言的相当不错的完整描述,以便你
可以实现它。它没有什么神奇的,因为他们大多从 C 复制一切,许多其他语言都类似于它。
当你处理这个挑战时,你需要花时间和步骤。实现语言的美妙之处是,你实际上可以以逻辑上清晰的顺序进行,从扫描到解析到分析,而不会在三个阶段之间有大的反弹。
最后,请记住,
您
正在实现一个递归下降解析器,实际上只是计算机科学解析中的低级版本。如果你正在做正经的解析工作,那么请使用一个解析器生成器,而不是用手写。用手编写它们只是一个有趣的挑战,并且是一种方法,来学习如何在逻辑上构建文本处理。
最后,请记住,
你
正在实现一个递归下降解析器,实际上只是计算机科学解析中的低级版本。如果你正在做正经的解析工作,那么请使用一个解析器生成器,而不是用手写。用手编写它们只是一个有趣的挑战,并且是一种方法,来学习如何在逻辑上构建文本处理。
## 研究性学习
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录