木蘭程式語言重現——範圍語法「下限..上限 by 間隔」,重構

2020-09-05 用中文編程

在支持 Python 的 range 之外,木蘭還支持如下的等價語法。個人感覺這樣的語法更直觀易讀一些:

閉區間

for 數 in 0..2 { println(數)}

輸出:

012

左閉右開區間:

for 數 in 0..<2 { println(數)}

輸出:

01

對應的帶間隔取數:

這是本周重現的語法。

for 數 in 4..-1 by -2 { println(數)}

輸出:

420

左閉右開區間:

for 數 in 0..<4 by 2 { println(數)}

輸出:

02

代碼統計

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

  • 測試
    • 木蘭測試用例:900 -> 1068
    • 運行測試.py,檢驗所有木蘭測試代碼片段:143 -> 144
    • 未變
      • test語法樹.py,確保生成的語法樹與原始版本一致:63
  • 實現:1720 -> 1898
    • 分析器/語法分析器.py:676 -> 792
    • 分析器/詞法分析器.py:123 -> 184
    • 未變
      • 分析器/語法樹.py,功用/調試輔助.py,包括對 ast 庫的中文封裝:251
      • 演示高亮.py:98
      • 環境.py,加載木蘭模塊:87
      • 中.py,主程序:35


僅添加 by 語法並沒有那麼大代碼量,主要是語法分析器中原本的字符串格式的語法規則比如下面:

@分析器母機.production(&39;)

將各個語法因素提取成了枚舉類型:

@unique class 語法(Enum): 表達式 = &39; 範圍表達式 = &39; ...

對應的語法規則改為了:

@分析器母機.production(語法.範圍表達式.成分(語法.表達式, 點點小於, 語法.表達式))

可讀性的削弱還可接受,至少能減少筆誤的機會。

有用工具

開發時用了 VS Code 下的中文代碼快速補全插件(文末為官方插件商店連結),支持各種程式語言,加強了針對中文的 IDE 補全功能,編寫中文代碼時可以省去不少功夫。

