木兰编程语言重现——支持列表操作,演示编辑器高亮

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

内容简介:通过添加列表操作等功能,已可编写经典排序算法。另外,作为代码编辑器的第一步,用 Python 实现了带基本语法高亮的编辑器原型,用于显示木兰源码。 功能 编辑器功能 用 tkinter 的 Text 实现了如下的木兰源码高亮...

通过添加列表操作等功能,已可编写经典 排序 算法。另外,作为代码编辑器的第一步,用 Python 实现了带基本语法高亮的编辑器原型,用于显示木兰源码。

功能

编辑器功能

用 tkinter 的 Text 实现了如下的木兰源码高亮效果:

木兰编程语言重现——支持列表操作,演示编辑器高亮

语言功能

添加了列表操作、多项赋值等等基本功能,编写经典算法已经可行。比如快速排序

func 分区(数列, 下界, 上界) {
  中值 = 数列[上界] // 中值可以取任意一个位置的
  前位 = 下界
  for 后位 in 下界..上界 {
    if 数列[后位] < 中值 {
      数列[前位], 数列[后位] = 数列[后位], 数列[前位]
      前位 += 1
    }
  }
  数列[前位], 数列[上界] = 数列[上界], 数列[前位]
  return 前位
}

func 快速排序(数列) {
  func 递归(各项, 下界, 上界) {
    if 下界 < 上界 {
      中位 = 分区(各项, 下界, 上界)
      递归(各项, 下界, 中位 - 1)
      递归(各项, 中位 + 1, 上界)
    }
  }

  递归(数列, 0, len(数列) - 1)
}

支持了三元运算? :,见例程测试/手工测试/命令行.ul

using Cmd in cmd
using 随机范围数 in 随机数
using exit in sys

type 猜数字 : Cmd {
    {
        intro = "木兰想了个 100 之内的数,猜猜是几?"
        想的 = 随机范围数(100)
        prompt = '请猜吧: '
    }

    func $default(行) {
        数 = int(行)
        if 数 == self.想的 {
            println("中了!")
            exit()
        } else {
            println("太" + (数 > self.想的 ? "大" : "小") + "了!")
        }
    }
}
猜数字().cmdloop()

代码统计

下面是几个主要部分的代码行数统计,+的为相对上周的增量。

  • 测试
    • 木兰测试用例:465 + 136 = 601
    • 测试.py,运行测试的脚本:123 + 12
    • test语法树.py,确保生成的语法树与原始版本一致:52 + 11
  • 实现:1287 + 346 = 1633
    • 分析器/语法分析器.py,包括 AST 转换:569 + 83 = 652
    • 分析器/语法树.py功用/调试辅助.py,包括对 ast 库的中文封装:214 + 37
    • 词法分析器.py,主要是词法规则:110 + 13
    • rply_parser.py,支持空行的权宜之计:117
    • 演示高亮.py:80
    • 环境.py,全局变量:30 + 3

下一步

添加对木兰模块的支持,改进编辑器。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

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

JavaScript and Ajax for the Web, Sixth Edition

JavaScript and Ajax for the Web, Sixth Edition

Tom Negrino、Dori Smith / Peachpit Press / August 28, 2006 / $24.99

Book Description Need to learn JavaScript fast? This best-selling reference’s visual format and step-by-step, task-based instructions will have you up and running with JavaScript in no time. In thi......一起来看看 《JavaScript and Ajax for the Web, Sixth Edition》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具