1176771Sraj/* $NetBSD: fgen.h,v 1.4 2001/06/13 10:46:05 wiz Exp $ */ 2192532Sraj/* 3176771Sraj * fgen.h -- stuff for the fcode tokenizer. 4176771Sraj * 5176771Sraj * Copyright (c) 1998 Eduardo Horvath. 6176771Sraj * All rights reserved. 7176771Sraj * 8176771Sraj * Redistribution and use in source and binary forms, with or without 9176771Sraj * modification, are permitted provided that the following conditions 10176771Sraj * are met: 11176771Sraj * 1. Redistributions of source code must retain the above copyright 12176771Sraj * notice, this list of conditions and the following disclaimer. 13176771Sraj * 2. Redistributions in binary form must reproduce the above copyright 14176771Sraj * notice, this list of conditions and the following disclaimer in the 15176771Sraj * documentation and/or other materials provided with the distribution. 16176771Sraj * 17176771Sraj * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18176771Sraj * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19176771Sraj * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20176771Sraj * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21176771Sraj * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22176771Sraj * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23176771Sraj * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24176771Sraj * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25176771Sraj * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26176771Sraj * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27176771Sraj */ 28176771Sraj 29176771Sraj/* Type of a Cell */ 30176771Srajtypedef int64_t Cell; 31186229Sraj 32191375Sraj/* Token from the scanner. */ 33176771Srajstruct tok { 34176771Sraj int type; 35176771Sraj char *text; 36176771Sraj}; 37176771Sraj 38176771Sraj#define TOKEN struct tok 39176771Sraj#define YY_DECL TOKEN* yylex(void) 40182198Sraj 41182198Sraj#define FCODE 0x000FC0DE 42184319Smarcel#define MACRO 0x0000F00D 43184319Smarcel 44184319Smarcel/* Defined fcode and string. */ 45184319Smarcelstruct fcode { 46176771Sraj const char *name; 47176771Sraj long num; 48176771Sraj int type; 49176771Sraj struct fcode *l; 50176771Sraj struct fcode *r; 51176771Sraj}; 52176771Sraj 53176771Sraj/* macro instruction as separate words */ 54176771Srajstruct macro { 55176771Sraj const char *name; 56176771Sraj const char *equiv; 57176771Sraj int type; 58176771Sraj struct macro *l; 59176771Sraj struct macro *r; 60176771Sraj}; 61186229Sraj 62176771Sraj/* 63176771Sraj * FCode header -- assumes big-endian machine, 64176771Sraj * otherwise the bits need twiddling. 65186229Sraj */ 66176771Srajstruct fcode_header { 67186229Sraj char header; 68176771Sraj char format; 69186229Sraj short checksum; 70176771Sraj int length; 71176771Sraj}; 72176771Sraj 73176771Sraj/* Tokenizer tokens */ 74186229Srajenum toktypes { 75176771Sraj TOK_OCTAL = 8, 76186229Sraj TOK_DECIMAL = 10, 77176771Sraj TOK_HEX = 16, 78186229Sraj 79176771Sraj TOK_NUMBER, 80186229Sraj TOK_STRING_LIT, 81176771Sraj TOK_C_LIT, 82176771Sraj TOK_PSTRING, 83186229Sraj TOK_TOKENIZE, 84176771Sraj TOK_COMMENT, 85186229Sraj TOK_COLON, 86224611Smarcel TOK_SEMICOLON, 87222400Smarcel TOK_TOSTRING, 88222400Smarcel 89222400Smarcel /* These are special */ 90176771Sraj TOK_ABORT_S, 91176771Sraj TOK_AGAIN, 92176771Sraj TOK_ALIAS, 93222400Smarcel TOK_GETTOKEN, 94176771Sraj TOK_ASCII, 95222400Smarcel TOK_BEGIN, 96222400Smarcel TOK_BUFFER, 97176771Sraj TOK_CASE, 98176771Sraj TOK_CONSTANT, 99176771Sraj TOK_CONTROL, 100176771Sraj TOK_CREATE, 101186229Sraj TOK_DEFER, 102186229Sraj TOK_DO, 103176771Sraj TOK_ELSE, 104176771Sraj TOK_END0, 105191375Sraj TOK_ENDCASE, 106191375Sraj TOK_ENDOF, 107191375Sraj TOK_EXTERNAL, 108191375Sraj TOK_FCODE_VERSION2, 109191375Sraj TOK_FCODE_END, 110191375Sraj TOK_FIELD, 111191375Sraj TOK_HEADERLESS, 112191375Sraj TOK_HEADERS, 113191375Sraj TOK_IF, 114186229Sraj TOK_LEAVE, 115186229Sraj TOK_LOOP, 116186229Sraj TOK_OF, 117176771Sraj TOK_OFFSET16, 118224611Smarcel TOK_REPEAT, 119224611Smarcel TOK_STARTX, 120224611Smarcel TOK_THEN, 121176771Sraj TOK_TO, 122186229Sraj TOK_UNTIL, 123176771Sraj TOK_VALUE, 124186229Sraj TOK_VARIABLE, 125186229Sraj TOK_VERSION1, 126222400Smarcel TOK_WHILE, 127176771Sraj 128186229Sraj /* Tokenizer directives */ 129242526Smarcel TOK_BEGTOK, 130176771Sraj TOK_EMIT_BYTE, 131186229Sraj TOK_ENDTOK, 132176771Sraj TOK_FLOAD, 133242526Smarcel 134186229Sraj TOK_OTHER 135176771Sraj}; 136186229Sraj