gawk 4.0.1的源码(清减版)
https://files.cnblogs.com/files/blogs/714801/gawk-master.7z 350KB
在 GitHub - gvlx/gawk: forked from git://git.savannah.gnu.org/gawk.git 下载的源码
下载安装了mingw,configure --disable-lint --disable-dependency-tracking --disable-largefile --disable-rpath --disable-nls
然后可以用tdm gcc编译。Makefile可以用NMAKE.exe.
O=array.o awkgram.o builtin.o cint_array.o command.o debug.o dfa.o eval.o ext.o field.o floatcomp.o gawkapi.o gawkmisc.o getopt.o getopt1.o int_array.o io.o main.o mpfr.o msg.o node.o profile.o random.o re.o regex.o str_array.o symbol.o version.o CFLAGS=-DHAVE_CONFIG_H -DGAWK -I. -DNDEBUG -Os gawk.exe : $(O) gcc -o $@ $(O) strip -s $@ .c.o: gcc $(CFLAGS) -c $< clean: -@del/q *.o -@del/q gawk.exe dep: gcc $(CFLAGS) -MM *.c >dep.txt include dep.txt
NAMKE.exe不支持-include (dep.txt不存在是不报错)。
改了.y文件的话,可以用单独的bison,也可以用mingw里的。
- bison -o awkgram.c awkgram.y 生成的分析函数为yyparse, yy是默认的prefix
- bison -o command.c -p zz command.y 生成的分析函数为zzparse [可以删掉]
minimal awk (awk)这个名字已经被占了。试了下支持的语法太简单。学算法/短程序用gawk挺好 可以改个a语言解释器出来:a t.a
关于fatal: print to "standard output" failed (No space left on device),可以把输出重定向到文件。在builtin.c里的efwrite里,把fwrite(ptr, size, count, fp)换成write(fileno(fp), ptr, count)后可以了。还不知道原因。
main.c里的一大堆setlocale换成setlocale(LC_ALL, "")一句没事。If locale is an empty string, "", each part of the locale that should be modified is set according to the environment variables.The details are implementation-dependent.