Pythonのshlexライブラリに相当するLuaはありますか?
4 に答える
LPegも参照してください。
LuaParseというプロジェクトへの参照を見つけました:
LuaParseには、汎用の純粋なLuaレクサーであるBlex、純粋なLua Luaパーサーであるlparse、およびさまざまなユーティリティ関数とプロトタイプパッケージ管理システムが含まれています。
多分これはあなたのニーズを満たしてくれるでしょう。
目標がシェルのような言語 (shlex の実際の設計目標のように見える) を解析することである場合、lhf が示唆するようにLPegで文法を書くことがおそらく正しい答えです。しかし、シェルが実際に従う階層化された引用ルールの寄せ集めを完全に実装する文法を書くことはそれほど簡単ではありません。すべての有効な(またはさらに悪い) スクリプトを正しく解析することを期待していない限り、便利な文法を書くのは簡単です。/bin/sh
csh
構成ファイルやアプリケーション スクリプト用の実用的な「小さな言語」を実際に作成することが目標である場合、Lua 自体はすでにその言語に非常に近いものになっていることをお勧めします。もともとデータ記述を念頭に置いて設計されており、そのパーサーはかなり大きなデータ宣言の処理にも非常に長けています。このように Lua を使用する方法の一例については、PiL のセクション 10.1 を参照してください。後の第 25 章では、構成の特定のユースケースに対する Lua とより大きなアプリケーションの統合について説明し、いくつかのアプローチを示します。
およびMetaluagg
のモジュールも参照してください。mlp
clopts
これらは「まったく」Lua ではありませんが (Metalua は別の言語であるため)、いくつかの有用な洞察を提供する可能性があります。また、Metalua コードはプレーンな Lua バイトコードにコンパイルされるため、再利用可能です。