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

/*****************************************************************************/
/*****************************************************************************/
/*****                                                                   *****/
/*****    UNPARSE.DEF:   Bodin Francois Sepetmber 1992                   *****/
/*****           with major changes by d. gannon summer 1993             *****/
/*****           Version C++                                             *****/
/*****                                                                   *****/
/*****************************************************************************/
/*****************************************************************************/

/****
DEFNODECODE(GLOBAL,             "%SETFLAG(ARRAYREF)%UNSETFLAG(ARRAYREF)%SETFLAG(CLASSDECL)%UNSETFLAG(CLASSDECL)%SETFLAG(PAREN)%UNSETFLAG(PAREN)%SETFLAG(ELIST)%UNSETFLAG(ELIST)%SETFLAG(QUOTE)%BLOB1%UNSETFLAG(QUOTE)",
's',0,BIFNODE)
*****/
DEFNODECODE(GLOBAL,          "%CMNT%SETFLAG(QUOTE)%BLOB1%UNSETFLAG(QUOTE)",
's',0,BIFNODE)
/******* xli ********/

DEFNODECODE(PROG_HEDR,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(PROC_HEDR,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(BASIC_BLOCK,        "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIF{%NL%INCTAB%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

/* 107 is value for FOR_NODE */
DEFNODECODE(CONTROL_END,        " ",
's',0,BIFNODE)
DEFNODECODE(IF_NODE,            "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFif (%LL1) %NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL %IF (%BLOB2 != %NULL)%PUTTABelse{%INCTAB%NL%BLOB2%DECTAB%PUTTAB}%NL%ENDIF",
's',0,BIFNODE)
DEFNODECODE(ARITHIF_NODE,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(LOGIF_NODE,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(LOOP_NODE,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(FOR_NODE,           "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFfor (%LL1 ; %LL2 ; %LL3)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL", 
's',0,BIFNODE)
DEFNODECODE(FORALL_NODE,        "%ERROR",
's',0,BIFNODE)
DEFNODECODE(WHILE_NODE,         "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFwhile (%LL1)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(TRY_STAT,         "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFtry {%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(CATCH_STAT,         "%CMNT%PUTTABcatch (%IF(%LL1!=%NULL)%SETFLAG(VARDECL)%LL1%UNSETFLAG(VARDECL)%ENDIF){%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
'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%PUTTABgoto %LABNAME;%NL",
's',0,BIFNODE)
DEFNODECODE(ASSGOTO_NODE,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(COMGOTO_NODE,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(PAUSE_NODE,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(STOP_NODE,          "%ERROR",
's',0,BIFNODE)

DEFNODECODE(ASSIGN_STAT,        "%ERROR",
's',0,BIFNODE)
DEFNODECODE(M_ASSIGN_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(PROC_STAT,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(ASSLAB_STAT,        "%ERROR",
'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(READ_STAT,         "%ERROR",
's',0,BIFNODE) 
DEFNODECODE(WRITE_STAT,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(PRINT_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(OTHERIO_STAT,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(BLOB,               "%ERROR",
's',0,BIFNODE)
DEFNODECODE(SIZES,              "%ERROR",
's',0,BIFNODE)

/*
DEFNODECODE(FUNC_HEDR,          "%CMNT%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUTTAB%DECLSPEC%SYMBTYPE %IF (%CHECKFLAG(CLASSDECL) == %NULL)%SYMBSCOPE%IF(%LL3 != %NULL)<%TMPLARGS >%ENDIF%SYMBDC%ENDIF %SETFLAG(VARDECL)%FUNHD%UNSETFLAG(VARDECL)%CONSTRU%ENDIF%CNSTF{%INCTAB%NL%PUSHFLAG(CLASSDECL)%BLOB1%POPFLAG(CLASSDECL)%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
*/

/*
DEFNODECODE(FUNC_HEDR,          "%CMNT%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUTTAB%DECLSPEC%IF(%LL2 != %NULL)%SETFLAG(HEDR)%LL2 %UNSETFLAG(HEDR)%ENDIF%SYMBID %LL3 %SETFLAG(VARDECL)%UNSETFLAG(VARDECL)%CONSTRU%CNSTF{%INCTAB%NL%PUSHFLAG(CLASSDECL)%BLOB1%POPFLAG(CLASSDECL)%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
*/

DEFNODECODE(FUNC_HEDR,          "%CMNT%PUTTAB%IF(%LL2 != %NULL)%LL2 %ENDIF%IF(%LL1!=%NULL)%LL1 %ENDIF%LL3%IF(%BLOB1!=%NULL){%INCTAB%NL%PUSHFLAG(CLASSDECL)%BLOB1%POPFLAG(CLASSDECL)%DECTAB%PUTTAB}%ELSE;%ENDIF%NL",
's',0,BIFNODE)
 
/******* xli *********/
 
DEFNODECODE(TEMPLATE_FUNDECL, 	"%CMNT%PUTTABtemplate <%SETFLAG(VARDECL)%TMPLARGS%UNSETFLAG(VARDECL) > %BLOB1",
's',0,BIFNODE)
 

DEFNODECODE(WHERE_NODE,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(ALLDO_NODE,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(IDENTIFY,           "%ERROR",
's',0,BIFNODE)
DEFNODECODE(FORMAT_STAT,        "%ERROR", 
's',0,BIFNODE)
DEFNODECODE(STOP_STAT,          "%ERROR",
's',0,BIFNODE)
/*** xli  ****/
DEFNODECODE(RETURN_STAT,        "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFreturn %IF(%LL1 != %NULL)%LL1%ENDIF;%NL",
's',1,BIFNODE)
DEFNODECODE(ELSEIF_NODE,        "%ERROR",
's',0,BIFNODE)

/*NO_OPnodes*/
DEFNODECODE(COMMENT_STAT,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(CONT_STAT,          "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFcontinue;%NL",
's',0,BIFNODE)

/******* xli 3/25/97 
DEFNODECODE(VAR_DECL,           "%CMNT%SETFLAG(VARDECL)%IF (%CHECKFLAG(ENUM) == %NULL)%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUTTAB%DECLSPEC%TYPE %ENDIF%LL1%IF (%CHECKFLAG(ENUM) == %NULL);%ENDIF%UNSETFLAG(VARDECL)%NL",
's',0,BIFNODE)
*********/

DEFNODECODE(VAR_DECL,           "%CMNT%SETFLAG(VARDECL)%PUTTAB%IF(%LL3 != %NULL)%LL3 %ENDIF%LL2 %LL1;%UNSETFLAG(VARDECL)%NL",
's',0,BIFNODE)

/*************** xli **************/
DEFNODECODE(PARAM_DECL,         "%ERROR",
's',0,BIFNODE)
DEFNODECODE(COMM_STAT,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(EQUI_STAT,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(IMPL_DECL,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(DATA_DECL,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(SAVE_DECL,          "%ERROR",
's',0,BIFNODE) 
DEFNODECODE(STMTFN_STAT,        "%ERROR",
's',0,BIFNODE)
DEFNODECODE(DIM_STAT,           "%ERROR",
's',0,BIFNODE)
DEFNODECODE(EXTERN_STAT,        "%ERROR",
's',0,BIFNODE)
DEFNODECODE(INTRIN_STAT,        "%ERROR",
's',0,BIFNODE)

DEFNODECODE(ENUM_DECL,          "%CMNT%PUTTAB%DECLSPEC%SETFLAG(ENUM)enum %SYMBID %IF (%BLOB1 != %NULL){%INCTAB%NL %BLOB1%DECTAB%PUTTAB}%LL1;%NL%ELSE%LL1;%NL%ENDIF%UNSETFLAG(ENUM)",
'd',0,BIFNODE)

/* the public: in the line below is to mask a dep2C++ bug */
/** xli ***/
DEFNODECODE(CLASS_DECL,         "%CMNT%INCLASSON%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUSHFLAG(CLASSDECL)%PUTTAB%IF(%LL1 != %NULL)%LL1 %ENDIF%SETFLAG(CLASSDECL)class %SYMBID%IF (%LL2 !=%NULL) extends %LL2%ENDIF%IF(%LL3 != %NULL) implements %LL3%ENDIF%IF(%BLOB1 != %NULL){%INCTAB%NL%NL%BLOB1 %NL%DECTAB%PUTTAB}%NL%ENDIF%UNSETFLAG(CLASSDECL)%POPFLAG(CLASSDECL)%IF (%CHECKFLAG(CLASSDECL) == %NULL)%INCLASSOFF",
'd',0,BIFNODE)

/* xli  
DEFNODECODE(INTERFACE_STMT,         "%CMNT%INCLASSON%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUSHFLAG(CLASSDECL)%PUTTAB%DECLSPEC%RIDPT%SETFLAG(CLASSDECL)interface %SYMBID%IF(%LL2 !=%NULL) extends %LL2%ENDIF%IF(%BLOB1 != %NULL){%INCTAB%NL%BLOB1 %NL%DECTAB%PUTTAB}%SETFLAG(VARDECL)%LL1%UNSETFLAG(VARDECL)%NL%ELSE%SETFLAG(VARDECL)%LL1%UNSETFLAG(VARDECL)%NL%ENDIF%UNSETFLAG(CLASSDECL)%POPFLAG(CLASSDECL)%IF (%CHECKFLAG(CLASSDECL) == %NULL)%INCLASSOFF",
'd',0,BIFNODE)
*/

/** xli **/
DEFNODECODE(INTERFACE_STMT,         "%CMNT%PUTTAB%IF(%LL1 != %NULL)%LL1 %ENDIFinterface %SYMBID%IF(%LL2 !=%NULL) extends %LL2%ENDIF%IF(%BLOB1 != %NULL){%INCTAB%NL%BLOB1%NL%DECTAB%PUTTAB}%NL",
'd',0,BIFNODE)
/********/

DEFNODECODE(TECLASS_DECL,         "%CMNT%INCLASSON%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUSHFLAG(CLASSDECL)%PUTTAB%DECLSPEC%RIDPT%SETFLAG(CLASSDECL)TEClass  %SYMBID%IF (%LL2 !=%NULL):%SETFLAG(SUBCLASS)%LL2%UNSETFLAG(SUBCLASS)%ENDIF %IF (%BLOB1 != %NULL){%INCTAB%NLpublic:%NL%BLOB1 %NL%DECTAB%PUTTAB}%SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ELSE%SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ENDIF%UNSETFLAG(CLASSDECL)%POPFLAG(CLASSDECL)%INCLASSOFF",
'd',0,BIFNODE)
DEFNODECODE(UNION_DECL,         "%CMNT%PUTTAB%DECLSPEC%RIDPTunion  %SYMBID %IF (%BLOB1 != %NULL){%INCTAB%NL%BLOB1%NL%DECTAB%PUTTAB} %LL1;%NL%ELSE%LL1;%NL%ENDIF",
'd',0,BIFNODE)
DEFNODECODE(STRUCT_DECL,        "%CMNT%PUTTAB%DECLSPEC%RIDPTstruct %SYMBID %IF (%LL2 !=%NULL):%SETFLAG(SUBCLASS)%LL2%UNSETFLAG(SUBCLASS)%ENDIF  %IF (%BLOB1!=%NULL){%INCTAB%NL%BLOB1%DECTAB%PUTTAB} %SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ELSE%SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ENDIF",
'd',0,BIFNODE)
DEFNODECODE(EXTERN_C_STAT,        "%CMNT%PUTTABextern \"C\" %IF (%BLOB1!=%NULL){%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL%ENDIF",
'd',0,BIFNODE)
DEFNODECODE(DERIVED_CLASS_DECL, "%ERROR",
'd',0,BIFNODE)
DEFNODECODE(EXPR_STMT_NODE,     "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIF%LL1;%NL",
's',0,BIFNODE)
DEFNODECODE(DO_WHILE_NODE,      "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFdo {%NL%INCTAB%BLOB1%DECTAB%PUTTAB} while (%LL1);%NL",
's',0,BIFNODE)
DEFNODECODE(SWITCH_NODE,        "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFswitch (%LL1)%NL%PUTTAB{%NL%INCTAB%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
/** xli **
DEFNODECODE(CASE_NODE,          "%CMNT%PUTTABcase %LL1:%NL",
's',0,BIFNODE)
DEFNODECODE(DEFAULT_NODE,       "%CMNT%PUTTABdefault:%NL",
's',0,BIFNODE)
*/
DEFNODECODE(CASE_NODE,          "%CMNT%PUTTABcase %LL1: %NL%INCTAB%BLOB1%DECTAB",
's',1,BIFNODE)
DEFNODECODE(DEFAULT_NODE,       "%CMNT%PUTTABdefault: %NL%INCTAB%BLOB1%DECTAB",
's',1,BIFNODE)

/* xli */
DEFNODECODE(BREAK_NODE,         "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFbreak %IF(%LL1 != %NULL)%LL1%ENDIF;%NL",
's',0,BIFNODE)
DEFNODECODE(CONTINUE_NODE,      "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFcontinue %IF(%LL1 != %NULL)%LL1%ENDIF;%NL",
's',0,BIFNODE)
DEFNODECODE(RETURN_NODE,        "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFreturn %IF(%LL1 != %NULL)%LL1%ENDIF;%NL",
's',0,BIFNODE)
DEFNODECODE(ASM_NODE,           "%ERROR",
's',0,BIFNODE)
DEFNODECODE(SPAWN_NODE,       "%CMNT%PUTTABspawn %LL1;%NL",
's',0,BIFNODE)
DEFNODECODE(PARFOR_NODE,        "%CMNT%PUTTABparfor (%LL1 ; %LL2 ; %LL3)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(PAR_NODE,        "%CMNT%PUTTABpar%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(LABEL_STAT,         "%CMNT%LABNAME:%NL",
's',0,BIFNODE)
DEFNODECODE(PROS_COMM,           "%ERROR",
's',0,BIFNODE)
DEFNODECODE(ATTR_DECL,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(NAMELIST_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(OPEN_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(CLOSE_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(ENDFILE_STAT,      "%ERROR",
's',0,BIFNODE)
DEFNODECODE(REWIND_STAT,      "%ERROR",
's',0,BIFNODE)
/* DEFNODECODE(ENTRY_STAT,      "%ERROR",
's',0,BIFNODE) */
 DEFNODECODE(ENTRY_STAT,      "%ERROR",
's',0,BIFNODE) 

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

DEFNODECODE(COLLECTION_DECL,      "%INCLASSON%CMNT%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUSHFLAG(CLASSDECL)%PUTTAB%RIDPT%SETFLAG(CLASSDECL)Collection  %SYMBID%IF (%LL2 !=%NULL):public %LL2%ENDIF %IF (%BLOB1 != %NULL){%INCTAB%NL%BLOB1 %NL%DECTAB%PUTTAB}%SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ELSE%SETFLAG(VARDECL)%LL1;%UNSETFLAG(VARDECL)%NL%ENDIF%UNSETFLAG(CLASSDECL)%POPFLAG(CLASSDECL)%INCLASSOFF",
'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 Low Level Node Symbol */
       /* %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) */
/************************************************************************************************/

/* CODES AYANT DISPARU :
 RENAME_NODE,            ONLY_NODE,               DEFAULT,                 LEN_OP,                  TARGET_OP,
 SAVE_OP,                POINTER_OP,              INTRINSIC_OP,            INOUT_OP,                OUT_OP,
 IN_OP,                  OPTIONAL_OP,             EXTERNAL_OP,             DIMENSION_OP,            ALLOCATABLE_OP,
 PRIVATE_OP,             PUBLIC_OP,               PARAMETER_OP,            MAXPARALLEL_OP,          EXTEND_OP,
 ORDERED_OP,             PAREN_OP,                OVERLOADED_CALL,         STRUCTURE_CONSTRUCTOR,   INTERFACE_REF,
 TYPE_REF,               KEYWORD_ARG,
*/

DEFNODECODE(LEN_OP,            "%IF (%LL1 != %NULL)*(%LL1)%ENDIF",
'e',0,LLNODE)
DEFNODECODE(INT_VAL,            "%INTVAL",
'c',0,LLNODE)

/*  xli 4/23/97 */
DEFNODECODE(HEX_VAL,            "%HEXVAL",
'c',0,LLNODE)
DEFNODECODE(OCTN_VAL,            "%OCTVAL",
'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(KEYWORD_VAL,        "%STRVAL",
'c',0,LLNODE)
DEFNODECODE(COMPLEX_VAL,        "(%LL1, %LL2)",
'c',0,LLNODE)

DEFNODECODE(CONST_REF,          "%SYMBID",
'r',2,LLNODE)
DEFNODECODE(VAR_REF,            "%IF(%CHECKFLAG(SUBCLASS) != %NULL)%DOPROC%ENDIF%SYMBID%IF(%LL2 != %NULL)%PUSHFLAG(PAREN)<%LL2 >%POPFLAG(PAREN)%ENDIF",
'r',0,LLNODE)
DEFNODECODE(ARRAY_REF,          "%SYMBID%IF (%LL1 != %NULL)%PUSHFLAG(ARRAYREF)%SETFLAG(ARRAYREF)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(ARRAYREF)%UNSETFLAG(PAREN)%POPFLAG(PAREN)%POPFLAG(ARRAYREF)%ENDIF",
'r',1,LLNODE)
/* xli 
DEFNODECODE(RECORD_REF,         "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1.%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'r',2,LLNODE)
*/
DEFNODECODE(RECORD_REF,      "%ORBPL1%LL1%CRBPL1.%ORBPL2%LL2%CRBPL2",
'r',2,LLNODE)

DEFNODECODE(ENUM_REF,           "%LL1",
'r',2,LLNODE)
DEFNODECODE(LABEL_REF,          "%STATENO",
'r',0,LLNODE)
DEFNODECODE(TYPE_REF,          "%TYPE",
'r',0,LLNODE)
DEFNODECODE(TYPE_OP,            "%TYPE",
'e',1,LLNODE)
DEFNODECODE(THROW_OP,           "throw %IF(%LL1 != %NULL)%LL1%ENDIF",
'r',2,LLNODE)

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

DEFNODECODE(FORDECL_OP,          "%VARLISTTY",
'e',2,LLNODE)

/*****  xli ****/
DEFNODECODE(EXPR_LIST,
"%IF(%CHECKFLAG(PAREN)!=%NULL)%IF(%CHECKFLAG(ARRAYREF)!=%NULL)[%ELSE%IF(%CHECKFLAG(ELIST)==%NULL)%IF(%CHECKFLAG(NEW)!=%NULL)%IF(%CHECKFLAG(ARRAYTYPE)==%NULL)%IF(%CHECKFLAG(JARRAYREF)==%NULL)(%ENDIF%ENDIF%ELSE%IF(%CHECKFLAG(JARRAYREF)==%NULL)(%ENDIF%ENDIF%ELSE%IF(%CHECKFLAG(ARRAYTYPE)==%NULL)%IF(%CHECKFLAG(MODIFIERS)==%NULL),%ENDIF%ELSE%IF(%CHECKFLAG(HASH)!=%NULL),%ENDIF%ENDIF%ENDIF%ENDIF%ELSE%IF(%CHECKFLAG(ELIST) != %NULL)%IF(%CHECKFLAG(ARRAYTYPE)==%NULL)%IF(%CHECKFLAG(MODIFIERS)==%NULL),%ENDIF%ELSE%IF(%CHECKFLAG(HASH)!=%NULL),%ENDIF%ENDIF%ENDIF%ENDIF%PUSHFLAG(ARRAYREF)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%PUSHFLAG(ELIST)%LL1%POPFLAG(ELIST)%POPFLAG(ARRAYREF)%POPFLAG(PAREN)%IF(%CHECKFLAG(PARAM)!=%NULL) = %L1SYMBCST%ENDIF%IF(%CHECKFLAG(ARRAYREF)!=%NULL)]%ENDIF%IF(%LL2!=%NULL)%IF(%CHECKFLAG(ELIST)==%NULL)%SETFLAG(ELIST)%ENDIF%LL2%ENDIF%IF(%CHECKFLAG(PAREN) != %NULL)%IF(%LL2 == %NULL)%IF(%CHECKFLAG(ARRAYREF) == %NULL)%IF(%CHECKFLAG(NEW)!=%NULL)%IF(%CHECKFLAG(ARRAYTYPE)==%NULL)%IF(%CHECKFLAG(JARRAYREF)==%NULL))%ENDIF%ENDIF%ELSE%IF(%CHECKFLAG(JARRAYREF)==%NULL))%ENDIF%ENDIF%ENDIF%ENDIF%ENDIF%IF(%LL2 == %NULL)%IF(%CHECKFLAG(ELIST) != %NULL)%UNSETFLAG(ELIST)%ENDIF",
'e',2,LLNODE) 

/*** it is from hpf unparse 4/22/97 
DEFNODECODE(EXPR_LIST,          "%IF(%SYMBOL!=%NULL)%SYMBID%ENDIF%LL1%IF (%LL2 != %NULL),%LL2%ENDIF",
'e',2,LLNODE)
*****/

/* second way (wrong)
DEFNODECODE(EXPR_LIST,	
"%IF (%CHECKFLAG(PAREN) != %NULL)%IF (%CHECKFLAG(ARRAYREF) != %NULL)[%ELSE(%ENDIF%ENDIF%PUSHFLAG(ARRAYREF)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%POPFLAG(ARRAYREF)%IF (%CHECKFLAG(PARAM) != %NULL) = %L1SYMBCST%ENDIF%IF (%LL2 != %NULL)%IF (%CHECKFLAG(ARRAYREF) != %NULL)][%ELSE,%ENDIF%LL2%ENDIF%POPFLAG(PAREN)%IF (%CHECKFLAG(PAREN) != %NULL)%IF (%CHECKFLAG(ARRAYREF) != %NULL)]%ELSE)%ENDIF%ENDIF",
'e',2,LLNODE) 
*/
/*
DEFNODECODE(EXPR_LIST,          "%PUSHFLAG(ARRAYREF)%LL1%POPFLAG(ARRAYREF)%IF (%CHECKFLAG(PARAM) != %NULL) = %L1SYMBCST%ENDIF%ENDIF%IF (%LL2 != %NULL)%IF (%CHECKFLAG(ARRAYREF) != %NULL)][%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)

/* xli  9/11/97 from zgs's unparse.def 

DEFNODECODE(DDOT,               "%LL1%IF (%INWRITE != %NULL),%ELSE%IF (%INIMPLI != %NULL)-%ELSE%IF (%CHECKFLAG(LOOP) != %NULL),%ELSE:%ENDIF%ENDIF%ENDIF%LL2",
'e',2,LLNODE)
DEFNODECODE(RANGE_OP,           "%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)

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(UPPER_OP,           "%ERROR",
'e',2,LLNODE)
DEFNODECODE(LOWER_OP,           "%ERROR",
'e',2,LLNODE)

/*  xli change the %PUSHFLAG(PAREN)%SETFLAG(PAREN) in the following to ORBPL1 ... 4/24/97 */

DEFNODECODE(EQ_OP,              "%ORBPL1%LL1%CRBPL1 ==  %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(LT_OP,              "%ORBPL1%LL1%CRBPL1 < %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(GT_OP,              "%ORBPL1%LL1%CRBPL1 > %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(NOTEQL_OP,          "%ORBPL1%LL1%CRBPL1 != %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(LTEQL_OP,           "%ORBPL1%LL1%CRBPL1 <= %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(GTEQL_OP,           "%ORBPL1%LL1%CRBPL1 >= %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(ADD_OP,             "%ORBPL1%LL1%CRBPL1 + %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(SUBT_OP,            "%ORBPL1%LL1%CRBPL1 - %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(OR_OP,              "%ORBPL1%LL1%CRBPL1 || %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 && %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(EXP_OP,             "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1 ** %LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(ARRAY_MULT,         "%ERROR",
'e',2,LLNODE)
DEFNODECODE(CONCAT_OP,          "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1//%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(XOR_OP,             "%ORBPL1%LL1%CRBPL1 ^ %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(EQV_OP,             "%ORBPL1%LL1%CRBPL1 == %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(NEQV_OP,            "%ORBPL1%LL1%CRBPL1 != %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(MINUS_OP,           "-%ORBPL1%LL1%CRBPL1",
'e',1,LLNODE)
DEFNODECODE(NOT_OP,             " !%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(ASSGN_OP,           "%LL1 = %PUSHFLAG(VARDECL)%LL2%POPFLAG(VARDECL)",
'e',2,LLNODE)
/*
DEFNODECODE(DEREF_OP,           "%IF (%CHECKFLAG(VARDECL) == %NULL)(*%LL1)%ELSE*%LL1%ENDIF",
'e',1,LLNODE)
*/
DEFNODECODE(DEREF_OP,           "%IF (%CHECKFLAG(VARDECL) == %NULL)*%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ELSE*%CNSTCHK%LL1%ENDIF",
'e',1,LLNODE)
DEFNODECODE(ARROWSTAR_OP,          "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)->*%LL2",
'e',2,LLNODE)
DEFNODECODE(DOTSTAR_OP,          "%LL1.*%LL2",
'e',2,LLNODE)
DEFNODECODE(POINTST_OP,         "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)->%LL2",
'e',2,LLNODE)
DEFNODECODE(SCOPE_OP,         "%LL1::%LL2",
'e',2,LLNODE)

/* should be 
DEFNODECODE(FUNCTION_OP,        "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%IF (%CHECKFLAG(VARDECL) != %NULL)(%VARLISTTY)%ELSE%LL2%ENDIF%POPFLAG(PAREN)",
'e',2,LLNODE)
but the following works for now */

DEFNODECODE(FUNCTION_OP,        "%PUSHFLAG(PAREN)(%LL1)%PUSHFLAG(FREF)%SETFLAG(FREF)%IF (%CHECKFLAG(VARDECL) != %NULL)(%VARLISTTY)%ELSE%IF(%LL2 != %NULL)%SETFLAG(PAREN)%LL2%UNSETFLAG(PAREN)%ELSE()%ENDIF%ENDIF%UNSETFLAG(FREF)%POPFLAG(FREF)%POPFLAG(PAREN)",
'e',2,LLNODE)

DEFNODECODE(MINUSMINUS_OP,      "%IF (%LL2 != %NULL)%ORBPL2%LL2%CRBPL2%ENDIF--%IF (%LL1 != %NULL)%ORBPL1%LL1%CRBPL1%ENDIF",
'e',2,LLNODE)
DEFNODECODE(PLUSPLUS_OP,        "%IF (%LL2 != %NULL)%ORBPL2%LL2%CRBPL2%ENDIF++%IF (%LL1 != %NULL)%ORBPL1%LL1%CRBPL1%ENDIF",
'e',2,LLNODE)
DEFNODECODE(BITAND_OP,          "%ORBPL1%LL1%CRBPL1 & %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(BITOR_OP,           "%ORBPL1%LL1%CRBPL1 | %IF (%LL2 != %NULL)%ORBPL2%LL2%CRBPL2%ENDIF",
'e',2,LLNODE)

DEFNODECODE(PLUS_ASSGN_OP,           "%LL1 += %LL2",
'e',2,LLNODE)		
DEFNODECODE(MINUS_ASSGN_OP,           "%LL1 -= %LL2",
'e',2,LLNODE)		
DEFNODECODE(AND_ASSGN_OP,           "%LL1 &= %LL2",
'e',2,LLNODE)		
DEFNODECODE(IOR_ASSGN_OP,           "%LL1 |= %LL2",
'e',2,LLNODE)		
DEFNODECODE(MULT_ASSGN_OP,           "%LL1 *= %LL2",
'e',2,LLNODE)		
DEFNODECODE(DIV_ASSGN_OP,           "%LL1 /= %LL2",
'e',2,LLNODE)		
DEFNODECODE(MOD_ASSGN_OP,           "%LL1 %%= %LL2",
'e',2,LLNODE)		
DEFNODECODE(XOR_ASSGN_OP,           "%LL1 ^= %LL2",
'e',2,LLNODE)		
DEFNODECODE(LSHIFT_ASSGN_OP,           "%LL1 <<= %LL2",
'e',2,LLNODE) 	
DEFNODECODE(RSHIFT_ASSGN_OP,           "%LL1 >>= %LL2",
'e',2,LLNODE) 	


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

DEFNODECODE(PROC_CALL,          "%SYMBID%IF(%LL1 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ELSE()%ENDIF",
'e',2,LLNODE)
/* xli ? */
DEFNODECODE(FUNC_CALL,          "%SYMBID%IF(%LL2 != %NULL)%PUSHFLAG(PAREN)<%LL2 >%POPFLAG(PAREN)%ENDIF%IF(%LL1 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ELSE()%ENDIF",
'e',1,LLNODE)

DEFNODECODE(CONSTRUCTOR_REF,    "(/%LL1/)",
'e',2,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):%LL2",
'e',2,LLNODE)
DEFNODECODE(SPEC_PAIR,          "%IF (%CHECKFLAG(PRINT) != %NULL)%LL2%ELSE%LL1 = %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,          "%TYPE %IF (%LL1 != %NULL)(%LL1)%ENDIF",
'e',2,LLNODE)
DEFNODECODE(STMTFN_DECL,        "%SYMBID (%VARLIST) = %LL1",
'e',2,LLNODE)
DEFNODECODE(BIT_COMPLEMENT_OP,  "~%LL1",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF,            "(%LL1)?%LL2",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF_BODY,       "%LL1:%LL2",
'e',2,LLNODE)
/******** xli
DEFNODECODE(FUNCTION_REF,       "%SETFLAG(FREF)%SYMBID%IF (%CHECKFLAG(VARDECL) != %NULL)%IF(%CHECKFLAG(TMPLDEC) == %NULL)(%VARLISTTY)%CNSTF%PURE%ENDIF%ENDIF%UNSETFLAG(FREF)",
*/

DEFNODECODE(FUNCTION_REF,       "%SETFLAG(FREF)%SYMBID(%IF(%LL1!=%NULL)%LL1%ENDIF)%UNSETFLAG(FREF)",
'e',2,LLNODE)
DEFNODECODE(LSHIFT_OP,          "%ORBPL1%LL1%CRBPL1 << %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(RSHIFT_OP,          "%ORBPL1%LL1%CRBPL1 >> %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
/* xli */
DEFNODECODE(UNARY_ADD_OP,       "+ %ORBPL1%LL1%CRBPL1",
'e',2,LLNODE)
/*
DEFNODECODE(SIZE_OP,            "%IF(%CHECKFLAG(NEW) != %NULL)sizeof(%LL1)%ELSEsizeof %LL1",
'e',2,LLNODE)
*/
DEFNODECODE(SIZE_OP,            "sizeof(%LL1)",
'e',2,LLNODE)
DEFNODECODE(INTEGER_DIV_OP,     "%ORBPL1%LL1%CRBPL1 / %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(SUB_OP,             "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1-%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(LE_OP,              "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1<=%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(GE_OP,              "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1>=%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(NE_OP,              "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1!=%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'e',2,LLNODE)

DEFNODECODE(CLASSINIT_OP,       "%LL1%IF(%LL2 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ELSE()%ENDIF",
'e',2,LLNODE)
/*
DEFNODECODE(CAST_OP,            "%IF(%CHECKFLAG(NEW) != %NULL)%IF (%LL2 != %NULL)%PUSHFLAG(VARDECL)%SETFLAG(VARDECL)(%VARLISTTY)%UNSETFLAG(VARDECL)%POPFLAG(VARDECL)%ELSE%SETFLAG(CASTOP)%TYPE%UNSETFLAG(CASTOP)%ENDIF%IF (%LL1 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF%ELSE%IF (%LL2 != %NULL)%TYPE%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ELSE%SETFLAG(CASTOP)(%TYPE)%UNSETFLAG(CASTOP)%PUSHFLAG(PAREN)%SETFLAG(PAREN) %LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF%ENDIF",
'e',2,LLNODE)
*/
/* 
DEFNODECODE(CAST_OP,            "%IF (%LL2 != %NULL)%PUSHFLAG(VARDECL)%SETFLAG(VARDECL)(%VARLISTTY)%UNSETFLAG(VARDECL)%POPFLAG(VARDECL)%ELSE%SETFLAG(CASTOP)%TYPE%UNSETFLAG(CASTOP)%ENDIF%IF (%LL1 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN) %LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF",
'e',2,LLNODE)
*/
/* xli */
DEFNODECODE(CAST_OP,            "%IF (%LL2 != %NULL)%PUSHFLAG(VARDECL)%SETFLAG(VARDECL)(%LL2)%UNSETFLAG(VARDECL)%POPFLAG(VARDECL)%ELSE%SETFLAG(CASTOP)%TYPE%UNSETFLAG(CASTOP)%ENDIF%IF (%LL1 != %NULL)%ORBPL1%LL1%CRBPL1%ENDIF",
'e',2,LLNODE)

DEFNODECODE(ADDRESS_OP,           "%IF (%CHECKFLAG(VARDECL) == %NULL)&(%LL1)%ELSE&%CNSTCHK%LL1%ENDIF",
'e',1,LLNODE)
/*
DEFNODECODE(ADDRESS_OP,         "&(%LL1)",
'e',2,LLNODE)
*/
DEFNODECODE(POINSTAT_OP,        "%ERROR",
'e',2,LLNODE)
DEFNODECODE(COPY_NODE,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(INIT_LIST,          "%PUSHFLAG(PAREN){%IF(%LL1 != %NULL)%LL1%ENDIF}%POPFLAG(PAREN)",
'e',2,LLNODE)
DEFNODECODE(VECTOR_CONST,       "[%LL1]",
'e',2,LLNODE)
DEFNODECODE(BIT_NUMBER,         "%LL1:%LL2",
'e',2,LLNODE)
DEFNODECODE(ARITH_ASSGN_OP,     "%ERROR",
'e',2,LLNODE)
DEFNODECODE(ARRAY_OP,           "%PUSHFLAG(PAREN)(%LL1)%POPFLAG(PAREN)%PUSHFLAG(ARRAYREF)%SETFLAG(ARRAYREF)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL2%UNSETFLAG(ARRAYREF)%UNSETFLAG(PAREN)%POPFLAG(PAREN)%POPFLAG(ARRAYREF)",
'e',2,LLNODE)
/*
DEFNODECODE(NEW_OP,             "%SETFLAG(NEW)new %LL1 %IF (%LL2 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN) on %LL2 %UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF%UNSETFLAG(NEW)",
'e',2,LLNODE)
*/
/*  
DEFNODECODE(NEW_OP,             "%SETFLAG(NEW)new %IF (%LL2 != %NULL)%ORBPL2%LL2%CRBPL2%ENDIF%LL1%UNSETFLAG(NEW)",
'e',2,LLNODE)
*/
DEFNODECODE(NEW_OP,             "%SETFLAG(NEW)new %IF (%LL2 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN) on %LL2%ELSE%LL1%ENDIF%UNSETFLAG(NEW)",
'e',2,LLNODE)

DEFNODECODE(DELETE_OP,          "%IF (%LL2 != %NULL)%SETFLAG(NEW)%ENDIFdelete %IF(%LL2 != %NULL) %LL2 %ENDIF %LL1%IF(%LL2 != %NULL) %UNSETFLAG(NEW)%ENDIF",
'e',2,LLNODE)
DEFNODECODE(NAMELIST_LIST,      "%IF (%SYMBOL != %NULL)/%SYMBID/%ENDIF%LL1%IF (%LL2 != %NULL), %LL2%ENDIF",
'e',2,LLNODE)
/*
DEFNODECODE(THIS_NODE,      "this %LL1",
'e',2,LLNODE)
*/
/*** xli ***/
DEFNODECODE(THIS_NODE,      "this",
'e',0,LLNODE)

/* new tag for some expression  
these are tokens not expressions.
I have killed them.  dbg. 

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)
*/

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

DEFNODECODE(BIF_PARM_DECL,      "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(CONST_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(ENUM_NAME,          "enum %SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(FIELD_NAME,         "%ERROR",
'r',0,SYMBNODE)
DEFNODECODE(VARIABLE_NAME,      "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(TYPE_NAME,          "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(PROGRAM_NAME,       "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(PROCEDURE_NAME,     "%SYMBID",
'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,         "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(TECLASS_NAME,         "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(UNION_NAME,         "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(STRUCT_NAME,        "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(LABEL_NAME,         "%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(COLLECTION_NAME,"%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(ROUTINE_NAME,"%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(CONSTRUCT_NAME,"%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(INTERFACE_NAME,"%SYMBID",
'r',0,SYMBNODE)
DEFNODECODE(MODULE_NAME,"%SYMBID",
'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,            "",
't',0,TYPENODE)
DEFNODECODE(T_INT,              "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_FLOAT,            "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_DOUBLE,           "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_CHAR,             "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_BOOL,             "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_STRING,           "%TABNAME",
't',0,TYPENODE)
DEFNODECODE(T_COMPLEX,          "%TABNAME",
'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,            "%IF (%CHECKFLAG(CASTOP) == %NULL)%BASETYPE%ELSE%SUBTYPE [%RANGES]%ENDIF",
't',0,TYPENODE)
*/
DEFNODECODE(T_ARRAY,            "%IF (%CHECKFLAG(CASTOP) == %NULL)%BASETYPE%ELSE%SUBTYPE %PUSHFLAG(ARRAYREF)%SETFLAG(ARRAYREF)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%PUSHFLAG(CASTOP)%PUSHFLAG(NEW)%RANGES%POPFLAG(NEW)%POPFLAG(CASTOP)%UNSETFLAG(PAREN)%UNSETFLAG(ARRAYREF)%POPFLAG(PAREN)%POPFLAG(ARRAYREF)%ENDIF",
't',0,TYPENODE)
DEFNODECODE(T_RECORD,           "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_ENUM_FIELD,       "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_UNKNOWN,          "unknown",
't',0,TYPENODE)
DEFNODECODE(T_VOID,             "void ",
't',0,TYPENODE)
DEFNODECODE(T_DESCRIPT,         "%RIDPT%BASETYPE",
't',0,TYPENODE)
DEFNODECODE(T_FUNCTION,         "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_POINTER,          "%FBASETYPE %IF (%CHECKFLAG(VARDECL) == %NULL)%STAR%ELSE%IF (%CHECKFLAG(CASTOP) != %NULL)%STAR%ELSE%IF (%CHECKFLAG(FREF) != %NULL)%STAR%ENDIF%ENDIF%ENDIF",
't',0,TYPENODE)
DEFNODECODE(T_UNION,            "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_STRUCT,           "%ERROR",
't',0,TYPENODE)
DEFNODECODE(T_CLASS,            "--ERROR--CLASS NAME---",
't',0,TYPENODE)
DEFNODECODE(T_DERIVED_CLASS,    "%SYMBID",
't',0,TYPENODE)
DEFNODECODE(T_DERIVED_TYPE,     "%SYMBID",
't',0,TYPENODE)
DEFNODECODE(T_COLLECTION,     "------ERROR-----T_COLLECTION",
't',0,TYPENODE)		
DEFNODECODE(T_DERIVED_COLLECTION, "%SYMBID<%COLLBASE>",
't',0,TYPENODE)	
/*
DEFNODECODE(T_MEMBER_POINTER, "%COLLBASE %IF (%CHECKFLAG(VARDECL) == %NULL)%SYMBID::*%ELSE%IF (%CHECKFLAG(CASTOP) != %NULL)%SYMBID::*%ELSE%IF (%CHECKFLAG(FREF) != %NULL)%SYMBID::*%ENDIF%ENDIF%ENDIF",
't',0,TYPENODE)	i can't solve the problem with %SYMB.  something
to do with %SYMBID getting a T_CLASS where it expects a symbol 
*/

DEFNODECODE(T_MEMBER_POINTER, "%COLLBASE ", 't',0,TYPENODE)
DEFNODECODE(T_DERIVED_TEMPLATE, "%SYMBID%SETFLAG(TMPLDEC)%PUSHFLAG(PAREN)<%TMPLARGS >%POPFLAG(PAREN)%UNSETFLAG(TMPLDEC)",
't',0,TYPENODE)	
/*
DEFNODECODE(T_REFERENCE,     "%BASETYPE %IF (%CHECKFLAG(VARDECL) == %NULL)&%ELSE%IF (%CHECKFLAG(FREF) != %NULL)& %ENDIF%ENDIF",
't',0,TYPENODE)		
*/
DEFNODECODE(T_REFERENCE,          "%FBASETYPE %IF (%CHECKFLAG(VARDECL) == %NULL)%STAR%ELSE%IF (%CHECKFLAG(CASTOP) != %NULL)%STAR%ELSE%IF (%CHECKFLAG(FREF) != %NULL)%STAR%ENDIF%ENDIF%ENDIF",
'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)

/********* xli ***********/

DEFNODECODE(T_LONG,              "%TABNAME",
't',0,TYPENODE)

DEFNODECODE(T_SHORT,              "%TABNAME",
't',0,TYPENODE)

DEFNODECODE(T_BYTE,              "%TABNAME",
't',0,TYPENODE)
/********** xli *************/

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

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

DEFNODECODE(EXTENDS_OP,          "%LL1",
'e',1,LLNODE)

DEFNODECODE(IMPLEMENTS_OP,       "%LL1",
'e',1,LLNODE)

DEFNODECODE(VOID_OP,             "void", 
'e',0,LLNODE)

DEFNODECODE(NULL_VAL,             "null",
'e',0,LLNODE)

DEFNODECODE(JAVA_ARRAY_REF,	     "%IF(%LL1 != %NULL)%LL1%ENDIF[%IF(%LL2 !=%NULL)%SETFLAG(JARRAYREF)%LL2%UNSETFLAG(JARRAYREF)%ENDIF]",
'e',2,LLNODE)

DEFNODECODE(ARRAY_TYPE,          "%SETFLAG(ARRAYTYPE)%LL1%LL2%UNSETFLAG(ARRAYTYPE)",
'e',2,LLNODE)

DEFNODECODE(EMPTY_STMT,          "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIF;%NL",
's',0,BIFNODE)

DEFNODECODE(THIS_STMT,          "%CMNT%PUTTABthis ( %LL1);%NL",
's',0,BIFNODE)

DEFNODECODE(SUPER_STMT,          "%CMNT%PUTTABsuper ( %LL1);%NL",
's',0,BIFNODE)

DEFNODECODE(FINAL_STAT,         "%CMNT%PUTTABfinally {%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(SYNCHRONIZE_STAT,         "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFsynchronized (%IF(%LL1!=%NULL)%SETFLAG(VARDECL)%LL1%UNSETFLAG(VARDECL)%ENDIF){%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(THROW_STMT,          "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFthrow %LL1;%NL",
's',0,BIFNODE)

DEFNODECODE(PACKAGE_STMT,        "package %LL1;%NL",
's',0,BIFNODE)

DEFNODECODE(IMPORT_STMT,        "import %LL1;%NL",
's',0,BIFNODE)

DEFNODECODE(STATIC_STAT,         "%CMNT%PUTTABstatic {%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(ON_NODE,           "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFon (%LL1)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(AT_NODE,           "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFat (%LL1)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(OVER_NODE,           "%CMNT%PUTTAB%IF(%LABEL!=%NULL)%LABNAME: %ENDIFover (%LL1)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)



/*****/

DEFNODECODE(RRSHIFT_OP,          "%ORBPL1%LL1%CRBPL1 >>> %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(RRSHIFTIS_OP,        "%LL1 >>>= %LL2",
'e',2,LLNODE)
DEFNODECODE(BITXOR_OP,           "%ORBPL1%LL1%CRBPL1 ^ %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(BITANDIS_OP,         "%ORBPL1%LL1%CRBPL1 &= %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(BITORIS_OP,          "%ORBPL1%LL1%CRBPL1 |= %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(BITXORIS_OP,         "%ORBPL1%LL1%CRBPL1 ^= %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(BITNOT_OP,           " ~%ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

DEFNODECODE(SUPER_OP,            "super",
'e',0,LLNODE)

DEFNODECODE(INSTANCEOF_OP,       "%ORBPL1%LL1%CRBPL1 instanceof %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(CONDITIONEXP_OP,     "%ORBPL1%LL1%CRBPL1 ? %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)
DEFNODECODE(CONDITIONEXP_COLON_OP, "%ORBPL1%LL1%CRBPL1 : %ORBPL2%LL2%CRBPL2",
'e',2,LLNODE)

/* xli 3/31/98 */
DEFNODECODE(DIST_DIMENSION_OP,            "%SETFLAG(NOARRAY) [[%SETFLAG(HASH)%IF(%LL1 != %NULL)%SETFLAG(JARRAYREF)%LL1%UNSETFLAG(JARRAYREF)%ENDIF%UNSETFLAG(HASH)]]%UNSETFLAG(NOARRAY)",
'e',1,LLNODE)

DEFNODECODE(HASH_OP,              "#",
'e',0,LLNODE)

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

DEFNODECODE(NULL_OP,              "",
'e',0,LLNODE)

DEFNODECODE(JAVA_LOCAL_ARRAY_REF,      "%IF(%LL1 != %NULL)%LL1%ENDIF[[%IF(%LL2 !=%NULL)%SETFLAG(JARRAYREF)%LL2%UNSETFLAG(JARRAYREF)%ENDIF]]",
'e',2,LLNODE)

DEFNODECODE(JAVA_RANK0_REF,      "%IF(%LL1 != %NULL)%LL1%ENDIF#%IF(%LL2 !=%NULL)%SETFLAG(JARRAYREF)%LL2%UNSETFLAG(JARRAYREF)%ENDIF",
'e',2,LLNODE)
/******/

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

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

DEFNODECODE(MODIFIERS_OP,        "%SETFLAG(MODIFIERS)%LL1%UNSETFLAG(MODIFIERS)",
'e',2,LLNODE)

/**** Attr *****/

DEFNODECODE(DIMENSION_OP,            "%SETFLAG(NOARRAY)[%IF(%LL1 != %NULL)%LL1%ENDIF]%UNSETFLAG(NOARRAY)",
'e',1,LLNODE)
DEFNODECODE(PRIVATE_OP,              "private ",
'e',0,LLNODE)
DEFNODECODE(PROTECTED_OP,            "protected ",
'e',0,LLNODE)
DEFNODECODE(PUBLIC_OP,               "public ",
'e',0,LLNODE)
DEFNODECODE(STATIC_OP,               "static ",
'e',0,LLNODE)
DEFNODECODE(ABSTRACT_OP,             "abstract ",
'e',0,LLNODE)
DEFNODECODE(FINAL_OP,                "final ",
'e',0,LLNODE)
DEFNODECODE(NATIVE_OP,				 "native ",
'e',0,LLNODE)
DEFNODECODE(SYNCHRONIZED_OP,         "synchronized ",
'e',0,LLNODE)
DEFNODECODE(TRANSIENT_OP,            "transient ",
'e',0,LLNODE)
DEFNODECODE(VOLATILE_OP,             "volatile ",
'e',0,LLNODE)
