/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ #ifndef _LDEFS_H #define _LDEFS_H #pragma ident "%Z%%M% %I% %E% SMI" #include <stdio.h> #include <stdlib.h> #include <widec.h> #include <wctype.h> #include "sgs.h" #define CHR wchar_t #define BYTE char #define Boolean char #define LONG_WCHAR_T 1 #define PP 1 #ifdef u370 #define CWIDTH 8 #define CMASK 0377 #define ASCII 1 #else #ifdef unix #define CWIDTH 7 #define CMASK 0177 #define ASCII 1 #endif #ifdef gcos #define CWIDTH 9 #define CMASK 0777 #define ASCII 1 #endif #ifdef ibm #define CWIDTH 8 #define CMASK 0377 #define EBCDIC 1 #endif #endif #define NCH 256 #define TOKENSIZE 10000 #define DEFSIZE 1000 #define DEFCHAR 2000 #define BUF_SIZ 2000 #define STARTCHAR 2560 #define STARTSIZE 256 #define CCLSIZE 20000 #ifdef SMALL #define TREESIZE 600 #define NTRANS 1500 #define NSTATES 300 #define MAXPOS 1500 #define MAXPOSSTATE 500 #define NOUTPUT 1500 #endif #ifndef SMALL #define TREESIZE 1000 #define NSTATES 500 #define MAXPOS 2500 #define MAXPOSSTATE 4*1000 #define NTRANS 2000 #define NOUTPUT 4*3000 #endif #define NACTIONS 4*1000 #define ALITTLEEXTRA 300 #define RCCL 0x4000 #define RNCCL 0x4001 #define RSTR 0x4002 #define RSCON 0x4003 /* XCU4: add RXSCON */ #define RXSCON 0x4011 #define RNEWE 0x4004 #define FINAL 0x4005 #define RNULLS 0x4006 #define RCAT 0x4007 #define STAR 0x4008 #define PLUS 0x4009 #define QUEST 0x400a #define DIV 0x400b #define BAR 0x400c #define CARAT 0x400d #define S1FINAL 0x400e #define S2FINAL 0x400f #define DOT 0x4010 #define ISOPERATOR(n) ((n & 0xc080) == 0x4000) /* * New to JLE; this is not really a node tag. * This is used in a string pointed to by * the leaf of an RCCL or RNCCL node as a * special prefix code that substitutes * the infix '-' range operator. For * example, a lex character class "[_0-9a-zA-Z]" * would be translated to the intermidiate * form: * RCCL * | * | * v * "_<RANGE>09<RANGE>a-z<RANGE>A-Z" */ #define RANGE 0x40ff #define MAXNCG 1000 extern int ncgidtbl; extern int ncg; /* ncg == ncgidtbl * 2 */ typedef unsigned long lchar; extern lchar yycgidtbl[]; extern int yycgid(wchar_t); extern Boolean handleeuc; /* TRUE iff -w or -e option is specified. */ extern Boolean widecio; /* TRUE iff -w option is specified. */ #define DEFSECTION 1 #define RULESECTION 2 #define ENDSECTION 5 #define PC 1 #define PS 1 #ifdef DEBUG #define LINESIZE 110 extern int yydebug; extern int debug; /* 1 = on */ extern int charc; #endif #ifndef DEBUG #define freturn(s) s #endif extern int optind; extern int no_input; extern int sargc; extern char **sargv; extern char *v_stmp; extern char *release_string; extern CHR buf[]; extern int ratfor; /* 1 = ratfor, 0 = C */ extern int fatal; extern int n_error; extern int copy_line; extern int yyline; /* line number of file */ extern int sect; extern int eof; extern int lgatflg; extern int divflg; extern int funcflag; extern int pflag; extern int casecount; extern int chset; /* 1 = CHR set modified */ extern FILE *fin, *fout, *fother, *errorf; extern int fptr; extern int prev; /* previous input character */ extern int pres; /* present input character */ extern int peek; /* next input character */ extern int *name; extern int *left; extern int *right; extern int *parent; extern Boolean *nullstr; extern int tptr; extern CHR pushc[TOKENSIZE]; extern CHR *pushptr; extern CHR slist[STARTSIZE]; extern CHR *slptr; extern CHR **def, **subs, *dchar; extern CHR **sname, *schar; /* XCU4: %x exclusive start */ extern int *exclusive; extern CHR *ccl; extern CHR *ccptr; extern CHR *dp, *sp; extern int dptr, sptr; extern CHR *bptr; /* store input position */ extern CHR *tmpstat; extern int count; extern int **foll; extern int *nxtpos; extern int *positions; extern int *gotof; extern int *nexts; extern CHR *nchar; extern int **state; extern int *sfall; /* fallback state num */ extern Boolean *cpackflg; /* true if state has been character packed */ extern int *atable, aptr; extern int nptr; extern Boolean symbol[MAXNCG]; extern CHR cindex[MAXNCG]; extern int xstate; extern int stnum; extern int ctable[]; extern int ZCH; extern int ccount; extern CHR match[MAXNCG]; extern BYTE extra[]; extern CHR *pcptr, *pchar; extern int pchlen; extern int nstates, maxpos; extern int yytop; extern int report; extern int ntrans, treesize, outsize; extern long rcount; extern int optim; extern int *verify, *advance, *stoff; extern int scon; extern CHR *psave; extern CHR *getl(); extern BYTE *myalloc(); void phead1(void); void phead2(void); void ptail(void); void statistics(void); void error_tail(void) __NORETURN; void error(); void warning(); void lgate(void); void scopy(CHR *s, CHR *t); void cclinter(int sw); void cpycom(CHR *p); void munput(int t, CHR *p); void cfoll(int v); void cgoto(void); void mkmatch(void); void layout(void); void remch(wchar_t c); void sortcgidtbl(void); void repbycgid(void); int gch(void); int slength(CHR *s); int yyparse(void); int scomp(CHR *x, CHR *y); int space(int ch); int siconv(CHR *t); int digit(int c); int ctrans(CHR **ss); int cpyact(void); int lookup(CHR *s, CHR **t); int usescape(int c); int alpha(int c); int mn2(int a, int d, int c); int mn1(int a, int d); int mn0(int a); int dupl(int n); extern int isArray; /* XCU4: for %array %pointer */ #endif /* _LDEFS_H */