awk4j (AWK for Java Platform) - home

awk4j (AWK for Java Platform)

awk4j とは

AWK~plus Scripting
screenshot

The AWK~plus Programming Language

AWK~plus は、プログラム言語AWK言語仕様と GNU GAWKの主要な拡張機能、 型推論と関数型プログラミングによるシンプルな外観、 言語レベルでのロックフリーでスレッドセーフな並列プログラミング、 動的と静的な型システムをサポートする 次世代スクリプト実行環境です。

最新の言語仕様を実装した AWK~plusによる、新しいスクリプテイングの世界を体験ください。

AWK~plus Scripting for Android

AWK~plusインタプリタ環境を組み込んだランチャーは、 Android マーケットから入手可能です。

awk4j (AWK for Java platform)

awk4j は、 GNU AWK 互換の言語処理環境で、 AWKスクリプトを、中間言語としてのホスト言語 ( Java, JavaFX, JavaScript, BeanShell, Groovy, Python, Scala ) に変換するトランスレータ方式で動作します。

« awk4j environment »
AWK 言語 AWK コマンド (gawk, awk95など)
ホスト言語 Java JavaScript (JSE6) JavaScript (Rhino) JavaFX BeanShell Groovy Python Scala
トランスレータ AWK スクリプトを ホスト言語に変換するトランスレータ
インタプリタ - gij jrunscript Rhino interpreter - BeanShell interpreter Groovy interpreter Jython interpreter Scala interpreter
コンパイラ javac, dx gcj, javac javac - Rhino compiler javaFX compiler - Groovy compiler (Jython2.2.1) Scala compiler
実行環境 Android GCJ Java (JSE6) Java (JRE6)

Tips

awk4j の入力ファイルは、 URL 指定が可能で 一般ファイルと同じインターフェイスで読み込みが可能。 詳細は、 さあ始めよう を参照。

世界最短 1文字スクリプト、 ホームページをワンライナー (one-liner) で閲覧。
スクリプト '1' は、C言語のTRUEと同じ意味。
'1==1 {print $0;}' または '{print $0;}' の省略形で入力データを無条件に出力する。

$ AWK4J -e '1' 'http://awk4j.sourceforge.jp/home.html#utf-8'

ちなみに 2文字なら 'NF'。
'0!=NF {print $0;}' の省略形で入力データのフィールド数が 0 でなければ出力する。

$ AWK4J -e 'NF' 'http://www.yahoo.co.jp/#utf-8'

Scala サポート (1文字スクリプトのGUI版)。

#% import scala.swing.{MainFrame, ScrollPane, Label}
  { basename = FILENAME; result = result $0
}
END { IGNORECASE = 1
    gsub(/<(!|meta)[^>]+>/, "", result); sub(/^.*<html[^>]+>/, "<html>", result)
    sub(/<head>/, "<head><base href='" basename "' />", result)
#%  val top = new MainFrame {
#%    preferredSize = new java.awt.Dimension(880, 480); title = "awk4j - Browser (Scala)"
#%    contents = new ScrollPane {
#%      contents = new Label(""+ result)
#%    }
#%  }
#%  top.pack()
#%  top.visible = true
}
#% override def run__ = onEDT__ // executed on the Swing event dispatching thread.

