Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • external/tcl/tclCompExpr.c

    radeddd8 rd7d2da3  
    3131#define ERANGE 34
    3232#endif
     33
     34/*
     35 * Boolean variable that controls whether expression compilation tracing
     36 * is enabled.
     37 */
     38
     39#ifdef TCL_COMPILE_DEBUG
     40static int traceCompileExpr = 0;
     41#endif /* TCL_COMPILE_DEBUG */
    3342
    3443/*
     
    123132#define NOT             (COLON + 1)
    124133#define BIT_NOT         (NOT + 1)
     134
     135/*
     136 * Mapping from tokens to strings; used for debugging messages. These
     137 * entries must match the order and number of the token definitions above.
     138 */
     139
     140#ifdef TCL_COMPILE_DEBUG
     141static char *tokenStrings[] = {
     142    "LITERAL", "FUNCNAME",
     143    "[", "]", "(", ")", "$", "\"", ",", "END", "UNKNOWN",
     144    "*", "/", "%", "+", "-",
     145    "<<", ">>", "<", ">", "<=", ">=", "==", "!=",
     146    "&", "^", "|", "&&", "||", "?", ":",
     147    "!", "~"
     148};
     149#endif /* TCL_COMPILE_DEBUG */
    125150
    126151/*
     
    173198                            ExprInfo *infoPtr, CompileEnv *envPtr));
    174199
     200/*
     201 * Macro used to debug the execution of the recursive descent parser used
     202 * to compile expressions.
     203 */
     204
     205#ifdef TCL_COMPILE_DEBUG
     206#define HERE(production, level) \
     207    if (traceCompileExpr) { \
     208        fprintf(stderr, "%*s%s: token=%s, next=\"%.20s\"\n", \
     209                (level), " ", (production), tokenStrings[infoPtr->token], \
     210                infoPtr->next); \
     211    }
     212#else
     213#define HERE(production, level)
     214#endif /* TCL_COMPILE_DEBUG */
    175215
    176216
     
    237277                                 * to execute the expression. */
    238278    int result;
     279
     280#ifdef TCL_COMPILE_DEBUG
     281    if (traceCompileExpr) {
     282        fprintf(stderr, "expr: string=\"%.30s\"\n", string);
     283    }
     284#endif /* TCL_COMPILE_DEBUG */
    239285
    240286    /*
     
    363409    int elseCodeOffset, currCodeOffset, jumpDist, result;
    364410   
     411    HERE("condExpr", 1);
    365412    result = CompileLorExpr(interp, infoPtr, flags, envPtr);
    366413    if (result != TCL_OK) {
     
    524571    Tcl_Obj *objPtr;
    525572   
     573    HERE("lorExpr", 2);
    526574    result = CompileLandExpr(interp, infoPtr, flags, envPtr);
    527575    if ((result != TCL_OK) || (infoPtr->token != OR)) {
     
    691739    Tcl_Obj *objPtr;
    692740
     741    HERE("landExpr", 3);
    693742    result = CompileBitOrExpr(interp, infoPtr, flags, envPtr);
    694743    if ((result != TCL_OK) || (infoPtr->token != AND)) {
     
    850899    int result;
    851900
     901    HERE("bitOrExpr", 4);
    852902    result = CompileBitXorExpr(interp, infoPtr, flags, envPtr);
    853903    if (result != TCL_OK) {
     
    920970    int result;
    921971
     972    HERE("bitXorExpr", 5);
    922973    result = CompileBitAndExpr(interp, infoPtr, flags, envPtr);
    923974    if (result != TCL_OK) {
     
    9901041    int result;
    9911042
     1043    HERE("bitAndExpr", 6);
    9921044    result = CompileEqualityExpr(interp, infoPtr, flags, envPtr);
    9931045    if (result != TCL_OK) {
     
    10601112    int op, result;
    10611113
     1114    HERE("equalityExpr", 7);
    10621115    result = CompileRelationalExpr(interp, infoPtr, flags, envPtr);
    10631116    if (result != TCL_OK) {
     
    11371190    int op, result;
    11381191
     1192    HERE("relationalExpr", 8);
    11391193    result = CompileShiftExpr(interp, infoPtr, flags, envPtr);
    11401194    if (result != TCL_OK) {
     
    12231277    int op, result;
    12241278
     1279    HERE("shiftExpr", 9);
    12251280    result = CompileAddExpr(interp, infoPtr, flags, envPtr);
    12261281    if (result != TCL_OK) {
     
    13001355    int op, result;
    13011356
     1357    HERE("addExpr", 10);
    13021358    result = CompileMultiplyExpr(interp, infoPtr, flags, envPtr);
    13031359    if (result != TCL_OK) {
     
    13771433    int op, result;
    13781434
     1435    HERE("multiplyExpr", 11);
    13791436    result = CompileUnaryExpr(interp, infoPtr, flags, envPtr);
    13801437    if (result != TCL_OK) {
     
    14561513    int op, result;
    14571514
     1515    HERE("unaryExpr", 12);
    14581516    op = infoPtr->token;
    14591517    if ((op == PLUS) || (op == MINUS) || (op == BIT_NOT) || (op == NOT)) {
     
    15501608     */
    15511609
     1610    HERE("primaryExpr", 13);
    15521611    theToken = infoPtr->token;
    15531612
Note: See TracChangeset for help on using the changeset viewer.