diff options
Diffstat (limited to 'usr.bin/fgen/fgen.h')
-rw-r--r-- | usr.bin/fgen/fgen.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/usr.bin/fgen/fgen.h b/usr.bin/fgen/fgen.h new file mode 100644 index 00000000000..45ee349b4a7 --- /dev/null +++ b/usr.bin/fgen/fgen.h @@ -0,0 +1,136 @@ +/* $OpenBSD: fgen.h,v 1.1 2001/08/17 21:31:02 jason Exp $ */ +/* $NetBSD: fgen.h,v 1.4 2001/06/13 10:46:05 wiz Exp $ */ +/* + * fgen.h -- stuff for the fcode tokenizer. + * + * Copyright (c) 1998 Eduardo Horvath. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Eduardo Horvath. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* Type of a Cell */ +typedef long Cell; + +/* Token from the scanner. */ +struct tok { + int type; + char *text; +}; + +#define TOKEN struct tok +#define YY_DECL TOKEN* yylex __P((void)) + +#define FCODE 0xF00DBABE +#define MACRO 0xFEEDBABE + +/* Defined fcode and string. */ +struct fcode { + char *name; + long num; + int type; + struct fcode *l; + struct fcode *r; +}; + +/* macro instruction as separate words */ +struct macro { + char *name; + char *equiv; + int type; + struct macro *l; + struct macro *r; +}; + +/* + * FCode header -- assumes big-endian machine, + * otherwise the bits need twiddling. + */ +struct fcode_header { + char header; + char format; + short checksum; + int length; +}; + +/* Tokenizer tokens */ +enum toktypes { + TOK_OCTAL = 8, + TOK_DECIMAL = 10, + TOK_HEX = 16, + + TOK_NUMBER, + TOK_STRING_LIT, + TOK_C_LIT, + TOK_PSTRING, + TOK_TOKENIZE, + TOK_COMMENT, + TOK_ENDCOMMENT, + TOK_COLON, + TOK_SEMICOLON, + TOK_TOSTRING, + + /* These are special */ + TOK_AGAIN, + TOK_ALIAS, + TOK_GETTOKEN, + TOK_ASCII, + TOK_BEGIN, + TOK_BUFFER, + TOK_CASE, + TOK_CONSTANT, + TOK_CONTROL, + TOK_CREATE, + TOK_DEFER, + TOK_DO, + TOK_ELSE, + TOK_ENDCASE, + TOK_ENDOF, + TOK_EXTERNAL, + TOK_FIELD, + TOK_HEADERLESS, + TOK_HEADERS, + TOK_IF, + TOK_LEAVE, + TOK_LOOP, + TOK_OF, + TOK_REPEAT, + TOK_THEN, + TOK_TO, + TOK_UNTIL, + TOK_VALUE, + TOK_VARIABLE, + TOK_WHILE, + TOK_OFFSET16, + + /* Tokenizer directives */ + TOK_BEGTOK, + TOK_EMIT_BYTE, + TOK_ENDTOK, + TOK_FLOAD, + + TOK_OTHER +}; |