Ejemplo n.º 1
0
void HTTPTokenizer::executeAction(int production)
try
{
    if (d_token__ != _UNDETERMINED_)
        pushToken__(d_token__);     // save an already available token

// $insert defaultactionreturn
                            // save default non-nested block $$
    if (int size = s_productionInfo[production].d_size)
        d_val__ = d_vsp__[1 - size];

    switch (production)
    {
        // $insert actioncases
        
        case 1:
        {
         if (d_scanner.d_content_length != 0) {
         d_scanner.body();
         d_scanner.d_content_length = 0;
         }
         else if (d_scanner.d_chunked.length() != 0) {
         d_scanner.body();
         d_scanner.d_chunked_length = -1;
         d_scanner.d_chunked.assign("");
         }
         }
        break;

        case 2:
        d_val__ = d_vsp__[0];
        {
         d_scanner.d_content_length = 0;
         d_scanner.init(zpt::HTTPRequest);
         }
        break;

        case 3:
        d_val__ = d_vsp__[-3];
        {
         d_scanner.url();
         }
        break;

        case 4:
        {
         if (d_scanner.d_content_length != 0) {
         d_scanner.body();
         d_scanner.d_content_length = 0;
         }
         else if (d_scanner.d_chunked.length() != 0) {
         d_scanner.body();
         d_scanner.d_chunked_length = -1;
         d_scanner.d_chunked.assign("");
         }
         }
        break;

        case 5:
        d_val__ = d_vsp__[0];
        {
         d_scanner.d_content_length = 0;
         d_scanner.init(zpt::HTTPReply);
         }
        break;

        case 6:
        d_val__ = d_vsp__[-3];
        {
         d_scanner.status();
         }
        break;

        case 7:
        d_val__ = d_vsp__[-6];
        {
         }
        break;

        case 9:
        {
         }
        break;

        case 10:
        {
         d_scanner.value();
         }
        break;

        case 11:
        d_val__ = d_vsp__[0];
        {
         d_scanner.name();
         }
        break;

        case 12:
        {
         d_scanner.value();
         }
        break;

        case 13:
        d_val__ = d_vsp__[-2];
        {
         d_scanner.name();
         }
        break;

        case 18:
        {
         d_scanner.add();
         }
        break;

        case 19:
        d_val__ = d_vsp__[0];
        {
         d_scanner.add();
         }
        break;

        case 20:
        {
         d_scanner.add();
         }
        break;

        case 21:
        d_val__ = d_vsp__[-2];
        {
         d_scanner.add();
         }
        break;

        case 22:
        {
         d_scanner.body();
         d_scanner.d_content_length = 0;
         d_scanner.d_chunked_length = -1;
         d_scanner.d_chunked.assign("");
         }
        break;

    }
}
catch (std::exception const &exc)
{
    exceptionHandler__(exc);
}
void JSONTokenizer::executeAction(int production)
try
{
    if (d_token__ != _UNDETERMINED_)
        pushToken__(d_token__);     // save an already available token

                                    // save default non-nested block $$
    if (int size = s_productionInfo[production].d_size)
        d_val__ = d_vsp__[1 - size];

    switch (production)
    {
        // $insert actioncases
        
        case 1:
        {
         d_scanner.result(muzzley::JSObject);
         }
        break;

        case 2:
        {
         d_scanner.result(muzzley::JSArray);
         }
        break;

        case 3:
        {
         d_scanner.finish(muzzley::JSObject);
         }
        break;

        case 4:
        d_val__ = d_vsp__[0];
        {
         d_scanner.init(muzzley::JSObject);
         }
        break;

        case 5:
        {
         d_scanner.finish(muzzley::JSArray);
         }
        break;

        case 6:
        d_val__ = d_vsp__[0];
        {
         d_scanner.init(muzzley::JSArray);
         }
        break;

        case 8:
        {
         }
        break;

        case 9:
        {
         d_scanner.add();
         }
        break;

        case 10:
        d_val__ = d_vsp__[0];
        {
         d_scanner.init(muzzley::JSObject, d_scanner.matched());
         }
        break;

        case 11:
        {
         d_scanner.add();
         }
        break;

        case 12:
        d_val__ = d_vsp__[-2];
        {
         d_scanner.init(muzzley::JSObject, d_scanner.matched());
         }
        break;

        case 14:
        {
         }
        break;

        case 15:
        {
         d_scanner.add();
         }
        break;

        case 16:
        {
         d_scanner.add();
         }
        break;

        case 17:
        {
         }
        break;

        case 18:
        {
         }
        break;

        case 19:
        {
         string _out(d_scanner.matched());
         d_scanner.init(_out);
         }
        break;

        case 20:
        {
         bool _out;
         string _in(d_scanner.matched());
         muzzley::fromstr(_in, &_out);
         d_scanner.init(_out);
         }
        break;

        case 21:
        {
         long long _out;
         string _in(d_scanner.matched());
         muzzley::fromstr(_in, &_out);
         d_scanner.init(_out);
         }
        break;

        case 22:
        {
         double _out;
         string _in(d_scanner.matched());
         muzzley::fromstr(_in, &_out);
         d_scanner.init(_out);
         }
        break;

        case 23:
        {
         d_scanner.init();
         }
        break;

    }
}
catch (std::exception const &exc)
{
    exceptionHandler__(exc);
}
Ejemplo n.º 3
0
void Parser::executeAction(int production) try {
    if (d_token__ != _UNDETERMINED_)
        pushToken__(d_token__); // save an already available token

    // $insert defaultactionreturn
    // save default non-nested block $$
    if (int size = s_productionInfo[production].d_size)
        d_val__ = d_vsp__[1 - size];

    switch (production) {
        // $insert actioncases

        case 1:
#line 43 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = d_vsp__[0].data<Tag__::basic>();
            res = d_val__.get<Tag__::basic>();
        } break;

        case 2:
#line 51 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = add(d_vsp__[-2].data<Tag__::basic>(),
                                              d_vsp__[0].data<Tag__::basic>());
        } break;

        case 3:
