/*********************************************************************/
/*                  pC++/Sage++  Copyright (C) 1993                  */
/*  Indiana University  University of Oregon  University of Rennes   */
/*********************************************************************/

/*****************************************************************************/
/*****************************************************************************/
/*****                                                                   *****/
/*****    UNPARSE.DEF:   Gregory HOGDAL / Eric MARCHAND    July 1992     *****/
/*****                   Bodin Francois August 1992                      *****/
/*****                                                                   *****/
/*****************************************************************************/
/*****************************************************************************/

/* 
   The following types exist: BIFNODE, LLNODE, SYMBNODE and TYPENODE

   Any erroneous construct is parsed into a node of this type.
   This type of node is accepted without complaint in all contexts
   by later parsing activities, to avoid multiple error messages
   for one error.
   No fields in these nodes are used except the NODE_CODE.  
*/

/* exemple 
DEFNODECODE (ERROR_MARK, "error_mark", "x", 0, LLNODE)
*/

/***** List of commands for BIF NODES *****/
   /* %ERROR      : Error ; syntax : %ERROR'message' */
   /* %CMNT	      : the comment attached to a bif node */
   /* %NL         : NewLine */
   /* %%          : '%' (Percent Sign) */
   /* %TAB        : Tab */
   /* %IF         : If ; syntax : %IF (condition) then_bloc [%ELSE else_bloc] %ENDIF */
   /* %ELSE       : Else */
   /* %ENDIF      : End of If */
   /* %SYMBID     : Symbol identifier */
   /* %LL1        : Low Level Node 1 */
   /* %LL2        : Low Level Node 2 */
   /* %LL3        : Low Level Node 3 */
   /* %L1L1   	  : Low Level Node 1 of Low Level Node 1		zheng.gb */
   /* %L1L2   	  : Low Level Node 2 of Low Level Node 1		zheng.gb */
   /* %L2L2       : Low Level Node 2 of Low Level Node 2 */
   /* %BLOB1      : All Blob 1 */
   /* %BLOB2      : All Blob 2 */
   /* %STATENO    : Statement number */
   /* %L1SYMBID   : pbf->entry.Template.ll_ptr1->entry.Template.symbol->ident; */
   /* %INWRITEON  : In_Write_Statement Flag ON */
   /* %INWRITEOFF : In_Write_Statement Flag OFF */
   /* %INPARAMON  : In_Param_Statement Flag ON */
   /* %INPARAMOFF : In_Param_Statement Flag OFF */
   /* %INIMPLION  : In_Impli_Statement Flag ON */
   /* %INIMPLIOFF : In_Impli_Statement Flag OFF */
   /* SYMBTYPE    : Type of Symbol */
   /* %VARLIST    : list of variables / parameters */
/******************************************/

/***** List of commands for evaluation in IF THEN ELSE ENDIF statements for BIF NODE *****/
   /* %RECURSBIT  : int constant RECURSIVE_BIT (integer) */
   /* %EXPR_LIST  : int constant EXPR_LIST code for Low Level Node (integer) */
   /* %SPEC_PAIR  : int constant SPEC_PAIR code for Low Level Node (integer) */
   /* %IOACCESS   : int constant IOACCESS code for Low Level Node (integer) */
   /* %SATTR      : Symbol Attribut (integer) */
   /* %STRCST     : String Constant in '' */
   /* %SYMBID     : Symbol Identifier (string) */
   /* %SYMBOL     : Symbol node (integer) */
   /* ==          : Equal (operation) */
   /* !=          : Different (operation) */
   /* %NULL       : 0, Integer Constant (or false boolean) */
   /* %LL1        : Low Level Node 1 (integer) */
   /* %LL2        : Low Level Node 2 (integer) */
   /* %LL3        : Low Level Node 3 (integer) */
   /* %LABUSE     : Label ptr (do end) (integer) */
   /* %L1CODE     : Code (variant) of Low Level Node 1 (integer) */
   /* %L2CODE     : Code (variant) of Low Level Node 2 (integer) */
   /* %L1L2L1CODE : Code (variant) of Low Level Node 1 of Low Level Node 2 of Low Level Node 1 (integer) */
   /* %L1L2*L1CODE: Code (variant) of Low Level Node 1 of (Low Level Node 2)* of Low Level Node 1 (integer) follow L2*/
   /* %L2L1STR    : String (string_val) of Low Level Node 1 of Low Level Node 2 (string) */
   /* %VALINT     : Integer value  zheng.gb */
/*****************************************************************************************/

/*
DEFNODECODE(GLOBAL,             "%CMNT%SETFLAG(QUOTE)%INCTAB%BLOB1%DECTAB%UNSETFLAG(QUOTE)",'s',0,BIFNODE)
*/

DEFNODECODE(GLOBAL,          "%CMNT%SETFLAG(QUOTE)%BLOB1%UNSETFLAG(QUOTE)",
's',0,BIFNODE)

DEFNODECODE(PROG_HEDR,       "%CMNT%PUTTABprogram%IF(%SYMBID != %STRCST'_MAIN') %SYMBID%ENDIF%NL%IF(%BLOB2!=%NULL)%SETFLAG(CONTAINS)%BLOB1%UNSETFLAG(CONTAINS)%ELSE%BLOB1%ENDIF%IF(%BLOB2!=%NULL)%INCTAB%BLOB2%DECTAB%PUTTABend program%IF(%SYMBID != %STRCST'_MAIN') %SYMBID%ENDIF%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(PROC_HEDR,       "%CMNT%PUTTAB%IF(%SATTR == %RECURSBIT)recusive %ENDIF%IF (%LL2 != %NULL)%SETFLAG(HEDR)%LL2 %UNSETFLAG(HEDR)%ENDIFsubroutine %SYMBID(%VARLIST)%NL%BLOB1",
's',0,BIFNODE)

DEFNODECODE(PROS_HEDR,       "%CMNT%PUTTABprocess %SYMBID (%VARLIST)%NL%BLOB1",
's',0,BIFNODE)

DEFNODECODE(BASIC_BLOCK,     "%ERROR", 
's',0,BIFNODE)

DEFNODECODE(PROCESSES_STAT,  "%CMNT%PUTTABprocesses%NL%INCTAB%BLOB1", 
's',0,BIFNODE)

DEFNODECODE(INPORT_DECL,     "%CMNT%PUTTABinport (%LL2) %LL1%NL", 
's',2,BIFNODE)

DEFNODECODE(OUTPORT_DECL,    "%CMNT%PUTTABoutport (%LL2) %LL1%NL", 
's',2,BIFNODE)

DEFNODECODE(CHANNEL_STAT,    "%CMNT%PUTTABchannel(%LL1)%NL", 
's',1,BIFNODE)

DEFNODECODE(MERGER_STAT,     "%CMNT%PUTTABmerger(%LL1)%NL", 
's',1,BIFNODE)

DEFNODECODE(MOVE_PORT,       "%CMNT%PUTTABmoveport(%LL1)%NL", 
's',1,BIFNODE)

DEFNODECODE(SEND_STAT,       "%CMNT%PUTTABsend%SETFLAG(PORT)(%LL1)%UNSETFLAG(PORT) %IF ( %LL2 != %NULL )%LL2%NL", 
's',2,BIFNODE)

DEFNODECODE(RECEIVE_STAT,    "%CMNT%PUTTABreceive%SETFLAG(PORT)(%LL1)%UNSETFLAG(PORT) %IF ( %LL2 != %NULL )%LL2%NL", 
's',2,BIFNODE)

DEFNODECODE(ENDCHANNEL_STAT, "%CMNT%PUTTABendchannel%SETFLAG(PORT)(%LL1)%UNSETFLAG(PORT)%NL", 
's',1,BIFNODE)

DEFNODECODE(PROBE_STAT,      "%CMNT%PUTTABprobe%SETFLAG(PORT)(%LL1)%UNSETFLAG(PORT)%NL", 
's',1,BIFNODE)

DEFNODECODE(INTENT_STMT,     "%CMNT%PUTTAB%LL2 :: %LL1%NL", 
's',2,BIFNODE)

