【发布时间】:2019-05-25 09:14:34
【问题描述】:
我在我的语法中声明了字符串变量,vAttributeName 和 vClassName,并为它们分配了标记的文本值:className 和属性名称。当我使用通常应在错误替代中包含值的变量之一时,因此在另一条规则中,它在消息中返回 null ... 为什么我的变量不保留这些值?我该如何解决?
grammar TestExpression;
@parser::members {
String vAttributeName;
String vClassName;
}
/* SYNTAX RULES */
textInput : classifierContext ;
classifierContext : 'context' c=className attributeContext {vClassName = $c.text;};
attributeContext : '::' a=attributeName ':' dataType initDefinition {vAttributeName = $a.text;};
initDefinition : 'init' ':' initExpression ;
initExpression : boolExpression
| decimalExpression
| dateTimeExpression
| .+? {notifyErrorListeners("Corriger - "l'attribut "+vAttributeName+" de l'entité "+vClassName+" ne correspond pas");}
我正在尝试解析一个表达式,该表达式描述了一个具有 false 值属性的类。
我预期的信息是:“Corriger - l'attribut seat de l'entité Car ne compatible pas”。
但实际消息是:“Corriger - l'attribute null de l'entité null ne compatible pas”。
【问题讨论】: