Compatibility
awk4j
(AWK for Java Platform)
GNU AWK との互換性検証のため、 gawk 3.16
に含まれる検証用スクリプト (./test ディレクトリのテスト
268 ケース) の確認結果を以下に示す。
無修正で実行可能なもの
GNU AWK の実行結果と
標準出力データの内容 (バイナリ比較) が一致するもの (182
ケース)
addcomma,
anchgsub,
arrayprm2,
arrayprm3,
arrayref,
arrymem1,
arryref2,
arynasty,
arynocls,
aryprm8,
arysubnm,
asgext,
asort,
asorti,
backgsub,
backw,
binmode1,
clsflnam,
compare,
compare2,
concat1,
concat2,
concat3,
concat4,
convfmt,
datanonl,
delarpm2,
delarprm,
dynlj,
eofsplit,
exitval1,
fldchg,
fldchgnf,
fmttest,
fordel,
forsimp,
fsbs,
fsrs,
fsspcoln,
fstabplus,
funsemnl,
gensub,
gensub2,
getline,
getline2,
getline3,
getlnbuf,
getnr2tb,
getnr2tm,
gnuops2,
gnuops3,
gnureops,
gsubtest,
gsubtst2,
gsubtst3,
gsubtst4,
gsubtst5,
hex,
hsprint,
icasers,
igncdym,
igncfs,
ignrcas2,
ignrcase,
inputred,
intest,
intformat,
intprec,
iobug1,
leaddig,
leadnl,
lintold,
litoct,
longsub,
longwrds,
manglprm,
manyfiles,
math,
membug1,
messages,
minusstr,
mmap8k,
mtchi18n,
nasty,
nasty2,
negexp,
nested,
nfldstr,
nfset,
nlfldsep,
nlinstr,
nlstrina,
noeffect,
nofmtch,
noloop1,
noloop2,
nondec,
nonl,
nors,
nulrsend,
numindex,
numsubstr,
octsub,
ofmt,
ofmtbig,
ofmtfidl,
ofmts,
onlynl,
opasnidx,
opasnslf,
paramtyp,
parse1,
parsefld,
pcntplus,
pipeio1,
pipeio2,
posix,
prdupval,
prec,
printf0,
printf1,
printfloat,
printlang,
prmreuse,
prt1eval,
prtoeval,
psx96sub,
rebuf,
redfilnm,
regeq,
reint,
reint2,
reparse,
resplit,
rs,
rsnul1nl,
rsnulbig,
rsnulbig2,
rsstart1,
rstest1,
rstest2,
rstest3,
rstest4,
rstest5,
rstest6,
rswhite,
shadow,
sort1,
sortempty,
space,
splitargv,
splitarr,
splitdef,
splitvar,
splitwht,
sprintfc,
strcat1,
strnum1,
strtod,
strtonum,
subamp,
subi18n,
subsepnm,
subslash,
substr,
swaplns,
switch2,
tweakfld,
uninit2,
uninit3,
uninit4,
uninitialized,
wideidx,
wideidx2,
widesub,
widesub2,
widesub3,
widesub4,
wjposer1,
zero2,
zeroe0,
zeroflag
言語仕様の範囲内で結果が一致するものもの
標準出力データの内容は不一致であるが言語仕様の範囲内で正しいもの (10 ケース)
-
argarray,
argtest
- ARGV[0]
の内容は、実行コマンド(文字列)ではない
Note: AWK(C言語インターフェイス)
では実行プログラム名が格納されるが Java にはその概念はない
-
fnarydel,
fnparydl
- 連想配列の添字が選ばれる順序は実装方式に依存する
for
(var in array) print var
- double1,
double2,
fmtspcl,
inftest,
ovrflow1,
rand
- 浮動小数点ライブラリの精度、乱数値は実装ライブラリに依存する
ソケット通信 (4 ケース)
-
inetdayt,
inetdayu,
inetecht,
inetechu
- IP および PORT アドレスをテスト環境に合わせて設定する
言語仕様上で非互換となるもの
互換性のない正規表現 (4 ケース)
♪
awk4j の正規表現は GNU AWK 仕様を全てカバーするが
衝突する仕様は切り捨てている
- back89
- 正規表現で使用する 8 進値は 0 で始める必要がある (前方参照指定 \1 ~ \9 と衝突)
- funstack
- 正規表現中の "{" は、メタキャラクタ (範囲指定 {min, max} と衝突)
-
tradanch
- Standard Unix AWK 正規表現との互換性確認 (過去仕様との互換性なし)
-
reindops
- エスケープなしのメタキャラクタ使用 /^+/ (一般的には /\+/)
国際化対応 (i18n) 上の問題 (4 ケース)
-
localenl
- GNU AWK で使用している MBCS(MultiByte Character Set) 固有の
LOCALE 問題
-
rebt8b1,
regx8bit
- UNICODE と MBCS 方式で
文字コード長と表示文字幅に差異がある場合 ("ú" など) の問題
- rebt8b2
- コード系依存のバイナリデータによる文字列置換 (文字コード依存)
Unix 環境に依存した機能の利用 (9 ケース)
♪
プラットフォームに強く依存する機能は実装していない
-
devfd,
devfd1,
devfd2
- ファイル記述子(4) "/dev/fd/4" 以上を指定したファイルアクセス
- exitval2
- 外部プロセスが shell 環境で動作していることを前提とした組み込み関数 read の利用
-
fflush,
pid,
poundbang,
regtest
- 環境依存の問題確認
-
getlnhd
- 外部プロセスが shell 環境で動作していることを前提としたヒヤドキュメント機能 <<
の利用
♭ 未実装の GNU AWK 独自拡張機能
(12 ケース)
-
childin
- 子プロセスで、親(自分自身)の標準入力から入出は未サポート
"cat" | getline
-
clos1way
- プロセスに対する双方向パイプ |% 入出力は未サポート
-
fieldwdth,
fsfwfs,
fwtest,
fwtest2
- FIELDWIDTHS、 固定長のフィールド入力機能 (ASCII
コード以外では期待通りの動作とならないため未サポート、
スクリプトでの自作を推奨)
-
match1,
match2
- match(string, regexp , array) マッチした部分文字列配列の取得
-
nondec2
- --non-decimal-data によるバイナリデータ設定機能
-
procinfs
- 未サポートの拡張機能 PROCINFO の利用
- strftime,
strftlng
- 互換性のない時間関数の変換書式 (%b など) の利用
GNU AWK 拡張仕様で適切でないと思われるもの
♭ GNU AWK 拡張仕様で適切でないと思われるもの
(4 ケース)
-
clobber
- 開いている入力ストリームへの上書きを許す
-
icasefs
- IGNORECASE 設定時に FS
の値を内部記憶、その後の変更を無視する
-
rsstart2,
rsstart3
- RS の設定によりレコード長が 0 となる場合の NR 値
検証対象外
構文解析機能の確認
GNU AWK で AWK言語仕様エラーを確認するためのスクリプト (35 ケース)
arrayparm,
arryref3,
arryref4,
arryref5,
aryprm1,
aryprm2,
aryprm3,
aryprm4,
aryprm5,
aryprm6,
aryprm7, defref,
delfunc,
fnamedat,
fnarray,
fnarray2,
fnaryscl,
fnasgnm,
fnmisc,
funsmnam,
gsubasgn,
lint,
nfneg,
nofile,
noparms,
paramdup,
parseme,
printfbad1,
prmarscl,
scalar,
sclforin,
sclifin,
synerr1,
synerr2,
unterm
GNU AWK の構文解析およびコンパイルオプションの確認をおこなうもの (4 ケース)
awkpath,
badargs,
mixed1,
whiny
Gawk
- GNU Project - GNU AWK 本家