📄 atari.patches
字号:
X***************
X*** 520,526 ****
X if ( (skelfile = fopen( skelname, "r" )) == NULL )
X lerrsf( "can't open skeleton file %s", skelname );
X
X! (void) mktemp( action_file_name );
X
X if ( (temp_action_file = fopen( action_file_name, "w" )) == NULL )
X lerrsf( "can't open temporary action file %s", action_file_name );
X--- 554,562 ----
X if ( (skelfile = fopen( skelname, "r" )) == NULL )
X lerrsf( "can't open skeleton file %s", skelname );
X
X! #ifndef ATARI && LATTICE
X! (void) mktemp( action_file_name );
X! #endif
X
X if ( (temp_action_file = fopen( action_file_name, "w" )) == NULL )
X lerrsf( "can't open temporary action file %s", action_file_name );
X***************
X*** 566,571 ****
X--- 602,640 ----
X }
X
X
X+ flexinfo(status)
X+ int status;
X+ {
X+ fprintf(stderr,"Syntax : FLEX inp_file\n");
X+ fprintf(stderr,"Function: fast lexical analyzer generator V%s\n",flex_version);
X+ fprintf(stderr,"Options : a dir_path : directory path for temporary files\n");
X+ fprintf(stderr," - b : generate backtracking information to lex.backtrack\n");
X+ fprintf(stderr," - c : compressed table, no equiv., no meta equiv.classes\n");
X+ fprintf(stderr," e : equivalence classes\n");
X+ fprintf(stderr," F : fast table\n");
X+ fprintf(stderr," |f : full table\n");
X+ fprintf(stderr," |m : meta equivalence classes\n");
X+ fprintf(stderr," - d : generate debugging scanner\n");
X+ fprintf(stderr," - F : fast table\n");
X+ fprintf(stderr," - f : full (not compressed) table\n");
X+ fprintf(stderr," - I : generate interactive scanner\n");
X+ fprintf(stderr," - i : generate case-insensitive scanner\n");
X+ fprintf(stderr," - L : supress #line directives\n");
X+ /* fprintf(stderr," - n hexnum : generate scanner using <hexnum> as newline char.\n");*/
X+ fprintf(stderr," - p : generate performance report to stderr\n");
X+ fprintf(stderr," - S skeleton_path : file path for skeleton file\n");
X+ fprintf(stderr," - s : suppress echo of unmatched scanner input to stdout\n");
X+ fprintf(stderr," - T : run flex in trace mode\n");
X+ #ifdef ATARI
X+ fprintf(stderr," - t : place result on stdout instead of lex_yy.c\n");
X+ #else
X+ fprintf(stderr," - t : place result on stdout instead of lex.yy.c\n");
X+ #endif
X+ fprintf(stderr," - v : print statistics of generated scanner\n");
X+ fprintf(stderr," default = -cem\n");
X+ exit(status);
X+ }
X+
X /* readin - read in the rules section of the input file(s)
X *
X * synopsis
/
echo x - scan.l_cdiff
sed '/^X/s///' > scan.l_cdiff << '/'
X*** Src_2.1/scan.l Thu Jun 30 19:42:00 1989
X--- scan.l Thu Jul 2 22:19:26 1989
X***************
X*** 125,132 ****
X
X {SCNAME} RETURNNAME;
X ^{OPTWS}\n ++linenum; /* allows blank lines in section 1 */
X! \n ++linenum; return ( '\n' );
X! . synerr( "illegal character" ); BEGIN(RECOVER);
X
X
X <C_COMMENT>"*/" ECHO; BEGIN(0);
X--- 125,136 ----
X
X {SCNAME} RETURNNAME;
X ^{OPTWS}\n ++linenum; /* allows blank lines in section 1 */
X! {OPTWS}\n ++linenum; return ( '\n' );
X! . {
X! synerr( "illegal character" );
X! fprintf(stderr,"Char : $%x\n",yytext[yyleng-1]);
X! BEGIN(RECOVER);
X! }
X
X
X <C_COMMENT>"*/" ECHO; BEGIN(0);
X***************
X*** 206,212 ****
X <SECT2>^{OPTWS}\n ++linenum; /* allow blank lines in section 2 */
X
X /* this horrible mess of a rule matches indented lines which
X! * do not contain "/*". We need to make the distinction because
X * otherwise this rule will be taken instead of the rule which
X * matches the beginning of comments like this one
X */
X--- 210,216 ----
X <SECT2>^{OPTWS}\n ++linenum; /* allow blank lines in section 2 */
X
X /* this horrible mess of a rule matches indented lines which
X! * do not contain '/','*'. We need to make the distinction because
X * otherwise this rule will be taken instead of the rule which
X * matches the beginning of comments like this one
X */
/
echo x - Makefile.tos
sed '/^X/s///' > Makefile.tos << '/'
X# make file for "flex" tool
X
X# @(#) $Header: Makefile,v 2.3 89/06/20 17:27:12 vern Exp $ (LBL)
X
X# Porting considerations:
X#
X# For System V Unix machines, add -DSYS_V to CFLAGS.
X# For Vax/VMS, add -DSYS_V to CFLAGS.
X# For MS-DOS, add "-DMS_DOS -DSYS_V" to CFLAGS. Create \tmp if not present.
X# You will also want to rename flex.skel to something with a three
X# character extension, change SKELETON_FILE below appropriately,
X# For Amiga, add "-DAMIGA -DSYS_V" to CFLAGS.
X#
X# A long time ago, flex was successfully built using Microsoft C and
X# the following options: /AL, /stack:10000, -LARGE, -Ml, -Mt128, -DSYS_V
X
X
X# the first time around use "make first_flex"
X
X# The following definitions must be set according to your compiler -
X# examples for a Lattice Compiler with GST assembler and TURBO C with
X# assembler are provided below and must just be updated (don't forget to
X# update the linker argument extension files (*.lnk,*.tlk), too) :
X#
X#CCPATH = path to compiler directory without trailing \
X#CHPATH = path to header files without trailing \
X#CC = filename of the compiler
X#CFLAGS = compiler option flags
X#CIEXT = extension of C sources that should be used for input filenames
X#ASMPATH = path to assembler directory without trailing \
X#ASM = filename of the assembler
X#AFLAGS = assembler option flags
X#AIEXT = extension of assembler sources that should be used for assembler
X# input filenames
X#AEXT = general assembler filename extension
X#LNKPATH = path to linker directory without trailing \
X#LINK = filename of the linker
X#LFLAG0 = first option (full pathname of C startupcode)
X#LFLAG1 = further options + option flag for argument extension filename
X#LFLAG2 = further options + option flag for output-filename
X#LNKEXT = extension of linker argument extension file
X#OIEXT = extension of objects that should be used for linker input files
X#OEXT = general object file extension
X
X# Lattice definitions
XCCPATH = d:\latt
XCHPATH = d:\latt\include
XCC = lc.ttp
XCFLAGS = -h -n -cw -cc -i$(CHPATH)\ -g$(CCPATH)\ -dLATTICE -dATARI
XCIEXT =
XASMPATH = d:\gst
XASM = assem.ttp
XAFLAGS = -nolist -errors errors.out
XAIEXT =
XAEXT = .asm
XLNKPATH = d:\gst
XLINK = ld.ttp
XLFLAG0 =
XLFLAG1 = -with
XLFLAG2 = -nolist -sec -mem 200 -prog
XLNKEXT = .lnk
XOIEXT =
XOEXT = .bin
X
X# Turbo definitions
X#CCPATH = d:\turbo
X#CHPATH = d:\turbo\include
X#CC = tcc.prg
X#CFLAGS = -GJMPRZ -H=$(CHPATH)\ -w- -DTURBO -DATARI
X#CIEXT = .c
X#ASMPATH = d:\turbo
X#ASM = mas.prg
X#AFLAGS =
X#AIEXT = .s
X#AEXT = .s
X#LNKPATH = d:\turbo
X#LINK = tlink.ttp
X#LFLAG0 = $(LNKPATH)\lib\tcstart.o
X#LFLAG1 = -I=
X#LFLAG2 = -O=
X#LNKEXT = .tlk
X#OIEXT = .o
X#OEXT = .o
X
X# Other definitions
X# (not used for Atari because of short argument string - defined in flexdef.h
X
XSKELETON_DIR = /usr/lib
XSKELETON_FILE = flex.skel
XSKELFLAGS = -DDEFAULT_SKELETON_FILE=\"$(SKELETON_DIR)/$(SKELETON_FILE)\"
X
X
XFLEX = d:\etc\flex.ttp
XFLEX_FLAGS = -is
XYACC = d:\etc\yacc.ttp
XRENAME = d:\bin\rename
XDEL = d:\bin\del
X
X# Internal definitions
XLNK = $(LNKPATH)\$(LINK)
X
XFLEXOBJS = \
X ccl$(OEXT) \
X dfa$(OEXT) \
X ecs$(OEXT) \
X gen$(OEXT) \
X main$(OEXT) \
X misc$(OEXT) \
X nfa$(OEXT) \
X parse$(OEXT) \
X scan$(OEXT) \
X sym$(OEXT) \
X tblcmp$(OEXT) \
X yylex$(OEXT)
X
XFLEX_C_SOURCES = \
X ccl.c \
X dfa.c \
X ecs.c \
X gen.c \
X main.c \
X misc.c \
X nfa.c \
X parse.c \
X scan.c \
X sym.c \
X tblcmp.c \
X yylex.c
X
Xflex : $(FLEXOBJS)
X $(LNK) $(LFLAG0) $(LFLAG1)flex$(LNKEXT) $(LFLAG2)flex.ttp
X
Xfirst_flex:
X cp initscan.c scan.c
X make $(MFLAGS) flex
X
Xparse.h parse.c : parse.y
X $(YACC) -d parse.y
X $(DEL) parse.c
X $(RENAME) y_tab.c parse.c
X $(DEL) parse.h
X $(RENAME) y_tab.h parse.h
X
Xscan.c : scan.l
X $(FLEX) $(FLEX_FLAGS) scan.l
X $(RENAME) lex_yy.c scan.c
X
Xscan$(OEXT) : scan.c parse.h flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) scan$(CIEXT)
X
Xmain$(OEXT) : main.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) main$(CIEXT)
X
Xccl$(OEXT) : ccl.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) ccl$(CIEXT)
X
Xdfa$(OEXT) : dfa.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) dfa$(CIEXT)
X
Xecs$(OEXT) : ecs.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) ecs$(CIEXT)
X
Xgen$(OEXT) : gen.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) gen$(CIEXT)
X
Xmisc$(OEXT) : misc.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) misc$(CIEXT)
X
Xnfa$(OEXT) : nfa.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) nfa$(CIEXT)
X
Xparse$(OEXT) : parse.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) parse$(CIEXT)
X
Xsym$(OEXT) : sym.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) sym$(CIEXT)
X
Xtblcmp$(OEXT) : tblcmp.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) tblcmp$(CIEXT)
X
Xyylex$(OEXT) : yylex.c flexdef.h
X $(CCPATH)\$(CC) $(CFLAGS) yylex$(CIEXT)
X
Xflex.man : flex.1
X nroff -man flex.1 >flex.man
X
Xlint : $(FLEX_C_SOURCES)
X lint $(FLEX_C_SOURCES) > flex.lint
X
Xdistrib :
X mv scan.c initscan.c
X chmod 444 initscan.c
X $(MAKE) $(MFLAGS) clean
X
Xclean :
X rm -f core errs flex *$(OEXT) parse.c *.lint parse.h flex.man tags
X
Xtags :
X ctags $(FLEX_C_SOURCES)
X
Xvms : flex.man
X $(MAKE) $(MFLAGS) distrib
X
Xtest :
X $(FLEX) $(FLEX_FLAGS) scan.l
X $(RENAME) lex_yy.c scan.ctest
X cmp scan.c scan.ctest
X
/
echo x - Readme2
sed '/^X/s///' > Readme2 << '/'
XThe changes: (1.7.89 RAL)
X
X - Bug fix: The original flex didn't like trailing spaces in exclusive start
X condition lists ! If you add an trailing space to line 68 in scan.l
X
X "%x SECT2 SECT2PROLOG SECT3 CODEBLOCK PICKUPDEF SC CARETISBOL NUM QUOTE "
X
X you get a misleading error message:
X
X "Syntax error at line 69: bad start condition list"
X
X This bug can either be fixed in parse.y or in scan.l . I have chosen the
X last because there the fix is minimal: Just change the rule (line 128)
X
X "\n" to "{OPTWS}\n"
X
X - Enhancements:
X - new option "-?" that provides some help information about the other
X flags (main.c)
X - new option "-aTMPPATH" that allows a redefinition of the standard
X path for the temporary file (this might be rather large >200k if
X F,f options are selected). (main.c, flexdef.h (l.376))
X - hexdump of illegal characters -- this proved to be a useful debugging
X tool especialy if invisible control characters occur which weren't
X covered by the rules. (scan.l fprintf statement line 129,...)
X
X - Patches due to TOS
X - General: TOS uses CR,LF as end of line char., Flex wants only a single
X LF as EOL char. Therefore all I/O must be translated using f* calls.
X This is done everywhere besides the YY_INPUT macro (flex.skel (scan.c),
X line 31) that uses a low level 'read'. This should be definitly changed
X to fread, so that all I/O calls occur on the same level.
X - the short action_file_name has been "flexXXXXXX.tmp", but that's too
X much for TOS,MSDOS ! I changed it to "flexXXXX.tmp" in main.c (patch
X covered by the -a option additions)
X - some compilers don't like external names that are ambiguous within
X the first 8 characters. I defined macros that change all these long
X external names to names that are unique within the first 8 characters.
X Just define SHORT_EXTERNAL_NAMES to use this feature (flexdef.h)
X - some statement changes that some compiler don't like:
X typedef *xxx[] -> typedef **xxx (flexdef.h.,l.308)
X "/*" -> '/','*' within a comment in (scan.l, l.209)
X - changed short "lexyy.c" to "lex_yy.c" what's more similar to the unix
X "lex.yy.c" (main.c).
X - a few further really compiler dependent changes provided with
X #ifdef ATARI && LATTICE res. TURBO braces.
X
X - Additional TOS only files
X - Makefile.tos: Common makefile for all TOS compilers. If you add further
X ones please email me the new makefile.
X - flex.lnk: Lattice - GST linker argument extension file
X - flex.tlk: Turbo linker argument extension file
X
X
XAdditional remarks:
X
XI didn't add a new initscan.c (= flex -ist scan.l). The current one is good
Xenough for a first compilation. With this first version of flex you can
Xrebuild your own scan.c and the final flex version !
X
XMinix ST :
X - I had to "chmem =70000 cv" (>50000) to get flex linked
X - 'memset' (PC 1.3, EFTH40,...) is necessary
X - chmem =90000 flex may be sufficient
X
XMinix PC :
X It should be possible to port Flex to Minix PC. The current sizes of flex
X are:
X Minix ST (ACK) Lattice (TOS) Turbo (TOS)
X
X size 75300 83305 57957
X compilation time 22' 15' 3'40"
X flex -is scan.l 1'49" 43" 30"
X
X The Minix ST size includes the bad generated code using only a subset of
X the 68000 commands, long addresses only and a huge relocation table.
X Therefore the PC size will be <64 k ! More serious is the fact that I had
X to chmem =90000 flex to get scan.l converted to scan.c . But I never saw
X a more complex lex source than scan.l -- so it should be possible to
X reduce some array sizes without limitation for all day usage.
X
X No one volunteered yet for a Minix PC port -- but if someone will try it
X I would provide him with a new scan.c and some hints.
X
XTOS:
X Don't forget to adapt the flexskel path within flexdef.h !
X
X
/
echo x - flex.lnk
sed '/^X/s///' > flex.lnk << '/'
X*
X*
X* linker control file for flex.ttp
X*
X*
X*
XINPUT d:\latt\lib\startup.bin
X*
XINPUT ccl.bin
XINPUT dfa.bin
XINPUT ecs.bin
XINPUT gen.bin
XINPUT misc.bin
XINPUT nfa.bin
XINPUT parse.bin
XINPUT sym.bin
XINPUT tblcmp.bin
XINPUT main.bin
XINPUT yylex.bin
XINPUT scan.bin
X*
XLIBRARY d:\latt\lib\clib.bin
X
/
echo x - flex.tlk
sed '/^X/s///' > flex.tlk << '/'
Xccl.o
Xdfa.o
Xecs.o
Xgen.o
Xmisc.o
Xnfa.o
Xparse.o
Xsym.o
Xtblcmp.o
Xyylex.o
Xmain.o
Xscan.o
Xd:\turbo\lib\tcstdlib.lib ; standard lib
Xd:\turbo\lib\tcextlib.lib ; extended lib
Xd:\turbo\lib\tctoslib.lib ; TOS lib
Xd:\turbo\lib\tcgemlib.lib ; AES and VDI lib
X-S=200000
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -