diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/quicspool/libqmsquery/qmsovl.y |
Initial commit
Diffstat (limited to 'dviware/quicspool/libqmsquery/qmsovl.y')
-rw-r--r-- | dviware/quicspool/libqmsquery/qmsovl.y | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dviware/quicspool/libqmsquery/qmsovl.y b/dviware/quicspool/libqmsquery/qmsovl.y new file mode 100644 index 0000000000..6c96de10d3 --- /dev/null +++ b/dviware/quicspool/libqmsquery/qmsovl.y @@ -0,0 +1,80 @@ +%{ +#ifndef lint +static char *rcs = "$Header: qmsovl.y,v 1.1 88/01/15 12:19:13 simpson Rel $"; +#endif +/* +$Log: qmsovl.y,v $ + * Revision 1.1 88/01/15 12:19:13 simpson + * initial release + * + * Revision 0.1 87/12/11 17:12:05 simpson + * beta test + * +*/ +#include <stdio.h> +#include <setjmp.h> +#include <local/standard.h> +#include "qms.h" + +extern FILE *_Ifp, *_Ofp; +extern Boolean _FirstChar; +static jmp_buf Env; +char *malloc(); +static struct qmsovl *OvlList, *P; +%} +%token OVL INTEGER SPACE AUTOPAGE NONE ENDLINE +%% +ovllines : ovllines ovlline | ovlline ; + +ovlline : OVL overlay ENDLINE ; + +overlay : + NONE + { + OvlList = NULL; + } + | + INTEGER SPACE + { + P = (struct qmsovl *)malloc((unsigned)sizeof(struct qmsovl)); + P->next = OvlList, OvlList = P; + P->ovltype = regular; + P->ovlnumber = $1; + P->ovlsize = $2; + } + | + AUTOPAGE + { + P = (struct qmsovl *)malloc((unsigned)sizeof(struct qmsovl)); + P->next = OvlList, OvlList = P; + P->ovltype = automatic; + } + ; +%% +#include "qmsovllex.c" + +struct qmsovl *qmsovl() +{ + _FirstChar = TRUE; + OvlList = NULL; + fputs(QUICON, _Ofp); + fprintf(_Ofp, "%s00000", SYNTAX); + fprintf(_Ofp, "%sOVL%s", INFO, ENDCMD); + fputs(QUICOFF, _Ofp); + (void)fflush(_Ofp); + if (setjmp(Env)) { + while (timedgetc(_Ifp) != EOF) /* Discard remaining input */ + ; + return NULL; + } + if (yyparse() != 0) + return NULL; + yysptr = yysbuf; /* Resets lex lookahead buffer */ + return OvlList; +} + +static yyerror(s) +char *s; +{ + longjmp(Env, TRUE); +} |