From e7661b978d77b1aa612bb1f833993616e8216a96 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Sat, 1 Sep 2012 23:52:16 +0900 Subject: manage line number in yacc rules, not in lexer --- src/parse.y | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/parse.y') diff --git a/src/parse.y b/src/parse.y index 3e0c670ea..79c7514e7 100644 --- a/src/parse.y +++ b/src/parse.y @@ -2916,7 +2916,7 @@ opt_terms : /* none */ ; opt_nl : /* none */ - | '\n' + | nl ; rparen : opt_nl ')' @@ -2926,14 +2926,20 @@ rbracket : opt_nl ']' ; trailer : /* none */ - | '\n' + | nl | ',' ; term : ';' {yyerrok;} - | '\n' + | nl ; +nl : '\n' + { + p->lineno++; + p->column = 0; + } + terms : term | terms ';' {yyerrok;} ; @@ -3515,14 +3521,14 @@ parser_yylex(parser_state *p) skip(p, '\n'); /* fall through */ case '\n': - p->lineno++; - p->column = 0; switch (p->lstate) { case EXPR_BEG: case EXPR_FNAME: case EXPR_DOT: case EXPR_CLASS: case EXPR_VALUE: + p->lineno++; + p->column = 0; goto retry; default: break; -- cgit v1.2.3