重现木兰编程语言的基本 try……catch 语法

栏目: 软件资讯 · 发布时间: 3年前

内容简介:上个月初开始逐步对《Make Your Own Python Text Adventure: A Guide to Learning Programming》一书中的文字冒险游戏例程用木兰语言重写并改为中文标识符,由于接近该系列尾声,于是自己重现了 try……catch 最基...

上个月初开始逐步对《Make Your Own Python Text Adventure: A Guide to Learning Programming》一书中的文字冒险游戏例程用木兰语言重写并改为中文标识符,由于接近该系列尾声,于是自己重现了 try……catch 最基本语法供例程所需(PyPI 0.0.16版本),当然余下还有try 相关与其他很多木兰功能悬赏待重现,随时恭候。

木兰的 try...catch 基本语法

可以 catch 所有错误,不用指定具体类型:

try {
  print([][0])
} catch e {
  print(e)
}

也可指定错误类型:

try {
  print(int('x'))
} catch e : ValueError {
  print('v')
}

catch 多个类型错误:

try {
  print([][int('0')])
} catch e : ValueError {
  print('v')
} catch e : IndexError {
  print('i')
}

值得注意的是,从 Python 代码改写为木兰代码时,容易写出这样的代码:

try {
  print([][int('0')])
} catch ValueError {
  print('v')
} catch IndexError {
  print('i')
}

此时会报错:default 'except:' must be last

至此,文字冒险游戏例程 所需的木兰语言功能已基本实现,游戏主要功能也已通过木兰编程语言实现。

但是,余下一个木兰引用特性导致的游戏 bug,尚未想到合适方法规避。如无好的解决方案,恐怕会非常影响木兰语言的实用性,期待能够早日处理。


附:代码量统计

主要部分的代码行数统计,格式为:上次->现在。

  • 木兰代码量 3307 -> 3349
    • 运行环境,实现与测试大部为木兰代码:582
    • 木兰测试用例,包括部分实用小程序(如井字棋):2725 -> 2767 (报错信息测试用例替代了源码中的注释)
  • Python 代码量(木兰实现与测试框架):2920 -> 2816
    • 分析器/语法分析器.py:1021 -> 1049
    • 分析器/词法分析器.py:213 -> 216
    • 分析器/语法树.py:209 -> 225
    • 测试/期望值表.py(从“运行所有.py”中提取):133 -> 135
    • 【已提取到单独库功用/规律.py,正则表达式 API 原型:100
    • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:83 -> 85
    • 未变
      • 环境.py,定义全局方法: 174
      • 交互.py,交互环境(REPL):148
      • 功用/反馈信息.py:75
      • 中.py,主程序:74
      • 测试/运行所有.py,检验所有木兰测试代码片段:71
      • 功用/调试辅助.py,:57
      • setup.py, 34
      • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:88
      • 【已移出】测试/unittest/正则.py:62
      • 测试/unittest/交互.py,交互环境相关测试:28
      • 测试/unittest/所有用例.py:24
      • 分析器/错误.py:26

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Web Reputation Systems

Building Web Reputation Systems

Randy Farmer、Bryce Glass / Yahoo Press / 2010 / GBP 31.99

What do Amazon's product reviews, eBay's feedback score system, Slashdot's Karma System, and Xbox Live's Achievements have in common? They're all examples of successful reputation systems that enable ......一起来看看 《Building Web Reputation Systems》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码