3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-25 18:15:34 +00:00

Added support for verilog genblock[index].member syntax

This commit is contained in:
Clifford Wolf 2013-02-26 13:18:22 +01:00
parent 26a192b8c7
commit 4f0c2862a0
4 changed files with 34 additions and 12 deletions

View file

@ -105,7 +105,7 @@ static void free_attr(std::map<std::string, AstNode*> *al)
%token TOK_SYNOPSYS_FULL_CASE TOK_SYNOPSYS_PARALLEL_CASE
%token TOK_SUPPLY0 TOK_SUPPLY1 TOK_TO_SIGNED TOK_TO_UNSIGNED
%type <ast> wire_type range expr basic_expr concat_list lvalue lvalue_concat_list
%type <ast> wire_type range expr basic_expr concat_list rvalue lvalue lvalue_concat_list
%type <string> opt_label tok_prim_wrapper
%type <boolean> opt_signed
%type <al> attr
@ -802,14 +802,22 @@ case_expr_list:
ast_stack.back()->children.push_back($3);
};
lvalue:
TOK_ID range {
$$ = new AstNode(AST_IDENTIFIER);
rvalue:
TOK_ID '[' expr ']' '.' rvalue {
$$ = new AstNode(AST_PREFIX, $3, $6);
$$->str = *$1;
if ($2)
$$->children.push_back($2);
delete $1;
} |
TOK_ID range {
$$ = new AstNode(AST_IDENTIFIER, $2);
$$->str = *$1;
delete $1;
};
lvalue:
rvalue {
$$ = $1;
} |
'{' lvalue_concat_list '}' {
$$ = $2;
};
@ -894,6 +902,9 @@ expr:
};
basic_expr:
rvalue {
$$ = $1;
} |
TOK_CONST {
$$ = const2ast(*$1, case_type_stack.size() == 0 ? 0 : case_type_stack.back());
delete $1;
@ -913,11 +924,6 @@ basic_expr:
$$->str = str;
delete $1;
} |
TOK_ID range {
$$ = new AstNode(AST_IDENTIFIER, $2);
$$->str = *$1;
delete $1;
} |
TOK_ID attr {
AstNode *node = new AstNode(AST_FCALL);
node->str = *$1;