DEFNODECODE(CONTROL_END,        "%CMNT%IF ( %VALINT107  == %BIFCP)%ENDIF%IF ( %VALINT102  == %BIFCP)%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABend%IF(%F77 == %NULL) subroutine%ENDIF%NL%NL%ENDIF%IF ( %VALINT101  == %BIFCP)%IF(%CHECKFLAG(CONTAINS)!=%NULL)%ELSE%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABend%IF(%F77 == %NULL) program%ENDIF%NL%NL%ENDIF%ENDIF%IF ( %VALINT265  == %BIFCP)%IF(%CHECKFLAG(CONTAINS)!=%NULL)%ELSE%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABend module%NL%NL%ENDIF%ENDIF%IF ( %VALINT130  == %BIFCP)%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABend function%NL%NL%ENDIF%IF ( %VALINT124  == %BIFCP)%DECTAB%PUTTABenddo%INCTAB%NL%ENDIF%IF ( %VALINT109  == %BIFCP)%DECTAB%PUTTABenddo%INCTAB%NL%ENDIF%IF ( %VALINT175  == %BIFCP)%DECTAB%PUTTABend select%IF (%SYMBOL!=%NULL) %SYMBID%ENDIF%NL%ENDIF%IF ( %VALINT285  == %BIFCP)%DECTAB%PUTTABendprocessdo%INCTAB%NL%ENDIF%IF ( %VALINT279  == %BIFCP)%IF(%LABEL != %NULL)%LABEL%ENDIF%DECTAB%PUTTABend%NL%NL%ENDIF",
's',0,BIFNODE)

DEFNODECODE(PROCESSES_END,      "%CMNT%DECTAB%PUTTABendprocesses%NL", 
's',0,BIFNODE)

DEFNODECODE(IF_NODE,            "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABif (%LL1) then%NL%INCTAB%BLOB1%DECTAB%IF (%BLOB2 != %NULL) %IF (%ELSIFBLOB2 == %NULL)%PUTTABelse%NL%ELSE%PUTTABelse if%ENDIF%INCTAB%BLOB2%DECTAB%LABELENDIF%PUTTABendif%NL%ELSE%LABELENDIF%PUTTABendif%NL%ENDIF",
's',0,BIFNODE)

DEFNODECODE(ARITHIF_NODE,       "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABif (%LL1) %LL2%NL",
's',0,BIFNODE)

/*
DEFNODECODE(LOGIF_NODE,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABif (%LL1) %BLOB1 %NL",
's',0,BIFNODE)
*/

DEFNODECODE(LOGIF_NODE,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABif (%LL1) then %NL %INCTAB%BLOB1%DECTAB %IF (%BLOB2 != %NULL) %IF (%ELSIFBLOB2 == %NULL)%PUTTABelse%NL%ELSE%PUTTABelse if%ENDIF%INCTAB%BLOB2%DECTAB%LABELENDIF%PUTTABendif%NL%ELSE%LABELENDIF%PUTTABendif%NL%ENDIF",
's',0,BIFNODE)

DEFNODECODE(LOOP_NODE,          "%ERROR",
's',0,BIFNODE)

DEFNODECODE(FOR_NODE,           "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3: %ENDIF%INIMPLIOFF%INWRITEOFF%SETFLAG(LOOP)do %IF (%LABUSE != %NULL)%STATENO%ENDIF %IF(%SYMBOL!=%NULL)%SYMBID=%ENDIF%LL1%IF (%LL2 != %NULL),%LL2%ENDIF%INCTAB%NL%UNSETFLAG(LOOP)%BLOB1%DECTAB", 
's',0,BIFNODE)


DEFNODECODE(PROCESS_DO_STAT,    "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3:%ENDIF%INIMPLIOFF%INWRITEOFF%SETFLAG(LOOP)processdo %IF (%LABUSE != %NULL)%STATENO%ENDIF %SYMBID = %LL1%IF (%LL2 != %NULL),%LL2%ENDIF%INCTAB%NL%UNSETFLAG(LOOP)%BLOB1%DECTAB", 
's',2,BIFNODE)

DEFNODECODE(FORALL_NODE,        "%ERROR",
's',0,BIFNODE)

/*zgs*/

DEFNODECODE(FORALL_CONSTRUCT_STMT,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3:%ENDIF%INIMPLIOFF%INWRITEOFF%SETFLAG(LOOP)forall %IF (%LABUSE != %NULL)%STATENO%ENDIF %SETFLAG(FORALL)(%LL1%IF(%LL2 != %NULL), %LL2%ENDIF)%UNSETFLAG(FORALL)%INCTAB%NL%UNSETFLAG(LOOP)%BLOB1%DECTAB%PUTTABend forall%NL",
's',0,BIFNODE) 

DEFNODECODE(WHILE_NODE,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3:%ENDIFdo %IF (%LABUSE != %NULL)%STATENO %ENDIFwhile (%LL1)%NL%INCTAB%BLOB1%DECTAB",
's',0,BIFNODE)

DEFNODECODE(CDOALL_NODE,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3:%ENDIF%INIMPLIOFF%INWRITEOFF%SETFLAG(LOOP)cdoall %IF (%LABUSE != %NULL)%STATENO%ENDIF %SYMBID = %LL1%IF (%LL2 != %NULL),%LL2%ENDIF%INCTAB%NL%UNSETFLAG(LOOP)%BLOB1%DECTAB",
's',0,BIFNODE) 

DEFNODECODE(SDOALL_NODE,        "%ERROR",
's',0,BIFNODE)

DEFNODECODE(DOACROSS_NODE,      "%ERROR",
's',0,BIFNODE)

DEFNODECODE(CDOACROSS_NODE,     "%ERROR",
's',0,BIFNODE)

DEFNODECODE(EXIT_NODE,          "%ERROR",
's',0,BIFNODE)

DEFNODECODE(GOTO_NODE,          "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABgoto %LL3%NL",
's',0,BIFNODE)

DEFNODECODE(ASSGOTO_NODE,       "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABgoto %SYMBID %IF (%LL1 != %NULL)(%LL1)%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(COMGOTO_NODE,       "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABgoto (%LL1), %LL2%NL",
's',0,BIFNODE)

DEFNODECODE(PAUSE_NODE,         "%CMNT%PUTTABpause%IF(%LL1!=%NULL) %LL1%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(STOP_NODE,          "%ERROR",
's',0,BIFNODE)

DEFNODECODE(ASSIGN_STAT,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%LL1 = %LL2%NL",
's',0,BIFNODE)

DEFNODECODE(M_ASSIGN_STAT,      "%ERROR",
's',0,BIFNODE)

DEFNODECODE(PROC_STAT,          "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABcall %SYMBID%LL1%NL",
's',0,BIFNODE)

DEFNODECODE(PROS_STAT,          "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABprocess call %SYMBID(%LL1)%NL",
's',1,BIFNODE)

DEFNODECODE(PROS_STAT_LCTN,     "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABprocess call %SYMBID(%LL1) location%LL2%NL",
's',2,BIFNODE)

DEFNODECODE(PROS_STAT_SUBM,     "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABprocess call %SYMBID(%LL1) submachine%LL2%NL",
's',2,BIFNODE)

