木蘭プログラミング言語再現——範囲文法「下限..上限by間隔」、再構築


Pythonをサポートするrangeのほか、木蘭は以下の等価文法をサポートしている.個人的には、このような文法はもっと直感的に読みやすいと思います.
クローズドゾーン
for   in 0..2 {
  println( )
}

出力:
0
1
2 

左閉右開区間:
for   in 0..<2 {
  println( )
}

出力:
0
1 

対応する帯域間隔の数:
これは今週再現された文法です.
for   in 4..-1 by -2 {
  println( )
}

出力:
4
2
0

左閉右開区間:
for   in 0..<4 by 2 {
  println( )
}

出力:
0
2 

コード統計
次の主な部分のコード行数統計は、先週->今週の形式です.
  • テスト
  • 木蘭試験例: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('      :             ')

    各構文要素を列挙タイプに抽出します.
        @unique
        class   (Enum):
                = 'expr'
                  = 'range_expr'
            ...

    対応する構文規則は次のように変更されました.
    @     .production(  .     .  (  .   ,     ,   .   ))

    可読性の低下は許容され、少なくとも誤記の機会を減らすことができる.
    ユーティリティ
    開発時にVSコードの下の中国語コードを使って急速にプラグインを補完し、各種のプログラミング言語をサポートし、中国語に対するIDE補完機能を強化し、中国語コードを書く時に多くの手間を省くことができる.