Translator

awk4j (AWK for Java Platform)

Translator

AWKスプリプトからホスト言語へ変換する

起動コマンド

${JAVA} org.awk4j.translator.Awk2Java [ options ] [ AWK Script[s] ] [ >output ]

例.
$ 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 ... 参照


Draggable Applet
  1. Translator
  2. ソースコード変換