木蘭プログラミング言語再現——範囲文法「下限..上限by間隔」、再構築
1727 ワード
Pythonをサポートするrangeのほか、木蘭は以下の等価文法をサポートしている.個人的には、このような文法はもっと直感的に読みやすいと思います.
クローズドゾーン
出力:
左閉右開区間:
出力:
対応する帯域間隔の数:
これは今週再現された文法です.
出力:
左閉右開区間:
出力:
コード統計
次の主な部分のコード行数統計は、先週->今週の形式です.テスト 木蘭試験例:900->1068 変化なし
実装:1720->1898 変化なし
by構文を追加するだけではそれほどコード量はありません.主に構文解析器の元の文字列フォーマットの構文規則です.たとえば、次のようにします.
各構文要素を列挙タイプに抽出します.
対応する構文規則は次のように変更されました.
可読性の低下は許容され、少なくとも誤記の機会を減らすことができる.
ユーティリティ
開発時にVSコードの下の中国語コードを使って急速にプラグインを補完し、各種のプログラミング言語をサポートし、中国語に対するIDE補完機能を強化し、中国語コードを書く時に多くの手間を省くことができる.
クローズドゾーン
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
コード統計
次の主な部分のコード行数統計は、先週->今週の形式です.
.py
、すべての木蘭テストコードフラグメントを検証:143->144 test .py
、生成された構文ツリーが元のバージョンと一致していることを確認します:63 / .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補完機能を強化し、中国語コードを書く時に多くの手間を省くことができる.