相關焦點

  • 木蘭程式語言重現——範圍語法「下限..上限 by 間隔」,重構 - OS...
  • 木蘭程式語言重現:引用本地木蘭模塊;模擬湊十法加法
    之前一直沒重現本地包內的木蘭模塊引用,導致提取出的模塊只能放在項目根目錄下。上周終於搞定。於是將上次的擺放規劃應用的源碼拆分成幾個模塊,比如測試/實用/規劃/點.ul,在主模塊中可以如此引用「using 點 in 測試.實用.規劃.點」。不需要在包中放置類似__init__.py。
  • 那個自稱國產但被扒皮的木蘭程式語言已重現世界,我又審視下
    還記得那個自稱國產自主研發的程式語言但後來被扒皮的木蘭嗎?當時由權威媒體報導出來,木蘭程式語言涉嫌套殼Python語言,以開源程式語言構建的環境、包和項目重新編譯,就敢自稱國產自主。最後當事人被停職降職取消科研申請,至此,木蘭程式語言事件狼狽收官。不過,木蘭程式語言事件雖了結,但木蘭程式語言卻沒退場。
  • 用木蘭程式語言編寫 WebSocket 聊天服務示例
    需 python 3.7,源碼文件需 UTF-8 編碼】本周發布木蘭程式語言版本 0.0.14.8。將 Python 框架 tornado自帶的用 WebSocket 實現聊天的例程改為木蘭實現。順便將該例程涉及的木蘭與 Python 語法對比小結,包括本周重現的 super 語法等。
  • 木蘭程式語言重現:通過玩三歲遊戲完善語言功能
    一字),各種朝向如下: 這是迄今為止用木蘭語言編寫的最複雜的實用代碼期間根據需要復現了木蘭語言的如下功能:== 操作符重載type 點 { func $點(橫, 縱) { self.橫, self.縱 = 橫, 縱 } operator == (另一點) { return
  • 木蘭程式語言重現:不忘初衷,糾正偏差再出發
    用木蘭程式語言的原始可執行文件 ulang.0.2.2.exe 作基準,用它跑了一遍積累至今的測試用例。果然發現一處疏漏。木蘭原始效果如下:> print([&34;, &34;])[a, b] 看出端倪嗎?
  • 木蘭程式語言重現——功能初具雛形,添加中文報錯信息
    自原型搭建已過去兩個多月,現在實現了木蘭程式語言一些基本的功能。正值搬家到 OSChina,作一階段小結。
  • 木蘭程式語言重現——支持數組操作,演示編輯器高亮
    另外,作為代碼編輯器的第一步,用 Python 實現了帶基本語法高亮的編輯器原型,用於顯示木蘭源碼。語言功能添加了列表操作、多項賦值等等基本功能,編寫經典算法已經可行。:,見例程&34;:using Cmd in cmdusing 隨機範圍數 in 隨機數using exit in systype 猜數字 : Cmd { { intro = &34; 想的 = 隨機範圍數(100) prompt = &39; } func $default(行) { 數 = int
  • 國產程式語言木蘭換皮Python 中科院重罰當事人
    最近打著中科院計算所出品、完全自主開發旗號的國產程式語言「木蘭」引發廣泛關注,但很快被發現是基於Python語言套殼、換皮而來的產物。面對質疑,中科院計算所編譯實驗室員工、「木蘭」語言研發團隊負責人劉雷很快承認誇大其詞,在宣傳中犯了錯誤,一是將「木蘭」語言的應用範圍擴大到智能物聯網領域,二是32位單片機上基於Python開源編譯器進行二次開發卻說成完全自主開發。不過劉雷強調,「木蘭」項目並未使用任何科研經費。中科院計算所很快做出回應,對當事人劉雷做出停職檢查的決定,就管理責任責令編譯實驗室負責人作深刻檢討。
  • 木蘭程式語言 0.0.14.7:功能覆蓋初版用戶手冊
    木蘭程式語言 在 2020 年度 OSC 中國開源項目評選 中已獲得 26 票,請投票支持!(請戳文末連結)年初對原始木蘭可執行文件 ulang-0.2.2.exe 作了些功能上的摸索嘗試,將基本功能寫在初版用戶手冊。開展重現項目之後,一直沒重走一遍手冊中的例程。
  • 木蘭重生:150 行木蘭代碼為木蘭自身實現高亮效果
    所有相關源碼在碼雲(見文末連結)早先用 Python 實現了高亮編輯器的演示,上周將其改寫為木蘭代碼,並作了重構和修正、添加測試用例,現在應該算脫離了「演示期」。功能實現了與 VS Code 木蘭程式語言插件(右側)類似的高亮效果:
  • 木蘭程式語言 0.0.14.6:網絡服務演示 try 語法
    with 和 as 兩個關鍵詞,將其合併到了 try 語法中。暫時未發現木蘭如何支持修飾器 @route,於是不使用 bottle 或者 flask。木蘭代碼量 2873 -> 2920編輯器,實現與測試都是木蘭代碼:402 -> 432 (初步重構,打算儘量減少對 Python tk 庫的依賴,也許分為前後端實現)木蘭測試用例,包括部分實用小程序(如井字棋):2471 -> 2488Python
  • 木蘭程式語言重現——兒歌查詢實例,引用模塊、字符串列表操作
    實現了最基本的對木蘭模塊的引用功能,正好想做一個兒歌查詢,方便找適合小孩唱的歌,就用這個實例進行功能驗證。過程中發現缺了一些字符串和列表的基本功能,於是按需添加。功能這是兒歌數據模塊的木蘭源碼:測試木蘭測試用例:601 + 299 = 900測試.py,運行測試的腳本:135 + 8 = 143未變test語法樹.py,確保生成的語法樹與原始版本一致:63實現:1633 + 87 = 1720分析器/語法分析器.py
  • 中科院計算所發布國產程式語言「木蘭」支持龍芯處理器
    日前中科院計算所宣布計算機體系結構國家重點實驗室編譯組成功研發國產程式語言——木蘭Mulan,主要面向物聯網應用,可以成倍地提高應用執行效率,並且全面支持國產龍芯處理器。木蘭Mulan語言主要定位於面向智能物聯應用、採用最新程式語言設計理念和編譯技術的程序設計語言,開發團隊致力於將其打造為「智能物聯時代的C語言」。
  • 國產程式語言「木蘭」被指套殼Python?中科院回應了
    日前,有媒體報導稱中國科學院計算技術研究所(以下簡稱中科院計算所)計算機體系結構國家重點實驗室表示,由該實驗室編譯自主導研發的國產程式語言「木蘭」(Mulan:Module
  • 國產程式語言木蘭被質疑換皮Python:當事人承認誇大、道歉
    近日有報導稱,中科院計算所的計算機體系結構國家重點實驗室編譯組成功研發了國產程式語言「木蘭」(Mulan),主要面向物聯網應用,可以成倍地提高應用執行效率,並且全面支持國產龍芯處理器。
  • 木蘭程式語言重現:支持乘法省略乘號(2長+3寬)等等
    重現功能乘法可省乘號一個數和某些表達式相乘時,支持省略乘號。這個設計應該是為了接近數學算式的表示。此語法 Python 並不支持。測試木蘭測試用例:1700 -> 1714未變運行測試.py,檢驗所有木蘭測試代碼片段:156test語法樹.py,確保生成的語法樹與原始版本一致:67實現:2169 -> 2200分析器/語法分析器.py:881
  • 中科院計算所發布木蘭程式語言體系 換湯不換藥?
    隨著人機互動頻次的日益增長,編程正成為這個時代「第三重要的基礎學科」。程式語言也和作業系統一樣,是信息技術領域重要的系統軟體。並且,信息技術行業的生態環境也往往是從程式語言開始建立的。一旦某個程式語言在一個領域建立了自己的生態系統,那麼它的地位幾乎很難撼動。
  • 首款國產程式語言「木蘭」換皮Python的三大疑點
    1月15日,劉雷召開了「木蘭」程式語言體系發布會。劉雷表示,木蘭由中過科學院計算技術研究所(簡稱:中科院計算所)團隊自主設計、開發和實現程式語言研發,主要應用領域包括人工智慧和物聯網應用。
以發布會的基調來看,木蘭承載著及其重要的地位,為下一代重要應用。但是發布會之後未出三天,質疑聲一浪高過一浪。
  • 同行12年,不知木蘭裙下有Python:花木蘭程式語言騙局被揭破
    1月15日,中國科學院計算技術研究所通過媒體宣布,擁有自主智慧財產權的「花木蘭」程式語言,已經由一家被稱為「中科智芯」的公司研製完成,根據媒體的報導,「花木蘭」是一種由中國科學院計算技術研究所自主設計,開發和實現的程式語言。報導說,該程式語言支持的編譯器和集成開發工具也完全由團隊實施,目前已經能夠實現全平臺的應用設計。