diff --git a/bundles/org.openhab.core.model.persistence/src/org/openhab/core/model/persistence/Persistence.xtext b/bundles/org.openhab.core.model.persistence/src/org/openhab/core/model/persistence/Persistence.xtext index f46d46c649..49bf87c30b 100644 --- a/bundles/org.openhab.core.model.persistence/src/org/openhab/core/model/persistence/Persistence.xtext +++ b/bundles/org.openhab.core.model.persistence/src/org/openhab/core/model/persistence/Persistence.xtext @@ -32,7 +32,7 @@ FilterDetails: ; ThresholdFilter: - '>' (relative?='%')? value=DECIMAL unit=STRING? + '>' (relative?='%')? value=DECIMAL unit=(UNIT|STRING)? ; TimeFilter: @@ -40,27 +40,27 @@ TimeFilter: ; EqualsFilter: - '=' values+=STRING (',' values+=STRING)* + '=' values+=STRING (',' values+=STRING)* ; NotEqualsFilter: - '!' values+=STRING (',' values+=STRING)* + '!' values+=STRING (',' values+=STRING)* ; IncludeFilter: - '[]' lower=DECIMAL upper=DECIMAL unit=STRING? + '[]' lower=DECIMAL upper=DECIMAL unit=(UNIT|STRING)? ; NotIncludeFilter: - '][' lower=DECIMAL upper=DECIMAL unit=STRING? + '][' lower=DECIMAL upper=DECIMAL unit=(UNIT|STRING)? ; PersistenceConfiguration: items+=(AllConfig | ItemConfig | GroupConfig | ItemExcludeConfig | GroupExcludeConfig) - (',' items+=(AllConfig | ItemConfig | GroupConfig | ItemExcludeConfig | GroupExcludeConfig))* + (',' items+=(AllConfig | ItemConfig | GroupConfig | ItemExcludeConfig | GroupExcludeConfig))* ((':' ('strategy' '=' strategies+=[Strategy|ID] (',' strategies+=[Strategy|ID])*)? - ('filter' '=' filters+=[Filter|ID] (',' filters+=[Filter|ID])*)?) + ('filter' '=' filters+=[Filter|ID] (',' filters+=[Filter|ID])*)?) | ';') ; @@ -78,17 +78,21 @@ GroupConfig: ; ItemExcludeConfig: - '!' itemExclude=ID + '!' itemExclude=ID ; GroupExcludeConfig: - '!' groupExclude=ID '*' + '!' groupExclude=ID '*' ; AliasConfiguration: - item=ID '->' alias=(ID|STRING) + item=ID '->' alias=(ID|STRING) ; DECIMAL returns ecore::EBigDecimal : '-'? INT ('.' INT)? ; + +UNIT: + (('^' INT)|'²'|'³'|'/'|'*'|'·'|'°'|'µ'|'%'|'‰'|'Ω'|'Å'|'('|')'|ID)+ +;