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.

posted @ 2022-12-24 21:23  Fun_with_Words  阅读(71)  评论(0编辑  收藏  举报









 张牌。