1/* 2 * Copyright 1993, 1995 Christopher Seiwald. 3 * 4 * This file is part of Jam - see jam.c for Copyright information. 5 */ 6 7/* 8 * scan.h - the jam yacc scanner 9 * 10 * External functions: 11 * 12 * yyerror( char *s ) - print a parsing error message 13 * yyfparse( char *s ) - scan include file s 14 * yylex() - parse the next token, returning its type 15 * yymode() - adjust lexicon of scanner 16 * yyparse() - declaration for yacc parser 17 * yyanyerrors() - indicate if any parsing errors occured 18 * 19 * The yymode() function is for the parser to adjust the lexicon of the 20 * scanner. Aside from normal keyword scanning, there is a mode to 21 * handle action strings (look only for the closing }) and a mode to 22 * ignore most keywords when looking for a punctuation keyword. This 23 * allows non-punctuation keywords to be used in lists without quoting. 24 * 25 * 11/04/02 (seiwald) - const-ing for string literals 26 */ 27 28/* 29 * YYSTYPE - value of a lexical token 30 */ 31 32# define YYSTYPE YYSYMBOL 33 34typedef struct _YYSTYPE { 35 int type; 36 const char *string; 37 PARSE *parse; 38 LIST *list; 39 int number; 40} YYSTYPE; 41 42extern YYSTYPE yylval; 43 44void yymode( int n ); 45void yyerror( const char *s ); 46int yyanyerrors(); 47void yyfparse( const char *s ); 48int yyline(); 49int yylex(); 50int yyparse(); 51 52# define SCAN_NORMAL 0 /* normal parsing */ 53# define SCAN_STRING 1 /* look only for matching } */ 54# define SCAN_PUNCT 2 /* only punctuation keywords */ 55