Fix insert_semicolon

This commit is contained in:
Ilmir Usmanov
2014-10-02 21:35:39 +04:00
parent af00691d1d
commit c4c713535e
4 changed files with 38 additions and 21 deletions
+2
View File
@@ -25,6 +25,8 @@ nbproject
*.swp
*~
js.files
jerry.error
jerry.passed
core
vgcore.*
**.orig
+25 -18
View File
@@ -20,7 +20,7 @@
#include "stack.h"
#include "opcodes.h"
static token saved_token;
static token saved_token, prev_token, sent_token;
static token empty_token =
{
.type = TOK_EMPTY,
@@ -1233,16 +1233,17 @@ lexer_next_token (void)
}
#endif /* __TARGET_HOST_x64 */
token tok = lexer_next_token_private ();
prev_token = sent_token;
sent_token = lexer_next_token_private ();
#ifdef __TARGET_HOST_x64
if (tok.type == TOK_NEWLINE)
if (sent_token.type == TOK_NEWLINE)
{
dump_current_line ();
return tok;
return sent_token;
}
#endif /* __TARGET_HOST_x64 */
return tok;
return sent_token;
}
void
@@ -1251,25 +1252,18 @@ lexer_save_token (token tok)
saved_token = tok;
}
token
lexer_prev_token (void)
{
return prev_token;
}
void
lexer_dump_buffer_state (void)
{
__printf ("%s\n", buffer);
}
void
lexer_init (const char *source, size_t source_size, bool show_opcodes)
{
saved_token = empty_token;
allow_dump_lines = show_opcodes;
buffer_size = source_size;
lexer_set_source (source);
STACK_INIT (lp_string, strings);
STACK_INIT (ecma_number_t, numbers);
STACK_INIT (idx_t, num_ids);
}
void
lexer_run_first_pass (void)
{
@@ -1282,6 +1276,19 @@ lexer_run_first_pass (void)
lexer_rewind ();
}
void
lexer_init (const char *source, size_t source_size, bool show_opcodes)
{
saved_token = prev_token = sent_token = empty_token;
allow_dump_lines = show_opcodes;
buffer_size = source_size;
lexer_set_source (source);
STACK_INIT (lp_string, strings);
STACK_INIT (ecma_number_t, numbers);
STACK_INIT (idx_t, num_ids);
}
void
lexer_free (void)
{
+1
View File
@@ -152,6 +152,7 @@ void lexer_run_first_pass (void);
token lexer_next_token (void);
void lexer_save_token (token);
token lexer_prev_token (void);
void lexer_dump_buffer_state (void);
+10 -3
View File
@@ -2764,9 +2764,16 @@ parse_try_statement (void)
static void
insert_semicolon (void)
{
TODO (/*Uncomment when skip_newlines will be fixed. */)
// skip_token ();
// JERRY_ASSERT (token_is (TOK_SEMICOLON) || token_is (TOK_NEWLINE));
// We cannot use TOK (), since we may use lexer_save_token
skip_token ();
if (lexer_prev_token ().type == TOK_NEWLINE)
{
return;
}
if (!token_is (TOK_SEMICOLON))
{
parser_fatal (ERR_PARSER);
}
}
/* statement