#line 54 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = sub(d_vsp__[-2].data<Tag__::basic>(),
                                              d_vsp__[0].data<Tag__::basic>());
        } break;

        case 4:
#line 57 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = mul(d_vsp__[-2].data<Tag__::basic>(),
                                              d_vsp__[0].data<Tag__::basic>());
        } break;

        case 5:
#line 60 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = div(d_vsp__[-2].data<Tag__::basic>(),
                                              d_vsp__[0].data<Tag__::basic>());
        } break;

        case 6:
#line 63 "parser.yy"
        {
            auto tup = parse_implicit_mul(d_vsp__[-2].data<Tag__::string>());
            if (neq(*std::get<1>(tup), *one)) {
                d_val__.get<Tag__::basic>() = mul(
                    std::get<0>(tup),
                    pow(std::get<1>(tup), d_vsp__[0].data<Tag__::basic>()));
            } else {
                d_val__.get<Tag__::basic>()
                    = pow(std::get<0>(tup), d_vsp__[0].data<Tag__::basic>());
            }
        } break;

        case 7:
#line 73 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = pow(d_vsp__[-2].data<Tag__::basic>(),
                                              d_vsp__[0].data<Tag__::basic>());
        } break;

        case 8:
#line 76 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                Lt(d_vsp__[-2].data<Tag__::basic>(),
                   d_vsp__[0].data<Tag__::basic>()));
        } break;

        case 9:
#line 79 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                Gt(d_vsp__[-2].data<Tag__::basic>(),
                   d_vsp__[0].data<Tag__::basic>()));
        } break;

        case 10:
#line 82 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                Le(d_vsp__[-2].data<Tag__::basic>(),
                   d_vsp__[0].data<Tag__::basic>()));
        } break;

        case 11:
