# $Id: C-exprcode.def,v 1.6 2001/11/15 09:32:38 m-hirano Exp $
# $RWC_Release: Omni-1.6 $
# $RWC_Copyright:
#  Omni Compiler Software Version 1.5-1.6
#  Copyright (C) 2002 PC Cluster Consortium
#  
#  This software is free software; you can redistribute it and/or modify
#  it under the terms of the GNU Lesser General Public License version
#  2.1 published by the Free Software Foundation.
#  
#  Omni Compiler Software Version 1.0-1.4
#  Copyright (C) 1999, 2000, 2001.
#   Tsukuba Research Center, Real World Computing Partnership, Japan.
#  
#  Please check the Copyright and License information in the files named
#  COPYRIGHT and LICENSE under the top  directory of the Omni Compiler
#  Software release kit.
#  
#  
#  $
#
# Expression code definition
#
# The following codes are terminal node. Don't change
T    ERROR_NODE
T    IDENT
T    TYPENAME_IDENT
T    STRING_CONSTANT
T    INT_CONSTANT
T    LONG_CONSTANT
T    FLOAT_CONSTANT
T    LONGLONG_CONSTANT
T    BASIC_TYPE_NODE
T    STORAGE_CLASS_NODE
T    TYPE_QUAL_NODE

# In the following codes values must be in list.
# FOR any list
L    LIST
# FOR declaration
L    FUNCTION_DEFINITION
L    TYPE_DEFINITION
L    ENUM_TYPE
L    STRUCT_TYPE
L    UNION_TYPE
L    FUNCTION_DECL
L    FUNCTION_PROTO_DECL
L    ARRAY_DECL
L    POINTER_DECL

# For statement
L    COMPOUND_STATEMENT
L    IF_STATEMENT
L    WHILE_STATEMENT
L    DO_STATEMENT
L    FOR_STATEMENT
L    SWITCH_STATEMENT
L    BREAK_STATEMENT
L    RETURN_STATEMENT
L    GOTO_STATEMENT
L    CONTINUE_STATEMENT
L    STATEMENT_LABEL
L    CASE_LABEL
L    DEFAULT_LABEL

# For expression
L    CONDITIONAL_EXPR		?
B    COMMA_EXPR			,
B    ASSIGN_EXPR		=
B    PLUS_EXPR			+
B    ASG_PLUS_EXPR		+=
B    MINUS_EXPR			-
B    ASG_MINUS_EXPR		-=
U    UNARY_MINUS_EXPR		-
B    MUL_EXPR			*
B    ASG_MUL_EXPR		*=
B    DIV_EXPR			/
B    ASG_DIV_EXPR		/=
B    MOD_EXPR			%
B    ASG_MOD_EXPR		%=
B    LSHIFT_EXPR		<<
B    ASG_LSHIFT_EXPR		<<=
B    RSHIFT_EXPR		>>
B    ASG_RSHIFT_EXPR		>>=
B    BIT_AND_EXPR		&
B    ASG_BIT_AND_EXPR		&=
B    BIT_OR_EXPR		|
B    ASG_BIT_OR_EXPR		|=
B    BIT_XOR_EXPR		^
B    ASG_BIT_XOR_EXPR		^=
U    BIT_NOT_EXPR		~
# logical expression
B    LOG_EQ_EXPR		==
B    LOG_NEQ_EXPR		!=
B    LOG_GE_EXPR		>=
B    LOG_GT_EXPR		>
B    LOG_LE_EXPR		<=
B    LOG_LT_EXPR		<
B    LOG_AND_EXPR		&&
B    LOG_OR_EXPR		||
U    LOG_NOT_EXPR		!

#  primary expr
U    POINTER_REF
B    ARRAY_REF
B    STRUCT_REF
U    ADDR_OF
L    FUNCTION_CALL
U    SIZE_OF_EXPR
U    CAST_EXPR
U    POST_INCR_EXPR
U    POST_DECR_EXPR

# for internal use
L    EXPR_STATEMENT
T    VAR_ADDR
T    PARAM_ADDR
T    LVAR_ADDR
T    PARAM_VAR
T    LVAR
T    VAR
T    LARRAY_ADDR
T    ARRAY_ADDR
T    FUNC_ADDR
T    ID_LIST
L    VAR_DECL
L    EXT_DECL
L    MEMBER_REF
L    MEMBER_ADDR
L    MEMBER_ARRAY_ADDR
L    ARRAY_AREF
T    MOE_CONSTANT
# for pargma extension
L    PRAGMA_LINE
L    OMP_PRAGMA
L    TEA_PRAGMA
L    OGR_PRAGMA
# EOF
