差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
最新のリビジョン両方とも次のリビジョン
programming:nim:parse_parameter [2018/10/23] ikatakosprogramming:nim:parse_parameter [2018/10/24] ikatakos
行 1: 行 1:
-======parseopt, parsecfg - Nim======+======parseopt, parsecfg - Nimでの実行時設定======
  
 アプリケーションに実行時設定を渡す方法としては大きく分けて「コマンドライン引数」か「設定ファイル」の2つがある。 アプリケーションに実行時設定を渡す方法としては大きく分けて「コマンドライン引数」か「設定ファイル」の2つがある。
  
-それらを受け取るプログラムを書く際、最近の言語なら、いずれも解析ライブラリが存在している。Nimもご多分に漏れずデフォルトでモジュールが存在する。+最近の言語なら、いずれも解析ライブラリが存在している。Nimもご多分に漏れずデフォルトでモジュールが存在する。
  
   * Nim ver.0.19.0   * Nim ver.0.19.0
行 17: 行 17:
  
 Nimの方はそこまで親切では無いが、とりあえずパースしてキーワードと値(あれば)をセットにするまでやってくれる。後はイテレートして適宜取得する感じ。必要な指定が無いとか重複してるとかのチェックは自分で実装する必要がある。 Nimの方はそこまで親切では無いが、とりあえずパースしてキーワードと値(あれば)をセットにするまでやってくれる。後はイテレートして適宜取得する感じ。必要な指定が無いとか重複してるとかのチェックは自分で実装する必要がある。
 +
 +ただ、正直これなら最初から自分で実装しても大きくは変わらない……くらいの機能である点は否めない。
  
 ^構文^種別^キー^値^ ^構文^種別^キー^値^
行 76: 行 78:
   * [[https://github.com/docopt/docopt.nim|docopt/docopt.nim: Command line arguments parser that will make you smile (port of docopt to Nim)]]   * [[https://github.com/docopt/docopt.nim|docopt/docopt.nim: Command line arguments parser that will make you smile (port of docopt to Nim)]]
  
-こちらは第三者モジュール本家はPythonだが、Nim移植版が存在する。+こちらは第三者モジュール本家はPythonだが、Nim移植版が存在する。 
 + 
 +  > nimble install docopt
  
-docoptは「所定のルールに従ったヘルプ文字列与えることで、パーサを組み立てる」という逆転の発想のライブラリ。+docoptは「所定のルールに従ったヘルプ文字列与えることで、パーサを組み立てる」という逆転の発想のライブラリ。
  
 より複雑なルールを持ったパーサを、直感的にわかりやすい記法で作成できるので、標準モジュールのparseopt以上のことがしたくなったらこちらが楽。 より複雑なルールを持ったパーサを、直感的にわかりやすい記法で作成できるので、標準モジュールのparseopt以上のことがしたくなったらこちらが楽。
行 91: 行 95:
   * [[https://nim-lang.org/docs/parsecfg.html#loadConfig%2CStream%2Cstring|Module parsecfg]]   * [[https://nim-lang.org/docs/parsecfg.html#loadConfig%2CStream%2Cstring|Module parsecfg]]
  
-ini等でよくある記法の設定ファイルをパースできる。上記の公式解説に例もありわかりやすい。+ini等でよくある、セクション毎に分かれた設定ファイルをパースできる。上記の公式解説に例もありわかりやすい。
  
   [Section]   [Section]
行 109: 行 113:
 変数は使えない模様。 変数は使えない模様。
  
-また、Windowsのパス区切り文字である「:」はキーと値の区切り文字として解釈されバグる恐れがあるため、''""''でくくる必要がある。+また、Windowsのドライブパスに含まれる「:」はキーと値の区切り文字として解釈されバグる恐れがあるため、全体を''""''でくくる必要がある。
  
 さらに「\」はエスケープ文字として扱われるため、''r"string"''でエスケープ無効とするか、''\\''と2つ重ねる必要がある。 さらに「\」はエスケープ文字として扱われるため、''r"string"''でエスケープ無効とするか、''\\''と2つ重ねる必要がある。
  
-.ini記法のパーサは様々な言語に存在しても、この辺の細かな文字列の解釈の違いは言語毎に異なるため、ややこしいね+.ini記法のパーサは様々な言語に存在しても、この辺の細かな文字列の解釈の違いは言語毎に異なるため、言語毎に留意が必要
  
  
  
programming/nim/parse_parameter.txt · 最終更新: 2018/10/24 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0