激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

服務器資訊|IT/互聯網|云計算|區塊鏈|軟件資訊|操作系統|手機數碼|百科知識|免費資源|頭條新聞|

服務器之家 - 新聞資訊 - 軟件資訊 - 木蘭編程語言重現:通過玩三歲游戲完善語言功能

木蘭編程語言重現:通過玩三歲游戲完善語言功能

2020-08-09 23:35開源中國吳烜2020 軟件資訊

某個號稱三歲以上就可以玩的桌游,抽象之后的基本問題就是在一個區域中如何擺放三種形狀(朝向隨意)。 比如區域: 三種形狀(短折,長折,一字),各種朝向如下: 這是迄今為止用木蘭語言編寫的最復雜的實用代碼 ,包括

某個號稱三歲以上就可以玩的桌游,抽象之后的基本問題就是在一個區域中如何擺放三種形狀(朝向隨意)。

比如區域:

木蘭編程語言重現:通過玩三歲游戲完善語言功能

三種形狀(短折,長折,一字),各種朝向如下:

木蘭編程語言重現:通過玩三歲游戲完善語言功能

這是迄今為止用木蘭語言編寫的最復雜的實用代碼,包括一個遞歸搜索,長約 150 行,測試約 70 行。其中一個類如下:

木蘭編程語言重現:通過玩三歲游戲完善語言功能

細節和算法有很大改進空間,歡迎指教。

期間根據需要復現了木蘭的如下功能:

== 操作符重載

type 點 {
    func $點(橫, 縱) {
      self.橫, self.縱 = 橫, 縱
    }

    operator == (另一點) {
      return self.橫 == 另一點.橫 and self.縱 == 另一點.縱
    }
}

可指定函數返回類型

type Person {
    {
        name = "小白"
    }

    func $__init__(name) {
        self.name = name
    }
}

func shout(id): Person {
    return Person(id)
}

print(shout("Mulan1").name)

根據范圍取子列表

比如 a[1:3], a[1:]

添加內置函數

集合(set)、斷言(assert)、all、str/int 等等

代碼統計下面是幾個主要部分的代碼行數統計,格式為:兩周前 ->本周。

測試

test 語法樹 . py,確保生成的語法樹與原始版本一致:67

木蘭測試用例:1228 -> 1590

運行測試 . py,檢驗所有木蘭測試代碼片段:151 -> 154

未變

實現:2130 -> 2183

演示高亮 . py:100

功用 / 反饋信息 . py:45

分析器 / 語法分析器 . py:916 -> 944

分析器 / 語法樹 . py,功用 / 調試輔助 . py,包括對 ast 庫的中文封裝:284 -> 234 + 56 = 290

分析器 / 詞法分析器 . py:187 -> 190

環境 . py,加載木蘭模塊:89 -> 97

中 . py,主程序:35 -> 36

未變

下一步由于還有相當部分的木蘭語言功能尚未補全,而實踐證明編寫較復雜實例的開銷相對較大,于是打算首先盡快補完語言功能和測試用例。

現在個別語言功能上卡了殼(比如變長參數),主要是看不出如何使用。如果有興趣并且對 Python 比較熟悉,歡迎一道研究。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本韩国欧美一级片 | 精品国产96亚洲一区二区三区 | 亚洲网站在线观看视频 | 中韩毛片 | 黑色丝袜美美女被躁视频 | 国产精品久久久久网站 | 黄色网址免费进入 | 亚洲精品aaaaa | 成人区精品一区二区婷婷 | 国产精品久久久久久久久久东京 | 欧美大穴 | 亚洲午夜在线视频 | 毛片a片免费看 | 免费观看一区二区三区视频 | 色七七久久影院 | 成人免费av在线播放 | 精品成人在线观看 | 操操日日 | 欧美人的天堂一区二区三区 | 欧美日韩在线看片 | 国产成人午夜精品 | 一级免费在线视频 | 视频在线色 | 日朝毛片 | xxx日本视频 | 欧美黄一级| 狠狠操精品视频 | 欧美日韩在线播放一区 | 亚洲第一色婷婷 | 国产一国产精品一级毛片 | 免费久久久久久 | 久久福利国产 | 欧美日韩在线播放一区 | 少妇激情视频 | 国产精品999在线观看 | 欧美福利视频一区二区 | 欧美a级在线免费观看 | 九九精品久久 | av中文字幕免费在线观看 | 国产精品亚洲综合一区二区三区 | 黄色毛片免费看 |