lpmoo-1.2/etc/
lpmoo-1.2/mudlib/
lpmoo-1.2/mudlib/etc/
lpmoo-1.2/mudlib/include/
lpmoo-1.2/mudlib/include/moo/
lpmoo-1.2/mudlib/lpc/
lpmoo-1.2/mudlib/std/auto/
lpmoo-1.2/mudlib/std/bfuns/
/*
 * NAME:	tokens.h
 * DESCRIPTION:	compiler tokens
 */

/* The 0x80 bit is reserved for the unparser/detokenizer */

# define TOK_EOF	0x00
# define TOK_NOP	0x00	/* used to preserve line numbers */

# define TOK_COMMENT	0x41			/* 'A' */

# define TOK_LIT_NUM	0x42			/* 'B' */
# define TOK_LIT_STR	0x43
# define TOK_LIT_OBJ	0x44
# define TOK_LIT_ERR	0x45
# define TOK_LIT_FLT	0x46			/* 'F' */

# define TOK_IDENTIFIER	0x47			/* 'G' */

# define TOK_U_MINUS	0x48			/* 'H' */

# define TOK_LPAREN	'('
# define TOK_RPAREN	')'
# define TOK_LBRACKET	'['
# define TOK_RBRACKET	']'
# define TOK_DOLLAR	'$'
# define TOK_PERCENT	'%'
# define TOK_QUESTION	'?'
# define TOK_PIPE	'|'
# define TOK_BANG	'!'
# define TOK_MINUS	'-'
# define TOK_PLUS	'+'
# define TOK_LBRACE	'{'
# define TOK_RBRACE	'}'
# define TOK_SPLICE	'@'
# define TOK_ASSOC	'~'
# define TOK_COMMA	','
# define TOK_SEMICOLON	';'
# define TOK_COLON	':'
# define TOK_DOT	'.'	/* larger token: ".." */
# define TOK_ASSIGN	'='	/* larger token: "==" */
# define TOK_TIMES	'*'	/* also comment delimeter */
# define TOK_DIVIDE	'/'	/* also comment delimeter */
# define TOK_LESS	'<'
# define TOK_GREATER	'>'

# define TOK_IF		0x49			/* 'I' */
# define TOK_ELSEIF	0x4a
# define TOK_ELSE	0x4b
# define TOK_ENDIF	0x4c
# define TOK_FOR	0x4d
# define TOK_IN		0x4e
# define TOK_ENDFOR	0x4f
# define TOK_WHILE	0x50
# define TOK_ENDWHILE	0x51
# define TOK_FORK	0x52
# define TOK_ENDFORK	0x53
# define TOK_RETURN	0x54			/* 'T' */

# define TOK_RANGE	0x55	/* .. */	/* 'U' */
# define TOK_EQUAL	0x56	/* == */
# define TOK_NEQUAL	0x57	/* != */
# define TOK_LSEQUAL	0x58	/* <= */
# define TOK_GREQUAL	0x59	/* >= */
# define TOK_AND	0x5a	/* && */	/* 'Z' */
# define TOK_OR		0x61	/* || */	/* 'a' */

# define TOK_LIST	0x62			/* 'b' */
# define TOK_TABLE	0x63
# define TOK_AMBAGGR	0x64
# define TOK_BUFFER	0x65			/* 'e' */

# define VTOK_BUF	0x66			/* 'f' */
# define VTOK_ERR	0x67
# define VTOK_FLOAT	0x68
# define VTOK_LIST	0x69
# define VTOK_NUM	0x6a
# define VTOK_OBJ	0x6b
# define VTOK_STR	0x6c
# define VTOK_TABLE	0x6d
# define VTOK_PLAYER	0x6e
# define VTOK_THIS	0x6f
# define VTOK_CALLER	0x70
# define VTOK_ARGS	0x71
# define VTOK_ARGSTR	0x72
# define VTOK_VERB	0x73
# define VTOK_DOBJ	0x74
# define VTOK_DOBJSTR	0x75
# define VTOK_PREPSTR	0x76
# define VTOK_IOBJ	0x77
# define VTOK_IOBJSTR	0x78			/* 'x' */

# define MOO_KEYWORDS	\
  ([ "if"	: TOK_IF,	\
     "elseif"	: TOK_ELSEIF,	\
     "else"	: TOK_ELSE,	\
     "endif"	: TOK_ENDIF,	\
     "for"	: TOK_FOR,	\
     "in"	: TOK_IN,	\
     "endfor"	: TOK_ENDFOR,	\
     "while"	: TOK_WHILE,	\
     "endwhile"	: TOK_ENDWHILE,	\
     "fork"	: TOK_FORK,	\
     "endfork"	: TOK_ENDFORK,	\
     "return"	: TOK_RETURN,	\
  ])

# define TOK_MASK	0x7f
# define TAG(ast)	((ast)[0] & TOK_MASK)

# define TF_SIMPLE	0x0100
# define SIMPLE(ast)	((ast)[0] & TF_SIMPLE)