DEFNODECODE(ASSLAB_STAT,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABassign %LL2 to %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(SUM_ACC,            "%ERROR",
's',0,BIFNODE)

DEFNODECODE(MULT_ACC,           "%ERROR",
's',0,BIFNODE)

DEFNODECODE(MAX_ACC,            "%ERROR",
's',0,BIFNODE)

DEFNODECODE(MIN_ACC,            "%ERROR",
's',0,BIFNODE)

DEFNODECODE(CAT_ACC,            "%ERROR",
's',0,BIFNODE)

DEFNODECODE(OR_ACC,             "%ERROR",
's',0,BIFNODE)

DEFNODECODE(AND_ACC,            "%ERROR",
's',0,BIFNODE)

/*DEFNODECODE(WRITE_STAT,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABwrite %IF (%L2CODE == %EXPR_LIST)(%LL2)%ELSE%IF (%L2L1STR == %STRCST 'fmt')(unit = *, %LL2)%ELSE%IF (%LL2 != %NULL)(%LL2)%ELSE(fmt = *, %LL2)%ENDIF%ENDIF%ENDIF%INWRITEON%LL1%INWRITEOFF%NL",
's',0,BIFNODE)
*/

DEFNODECODE(WRITE_STAT,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABwrite (%LL3) %LL2%NL",
's',0,BIFNODE)

DEFNODECODE(READ_STAT,         "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABread %IF(%LL3==%NULL)%LL1%IF (%LL2!=%NULL), %LL2%ENDIF%ELSE(%LL3) %LL2%ENDIF%NL",
's',0,BIFNODE)

/* DEFNODECODE(PRINT_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABprint %IF (%LL2 != %NULL)%SETFLAG(PRINT)%LL2%UNSETFLAG(PRINT)%IF (%LL1!= %NULL),%ENDIF%ENDIF%INWRITEON%LL1%INWRITEOFF%NL",
's',0,BIFNODE)
*/

DEFNODECODE(PRINT_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABprint %IF (%LL1!= %NULL)%LL1%ENDIF%IF (%LL2 != %NULL)%SETFLAG(PRINT), %LL2%UNSETFLAG(PRINT)%ENDIF%INWRITEON%INWRITEOFF%NL",
's',0,BIFNODE)


DEFNODECODE(OTHERIO_STAT,       "%CMNT%PUTTAB%LL1%NL",
's',0,BIFNODE)

DEFNODECODE(BLOB,               "%ERROR",
's',0,BIFNODE)
DEFNODECODE(SIZES,              "%ERROR",
's',0,BIFNODE)


/* DEFNODECODE(FUNC_HEDR,          "%CMNT%PUTTAB%IF(%SATTR == %RECURSBIT)recusive %ENDIF%IF(%LL2 != %NULL)%SETFLAG(HEDR)%LL2 %UNSETFLAG(HEDR)%ELSE%SYMBTYPE %ENDIFfunction %SYMBID (%VARLIST)%IF (%LL1 != %NULL) result(%LL1)%ENDIF%NL%BLOB1",
's',0,BIFNODE) */

DEFNODECODE(FUNC_HEDR,          "%CMNT%PUTTAB%IF(%SATTR == %RECURSBIT)recusive %ENDIF%IF(%LL2 != %NULL)%SETFLAG(HEDR)%LL2 %UNSETFLAG(HEDR)%ENDIFfunction %SYMBID (%VARLIST)%IF (%LL1 != %NULL) result(%LL1)%ENDIF%NL%BLOB1",
's',0,BIFNODE)

/*  modified zheng.gb            1996/10/17
DEFNODECODE(WHERE_NODE,         "%CMNT%PUTTABwhere (%LL1) %LL2 = %LL3%NL",
's',0,BIFNODE)
*/
DEFNODECODE(WHERE_NODE,         "%CMNT%PUTTABwhere (%LL1) %BLOB1%NL",
's',0,BIFNODE)

DEFNODECODE(ALLDO_NODE,         "%ERROR",
's',0,BIFNODE)

DEFNODECODE(IDENTIFY,           "%CMNT%PUTTABidentify %LL1 %LL2%NL",
's',0,BIFNODE)

DEFNODECODE(FORMAT_STAT,        "%CMNT%IF (%LABEL != %NULL)%LABEL%ENDIF%PUTTABformat %LL1%NL", 
's',0,BIFNODE)

DEFNODECODE(STOP_STAT,          "%CMNT%PUTTABstop%IF (%LL1 != %NULL) %LL1%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(RETURN_STAT,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABreturn%IF (%LL1 != %NULL) (%LL1)%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(ELSEIF_NODE,        " (%LL1) then%NL%INCTAB%BLOB1%DECTAB%IF (%BLOB2 != %NULL) %IF (%ELSIFBLOB2 == %NULL)%PUTTABelse%NL%ELSE%PUTTABelse if%ENDIF%INCTAB%BLOB2%DECTAB%ENDIF",
's',0,BIFNODE)

/*NO_OPnodes*/
DEFNODECODE(COMMENT_STAT,       "%ERROR",
's',0,BIFNODE)

DEFNODECODE(CONT_STAT,          "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABcontinue%NL",
's',0,BIFNODE)

DEFNODECODE(VAR_DECL,           "%CMNT%PUTTAB%SETFLAG(VARLEN)%SETFLAG(KIND)%LL2%UNSETFLAG(KIND)%IF (%LL3 != %NULL), %SETFLAG(KIND)%LL3%UNSETFLAG(KIND)%IF(%F77 == %NULL)::%ENDIF %LL1%IF(%CHECKFLAG(NOARRAY) != %NULL)%UNSETFLAG(NOARRAY)%ENDIF %ELSE%SETFLAG(VARDECL)%IF(%F77 == %NULL)::%ENDIF %LL1%UNSETFLAG(VARDECL)%ENDIF%IF (%CHECKFLAG(VARLEN) != %NULL)%UNSETFLAG(VARLEN)%ENDIF%NL",
's',0,BIFNODE)

/*   f2c seem cannot parse :: in var_decl statement ?? */

/*
DEFNODECODE(VAR_DECL,           "%CMNT%PUTTAB%SETFLAG(VARLEN)%SETFLAG(KIND)%LL2%UNSETFLAG(KIND)%IF (%LL3 != %NULL), %SETFLAG(KIND)%LL3%UNSETFLAG(KIND):: %LL1%IF(%CHECKFLAG(NOARRAY) != %NULL)%UNSETFLAG(NOARRAY)%ENDIF %ELSE%SETFLAG(VARDECL)   %LL1%UNSETFLAG(VARDECL)%ENDIF%IF (%CHECKFLAG(VARLEN) != %NULL)%UNSETFLAG(VARLEN)%ENDIF%NL",
's',0,BIFNODE)
*/

/*
ALLOCATABLE_STMT,        CONTAINS_STMT,           CYCLE_STMT,             
 EXIT_STMT,              INTENT_STMT,             MODULE_PROC_STMT,       
 NULLIFY_STMT,           OPTIONAL_STMT,            PRIVATE_STMT,            PUBLIC_STMT,
         TARGET_STMT,              
*/
DEFNODECODE(ALLOCATE_STMT,    "%CMNT%PUTTABallocate(%LL1%IF(%LL2!=%NULL), stat=%LL2%ENDIF)%NL",
's',0,BIFNODE)
DEFNODECODE(DEALLOCATE_STMT,    "%CMNT%PUTTABdeallocate(%LL1%IF(%LL2!=%NULL), stat=%LL2%ENDIF)%NL",
's',0,BIFNODE)

DEFNODECODE(NULLIFY_STMT,    "%CMNT%PUTTABnullify(%LL1)%NL",
's',0,BIFNODE)

DEFNODECODE(ASSOCIATED_STMT,    "%CMNT%PUTTABassociated(%LL1,%LL2)%NL",
's',0,BIFNODE)
DEFNODECODE(POINTER_ASSIGN_STAT,"%CMNT%PUTTAB%LL1=>%LL2%NL",
's',0,BIFNODE)

DEFNODECODE(MODULE_STMT,        "%CMNT%PUTTABmodule %SYMBID%NL%IF(%BLOB2!=%NULL)%SETFLAG(CONTAINS)%BLOB1%UNSETFLAG(CONTAINS)%ELSE%BLOB1%ENDIF%IF(%BLOB2!=%NULL)%INCTAB%BLOB2%DECTAB%PUTTABend module%IF(%SYMBOL!=%NULL) %SYMBID%ENDIF%ENDIF%NL",
'd',0,BIFNODE)

DEFNODECODE(INTERFACE_STMT,        "%CMNT%PUTTABinterface %OPERATORON%SYMBID%OPERATOROFF%NL%INCTAB%BLOB1%DECTAB%PUTTABend interface%NL",
'd',0,BIFNODE)


DEFNODECODE(USE_STMT,           "%CMNT%PUTTABuse %SYMBID%OPERATORON%IF (%LL1 != %NULL), %LL1%ENDIF%IF (%LL2 != %NULL), %LL2%ENDIF%OPERATOROFF%NL",
'd',0,BIFNODE)


DEFNODECODE(PARAM_DECL,         "%CMNT%PUTTABparameter (%INPARAMON%SETFLAG(PARAM)%LL1%UNSETFLAG(PARAM)%INPARAMOFF)%NL",
's',0,BIFNODE)
/*
DEFNODECODE(PARAM_DECL,         "%CMNT%PUTTABparameter (%LL1 = %L1SYMBCST)%NL",
's',0,BIFNODE)
*/

DEFNODECODE(COMM_STAT,          "%CMNT%PUTTABcommon %LL1%NL",
's',0,BIFNODE)
DEFNODECODE(PROS_COMM,           "%CMNT%PUTTABprocess common %LL1%NL",
's',0,BIFNODE)
DEFNODECODE(EQUI_STAT,          "%CMNT%PUTTABequivalence %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(IMPL_DECL,          "%CMNT%PUTTABimplicit %IF (%LL1 != %NULL)%SETFLAG(RANGEPRINT)%INIMPLION%LL1%INIMPLIOFF%UNSETFLAG(RANGEPRINT)%ELSEnone%ENDIF%NL",
's',0,BIFNODE)


DEFNODECODE(DATA_DECL,          "%CMNT%PUTTABdata %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(SAVE_DECL,          "%CMNT%PUTTABsave %IF (%LL1 != %NULL)%LL1%ENDIF%NL",
's',0,BIFNODE) 

DEFNODECODE(STMTFN_STAT,        "%CMNT%PUTTAB%LL1%NL",
's',0,BIFNODE)

DEFNODECODE(DIM_STAT,           "%CMNT%PUTTABdimension %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(PROCESSORS_STAT,    "%CMNT%PUTTABprocessors %LL1%NL",
's',1,BIFNODE)

DEFNODECODE(EXTERN_STAT,        "%CMNT%PUTTABexternal %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(INTRIN_STAT,        "%CMNT%PUTTABintrinsic %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(ENUM_DECL,          "%ERROR",
'd',0,BIFNODE)

DEFNODECODE(CLASS_DECL,         "%ERROR",
'd',0,BIFNODE)

DEFNODECODE(UNION_DECL,         "%ERROR",
'd',0,BIFNODE)

DEFNODECODE(STRUCT_DECL,        "%CMNT%PUTTABtype %IF (%LL1 != %NULL),%LL1::%ENDIF%SYMBID%NL%INCTAB%BLOB1%DECTAB%PUTTABend type%NL",
'd',0,BIFNODE)

DEFNODECODE(DERIVED_CLASS_DECL, "%ERROR",
'd',0,BIFNODE)

DEFNODECODE(EXPR_STMT_NODE,     "%ERROR",
's',0,BIFNODE)

/*zgs, do_while and where_block_stmt come from if_node */

DEFNODECODE(DO_WHILE_NODE,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%IF (%LL3 != %NULL)%LL3: %ENDIFdo %IF(%LABUSE!=%NULL)%LABUSE %ENDIFwhile (%LL1)%NL%INCTAB%BLOB1%DECTAB%IF (%BLOB2 != %NULL)%IF (%ELSIFBLOB2 == %NULL)%PUTTABelse%NL%ELSE%PUTTABelse if%ENDIF%INCTAB%BLOB2%DECTAB%LABELENDIF%PUTTABendif%NL%ELSE%LABELENDIF",
's',0,BIFNODE)

DEFNODECODE(WHERE_BLOCK_STMT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABwhere (%LL1)%NL%INCTAB%BLOB1%DECTAB%IF (%BLOB2 != %NULL)%IF (%ELSIFBLOB2 == %NULL)%PUTTABelsewhere%NL%ELSE%PUTTABelsewhere%ENDIF%INCTAB%BLOB2%DECTAB%LABELENDIF%PUTTABendwhere%NL%ELSE%LABELENDIF%PUTTABendwhere%NL%ENDIF",
's',0,BIFNODE)


DEFNODECODE(SWITCH_NODE,        "%CMNT%IF(%LABEL != %NULL)%LABEL %ENDIF%IF (%SYMBOL!=%NULL)%SYMBID:%ENDIF%PUTTABselect case (%LL1)%NL%INCTAB%BLOB1%NL",
's',0,BIFNODE)

DEFNODECODE(CASE_NODE,          "%CMNT%IF (%LL3 != %NULL)%LL3:%ENDIF%PUTTABcase %IF (%VALINT550 != %L1CODE)(%LL1)%ELSE%LL1%ENDIF%NL%INCTAB%BLOB1%DECTAB",
's',0,BIFNODE)

DEFNODECODE(DEFAULT_NODE,       "%ERROR",
's',0,BIFNODE)

DEFNODECODE(BREAK_NODE,         "%ERROR",
's',0,BIFNODE)

DEFNODECODE(CONTINUE_NODE,      "%CMNT%IF(%LABEL!=%NULL)%LABEL%ENDIF%PUTTABcontinue%NL",
's',0,BIFNODE)

DEFNODECODE(RETURN_NODE,        "%ERROR",
's',0,BIFNODE)

DEFNODECODE(ASM_NODE,           "%ERROR",
's',0,BIFNODE)

DEFNODECODE(LABEL_STAT,         "%ERROR",
's',0,BIFNODE)

/*
DEFNODECODE(PROC_COM,           "%ERROR",
's',0,BIFNODE)
*/

DEFNODECODE(ATTR_DECL,          "%ERROR",
's',0,BIFNODE)

DEFNODECODE(NAMELIST_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABnamelist %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(OPEN_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABopen (%LL1)%NL",
's',0,BIFNODE)

DEFNODECODE(CLOSE_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABclose (%LL1)%NL",
's',0,BIFNODE)

DEFNODECODE(ENDFILE_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABendfile %IF(%LL1!=%NULL)%LL1%ELSE(%LL2)%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(REWIND_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABrewind %IF(%LL1!=%NULL)%LL1%ELSE(%LL2)%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(INQUIRE_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABinquire (%LL1)%NL",
's',0,BIFNODE)


DEFNODECODE(ENTRY_STAT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABentry %SYMBID%IF(%LL1 != %NULL) result(%LL1)%ENDIF%NL",
's',0,BIFNODE) 

DEFNODECODE(BLOCK_DATA,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABblock data %SYMBID%NL%BLOB1%NL%PUTTABend%NL",
's',0,BIFNODE)

DEFNODECODE(FORALL_STMT,      "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABforall (%LL1%IF(%LL2 != %NULL), %LL2%ENDIF)%BLOB1%NL",
's',0,BIFNODE)

DEFNODECODE(BACKSPACE_STAT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABbackspace %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(CYCLE_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABcycle %SYMBID%NL",
's',0,BIFNODE)

DEFNODECODE(EXIT_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABexit %SYMBID%NL",
's',0,BIFNODE)

DEFNODECODE(INCLUDE_STAT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABinclude '%LL1'%NL",
's',0,BIFNODE)

DEFNODECODE(SEQUENCE_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABsequence%NL",
's',0,BIFNODE)


DEFNODECODE(CONTAINS_STMT,  "%NL%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABcontains%NL",
's',0,BIFNODE)

DEFNODECODE(ENDDO_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%DECTAB%PUTTABenddo%IF (%SYMBOL!=%NULL) %SYMBID%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(ACCESS_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%LL2%IF(%LL1 != %NULL) :: %LL1%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(MODULE_PROC_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABmodule procedure %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(LOGIF_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABif (%LL1)%BLOB1%NL",
's',0,BIFNODE)

DEFNODECODE(POINTER_STMT,  "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABpointer %LL1%NL",
's',0,BIFNODE)


/*hpf*/

DEFNODECODE(COMBINED_DIRECTIVE_DECL,      "!HPF$%TAB%SETFLAG(CDDEC)%LL3 :: %LL1%UNSETFLAG(CDDEC)%NL",
's',0,BIFNODE)

DEFNODECODE(ALIGN_DECL,      "!HPF$%TABalign %LL1 %LL3%NL",
's',0,BIFNODE)

DEFNODECODE(DISTRIBUTE_DECL,      "!HPF$%TABdistribute %LL1 %LL3%NL",
's',0,BIFNODE)

DEFNODECODE(INHERIT_DECL,      "!HPF$%TAB %LL3 %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(DYNAMIC_DECL,      "!HPF$%TAB %LL3 %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(DIRSEQUENCE_STMT,      "!HPF$%TABsequence %IF (%LL1 != %NULL):: %LL1%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(NOSEQUENCE_STMT,      "!HPF$%TABno sequence %IF (%LL1 != %NULL):: %LL1%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(REALIGN_STMT,      "!HPF$%TABrealign %LL1 %LL2%NL",
's',0,BIFNODE)

DEFNODECODE(CBREALIGN_STMT,      "!HPF$%TABrealign %LL2 :: %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(REDISTRIBUTE_STMT,      "!HPF$%TABredistribute %LL1%LL2%NL",
's',0,BIFNODE)

DEFNODECODE(CBREDISTRIBUTE_STMT,      "!HPF$%TABredistribute %LL2 :: %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(PROCESSORS_STMT,  "!HPF$%TABprocessors %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(TEMPLATE_STMT,  "!HPF$%TABtemplate %LL1%NL",
's',0,BIFNODE)

DEFNODECODE(INDEPENDENT_STMT,  "!HPF$%TABindependent %IF(%LL1 != %NULL), new(%LL1)%ENDIF%IF(%LL2 != %NULL), reduction(%LL2)%ENDIF%NL",
's',0,BIFNODE)

/*  xli hpf2.0 5/12/97 */

DEFNODECODE(RANGE_STMT,      "!HPF$%TABrange %LL1 %LL3%NL",
's',0,BIFNODE)

DEFNODECODE(SHADOW_STMT,      "!HPF$%TABshadow %LL1 %LL3%NL",
's',0,BIFNODE)

DEFNODECODE(ACTIVE_STMT,      "!HPF$%TABactive %SYMBID%NL",
's',0,BIFNODE)

DEFNODECODE(SIMPLE_ON_STMT,   "!HPF$%TABon %LL1%ENDIF%IF(%LL2 != %NULL),%LL2%ENDIF%IF(%LL3 != %NULL), new(%LL3)%ENDIF%NL",
's',0,BIFNODE)

DEFNODECODE(BLOCK_ON_STMT,   "!HPF$%TABon %LL1%ENDIF%IF(%LL2 != %NULL),%LL2%ENDIF%IF(%LL3 != %NULL),new(%LL3)%ENDIF begin%NL",
's',0,BIFNODE)

DEFNODECODE(SIMPLE_RESIDENT_STMT,   "!HPF$%TAB%LL1%NL",
's',0,BIFNODE)

DEFNODECODE(BLOCK_RESIDENT_STMT,   "!HPF$%TAB%LL1 begin%NL",
's',0,BIFNODE)

DEFNODECODE(TASK_STMT,   "!HPF$%TABtask_region %NL",
's',0,BIFNODE)

DEFNODECODE(WAIT_STMT,   "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTABwait (%LL1)%NL",
's',0,BIFNODE)

DEFNODECODE(DIR_END,   "!HPF$%TABend%NL",
's',0,BIFNODE)

/*****************variant tags for low level nodes********************/

/***** List of commands for LOW LEVEL NODES *****/
       /* %ERROR      : Error ; syntax : %ERROR'message' */
       /* %NL         : NewLine */
       /* %%          : '%' (Percent Sign) */
       /* %TAB        : Tab */
       /* %IF         : If ; syntax : %IF (condition) then_bloc [%ELSE else_bloc] %ENDIF */
       /* %ELSE       : Else */
       /* %ENDIF      : End of If */
       /* %LL1        : Low Level Node 1 */
       /* %LL2        : Low Level Node 2 */
       /* %SYMBID     : Symbol identifier */
       /* %TYPE       : Type */
       /* %L1SYMBCST  : Constant Value of ll_ptr1 Low Level Node Symbol */
       /* %SYMBCST    : Constant Value of the Low Level Node Symbol    zheng.gb*/
       /* %INTVAL     : Integer Value */
       /* %STATENO    : Statement Number */
       /* %STRVAL     : String Value */
       /* %BOOLVAL    : Boolean Value */
       /* %CHARVAL    : Char Value */
       /* %ORBPL1     : Openning Round Brackets on Precedence of Low Level Node 1 */
       /* %CRBPL1     : Closing Round Brackets on Precedence of Low Level Node 1 */
       /* %ORBPL2     : Openning Round Brackets on Precedence of Low Level Node 2 */
       /* %CRBPL2     : Closing Round Brackets on Precedence of Low Level Node 2 */
/***********************************************/

/***** List of commands for evaluation in IF THEN ELSE ENDIF statements for LOW LEVEL NODE *****/
       /* %STRCST     : String Constant in '' */
       /* %SYMBID     : Symbol Identifier (string) */
       /* %SYMBOL     : Symbol node (integer) */
       /* ==          : Equal (operation) */
       /* !=          : Different (operation) */
       /* %NULL       : 0, Integer Constant (or false boolean) */
       /* %LL1        : Low Level Node 1 (integer) */
       /* %LL2        : Low Level Node 2 (integer) */
       /* %LABUSE     : Label ptr (do end) (integer) */
       /* %L1CODE     : Code (variant) of Low Level Node 1 (integer) */
       /* %L2CODE     : Code (variant) of Low Level Node 2 (integer) */
       /* %INWRITE    : In_Write_Statement (integer / boolean flag) */
       /* %INPARAM    : In_Param_Statement (integer / boolean flag) */
       /* %INIMPLI    : In_Impli_Statement (integer / boolean flag) */
/************************************************************************************************/


/*DEFNODECODE(LEN_OP,            "%SETFLAG(LENOP)%IF (%LL1 != %NULL)*%LL1 %IF (%CHECKFLAG(STYPE) != %NULL)%UNSETFLAG(VARLEN)%ENDIF%ENDIF%UNSETFLAG(LENOP) ",
*/

DEFNODECODE(LEN_OP,            "len=%LL1",
'e',0,LLNODE)
DEFNODECODE(INT_VAL,            "%INTVAL",
'c',0,LLNODE)
DEFNODECODE(FLOAT_VAL,          "%STRVAL",
'c',0,LLNODE)
DEFNODECODE(DOUBLE_VAL,         "%STRVAL",
'c',0,LLNODE)
DEFNODECODE(BOOL_VAL,           "%BOOLVAL",
'c',0,LLNODE)
DEFNODECODE(CHAR_VAL,           "%IF (%INIMPLI == %NULL)\\%ENDIF%CHARVAL%IF (%INIMPLI == %NULL)\\%ENDIF",
'c',0,LLNODE)
DEFNODECODE(STRING_VAL,         "%IF (%CHECKFLAG(QUOTE) != %NULL)%STRVAL%ELSE\\%STRVAL\\%ENDIF",
'c',0,LLNODE)

DEFNODECODE(BINARY_VAL,            "%STRVAL",
'c',2,LLNODE)
DEFNODECODE(OCTN_VAL,            "%STRVAL",
'c',2,LLNODE)
DEFNODECODE(HEX_VAL,            "%STRVAL",
'c',2,LLNODE)

DEFNODECODE(KEYWORD_VAL,        "%IF (%CHECKFLAG(LENOP) != %NULL)(%STRVAL)%ELSE%STRVAL%ENDIF",
'c',0,LLNODE)
DEFNODECODE(COMPLEX_VAL,        "%SETFLAG(COMPLEX)(%LL1, %LL2)%UNSETFLAG(COMPLEX)",
'c',0,LLNODE)

/*  zheng.gb
DEFNODECODE(CONST_REF,          "%SYMBID",
'r',2,LLNODE)
*/
/*  new   SYMBCST */
DEFNODECODE(CONST_REF,          "%SYMBID%IF (%CHECKFLAG(PARAM) != %NULL) = %SYMBCST%ENDIF",
'r',2,LLNODE)

DEFNODECODE(VAR_REF,            "%SYMBID%IF (%CHECKFLAG(VARDECL) != %NULL)%IF (%CHECKFLAG(VARLEN) != %NULL)%STRINGLEN%ENDIF%ENDIF",
'r',0,LLNODE)

/*DEFNODECODE(ARRAY_REF,          "%SYMBID%IF (%LL1 != %NULL)%PUSHFLAG(VARDECL)%IF(%CHECKFLAG(NOARRAY) == %NULL)(%LL1)%ENDIF%POPFLAG(VARDECL)%ENDIF%IF (%CHECKFLAG(VARDECL) != %NULL)%IF (%CHECKFLAG(VARLEN) != %NULL)%STRINGLEN%ENDIF%ENDIF",
'r',1,LLNODE)
*/
DEFNODECODE(ARRAY_REF,          "%SYMBID%IF (%LL1 != %NULL)%PUSHFLAG(VARDECL)(%LL1)%POPFLAG(VARDECL)%ENDIF%IF (%CHECKFLAG(VARDECL) != %NULL)%IF (%CHECKFLAG(VARLEN) != %NULL)%ENDIF%ENDIF",
'r',1,LLNODE)

DEFNODECODE(PROCESSORS_REF,     "%IF (%LL1 != %NULL)%PUSHFLAG(VARDECL)%IF(%CHECKFLAG(NOARRAY) == %NULL)(%LL1)%ENDIF%POPFLAG(VARDECL)%ENDIF%IF (%CHECKFLAG(VARDECL) != %NULL)%STRINGLEN%ENDIF",
'r',1,LLNODE)
DEFNODECODE(RECORD_REF,         "%LL1%IF(%LL2 != %NULL)%%%LL2%ENDIF",
'r',2,LLNODE)
DEFNODECODE(ENUM_REF,           "%SYMBID",
'r',2,LLNODE)
DEFNODECODE(LABEL_REF,          "%STATENO",
'r',0,LLNODE)
DEFNODECODE(TYPE_OP,            "%IF(%SYMBOL!=%NULL)%SYMBID%ELSE%TYPE%IF(%LL1!=%NULL)(%LL1)%ENDIF%ENDIF",
'e',1,LLNODE)
DEFNODECODE(DIMENSION_OP,            "%SETFLAG(NOARRAY) dimension(%LL1)",
'e',1,LLNODE)
DEFNODECODE(ALLOCATABLE_OP,            " allocatable",
'e',1,LLNODE)
DEFNODECODE(PARAMETER_OP,            " parameter",
'e',1,LLNODE)
DEFNODECODE(TARGET_OP,            " target",
'e',1,LLNODE)
DEFNODECODE(SAVE_OP,            " save",
'e',1,LLNODE)
DEFNODECODE(POINTER_OP,            " pointer",
'e',1,LLNODE)
DEFNODECODE(INTRINSIC_OP,            " intrinsic",
'e',1,LLNODE)
DEFNODECODE(OPTIONAL_OP,            " optional",
'e',1,LLNODE)
DEFNODECODE(EXTERNAL_OP,            " external",
'e',1,LLNODE)
DEFNODECODE(PRIVATE_OP,            "private",
'e',1,LLNODE)
DEFNODECODE(PUBLIC_OP,            "public",
'e',1,LLNODE)
DEFNODECODE(IN_OP,            "intent(in)",
'e',1,LLNODE)
DEFNODECODE(OUT_OP,            "intent(out)",
'e',1,LLNODE)
DEFNODECODE(INOUT_OP,            "intent(inout)",
'e',1,LLNODE)

DEFNODECODE(VAR_LIST,           "%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(PORT_TYPE_OP,       "%TYPE%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(INPORT_TYPE_OP,       "inport ( %TYPE%SETFLAG(RECPORT)%LL1%IF (%LL2 != %NULL), %LL2%ENDIF%IF(%CHECKFLAG(RECPORT) != %NULL))%ENDIF",
'e',2,LLNODE)

DEFNODECODE(OUTPORT_TYPE_OP,       "outport( %TYPE%SETFLAG(RECPORT)%LL1%IF (%LL2 != %NULL), %LL2%ENDIF%IF(%CHECKFLAG(RECPORT) != %NULL))%ENDIF",
'e',2,LLNODE)

DEFNODECODE(INPORT_NAME,        "%IF(%CHECKFLAG(PORT) != %NULL)PORT=%ELSEIN=%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(OUTPORT_NAME,       "%IF(%CHECKFLAG(PORT) != %NULL)PORT=%ELSEOUT=%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(FROMPORT_NAME,      "FROM=%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(TOPORT_NAME,        "TO=%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(IOSTAT_STORE,       "IOSTAT=%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(EMPTY_STORE,        "EMPTY=%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(ERR_LABEL,          "%STATENO",
'e',2,LLNODE)

/*DEFNODECODE(END_LABEL,          "END=%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)*/

DEFNODECODE(END_LABEL,          "%STATENO",
'e',2,LLNODE)

DEFNODECODE(DATA_IMPL_DO,       "(%LL1, %SYMBID=%LL2)", 
'e',2,LLNODE)

DEFNODECODE(DATA_ELT,           "%IF (%SYMBOL == %NULL)%LL1%ELSE%SYMBID%LL1%ENDIF%IF (%LL2 != %NULL),%LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DATA_SUBS,          "(%LL1)%IF (%LL2 != %NULL)%LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DATA_RANGE,         "(%IF (%LL1 != %NULL)%LL1%ENDIF:%IF (%LL2 != %NULL)%LL2%ENDIF)",
'e',2,LLNODE)

DEFNODECODE(ICON_EXPR,          "%LL1%IF (%LL2 != %NULL),%LL2%ENDIF",
'e',2,LLNODE)

/* Probablement faux BODIN
DEFNODECODE(EXPR_LIST,          "%LL1%IF (%INPARAM != %NULL) = %L1SYMBCST%ENDIF%IF (%LL2 != %NULL),%LL2%ENDIF",
'e',2,LLNODE) */
/*
DEFNODECODE(EXPR_LIST,          "%IF(%SYMBOL!=%NULL)%SYMBID%ENDIF%LL1%IF (%CHECKFLAG(PARAM) != %NULL) = %L1SYMBCST%ENDIF%ENDIF%IF (%LL2 != %NULL)%IF (%CHECKFLAG(HEDR) != %NULL) %ELSE,%ENDIF%LL2%ENDIF",
'e',2,LLNODE) 
*/
DEFNODECODE(EXPR_LIST,          "%IF(%SYMBOL!=%NULL)%SYMBID%ENDIF%LL1%IF (%LL2 != %NULL)%IF (%CHECKFLAG(HEDR) != %NULL)%IF(%CHECKFLAG(EXTRINSIC) == %NULL) %ELSE,%ENDIF%ELSE,%ENDIF%LL2%ENDIF",
'e',2,LLNODE) 
 
DEFNODECODE(RANGE_LIST,         "%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(CASE_CHOICE,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(DEF_CHOICE,         "%LL1%IF (%LL2 != %NULL):%LL2",
'e',2,LLNODE)
DEFNODECODE(VARIANT_CHOICE,     "%ERROR",
'e',2,LLNODE)

DEFNODECODE(DDOT,               "%IF(%SYMBOL!=%NULL)%SYMBID=%ENDIF%IF(%LL1 == %NULL)%IF(%LL2 == %NULL):%ENDIF%ENDIF%LL1%IF (%INWRITE != %NULL),%ELSE%IF (%INIMPLI != %NULL)-%ELSE%IF (%CHECKFLAG(LOOP) != %NULL)%IF (%LL2 != %NULL)%IF (%CHECKFLAG(FORALL) != %NULL):%ELSE,%ENDIF%ENDIF%ELSE%IF (%LL2 != %NULL)%IF(%CHECKFLAG(IMPDO)!=%NULL),%ELSE:%ENDIF%ENDIF%ENDIF%ENDIF%ENDIF%LL2",
'e',2,LLNODE)

/*zgs */

DEFNODECODE(PREFIX_PURE,           "pure",
'e',2,LLNODE)

DEFNODECODE(RENAME_NODE,           "%LL1=>%LL2",
'e',2,LLNODE)

DEFNODECODE(DATA_VALUE,     "%IF(%LL1!=%NULL)%LL1%IF (%LL2 != %NULL)*%LL2%ENDIF%ELSE%IF (%LL2 != %NULL)%LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DATA_STMT_SET,     "%LL1/%LL2/",
'e',2,LLNODE)

DEFNODECODE(RANGE_OP,           "%IF(%LL1==%NULL)%IF(%LL2==%NULL):%ENDIF%ENDIF%IF (%LL1 != %NULL)%LL1%IF (%CHECKFLAG(LOOP) != %NULL)%IF (%CHECKFLAG(FORALL) != %NULL):%ELSE,%ENDIF%ELSE%IF(%CHECKFLAG(IMPDO)!=%NULL),%ELSE:%ENDIF%ENDIF%ENDIF%LL2",
'e',2,LLNODE)

DEFNODECODE(SUB_STRING,           "%LL1(%LL2)",
'e',2,LLNODE)

DEFNODECODE(FORALL_HEADER_OP,           "%LL1",
'e',2,LLNODE)

DEFNODECODE(INDEX_OP,               "%LL1=%LL2",
'e',2,LLNODE)

DEFNODECODE(UPPER_OP,           "%ERROR",
'e',2,LLNODE)
DEFNODECODE(LOWER_OP,           "%ERROR",
'e',2,LLNODE)
DEFNODECODE(EQ_OP,              "%ORBPL1%LL1%CRBPL1 .eq. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(LT_OP,              "%ORBPL1%LL1%CRBPL1 .lt. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(GT_OP,              "%ORBPL1%LL1%CRBPL1 .gt. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(NOTEQL_OP,          "%ORBPL1%LL1%CRBPL1 .ne. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(LTEQL_OP,           "%ORBPL1%LL1%CRBPL1 .le. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(GTEQL_OP,           "%ORBPL1%LL1%CRBPL1 .ge. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(ADD_OP,             "%IF(%LL2==%NULL)+%LL1%ELSE%ORBPL1%LL1%CRBPL1+%ORBPL2%LL2%CRBPL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(SUBT_OP,            "%ORBPL1%LL1%CRBPL1-%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(OR_OP,              "%ORBPL1%LL1%CRBPL1 .or. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(MULT_OP,            "%ORBPL1%LL1%CRBPL1*%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(DIV_OP,             "%ORBPL1%LL1%CRBPL1/%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(MOD_OP,             "%ORBPL1%LL1%CRBPL1%%%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(AND_OP,             "%ORBPL1%LL1%CRBPL1 .and. %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(EXP_OP,             "%ORBPL1%LL1%CRBPL1**%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(ARRAY_MULT,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(CONCAT_OP,          "%ORBPL1%LL1%CRBPL1//%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(XOR_OP,             "%LL1 .xor. %LL2",
'e',2,LLNODE)
DEFNODECODE(EQV_OP,             "%LL1 .eqv. %LL2",
'e',2,LLNODE)
DEFNODECODE(NEQV_OP,            "%LL1 .neqv. %LL2",
'e',2,LLNODE)
DEFNODECODE(MINUS_OP,           "%IF(%LL2==%NULL)%IF(%CHECKFLAG(COMPLEX)!=%NULL)-%ORBPL1%LL1%CRBPL1%ELSE(-%ORBPL1%LL1%CRBPL1)%ENDIF%ELSE%ORBPL1%LL1%CRBPL1-%ORBPL2%LL2%CRBPL2%ENDIF",
'e',1,LLNODE)
DEFNODECODE(NOT_OP,             ".not. (%LL1)",
'e',2,LLNODE)
DEFNODECODE(ASSGN_OP,           "%LL1%IF (%LL2 != %NULL)=%LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(DEREF_OP,           "%LL1",
'e',1,LLNODE)
DEFNODECODE(POINTST_OP,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FUNCTION_OP,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(MINUSMINUS_OP,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(PLUSPLUS_OP,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BITAND_OP,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BITOR_OP,           "%ERROR",
'e',2,LLNODE)

DEFNODECODE(PREFIX_HPF,           "hpf",
'e',2,LLNODE)

DEFNODECODE(PREFIX_HPFLOCAL,         "hpf_local",
'e',2,LLNODE)

DEFNODECODE(DISTRIBUTE_OP,           "%IF (%LL1 != %NULL)%LL1%ENDIF%IF(%LL2 != %NULL) %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(ALIGN_OP,                "%IF (%LL2 != %NULL)%IF(%LL1!=%NULL)(%LL1) %ENDIF%LL2%ELSE%LL1%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DISTRIBUTE_ATT,           "distribute %IF (%LL1 != %NULL)%LL1%ENDIF%IF(%LL2 != %NULL) %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(ALIGN_ATT,                "align %IF (%LL1 != %NULL)%LL1%ENDIF%IF(%LL2 != %NULL) %LL2%ENDIF",
'e',2,LLNODE)


DEFNODECODE(DIST_FORMAT_OP,           "%IF(%LL1 != %NULL)%LL1%ENDIF%IF(%LL2 != %NULL) (%LL2)%ENDIF",
'e',2,LLNODE)


DEFNODECODE(DIST_TARGET_OP,           "onto %IF(%LL1 != %NULL)%LL1%ENDIF%IF(%LL2 != %NULL) %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(BLOCK_OP,                 "block%IF(%LL1 != %NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(CYCLIC_OP,           "cyclic%IF(%LL1 != %NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(STAR_OP,              "*",
'e',2,LLNODE)

DEFNODECODE(COLON_OP,              ":",
'e',2,LLNODE)

DEFNODECODE(ALIGN_WITH_OP,              "with%IF(%LL1 != %NULL) %LL1%ENDIF %LL2",
'e',2,LLNODE)

DEFNODECODE(STAR_RANGE,         "*",
'e',2,LLNODE)

DEFNODECODE(INHERIT_OP,         "inherit",
'e',2,LLNODE)

DEFNODECODE(TEMPLATE_VAL,         "template",
'e',2,LLNODE)
DEFNODECODE(PROCESSORS_VAL,         "processors",
'e',2,LLNODE)

/* xli hpf2.0  5/12/97 */

DEFNODECODE(ACTIVE_OP,         "active",
'e',2,LLNODE)

DEFNODECODE(DIR_RANGE_ATTR,         "range%IF (%LL1 != %NULL)%LL1%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DIR_RANGE_OP,         "(%LL1)",
'e',2,LLNODE)

DEFNODECODE(SHADOW_OP,         "shadow%IF (%LL1 != %NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(ALL_OP,             "all ",
'e',2,LLNODE)

DEFNODECODE(GEN_BLOCK_OP,             "gen_block %IF(%LL1!=%NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(INDIRECT_OP,             "indirect %IF(%LL1!=%NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(RESIDENT_OP,             "resident %IF(%LL1!=%NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(HOME_OP,             "home %IF(%LL1!=%NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(HOME_PROCS,             "%IF(%LL1!=%NULL)(%LL1)%ENDIF",
'e',2,LLNODE)

DEFNODECODE(PREFIX_EXTRINSIC,             "extrinsic %IF(%LL1!=%NULL)(%SETFLAG(EXTRINSIC)%LL1%UNSETFLAG(EXTRINSIC))%ENDIF",
'e',2,LLNODE)

DEFNODECODE(PREFIX_ELEMENTAL,             "elementary",
'e',2,LLNODE)

DEFNODECODE(PREFIX_HPFSERIAL,             "hpf_serial",
'e',2,LLNODE)

DEFNODECODE(MAP_OP,             "map_to(%LL1)",
'e',2,LLNODE)

DEFNODECODE(LAYOUT_OP,             "layout(%LL1)",
'e',2,LLNODE)

DEFNODECODE(PASS_BY_OP,             "pass_by(%LL1)",
'e',2,LLNODE)

DEFNODECODE(BLOCK_ANY,             "",
'e',2,LLNODE)

DEFNODECODE(CYCLIC_ANY,             "",
'e',2,LLNODE)

/***/
DEFNODECODE(PROC_CALL,          "%SYMBID (%LL1)",
'e',2,LLNODE)
DEFNODECODE(PROS_CALL,          "%SYMBID (%LL1)",
'e',1,LLNODE)
DEFNODECODE(FUNC_CALL,          "%SYMBID (%LL1)",
'e',1,LLNODE)
DEFNODECODE(INTRIN_FUNC_CALL,          "%SYMBID (%LL1)",
'e',1,LLNODE)
DEFNODECODE(ACCESS_REF,         "%LL1%IF (%LL2 != %NULL) (%LL2)%ENDIF",
'e',2,LLNODE)
DEFNODECODE(CONS,               "%LL1, %LL2",
'e',2,LLNODE)
DEFNODECODE(ACCESS,             "%LL1, FORALL = (%SYMBID = %LL2)",
'e',2,LLNODE)
DEFNODECODE(IOACCESS,           "%IF (%LL1 != %NULL)(%LL1, %ENDIF%SYMBID = %LL2%IF (%LL1 != %NULL))%ENDIF",
'e',2,LLNODE)
DEFNODECODE(CONTROL_LIST,       "%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(SEQ,                "%LL1%IF (%LL2 != %NULL)%IF (%INWRITE != %NULL),%ELSE:%ENDIF%LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(SPEC_PAIR,          "%IF (%CHECKFLAG(PRINT) != %NULL)%LL2%ELSE%IF(%LL1!=%NULL)%LL1=%ENDIF%LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(COMM_LIST,          "%IF (%SYMBOL != %NULL)/%SYMBID/%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)                   
DEFNODECODE(STMT_STR,           "%STRVAL",
'e',2,LLNODE)
DEFNODECODE(EQUI_LIST,          "(%LL1)%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)
DEFNODECODE(IMPL_TYPE,          "%LL2 %IF (%LL1 != %NULL)(%LL1)",
'e',2,LLNODE)
DEFNODECODE(STMTFN_DECL,        "%SYMBID (%VARLIST) = %LL1",
'e',2,LLNODE)
DEFNODECODE(BIT_COMPLEMENT_OP,  "%ERROR",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF,            "%ERROR",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF_BODY,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FUNCTION_REF,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(LSHIFT_OP,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(RSHIFT_OP,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(UNARY_ADD_OP,       "(+(%LL1))",
'e',2,LLNODE)
DEFNODECODE(SIZE_OP,            "%ERROR",
'e',2,LLNODE)
DEFNODECODE(INTEGER_DIV_OP,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(SUB_OP,             "%ERROR",
'e',2,LLNODE)
DEFNODECODE(LE_OP,              "%ERROR",
'e',2,LLNODE)
DEFNODECODE(GE_OP,              "%ERROR",
'e',2,LLNODE)
DEFNODECODE(NE_OP,              "%ERROR",
'e',2,LLNODE)

DEFNODECODE(CLASSINIT_OP,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(CAST_OP,            "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ADDRESS_OP,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(POINSTAT_OP,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(COPY_NODE,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(INIT_LIST,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(VECTOR_CONST,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BIT_NUMBER,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ARITH_ASSGN_OP,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ARRAY_OP,           "%LL1 (%LL2)",
'e',2,LLNODE)
DEFNODECODE(NEW_OP,             "%ERROR",
'e',2,LLNODE)
DEFNODECODE(DELETE_OP,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(NAMELIST_LIST,      "%IF (%SYMBOL != %NULL)/%SYMBID/%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

/* new tag for some expression */

DEFNODECODE(CEIL_DIV_EXPR,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(MAX_OP,             "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BIF_SAVE_EXPR,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(MIN_OP,             "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BIF_ADDR_EXPR,      "%ERROR",
'e',1,LLNODE)
DEFNODECODE(BIF_NOP_EXPR,       "%ERROR",
'e',1,LLNODE)
DEFNODECODE(BIF_RTL_EXPR,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUNC_MOD_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUNC_DIV_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FLOOR_DIV_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FLOOR_MOD_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(CEIL_MOD_EXPR,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ROUND_DIV_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ROUND_MOD_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(RDIV_EXPR,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(EXACT_DIV_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(CONVERT_EXPR,       "%ERROR",
'e',1,LLNODE)
DEFNODECODE(CONST_DECL,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ABS_EXPR,           "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUTH_ANDIF_EXPR,   "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUTH_AND_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUTH_NOT_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUTH_ORIF_EXPR,    "%ERROR",
'e',2,LLNODE)
DEFNODECODE(PREINCREMENT_EXPR,  "%ERROR",
'e',2,LLNODE)
DEFNODECODE(PREDECREMENT_EXPR,  "%ERROR",
'e',2,LLNODE)
DEFNODECODE(COMPOUND_EXPR,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FLOAT_EXPR,         "%ERROR",
'e',1,LLNODE)
DEFNODECODE(BIT_IOR_EXPR,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BIT_XOR_EXPR,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(BIT_ANDTC_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(TRUTH_OR_EXPR,      "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FIX_TRUNC_EXPR,     "%ERROR",
'e',1,LLNODE)
DEFNODECODE(RROTATE_EXPR,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(LROTATE_EXPR,       "%ERROR",
'e',2,LLNODE)
DEFNODECODE(RANGE_EXPR,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(POSTDECREMENT_EXPR, "%ERROR",
'e',2,LLNODE)
DEFNODECODE(REFERENCE_TYPE,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FIX_FLOOR_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FIX_ROUND_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FIX_CEIL_EXPR ,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(FUNCTION_DECL ,     "%ERROR",
'd',2,LLNODE)
DEFNODECODE(MODIFY_EXPR,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(REFERENCE_EXPR,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(RESULT_DECL,        "%ERROR",
'd',2,LLNODE)
DEFNODECODE(PARM_DECL,          "%ERROR",
'd',2,LLNODE)

DEFNODECODE(DYNAMIC_OP,         "dynamic",
'e',2,LLNODE)

DEFNODECODE(ONLY_NODE,         "only: %LL1",
'e',2,LLNODE)

DEFNODECODE(DEFAULT,            "default",
'e',2,LLNODE)

DEFNODECODE(LABEL_LIST,            "%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(LABEL_REF,           "%STATENO",
'e',2,LLNODE)

DEFNODECODE(KIND_VAL,            "%IF(%SYMBOL!=%NULL)%SYMBID%ENDIF%IF(%LL1!=%NULL)%LL1%ENDIF%IF(%LL2!=%NULL)_%LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(IMPLIED_DO,            "(%LL1, %SYMBID=%SETFLAG(IMPDO)%LL2%UNSETFLAG(IMPDO))",
'e',2,LLNODE)

DEFNODECODE(KEYWORD_ARG,            "%IF(%LL2!=%NULL)%LL2%ENDIF%IF(%LL2!=%NULL)%IF(%LL1!=%NULL)=%ENDIF%ENDIF%IF(%LL1!=%NULL)%LL1%ENDIF",
'e',2,LLNODE)


DEFNODECODE(NON_KIND_OP,            "%LL1",
'e',2,LLNODE)

DEFNODECODE(KIND_OP,            "%IF(%CHECKFLAG(KIND)!=%NULL)kind=%LL1%IF(%LL2!=%NULL), %LL2%ENDIF%ELSE%LL1%ENDIF",
'e',2,LLNODE)

DEFNODECODE(NON_LEN_OP,            "(%LL1)%IF(%LL2!=%NULL) %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(DEFINED_OP,            "%LL1 %SYMBID %LL2",
'e',2,LLNODE)

DEFNODECODE(ARRAY_CONSTRUCTOR,            "(/ %LL2 /)",
'e',2,LLNODE)

/*
DEFNODECODE(STAR_LIST,            "%LL1*%LL2",
'e',2,LLNODE)
*/
/*   zheng.gb 1997/3/5  */
DEFNODECODE(STAR_LIST,            "%IF(%VALINT352 == %L1CODE )%L1L1*%LL2=%L1L2%ELSE%LL1*%LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(NAME_LIST,            "%IF (%SYMBOL != %NULL)/%SYMBID/%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(CONSTRUCTOR_REF,            "(/ %LL1 /)",
'e',2,LLNODE)

DEFNODECODE(PREFIX_RECURSIVE,            "recursive",
'e',2,LLNODE)

DEFNODECODE(STRUCTURE_CONSTRUCTOR,            "%LL1(%LL2)",
'e',2,LLNODE)


/*****************variant tags for symbol table entries********************/

DEFNODECODE(BIF_PARM_DECL,      "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(CONST_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(ENUM_NAME,          "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(FIELD_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(VARIABLE_NAME,      "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(TYPE_NAME,          "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(PROGRAM_NAME,       "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(PROCEDURE_NAME,     "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(PROCESS_NAME,       "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(VAR_FIELD,          "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(LABEL_VAR,          "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(FUNCTION_NAME,      "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(MEMBER_FUNC,        "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(CLASS_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(UNION_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(STRUCT_NAME,        "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(LABEL_NAME,         "%ERROR",
'r',0,SYMBNODE)

/*****************variant tags for type nodes********************/

/***** List of commands for TYPE NODES *****/
       /* %ERROR      : Error ; syntax : %ERROR'message' */
       /* %NL         : NewLine */
       /* %%          : '%' (Percent Sign) */
       /* %TAB        : Tab */
       /* %IF         : If ; syntax : %IF (condition) then_bloc [%ELSE else_bloc] %ENDIF */
       /* %ELSE       : Else */
       /* %ENDIF      : End of If */
       /* %BASETYPE   : Base Type Name Identifier */
       /* %NAMEID     : Name Identifier */
       /* %TABNAME    : Self Name from Table */
       /* %RANGES     : Ranges */
       /* %RANGLL1    : Low Level Node 1 of Ranges */
/*******************************************/

/***** List of commands for evaluation in IF THEN ELSE ENDIF statements for TYPE NODE *****/
       /* %STRCST     : String Constant in '' */
       /* ==          : Equal (operation) */
       /* !=          : Different (operation) */
       /* %NULL       : 0, Integer Constant (or false boolean) */
       /* %INIMPLI    : In_Impli_Statement (integer / boolean flag) */
/******************************************************************************************/

/* CODES AYANT DISPARU :
 T_SEQUENCE,             T_EVENT,                 T_GATE,
*/

DEFNODECODE(DEFAULT,            "default",
't',0,TYPENODE)

DEFNODECODE(T_INT,              "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_FLOAT,            "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_DOUBLE,           "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_CHAR,             "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_BOOL,             "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_STRING,           "%TABNAME%SETFLAG(STYPE)%SETFLAG(TSRIN)%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF%UNSETFLAG(TSRIN)%UNSETFLAG(STYPE) ",
't',0,TYPENODE)
DEFNODECODE(T_COMPLEX,          "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)
DEFNODECODE(T_DCOMPLEX,         "%TABNAME%IF (%INIMPLI == %NULL)%RANGES%ELSE%IF(%CHECKFLAG(RANGEPRINT) !=%NULL)%RANGES%ENDIF%ENDIF ",
't',0,TYPENODE)



DEFNODECODE(T_ENUM,             "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_SUBRANGE,         "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_LIST,             "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_ARRAY,            "%BASETYPE %RANGES",
't',0,TYPENODE)
DEFNODECODE(T_RECORD,           "type(%NAMEID)",
't',0,TYPENODE)
DEFNODECODE(T_ENUM_FIELD,       "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_UNKNOWN,          "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_VOID,             "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_DESCRIPT,         "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_FUNCTION,         "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_POINTER,          "%BASETYPE",
't',0,TYPENODE)
DEFNODECODE(T_UNION,            "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_STRUCT,           "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_CLASS,            "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_DERIVED_CLASS,    "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_DERIVED_TYPE,     "type (%NAMEID)",
't',0,TYPENODE)

DEFNODECODE(T_KIND,     "%SUBTYPE",
't',0,TYPENODE)



DEFNODECODE(LOCAL,              "%ERROR",
't',0,TYPENODE)
DEFNODECODE(INPUT,              "%ERROR",
't',0,TYPENODE)
DEFNODECODE(OUTPUT,             "%ERROR",
't',0,TYPENODE)
DEFNODECODE(IO,                 "%ERROR",
't',0,TYPENODE)








