mirror of
https://github.com/NishiOwO/JWasm.git
synced 2025-04-21 16:54:39 +00:00
95 lines
3.6 KiB
C
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
|