jwasm/H/token.h
2014-06-18 19:16:56 +04:00

95 lines
3.6 KiB
C

/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: defines token types and struct asm_tok.
* This file is included by parser.h
*
****************************************************************************/
#ifndef _TOKEN_H_
#define _TOKEN_H_
/* T_INSTRUCTION - T_RES_ID are reserved words.
* T_REG - T_RES_ID match RWT_REG - RWT_RES_ID
*/
enum tok_type {
T_FINAL,
T_INSTRUCTION, /* 1 */
T_REG, /* 2 (==RWT_REG) */
T_DIRECTIVE, /* 3 (==RWT_DIRECTIVE) */
T_UNARY_OPERATOR, /* 4 (==RWT_UNARY_OP) */
T_BINARY_OPERATOR, /* 5 (==RWT_BINARY_OP) */
T_STYPE, /* 6 (==RWT_STYPE) */
T_RES_ID, /* 7 (==RWT_RES_ID) */
T_ID, /* 8 */
T_STRING, /* 9 */
T_NUM, /* A */
T_FLOAT, /* B */
T_BAD_NUM, /* C */
T_DBL_COLON, /* D */
T_OP_BRACKET = '(',
T_OP_SQ_BRACKET = '[',
T_CL_BRACKET = ')',
T_CL_SQ_BRACKET = ']',
T_COMMA = ',',
T_COLON = ':',
T_DOT = '.',
T_QUESTION_MARK = '?',
T_PERCENT = '%'
};
struct asm_tok {
#ifdef __WATCOMC__
enum tok_type token; /* (type of) token */
#else
unsigned char token;
#endif
union {
unsigned char dirtype; /* T_DIRECTIVE: type */
unsigned char bytval; /* T_STYPE: memtype */
/* unsigned char regno; *//* T_REG: register number */
unsigned char precedence; /* T_UNARY_OPERATOR/T_BINARY_OPERATOR */
char string_delim; /* T_STRING: string delimiter */
char floattype; /* T_FLOAT: 0 or 'r' */
char numbase; /* T_NUM: number base */
char specval; /* 1-byte special tokens: flags */
};
char *string_ptr;
union {
unsigned int tokval; /* index if token is a reserved word */
unsigned int stringlen; /* T_STRING: size */
unsigned int idarg; /* T_ID: currently not used */
unsigned int itemlen; /* T_NUM: size */
unsigned int lastidx; /* T_FINAL: last index (used in RunMacro()) */
};
char *tokpos; /* points to item in CurrSource */
};
#endif