diff options
| author | Udi Finkelstein <github@udifink.com> | 2017-09-30 06:39:07 +0300 | 
|---|---|---|
| committer | Udi Finkelstein <github@udifink.com> | 2017-09-30 06:39:07 +0300 | 
| commit | 72a08eca3dd6e7df1094c83afb97a0a293a1117e (patch) | |
| tree | 4626cfd8a82fd26614c3548dc40e87e13bab7332 | |
| parent | c5b204d8d283d16e6eae8658034da6d378b6810e (diff) | |
| download | yosys-72a08eca3dd6e7df1094c83afb97a0a293a1117e.tar.gz yosys-72a08eca3dd6e7df1094c83afb97a0a293a1117e.tar.bz2 yosys-72a08eca3dd6e7df1094c83afb97a0a293a1117e.zip | |
Resolved classical Bison IF/THEN/ELSE shift/reduce conflict using the textbook solution
(Oreilly 'Flex & Bison' page 189)
| -rw-r--r-- | frontends/verilog/verilog_parser.y | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 9fa2a1a2f..ec92f6628 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -142,7 +142,9 @@ static void free_attr(std::map<std::string, AstNode*> *al)  %define parse.error verbose  %define parse.lac full -%expect 2 +%nonassoc FAKE_THEN +%nonassoc TOK_ELSE +  %debug  %% @@ -1261,7 +1263,7 @@ optional_else:  		ast_stack.back()->children.push_back(cond);  		ast_stack.push_back(block);  	} behavioral_stmt | -	/* empty */; +	/* empty */ %prec FAKE_THEN;  case_body:  	case_body case_item | @@ -1432,7 +1434,7 @@ gen_stmt_or_null:  	gen_stmt_block | ';';  opt_gen_else: -	TOK_ELSE gen_stmt_or_null | /* empty */; +	TOK_ELSE gen_stmt_or_null | /* empty */ %prec FAKE_THEN;  expr:  	basic_expr { | 