#line 85 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                Ge(d_vsp__[-2].data<Tag__::basic>(),
                   d_vsp__[0].data<Tag__::basic>()));
        } break;

        case 12:
#line 88 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                Eq(d_vsp__[-2].data<Tag__::basic>(),
                   d_vsp__[0].data<Tag__::basic>()));
        } break;

        case 13:
#line 91 "parser.yy"
        {
            set_boolean s;
            s.insert(rcp_static_cast<const Boolean>(
                d_vsp__[-2].data<Tag__::basic>()));
            s.insert(rcp_static_cast<const Boolean>(
                d_vsp__[0].data<Tag__::basic>()));
            d_val__.get<Tag__::basic>()
                = rcp_static_cast<const Basic>(logical_or(s));
        } break;

        case 14:
#line 99 "parser.yy"
        {
            set_boolean s;
            s.insert(rcp_static_cast<const Boolean>(
                d_vsp__[-2].data<Tag__::basic>()));
            s.insert(rcp_static_cast<const Boolean>(
                d_vsp__[0].data<Tag__::basic>()));
            d_val__.get<Tag__::basic>()
                = rcp_static_cast<const Basic>(logical_and(s));
        } break;

        case 15:
#line 107 "parser.yy"
        {
            vec_boolean s;
            s.push_back(rcp_static_cast<const Boolean>(
                d_vsp__[-2].data<Tag__::basic>()));
            s.push_back(rcp_static_cast<const Boolean>(
                d_vsp__[0].data<Tag__::basic>()));
            d_val__.get<Tag__::basic>()
                = rcp_static_cast<const Basic>(logical_xor(s));
        } break;

        case 16:
#line 115 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = d_vsp__[-1].data<Tag__::basic>();
        } break;

        case 17:
#line 118 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = neg(d_vsp__[0].data<Tag__::basic>());
        } break;

        case 18:
#line 121 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = rcp_static_cast<const Basic>(
                logical_not(rcp_static_cast<const Boolean>(
                    d_vsp__[0].data<Tag__::basic>())));
        } break;

        case 19:
#line 124 "parser.yy"
        {
            d_val__.get<Tag__::basic>()
                = rcp_static_cast<const Basic>(d_vsp__[0].data<Tag__::basic>());
        } break;

        case 20:
#line 129 "parser.yy"
        {
            d_val__.get<Tag__::basic>()
                = parse_identifier(d_vsp__[0].data<Tag__::string>());
        } break;

        case 21:
#line 134 "parser.yy"
        {
            auto tup = parse_implicit_mul(d_vsp__[0].data<Tag__::string>());
            d_val__.get<Tag__::basic>()
                = mul(std::get<0>(tup), std::get<1>(tup));
        } break;

        case 22:
#line 140 "parser.yy"
        {
            d_val__.get<Tag__::basic>()
                = parse_numeric(d_vsp__[0].data<Tag__::string>());
        } break;

        case 23:
#line 145 "parser.yy"
        {
            d_val__.get<Tag__::basic>() = d_vsp__[0].data<Tag__::basic>();
        } break;

        case 24:
#line 152 "parser.yy"
        {
            d_val__.get<Tag__::basic>()
                = functionify(d_vsp__[-3].data<Tag__::string>(),
                              d_vsp__[-1].data<Tag__::basic_vec>());
        } break;

        case 25:
#line 160 "parser.yy"
        {
            d_val__.get<Tag__::basic_vec>()
                = d_vsp__[-2].data<Tag__::basic_vec>();
            d_val__.get<Tag__::basic_vec>().push_back(
                d_vsp__[0].data<Tag__::basic>());
        } break;

        case 26:
#line 166 "parser.yy"
        {
            d_val__.get<Tag__::basic_vec>()
                = vec_basic(1, d_vsp__[0].data<Tag__::basic>());
        } break;
    }
} catch (std::exception const &exc) {
    exceptionHandler__(exc);
}