/*********************************************************************/
/*                  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(PROG_HEDR,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(PROC_HEDR,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(BASIC_BLOCK,        "%CMNT%PUTTAB{%NL%INCTAB%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)

DEFNODECODE(MODULE_STMT,        "%CMNT%PUTTAB%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%PUTTABif (%LL1) %NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL%IF (%BLOB2 != %NULL)%PUTTABelse %NL%PUTTAB{%INCTAB%NL%BLOB2%DECTAB%PUTTAB}%NL%ENDIF",
's',0,BIFNODE)
DEFNODECODE(ARITHIF_NODE,       "%ERROR",
's',0,BIFNODE)
DEFNODECODE(LOGIF_NODE,         "%CMNT%PUTTABif (%LL1) %NL%PUTTAB%INCTAB%BLOB1%DECTAB%PUTTAB%NL",
's',0,BIFNODE)

DEFNODECODE(LOOP_NODE,          "%ERROR",
's',0,BIFNODE)
DEFNODECODE(FOR_NODE,           "%CMNT%PUTTABfor (%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%PUTTABwhile (%LL1)%NL%PUTTAB{%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(TRY_STAT,           "%CMNT%PUTTABtry {%INCTAB%NL%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(CATCH_STAT,         "%CMNT%PUTTABcatch (%SETFLAG(VARDECL)%TMPLARGS%UNSETFLAG(VARDECL)){%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 %LL3;%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,        "%CMNT%IF(%LABEL != %NULL)%LABEL%ENDIF%PUTTAB%LL1 = %LL2;%NL",
'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)
/* podd 12.01.12 %CONSTRU deleted
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%SYMBTYPE %IF (%CHECKFLAG(CLASSDECL) == %NULL)%SYMBSCOPE%IF(%LL3 != %NULL)<%TMPLARGS >%ENDIF%SYMBDC%ENDIF %SETFLAG(VARDECL)%FUNHD%UNSETFLAG(VARDECL)%ENDIF%CNSTF%NL%PUTTAB{%INCTAB%NL%PUSHFLAG(CLASSDECL)%BLOB1%POPFLAG(CLASSDECL)%DECTAB%PUTTAB}%NL%NL",
's',0,BIFNODE)

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)
DEFNODECODE(RETURN_STAT,        "%CMNT%PUTTABreturn%IF (%LL1 != %NULL) %LL1%ENDIF;%NL",
's',0,BIFNODE)
                               
DEFNODECODE(ELSEIF_NODE,        "%CMNT%DECTAB%PUTTAB}%NL%PUTTABelse if (%LL1) %NL%PUTTAB{%INCTAB%NL",
's',0,BIFNODE)

/*NO_OPnodes*/
DEFNODECODE(COMMENT_STAT,       "%CMNT%NL",
's',0,BIFNODE)
DEFNODECODE(CONT_STAT,          "%CMNT%PUTTABcontinue;%NL",
's',0,BIFNODE)
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(PRIVATE_AR_DECL,    "%CMNT%PUTTABPrivateArray<%LL1,%LL2> %LL3;%NL",
's',0,BIFNODE)
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 */
DEFNODECODE(CLASS_DECL,         "%CMNT%INCLASSON%IF (%CHECKFLAG(CLASSDECL) != %NULL)%PROTECTION%ENDIF%PUSHFLAG(CLASSDECL)%PUTTAB%DECLSPEC%RIDPT%SETFLAG(CLASSDECL)class  %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)%IF (%CHECKFLAG(CLASSDECL) == %NULL)%INCLASSOFF",
'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%LL1;%NL",
's',0,BIFNODE)
DEFNODECODE(DO_WHILE_NODE,      "%CMNT%PUTTABdo {%NL%INCTAB%NL%BLOB1%DECTAB%PUTTAB} while (%LL1);%NL",
's',0,BIFNODE)
DEFNODECODE(SWITCH_NODE,        "%CMNT%PUTTABswitch (%LL1)%NL%PUTTAB{%NL%INCTAB%BLOB1%DECTAB%PUTTAB}%NL",
's',0,BIFNODE)
DEFNODECODE(CASE_NODE,          "%CMNT%PUTTABcase %LL1:%NL",
's',0,BIFNODE)
DEFNODECODE(DEFAULT_NODE,       "%CMNT%PUTTABdefault:%NL",
's',0,BIFNODE)
DEFNODECODE(BREAK_NODE,         "%CMNT%PUTTABbreak;%NL",
's',0,BIFNODE)
DEFNODECODE(CONTINUE_NODE,      "%CMNT%PUTTABcontinue;%NL",
's',0,BIFNODE)
DEFNODECODE(RETURN_NODE,        "%CMNT%PUTTABreturn%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)
DEFNODECODE(INCLUDE_LINE,       "%CMNT#include %LL1%NL",
's',0,BIFNODE)
DEFNODECODE(PREPROCESSOR_DIR,   "%CMNT%LL1%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 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,            "%INTKIND",
'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)
DEFNODECODE(RECORD_REF,         "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1.%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'r',2,LLNODE)
DEFNODECODE(ENUM_REF,           "%LL1",
'r',2,LLNODE)
DEFNODECODE(LABEL_REF,          "%LABELNAME",
'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)

DEFNODECODE(EXPR_LIST,
"%IF(%CHECKFLAG(PAREN)!=%NULL)%IF(%CHECKFLAG(ARRAYREF)!=%NULL)[%ELSE%IF(%CHECKFLAG(ELIST)==%NULL)(%ELSE, %ENDIF%ENDIF%ELSE%IF(%CHECKFLAG(ELIST) != %NULL), %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))%ENDIF%ENDIF%ENDIF%IF(%LL2 == %NULL)%IF(%CHECKFLAG(ELIST) != %NULL)%UNSETFLAG(ELIST)%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)

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

DEFNODECODE(EQ_OP,              "%ORBCPL1%LL1%CRBCPL1 == %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(LT_OP,              "%ORBCPL1%LL1%CRBCPL1 < %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(GT_OP,              "%ORBCPL1%LL1%CRBCPL1 > %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(NOTEQL_OP,          "%ORBCPL1%LL1%CRBCPL1 != %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(LTEQL_OP,           "%ORBCPL1%LL1%CRBCPL1 <= %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(GTEQL_OP,           "%ORBCPL1%LL1%CRBCPL1 >= %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)

DEFNODECODE(ADD_OP,             "%ORBCPL1%LL1%CRBCPL1 + %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(SUBT_OP,            "%ORBCPL1%LL1%CRBCPL1 - %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(OR_OP,              "%ORBCPL1%LL1%CRBCPL1 || %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)

DEFNODECODE(MULT_OP,            "%ORBCPL1%LL1%CRBCPL1 * %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(DIV_OP,             "%ORBCPL1%LL1%CRBCPL1 / %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(MOD_OP,             "%ORBCPL1%LL1%CRBCPL1 %% %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(AND_OP,             "%ORBCPL1%LL1%CRBCPL1 && %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)

DEFNODECODE(EXP_OP,             "%ERROR",
'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(CONCAT_OP,          "%ERROR",
'e',2,LLNODE)
DEFNODECODE(XOR_OP,             "%ORBCPL1%LL1%CRBCPL1 ^ %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(EQV_OP,             "%ERROR",
'e',2,LLNODE)
DEFNODECODE(NEQV_OP,            "%ERROR",
'e',2,LLNODE)
DEFNODECODE(MINUS_OP,           "(-%ORBCPL1%LL1%CRBCPL1)",
'e',1,LLNODE)
DEFNODECODE(NOT_OP,             "!%ORBCPL1%LL1%CRBCPL1",
'e',2,LLNODE)

DEFNODECODE(ASSGN_OP,           "%ORBCPL1%LL1%CRBCPL1 = %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,         "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1%UNSETFLAG(PAREN)%POPFLAG(PAREN).*%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)%ORBCPL2%LL2%CRBCPL2%ENDIF--%IF (%LL1 != %NULL)%ORBCPL1%LL1%CRBCPL1%ENDIF",
'e',2,LLNODE)
DEFNODECODE(PLUSPLUS_OP,        "%IF (%LL2 != %NULL)%ORBCPL2%LL2%CRBCPL2%ENDIF++%IF (%LL1 != %NULL)%ORBCPL1%LL1%CRBCPL1%ENDIF",
'e',2,LLNODE)
DEFNODECODE(BITAND_OP,          "%ORBCPL1%LL1%CRBCPL1 & %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(BITOR_OP,           "%ORBCPL1%LL1%CRBCPL1 | %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)

DEFNODECODE(PLUS_ASSGN_OP,      "%ORBCPL1%LL1%CRBCPL1 += %LL2",
'e',2,LLNODE)		
DEFNODECODE(MINUS_ASSGN_OP,     "%ORBCPL1%LL1%CRBCPL1 -= %LL2",
'e',2,LLNODE)		
DEFNODECODE(AND_ASSGN_OP,       "%ORBCPL1%LL1%CRBCPL1 &= %LL2",
'e',2,LLNODE)		
DEFNODECODE(IOR_ASSGN_OP,       "%ORBCPL1%LL1%CRBCPL1 |= %LL2",
'e',2,LLNODE)		
DEFNODECODE(MULT_ASSGN_OP,      "%ORBCPL1%LL1%CRBCPL1 *= %LL2",
'e',2,LLNODE)		
DEFNODECODE(DIV_ASSGN_OP,       "%ORBCPL1%LL1%CRBCPL1 /= %LL2",
'e',2,LLNODE)		
DEFNODECODE(MOD_ASSGN_OP,       "%ORBCPL1%LL1%CRBCPL1 %= %LL2",
'e',2,LLNODE)		
DEFNODECODE(XOR_ASSGN_OP,       "%ORBCPL1%LL1%CRBCPL1 ^= %LL2",
'e',2,LLNODE)		
DEFNODECODE(LSHIFT_ASSGN_OP,    "%ORBCPL1%LL1%CRBCPL1 <<= %LL2",
'e',2,LLNODE) 	
DEFNODECODE(RSHIFT_ASSGN_OP,    "%ORBCPL1%LL1%CRBCPL1 >>= %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)
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(ACC_CALL_OP,        "%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,  "~%ORBCPL1%LL1%CRBCPL1",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF,            "(%LL1)?%LL2",
'e',2,LLNODE)
DEFNODECODE(EXPR_IF_BODY,       "%LL1:%LL2",
'e',2,LLNODE)
DEFNODECODE(FUNCTION_REF,       "%SETFLAG(FREF)%SYMBID%IF (%CHECKFLAG(VARDECL) != %NULL)%IF(%CHECKFLAG(TMPLDEC) == %NULL)(%VARLISTTY)%CNSTF%PURE%ENDIF%ENDIF%UNSETFLAG(FREF)",
'e',2,LLNODE)
DEFNODECODE(LSHIFT_OP,          "%ORBCPL1%LL1%CRBCPL1 << %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(RSHIFT_OP,          "%ORBCPL1%LL1%CRBCPL1 >> %ORBCPL2%LL2%CRBCPL2",
'e',2,LLNODE)
DEFNODECODE(UNARY_ADD_OP,       "(+(%LL1))",
'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,     "%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL1/%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)",
'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)%ORBCPL1%LL1%CRBCPL1%ENDIF",
'e',2,LLNODE)
DEFNODECODE(ADDRESS_OP,         "%IF (%CHECKFLAG(VARDECL) == %NULL)&%ORBCPL1%LL1%CRBCPL1%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){%LL1}%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)%LL2%UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF%UNSETFLAG(NEW)",
'e',2,LLNODE)
*/
DEFNODECODE(NEW_OP,             "%SETFLAG(NEW)new %IF (%LL2 != %NULL)%PUSHFLAG(PAREN)%SETFLAG(PAREN)%LL2 %UNSETFLAG(PAREN)%POPFLAG(PAREN)%ENDIF%LL1%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)

/* 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_LONG,             "%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)