News

  • awk4j Android サポート - 2011/05/9
    ・ Android 3.0 での文字列リソース定義仕様の変更に対応
  • AWK~plus 1.0.3 - 2010/11/13
    ライブラリを Scala 2.8.1 final に更新
  • AWK~plus 1.0.2, awk4j 1.6.4 - 2010/10/30
  • `The AWK~plus Programming Language' を新規リリース - 2010/9/11
  • 1.6.3 - 2010/3/22
    ・ Android 2.1 r1 SDK, Groovy 1.7.1, JavaFX 1.2.3 SDK, Scala 2.8.0.Beta1-prerelease - 動作確認
  • 1.6.2 - 2009/12/5
    ・ Android 2.0 r3 SDK, Gcj 4.4.1 - 対応
    ・ Groovy 1.7-RC-1, Jython 2.5.1 final, Scala 2.7.7 final - 動作確認
  • 1.6.1 - 2009/10/4
    ・ Scala 2.7.7 RC1 対応 (Scala サポート)
       トランスレータ出力コードの最適化, for(in){break/continue} 対応
  • 1.6.0 - 2009/9/26
    Scala - HOST言語として新規サポート (Scala サポート)
    Android 1.6 r1, JavaFX 1.2.1, Groovy 1.6.4, Python(Jython) 2.5.1 rc3 - 動作確認
  • 1.5.7 - 2009/8/18
    リファクタリング実施による安定化バージョン
  • 1.5.6 - 2009/7/20
    Android 1.5 SDK, Release 3, Python(Jython) 2.5.0 final - 動作確認
    GCJサポート - リファクタリングの実施により Javaプラットフォームとの互換性が向上
  • 1.5.5 - 2009/6/7
    JavaFX 1.2 SDK - New, Linux サポート (JavaFX サポート)
    Android 1.5 SDK, Release 2, Groovy 1.6.3, Python(Jython) 2.5rc3, Rhino 1.7R2 - 動作確認
    トランスレータによる正規表現の変換により GNU AWK との互換性が更に向上した
  • 1.5.4 - 2009/5/17
    Android 1.5 SDK, Release 1 - 日本語表示に関する問題対応 (Android サポート)
    Python(Jython) 2.5rc2 - PythonスクリプトのUNICODE化による日本語対応 (Python サポート)
    パフォーマンスチューニングの実施 (GCJ サポート)
  • 1.5.3 - 2009/3/15
    Android 1.1 SDK, Release 1 対応 (Android サポート)
  • 1.5.2 - 2009/2/28
    JavaFX 1.1 SDK, 対応
  • 1.5.1 - 2009/1/9
    ドラッガブル アップレット サポート (Java, JavaFX, Python)
  • 1.5.0 - 2008/12/21
  • 1.4.1 - 2008/11/10
    Android 1.0 SDK. Release 1, SQLite JDBC サポート (Android サポート)
  • 1.4.0 - 2008/10/19
    Android 1.0 SDK. Release 1 対応 (Android サポート)
  • 1.3.3 - 2008/9/15
    マンデルブロ集合サンプルを修正 (キャッシュ制御の見直しによるズーム性能改善) (JavaFX サポート)
  • 1.3.2 - 2008/9/11
    JavaFX プレビュー版 (javaFX sdk-1.0-pre1) 対応、 Linuxは不可(SDKなし) (JavaFX サポート)
  • 1.3.1 - 2008/4/25
    サンプルおよびドキュメントを改定 (JavaFX サポート)
    Linux, Ubuntu 8.04, GCJ 4.2.3 で動作確認 (GCJ サポート)
  • 1.3.0 - 2008/4/1
    JavaFX (JavaFX Script 20071008) に対応 (JavaFX サポート)
    AWKスクリプトが JavaFX で実行可能となった
  • 1.2.0 - 2008/2/19
    GCJ (GNU Compiler for Java) に対応 (GCJ サポート)
    AWKスクリプトを Javaソースに変換し、ネイティブマシンコードでの実行が可能になった
  • 1.1.0 - 2007/10/22
    一般ファイルインターフェイスでの SQL文実行 (SQL スクリプティング)
    帰ってきた一行野郎 AWK4J -e '1' 'jdbc:somerdb:somedb;;SELECT * FROM TABLE'
  • 1.0正式版 - 2007/09/09
    Linux Ubuntu (ウブントゥ) Unicode 環境での動作を確認
    ネットワーク通信をサポートする拡張機能の追加 (言語仕様および LL. じゃんけん2.0対戦 参照)
  • 1.0.beta9 - 2007/07/31
    ライセンスを The GNU General Public License Version 3(GPLv3) に変更
    ソケット通信機能 (TCP/IP, UDPソケット) を実装した
    ソケット通信をサポートするための拡張機能を実装 (スレッド, タイマー, コード変換など)
    サンプルに daytime, echo, http, Lightweight Language じゃんけん 2.0 対戦プログラムを追加
  • 1.0.beta8 - 2007/06/10
    Linux 環境の GNU AWK 互換のため printf で表示する指数部の最小表示桁数を可変とした
    [-]d.dddde±[d]dd 省略値は 2桁 ex. 3.4e+12 (プラトフォーム依存)
  • 1.0.beta7 - 2007/05/20
    プログラム構造の視覚化 サンプルとして、DOT言語(Graphviz) にて AWK構文解析部をグラフ化
  • 1.0.beta6 - 2007/05/04
    呼び出し元で配列操作を行っていない配列を、関数に渡す場合のスコープ問題を解消
  • 1.0.beta5 - 2007/05/02
    構文解析の問題を修正 (print $+i, $- -i, one != one = 1; など)
  • 1.0.beta4 - 2007/04/07
    switch文 および 組み込み変数 ERRNO の実装により GNU AWK との互換性を向上
    switch (expression) { case expression or パターン: statement [ default: statement ] }
  • 1.0.beta3 - 2007/03/15
    トランスレータが副作用を伴う配列代入文を正しく変換するよう修正
    ex. array[--ix] += value; 代入演算子: (+= -= *= /= %= ^= **=)
  • 1.0.beta2 - 2007/03/08
    ビット操作関数 (and, or, xor, compl, lshift, rshift) を実装 (GNU AWK互換)
    AWKスクリプトで 8, 16進の数値定数の定義を可能とした (GNU AWK互換)
    正規表現 /./ が改行 "\n" にマッチするようになった (POSIX仕様)
  • 1.0.beta1 初リリース - 2007/02/28