src/Parser.cpp
changeset 141 d2516d66101a
parent 139 3f23e4d55beb
child 143 393f1b8ac8c3
     1.1 --- a/src/Parser.cpp	Mon Jul 30 11:56:23 2012 -0700
     1.2 +++ b/src/Parser.cpp	Mon Jul 30 12:13:08 2012 -0700
     1.3 @@ -255,7 +255,7 @@
     1.4        case TOK_DECREMENT:
     1.5        {
     1.6          scanner_.scan();
     1.7 -        Expression *expr = expression();
     1.8 +        Expression *expr = unary();
     1.9          if (!expr)
    1.10              return NULL;
    1.11          return new (pool_) IncDecExpression(pos, token, expr, false);
    1.12 @@ -266,12 +266,26 @@
    1.13        case TOK_TILDE:
    1.14        {
    1.15          scanner_.scan();
    1.16 -        Expression *expr = expression();
    1.17 +        Expression *expr = unary();
    1.18          if (!expr)
    1.19              return NULL;
    1.20          return new (pool_) UnaryExpression(pos, token, expr);
    1.21        }
    1.22  
    1.23 +      case TOK_LABEL:
    1.24 +      {
    1.25 +        scanner_.scan();
    1.26 +        Local<String> tag(zone_, zone_->makeSymbol(scanner_.literal(), scanner_.literal_length()));
    1.27 +        if (!tag)
    1.28 +            return NULL;
    1.29 +
    1.30 +        Expression *expr = unary();
    1.31 +        if (!expr)
    1.32 +            return NULL;
    1.33 +
    1.34 +        return new (pool_) UnaryExpression(pos, TOK_LABEL, expr, tag);
    1.35 +      }
    1.36 +
    1.37        default:
    1.38          break;
    1.39      }