jscript: Added "Expected ')'" error.
This commit is contained in:
parent
29d9f09992
commit
2fba39df27
|
@ -28,6 +28,7 @@ STRINGTABLE DISCARDABLE
|
||||||
IDS_ARG_NOT_OPT "Argument not optional"
|
IDS_ARG_NOT_OPT "Argument not optional"
|
||||||
IDS_SYNTAX_ERROR "Syntax error"
|
IDS_SYNTAX_ERROR "Syntax error"
|
||||||
IDS_LBRACKET "Expected '('"
|
IDS_LBRACKET "Expected '('"
|
||||||
|
IDS_RBRACKET "Expected ')'"
|
||||||
IDS_NOT_FUNC "Function expected"
|
IDS_NOT_FUNC "Function expected"
|
||||||
IDS_NOT_DATE "'[object]' is not a date object"
|
IDS_NOT_DATE "'[object]' is not a date object"
|
||||||
IDS_NOT_NUM "Number expected"
|
IDS_NOT_NUM "Number expected"
|
||||||
|
|
|
@ -267,7 +267,7 @@ SourceElements
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 13 */
|
/* ECMA-262 3rd Edition 13 */
|
||||||
FunctionExpression
|
FunctionExpression
|
||||||
: KFunction Identifier_opt left_bracket FormalParameterList_opt ')' '{' FunctionBody '}'
|
: KFunction Identifier_opt left_bracket FormalParameterList_opt right_bracket '{' FunctionBody '}'
|
||||||
{ $$ = new_function_expression(ctx, $2, $4, $7, $1, $8-$1+1); }
|
{ $$ = new_function_expression(ctx, $2, $4, $7, $1, $8-$1+1); }
|
||||||
|
|
||||||
KFunction
|
KFunction
|
||||||
|
@ -380,24 +380,24 @@ ExpressionStatement
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.5 */
|
/* ECMA-262 3rd Edition 12.5 */
|
||||||
IfStatement
|
IfStatement
|
||||||
: kIF left_bracket Expression ')' Statement kELSE Statement
|
: kIF left_bracket Expression right_bracket Statement kELSE Statement
|
||||||
{ $$ = new_if_statement(ctx, $3, $5, $7); }
|
{ $$ = new_if_statement(ctx, $3, $5, $7); }
|
||||||
| kIF left_bracket Expression ')' Statement %prec LOWER_THAN_ELSE
|
| kIF left_bracket Expression right_bracket Statement %prec LOWER_THAN_ELSE
|
||||||
{ $$ = new_if_statement(ctx, $3, $5, NULL); }
|
{ $$ = new_if_statement(ctx, $3, $5, NULL); }
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.6 */
|
/* ECMA-262 3rd Edition 12.6 */
|
||||||
IterationStatement
|
IterationStatement
|
||||||
: kDO Statement kWHILE left_bracket Expression ')' semicolon_opt
|
: kDO Statement kWHILE left_bracket Expression right_bracket semicolon_opt
|
||||||
{ $$ = new_while_statement(ctx, TRUE, $5, $2); }
|
{ $$ = new_while_statement(ctx, TRUE, $5, $2); }
|
||||||
| kWHILE left_bracket Expression ')' Statement
|
| kWHILE left_bracket Expression right_bracket Statement
|
||||||
{ $$ = new_while_statement(ctx, FALSE, $3, $5); }
|
{ $$ = new_while_statement(ctx, FALSE, $3, $5); }
|
||||||
| kFOR left_bracket ExpressionNoIn_opt ';' Expression_opt ';' Expression_opt ')' Statement
|
| kFOR left_bracket ExpressionNoIn_opt ';' Expression_opt ';' Expression_opt right_bracket Statement
|
||||||
{ $$ = new_for_statement(ctx, NULL, $3, $5, $7, $9); }
|
{ $$ = new_for_statement(ctx, NULL, $3, $5, $7, $9); }
|
||||||
| kFOR left_bracket kVAR VariableDeclarationListNoIn ';' Expression_opt ';' Expression_opt ')' Statement
|
| kFOR left_bracket kVAR VariableDeclarationListNoIn ';' Expression_opt ';' Expression_opt right_bracket Statement
|
||||||
{ $$ = new_for_statement(ctx, $4, NULL, $6, $8, $10); }
|
{ $$ = new_for_statement(ctx, $4, NULL, $6, $8, $10); }
|
||||||
| kFOR left_bracket LeftHandSideExpression kIN Expression ')' Statement
|
| kFOR left_bracket LeftHandSideExpression kIN Expression right_bracket Statement
|
||||||
{ $$ = new_forin_statement(ctx, NULL, $3, $5, $7); }
|
{ $$ = new_forin_statement(ctx, NULL, $3, $5, $7); }
|
||||||
| kFOR left_bracket kVAR VariableDeclarationNoIn kIN Expression ')' Statement
|
| kFOR left_bracket kVAR VariableDeclarationNoIn kIN Expression right_bracket Statement
|
||||||
{ $$ = new_forin_statement(ctx, $4, NULL, $6, $8); }
|
{ $$ = new_forin_statement(ctx, $4, NULL, $6, $8); }
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.7 */
|
/* ECMA-262 3rd Edition 12.7 */
|
||||||
|
@ -417,7 +417,7 @@ ReturnStatement
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.10 */
|
/* ECMA-262 3rd Edition 12.10 */
|
||||||
WithStatement
|
WithStatement
|
||||||
: kWITH left_bracket Expression ')' Statement
|
: kWITH left_bracket Expression right_bracket Statement
|
||||||
{ $$ = new_with_statement(ctx, $3, $5); }
|
{ $$ = new_with_statement(ctx, $3, $5); }
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.12 */
|
/* ECMA-262 3rd Edition 12.12 */
|
||||||
|
@ -427,7 +427,7 @@ LabelledStatement
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.11 */
|
/* ECMA-262 3rd Edition 12.11 */
|
||||||
SwitchStatement
|
SwitchStatement
|
||||||
: kSWITCH left_bracket Expression ')' CaseBlock
|
: kSWITCH left_bracket Expression right_bracket CaseBlock
|
||||||
{ $$ = new_switch_statement(ctx, $3, $5); }
|
{ $$ = new_switch_statement(ctx, $3, $5); }
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.11 */
|
/* ECMA-262 3rd Edition 12.11 */
|
||||||
|
@ -472,7 +472,7 @@ TryStatement
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.14 */
|
/* ECMA-262 3rd Edition 12.14 */
|
||||||
Catch
|
Catch
|
||||||
: kCATCH left_bracket tIdentifier ')' Block
|
: kCATCH left_bracket tIdentifier right_bracket Block
|
||||||
{ $$ = new_catch_block(ctx, $3, $5); }
|
{ $$ = new_catch_block(ctx, $3, $5); }
|
||||||
|
|
||||||
/* ECMA-262 3rd Edition 12.14 */
|
/* ECMA-262 3rd Edition 12.14 */
|
||||||
|
@ -802,6 +802,10 @@ left_bracket
|
||||||
: '('
|
: '('
|
||||||
| error { set_error(ctx, IDS_LBRACKET); YYABORT; }
|
| error { set_error(ctx, IDS_LBRACKET); YYABORT; }
|
||||||
|
|
||||||
|
right_bracket
|
||||||
|
: ')'
|
||||||
|
| error { set_error(ctx, IDS_RBRACKET); YYABORT; }
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
static BOOL allow_auto_semicolon(parser_ctx_t *ctx)
|
static BOOL allow_auto_semicolon(parser_ctx_t *ctx)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#define IDS_ARG_NOT_OPT 0x01c1
|
#define IDS_ARG_NOT_OPT 0x01c1
|
||||||
#define IDS_SYNTAX_ERROR 0x03EA
|
#define IDS_SYNTAX_ERROR 0x03EA
|
||||||
#define IDS_LBRACKET 0x03ED
|
#define IDS_LBRACKET 0x03ED
|
||||||
|
#define IDS_RBRACKET 0x03EE
|
||||||
#define IDS_NOT_FUNC 0x138A
|
#define IDS_NOT_FUNC 0x138A
|
||||||
#define IDS_NOT_DATE 0x138E
|
#define IDS_NOT_DATE 0x138E
|
||||||
#define IDS_NOT_NUM 0x1389
|
#define IDS_NOT_NUM 0x1389
|
||||||
|
|
|
@ -1325,5 +1325,8 @@ exception_test(function() {eval("while");}, "SyntaxError", -2146827283);
|
||||||
exception_test(function() {eval("for");}, "SyntaxError", -2146827283);
|
exception_test(function() {eval("for");}, "SyntaxError", -2146827283);
|
||||||
exception_test(function() {eval("with");}, "SyntaxError", -2146827283);
|
exception_test(function() {eval("with");}, "SyntaxError", -2146827283);
|
||||||
exception_test(function() {eval("switch");}, "SyntaxError", -2146827283);
|
exception_test(function() {eval("switch");}, "SyntaxError", -2146827283);
|
||||||
|
exception_test(function() {eval("if(false");}, "SyntaxError", -2146827282);
|
||||||
|
exception_test(function() {eval("for(i=0; i<10; i++");}, "SyntaxError", -2146827282);
|
||||||
|
exception_test(function() {eval("while(true");}, "SyntaxError", -2146827282);
|
||||||
|
|
||||||
reportSuccess();
|
reportSuccess();
|
||||||
|
|
Loading…
Reference in New Issue