diff options
author | Clifford Wolf <clifford@clifford.at> | 2017-02-23 11:21:33 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2017-02-23 11:21:33 +0100 |
commit | 34d4e72132863279187950de259fb112ca749787 (patch) | |
tree | 49f7148aaedd925ecc02570c0d28fdaedb04e3bf /frontends/verilog/verilog_parser.y | |
parent | d25b6a72ee2ffb68bb0cc1244e5b67dc4649f982 (diff) | |
download | yosys-34d4e72132863279187950de259fb112ca749787.tar.gz yosys-34d4e72132863279187950de259fb112ca749787.tar.bz2 yosys-34d4e72132863279187950de259fb112ca749787.zip |
Added SystemVerilog support for ++ and --
Diffstat (limited to 'frontends/verilog/verilog_parser.y')
-rw-r--r-- | frontends/verilog/verilog_parser.y | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 1879ff441..7c2880e4e 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -117,6 +117,7 @@ static void free_attr(std::map<std::string, AstNode*> *al) %token TOK_POS_INDEXED TOK_NEG_INDEXED TOK_ASSERT TOK_ASSUME %token TOK_RESTRICT TOK_COVER TOK_PROPERTY TOK_ENUM TOK_TYPEDEF %token TOK_RAND TOK_CONST TOK_CHECKER TOK_ENDCHECKER +%token TOK_INCREMENT TOK_DECREMENT %type <ast> range range_or_multirange non_opt_range non_opt_multirange range_or_signed_int %type <ast> wire_type expr basic_expr concat_list rvalue lvalue lvalue_concat_list @@ -1067,6 +1068,14 @@ simple_behavioral_stmt: AstNode *node = new AstNode(AST_ASSIGN_EQ, $1, $4); ast_stack.back()->children.push_back(node); } | + lvalue TOK_INCREMENT { + AstNode *node = new AstNode(AST_ASSIGN_EQ, $1, new AstNode(AST_ADD, $1->clone(), AstNode::mkconst_int(1, true))); + ast_stack.back()->children.push_back(node); + } | + lvalue TOK_DECREMENT { + AstNode *node = new AstNode(AST_ASSIGN_EQ, $1, new AstNode(AST_SUB, $1->clone(), AstNode::mkconst_int(1, true))); + ast_stack.back()->children.push_back(node); + } | lvalue OP_LE delay expr { AstNode *node = new AstNode(AST_ASSIGN_LE, $1, $4); ast_stack.back()->children.push_back(node); |