2015-06-17 1 views
1

Я хочу создать правило в XText, которое соответствует строке, но в любом случае строка не имеет значения. Например, я хочу, чтобы он соответствовал «DUCK», «DucK» и «duck». Есть ли более простой способ сделать это, чем охватывающие все случаи, как:Строка совпадения в XText независимо от верхнего/нижнего регистра

Rule: 
    'Duck'|'DucK'|'DuCK'|... and so on 
; 

ответ

0

Существует флаг, который можно настроить в рабочем процессе mwe2. Заменить XtextAntlrGeneratorFragment на org.eclipse.xtext.generator.parser.antlr.ex.rt.AntlrGeneratorFragment и пройти options = { ignoreCase = true }. То же самое касается XtextAntlrUiGeneratorFragment и org.eclipse.xtext.generator.parser.antlr.ex.ca.ContentAssistParserGeneratorFragment

+1

Работал как очарование! Есть ли способ сделать это только для определенного правила, а не для всего этого? – Bergman

+0

Кроме того, возможно ли создание терминалов, которые могут соответствовать строкам как в верхнем, так и в нижнем регистре аналогичным образом? – Bergman

+0

Нет, такой возможности для лексинга нет. Однако вы можете использовать нечувствительность к регистру. Просто передайте 'ignoreCase = true' в вашем рабочем процессе фрагмент области видимости. –

0

FYI.

language = StandardLanguage { 
     ... 
     parserGenerator = { 
      options = { 
       ignoreCase = true //Case Insensitive Keywords 
      } 
     } 
     scopeProvider = { 
      ignoreCase = true //Case Insensitive "name=ID" 
     } 
     ... 
    }