Task #5002
closed
Тип переменной в блоке условия процесса
Added by Mikhail Chupilko over 10 years ago.
Updated over 10 years ago.
Description
Когда в методе onDelayedStatementBegin прочитываем тип переменной из event.getExpression().getVariable(), полученной из node.getEventControl().getEvents(), то он оказывается unknown.
(там прочитывается условие на процесс, например "posedge rst"). Предлагаю сразу указывать корректный тип. Или он не указывается, т.к. под переменной, участвующей в блоке условия, может скрываться целое выражение и тип, соответственно, заранее не известен?
Не все понял. В выражении не обязательно переменная: может быть, если не ошибаюсь, конкатенация (см. стандарт).
Собственно, рассматривались конструкции следующего типа: "always (posedge rst)" - вот у этого rst как раз и не будет определен тип. Насколько я понимаю, конструкция срез_сигнала+переменная имеет тип "Event" и конкатенацию выражений под срезом_сигнала не используют (что-то вроде "always
(posedge {rst,clk})" в стандарте не встречал)
- Target version set to 0.1
- Синтаксически после
posedge
может быть любое выражение (не обязательно переменная), поэтому некорректно делать вызов event.getExpression().getVariable()
- см. раздел "Event control":
event_control ::=
...
| @(event_expression)
...
event_expression ::=
...
| posedge expression
...
- Если я не ошибаюсь, сейчас у всех переменных в AST тип не определен - так как нет привязки переменных к декларациям.
Для чего нужен тип?
- Status changed from New to Resolved
- Assignee changed from Alexander Kamkin to Mikhail Chupilko
Теперь вместо getVariable используется getVariables. А тип больше не нужен - он указывается при декларации переменной. r815
- Status changed from Resolved to Closed
Also available in: Atom
PDF