📄 wsgram.c
字号:
if (!ws_bc_add_pragma_access_domain(compiler->bc, yyvsp[-2].string->data, yyvsp[-2].string->len)) success = WS_FALSE; if (!ws_bc_add_pragma_access_path(compiler->bc, yyvsp[0].string->data, yyvsp[0].string->len)) success = WS_FALSE; if (!success) ws_error_memory(pctx); ws_lexer_free_utf8(compiler, yyvsp[-2].string); ws_lexer_free_utf8(compiler, yyvsp[0].string); } break; case 21:#line 212 "wmlscript/wsgram.y" { WsCompiler *compiler = (WsCompiler *) pctx; /* Meta information for the origin servers. Show it * to the user if requested. */ if (compiler->params.meta_name_cb) (*compiler->params.meta_name_cb)( yyvsp[0].meta_body->property_name, yyvsp[0].meta_body->content, yyvsp[0].meta_body->scheme, compiler->params.meta_name_cb_context); /* We do not need the MetaBody anymore. */ ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body); } break; case 22:#line 230 "wmlscript/wsgram.y" { WsCompiler *compiler = (WsCompiler *) pctx; /* Meta information HTTP header that should be * included to an HTTP response header. Show it to * the user if requested. */ if (compiler->params.meta_http_equiv_cb) (*compiler->params.meta_http_equiv_cb)( yyvsp[0].meta_body->property_name, yyvsp[0].meta_body->content, yyvsp[0].meta_body->scheme, compiler->params.meta_http_equiv_cb_context); /* We do not need the MetaBody anymore. */ ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body); } break; case 23:#line 250 "wmlscript/wsgram.y" { WsBool success; WsCompiler *compiler = (WsCompiler *) pctx; /* Pass this pragma to the byte-code */ if (yyvsp[0].meta_body) { if (yyvsp[0].meta_body->scheme) success = ws_bc_add_pragma_user_agent_property_and_scheme( compiler->bc, yyvsp[0].meta_body->property_name->data, yyvsp[0].meta_body->property_name->len, yyvsp[0].meta_body->content->data, yyvsp[0].meta_body->content->len, yyvsp[0].meta_body->scheme->data, yyvsp[0].meta_body->scheme->len); else success = ws_bc_add_pragma_user_agent_property( compiler->bc, yyvsp[0].meta_body->property_name->data, yyvsp[0].meta_body->property_name->len, yyvsp[0].meta_body->content->data, yyvsp[0].meta_body->content->len); /* Free the MetaBody. */ ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body); if (!success) ws_error_memory(pctx); } } break; case 24:#line 285 "wmlscript/wsgram.y" { yyval.meta_body = ws_pragma_meta_body(pctx, yyvsp[-1].string, yyvsp[0].string, NULL); } break; case 25:#line 287 "wmlscript/wsgram.y" { yyval.meta_body = ws_pragma_meta_body(pctx, yyvsp[-2].string, yyvsp[-1].string, yyvsp[0].string); } break; case 31:#line 304 "wmlscript/wsgram.y" { char *name = ws_strdup(yyvsp[-5].identifier); ws_lexer_free_block(pctx, yyvsp[-5].identifier); if (name) ws_function(pctx, yyvsp[-7].boolean, name, yylsp[-5].first_line, yyvsp[-3].list, yyvsp[-1].list); else ws_error_memory(pctx); } break; case 32:#line 317 "wmlscript/wsgram.y" { yyval.boolean = WS_FALSE; } break; case 33:#line 318 "wmlscript/wsgram.y" { yyval.boolean = WS_TRUE; } break; case 34:#line 323 "wmlscript/wsgram.y" { yyval.list = ws_list_new(pctx); } break; case 38:#line 334 "wmlscript/wsgram.y" { char *id; WsFormalParm *parm; id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, yyvsp[0].identifier); parm = ws_formal_parameter(pctx, yylsp[0].first_line, id); ws_lexer_free_block(pctx, yyvsp[0].identifier); if (id == NULL || parm == NULL) { ws_error_memory(pctx); yyval.list = NULL; } else { yyval.list = ws_list_new(pctx); ws_list_append(pctx, yyval.list, parm); } } break; case 39:#line 352 "wmlscript/wsgram.y" { char *id; WsFormalParm *parm; id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, yyvsp[0].identifier); parm = ws_formal_parameter(pctx, yylsp[-2].first_line, id); ws_lexer_free_block(pctx, yyvsp[0].identifier); if (id == NULL || parm == NULL) { ws_error_memory(pctx); yyval.list = NULL; } else ws_list_append(pctx, yyvsp[-2].list, parm); } break; case 40:#line 373 "wmlscript/wsgram.y" { if (yyvsp[0].list) yyval.stmt = ws_stmt_block(pctx, yyvsp[0].list->first_line, yyvsp[0].list->last_line, yyvsp[0].list); else yyval.stmt = NULL; } break; case 42:#line 382 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_empty(pctx, yylsp[0].first_line); } break; case 43:#line 384 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_expr(pctx, yyvsp[-1].expr->line, yyvsp[-1].expr); } break; case 46:#line 388 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_continue(pctx, yylsp[-1].first_line); } break; case 47:#line 390 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_break(pctx, yylsp[-1].first_line); } break; case 49:#line 395 "wmlscript/wsgram.y" { yyval.list = yyvsp[-1].list; if (yyval.list) { yyval.list->first_line = yylsp[-2].first_line; yyval.list->last_line = yylsp[0].first_line; } } break; case 50:#line 403 "wmlscript/wsgram.y" { ws_error_syntax(pctx, yylsp[0].first_line); yyval.list = NULL; } break; case 51:#line 411 "wmlscript/wsgram.y" { yyval.list = ws_list_new(pctx); } break; case 53:#line 417 "wmlscript/wsgram.y" { yyval.list = ws_list_new(pctx); ws_list_append(pctx, yyval.list, yyvsp[0].stmt); } break; case 54:#line 422 "wmlscript/wsgram.y" { ws_list_append(pctx, yyvsp[-1].list, yyvsp[0].stmt); } break; case 55:#line 427 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_variable(pctx, yylsp[-2].first_line, yyvsp[-1].list); } break; case 56:#line 429 "wmlscript/wsgram.y" { ws_error_syntax(pctx, yylsp[0].first_line); } break; case 57:#line 434 "wmlscript/wsgram.y" { yyval.list = ws_list_new(pctx); ws_list_append(pctx, yyval.list, yyvsp[0].vardec); } break; case 58:#line 439 "wmlscript/wsgram.y" { ws_list_append(pctx, yyvsp[-2].list, yyvsp[0].vardec); } break; case 59:#line 444 "wmlscript/wsgram.y" { char *id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, yyvsp[-1].identifier); ws_lexer_free_block(pctx, yyvsp[-1].identifier); if (id == NULL) { ws_error_memory(pctx); yyval.vardec = NULL; } else yyval.vardec = ws_variable_declaration(pctx, id, yyvsp[0].expr); } break; case 60:#line 459 "wmlscript/wsgram.y" { yyval.expr = NULL; } break; case 61:#line 461 "wmlscript/wsgram.y" { yyval.expr = yyvsp[0].expr; } break; case 62:#line 466 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_if(pctx, yylsp[-6].first_line, yyvsp[-4].expr, yyvsp[-2].stmt, yyvsp[0].stmt); } break; case 63:#line 468 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_if(pctx, yylsp[-4].first_line, yyvsp[-2].expr, yyvsp[0].stmt, NULL); } break; case 64:#line 473 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_while(pctx, yylsp[-4].first_line, yyvsp[-2].expr, yyvsp[0].stmt); } break; case 66:#line 480 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_for(pctx, yylsp[-8].first_line, NULL, yyvsp[-6].expr, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt); } break; case 67:#line 483 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_for(pctx, yylsp[-9].first_line, yyvsp[-6].list, NULL, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt); } break; case 68:#line 488 "wmlscript/wsgram.y" { yyval.stmt = ws_stmt_return(pctx, yylsp[-2].first_line, yyvsp[-1].expr); } break; case 69:#line 494 "wmlscript/wsgram.y" { yyval.expr = NULL; } break; case 72:#line 502 "wmlscript/wsgram.y" { yyval.expr = ws_expr_comma(pctx, yylsp[-1].first_line, yyvsp[-2].expr, yyvsp[0].expr); } break; case 74:#line 508 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, '=', yyvsp[0].expr); } break; case 75:#line 510 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tMULA, yyvsp[0].expr); } break; case 76:#line 512 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tDIVA, yyvsp[0].expr); } break; case 77:#line 514 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tREMA, yyvsp[0].expr); } break; case 78:#line 516 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tADDA, yyvsp[0].expr); } break; case 79:#line 518 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tSUBA, yyvsp[0].expr); } break; case 80:#line 520 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tLSHIFTA, yyvsp[0].expr); } break; case 81:#line 522 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tRSSHIFTA, yyvsp[0].expr); } break; case 82:#line 524 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tRSZSHIFTA, yyvsp[0].expr); } break; case 83:#line 526 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tANDA, yyvsp[0].expr); } break; case 84:#line 528 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tXORA, yyvsp[0].expr); } break; case 85:#line 530 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tORA, yyvsp[0].expr); } break; case 86:#line 532 "wmlscript/wsgram.y" { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tIDIVA, yyvsp[0].expr); } break; case 88:#line 538 "wmlscript/wsgram.y" { yyval.expr = ws_expr_conditional(pctx, yylsp[-3].first
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -