このような操作を実行する方法を知りたい
$T = 25 C;
@specs = (273.15 K, 23 bar, 2.0 mol/s);
それらをコンパイルします。私は彼らの結果が何であるか、またはそれがどのように実装されているかについてうるさいわけではありません. 私の目標は、従来の後置単位注釈を使用した物理量の式を、それらの単位の perl 式にコンパイルできるようにすることです。
カスタムの解析手法を使用する必要があると思いますが、生のソースに正規表現フィルターを適用するだけでなく、既存の機能や解析モジュールを使用することをお勧めします。
Parse::Keywordは有望に思えましたが、後置操作を解析できるかどうかはわかりません。また、非推奨であると主張しています。
編集: Perl の構文上のコーナー ケース ("25 (J/K)" など) の正規表現を書きたくないので、可能であればソース フィルターを避けたいと思います。
ここで Perl が生成するエラーは次のことを示しています。
perl -E "25 C"
Bareword found where operator expected at -e line 1, near "25 C"
(Missing operator before C?)
Perl が数値リテラルの後に演算子を検出する場所にフックする必要があるようです。
Devel::Declareは後置演算子を追加できますか? もしそうなら、どのように?