Translator
awk4j
(AWK for Java Platform)
AWKスプリプトからホスト言語へ変換する
- Awk2BeanShell : BeanShell言語用トランスレータ
- Awk2Groovy : Groovy言語用トランスレータ
- Awk2Java : Java言語用トランスレータ
- Awk2JavaFX : JavaFX言語用トランスレータ
- Awk2JavaScript : JavaScript言語用トランスレータ
- Awk2Python : Python言語用トランスレータ
- Awk2Scala : Scala言語用トランスレータ
${JAVA} org.awk4j.translator.Awk2Java
[ options ] [ AWK Script[s]
] [ >output ]
- 入力 AWK Script は、 複数ファイルに分割可能 (出現順に結合する)
- パターン (BEGIN, END) は、複数回 記述して良い (出現順に結合する)
- 入力 AWK Script は、実行している プラットフォームのコード。
他のコードを使用する場合は、 入力ファイル名を URL 形式で指定する (awk4j 拡張)。
file://...#codeset または http://...#codeset
例.
$ java -cp ../lib/awk4j.jar
org.awk4j.translator.Awk2Python -strpfx u -d . Script.awk
$ java -cp ../lib/awk4j.jar
org.awk4j.translator.Awk2Java -hostscript1
-extends javax.swing.JApplet Script.awk >Script.java
- -package # パッケージ指定
(Java, JavaFX, JavaScript, Groovy, Scala)
- []
- -extends # クラスの継承(拡張)
Class Extends (Java, Scala)
- []
- -implements #
インターフェイスの実装 Interface Implements (Java) ,
ミックスイン合成 (Scala)
- [Runnable]
- -srcname #
スクリプト名称 (出力クラス名を明に指定する)
- [file name]
- --source #
コマンドラインでスクリプトを直接記述
- []
- -d #
ホスト言語ファイルを出力するディレクトリ
- [.]
- -encode #
出力ファイルの文字コードセットを指定する (標準出力は指定不可)
- []|utf-8..
- -hostscript # HOST
SCRIPT を有効化
- [0]|1
- -strpfx #
Jython で文字列を UNICODE 指定する
- (u'...')
- -swing #
AWT イベントディスパッチスレッドで非同期的に実行するように指定する
(Java, Scala)
- [0]|1
- -include
#
インクルードライブラリのディレクトリ位置
- [../lib/include]
- -xref
#
クロスリファレンス出力
- [1]|0
# awk4j を展開(インストール)したディレクトリ
+-- lib
#
実行時ライブラリ
+-- include
awk4j.jar
+-- somedir
#
カレントディレクトリ
コンパイル 例.
$ javac -cp ../lib/awk4j.jar
-d bin Script.java
実行 例.
$ java -cp bin;../lib/awk4j.jar
Script [args]
トランスレータ起動オプションの埋め込みとホスト言語の生成順序
package
#% HOST
SCRIPT 先頭ブロック (include など)
class
srcname
extends implements
{
global変数定義 (クラス変数)
function ブロック
#% HOST
SCRIPT 関数(メソド)ブロック
アクション ブロック
BEGIN ブロック
END ブロック
}
xref
(クロスリファレンス)
Note: 定義順序に意味を持つホスト言語 (Python など)
を考慮して上記の生成順となっている。
awk4j 拡張機能の ファイルURL 指定 (file://...#codeset) によりソースコード変換が可能であり
Translator は -encode オプション指定によりコード変換をおこなう。
この機能を利用した変換ツールとしての実装例を以下に示す。 (sample/src/Encode8.awk)
${JAVA} Encode8
[r=\r\n] [c=charset] [d=outdir] [o=outfile] [python=1] infile[s]
[起動オプション]
r=出力改行コード
(省略時はプラットフォーム改行コード)
c=出力文字セット
d=出力ディレクトリ (省略時は'.')
o=出力ファイル名
(省略時は入力ファイル名と同じ)
python=1 Pythonコード指定 "#
-*- coding:
文字セット -*-" を設定する
note: サンプル ではpython スクリプト の UNICODE 化 と
文字コード変換コマンド nkf の代わりに使用している。
詳細は、 sample/makepy, sample/makead ... 参照