# $Id: C-exprcode.def,v 1.23 2000/12/11 05:46:01 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    FLOAT_CONSTANT	
T    QREAL_CONSTANT
T    LONGLONG_CONSTANT	
T    BASIC_TYPE_NODE
T    STORAGE_CLASS_NODE
T    TYPE_QUAL_NODE
L    COMPLEX_CONSTANT
L    COMPLEX_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    LVAR_ADDR
T    PARAM_VAR
T    PARAM_ADDR
T    LVAR
T    VAR
T    LARRAY_ADDR
T    ARRAY_ADDR
T    FUNC_ADDR
T    ID_LIST
L    VAR_DECL
L    EXT_DECL
L    ARRAY_AREF
L    MEMBER_REF

# T    MOE_CONSTANT
# L    MEMBER_ADDR
# L    MEMBER_ARRAY_ADDR

# for FORTRAN Xcode
T    FPARAM_ARRAY_ADDR
T    FPARAM_VAR_ADDR
L    FCOMM_ARRAY_ADDR
L    FCOMM_VAR_ADDR  

L    CRAY_POINTER_REF

L    UNRESOLVED_FORMAT

L    FIRST_EXECUTION_POINT

# for Assign checking
L	ASSIGN_EXPR_WITH_CHECK

# for FORTRAN
L	F_PROGRAM_STATEMENT
L	F_BLOCK_STATEMENT
L	F_SUBROUNTINE_STATEMENT
L	F_FUNCTION_STATEMENT
L	F_ENTRY_STATEMENT
L	F_INCLUDE_STATEMENT
L	F_END_STATEMENT
L	F_TYPE_DECL
L	F_COMMON_DECL
L	F_EXTERNAL_DECL
L	F_INTRINSIC_DECL
L	F_EQUIV_DECL
L	F_DATA_DECL
L	F_IMPLICIT_DECL
L	F_NAMELIST_DECL
L	F_SAVE_DECL
L	F_PARAM_DECL
L	F_FORMAT_DECL
L	F_DUP_DECL
L	F_UNARY_MINUS
L	F_DO_STATEMENT
L	F_ENDDO_STATEMENT
L	F_DOWHILE_STATEMENT
L	F_IF_STATEMENT
L	F_ELSEIF_STATEMENT
L	F_ELSE_STATEMENT
L	F_ENDIF_STATEMENT
L	F_LET_STATEMENT
L	F_ASSIGN_STATEMENT
L	F_CONTINUE_STATEMENT
L	F_GOTO_STATEMENT
L	F_ASGOTO_STATEMENT
L	F_COMPGOTO_STATEMENT
L	F_ARITHIF_STATEMENT
L	F_CALL_STATEMENT
L	F_RETURN_STATEMENT
L	F_PAUSE_STATEMENT
L	F_STOP_STATEMENT
L	F_COMPLEX_CONSTANT
L	F_PRINT_STATEMENT
L	F_WRITE_STATEMENT
L	F_READ_STATEMENT
L	F_READ1_STATEMENT
L	F_OPEN_STATEMENT
L	F_CLOSE_STATEMENT
L	F_INQUIRE_STATEMENT
L	F_BACKSPACE_STATEMENT
L	F_ENDFILE_STATEMENT
L	F_REWIND_STATEMENT
L	F_POINTER_DECL

F	F_SET_EXPR
U	F_LABEL_REF
B	F_PLUS_EXPR
B	F_MINUS_EXPR
B	F_MUL_EXPR
B	F_DIV_EXPR
B	F_POWER_EXPR
U	F_UNARY_MINUS_EXPR
B	F_EQ_EXPR
B	F_GT_EXPR
B	F_GE_EXPR
B	F_LT_EXPR
B	F_LE_EXPR
B	F_NE_EXPR
B	F_EQV_EXPR
B	F_NEQV_EXPR
B	F_OR_EXPR
B	F_AND_EXPR
U	F_NOT_EXPR
B	F_CONCAT_EXPR
B	F_SUBSTR_REF
U	F_ARRAY_REF
L	F_STARSTAR
T	F_TRUE_CONSTANT
T	F_FALSE_CONSTANT
T	F_TYPE_NODE
T	F_FLOAT_CONSTANT
T	F_DOUBLE_CONSTANT
T	F_QREAL_CONSTANT
L	F_IMPLIED_DO

L	OMP_PRAGMA
L	TEA_PRAGMA
L	ALLOCA
# EOF

