Я пытаюсь написать простую грамматику EBNF для анализа файла журнала игры, и для этого я использую плагин Grammar-Kit. Проблема сработала не так, как я ожидал, и я не понимаю, почему. Согласно тому, что я прочитал, все должно быть в порядке, но как-то нет. Итак, вот пример грамматики:
{
tokens=[
LP='('
RP=')'
lb='('
rb=')'
space='regexp:\s+'
]
}
root ::= root_item *
private root_item ::= !<<eof>> message {pin=1 recoverWhile=property_recover}
message ::= '[' datetime ']' typetoken numberValue actionDirectionPart targetPart info
typetoken ::= '(' type ')'
type ::= ('notify' | 'combat')
numberValue ::= tag-color '<b>' alphabets '</b>'
actionDirection ::= ('to' | 'from')
actionDirectionPart ::= tag-color tag-font actionDirection '</font>'
targetPart ::= '<b>' tag-color targetName '</b>'
targetName ::= alphabets*
info ::= tag-font tag-color alphabets*
tag-font ::= '<font size=' number '>'
tag-color ::= '<color=' hexnumber '>'
private property_recover ::= !'['
alphabets ::= "regexp:[A-Za-z\d-]+"
hexnumber ::= "regexp:0x[0-9a-fA-F]+"
number ::= 'regexp:\d+(\.\d*)?'
datetime ::= "regexp:\d{4}\.\d{2}\.\d{2} \d{2}:\d{2}:\d{2}"
А вот пример файла журнала:
[ 2019.10.25 15:34:01 ] (combat) <color=0xff00ffff><b>2494</b> <color=0x77ffffff><font size=10>to</font> <b><color=0xffffffff>Upgraded Avenger</b><font size=10><color=0x77ffffff> - Scout Scoped Dual 1000mm Railgun - Grazes
[ 2019.10.25 15:34:02 ] (combat) <color=0xffcc0000><b>797</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Upgraded Avenger</b><font size=10><color=0x77ffffff> - Glances Off
[ 2019.10.25 15:34:02 ] (combat) <color=0xffcc0000><b>1323</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Upgraded Avenger</b><font size=10><color=0x77ffffff> - Penetrates
[ 2019.10.25 15:34:04 ] (combat) <color=0xffcc0000><b>52</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Emergent Sentinel</b><font size=10><color=0x77ffffff> - Oneiric Missile - Hits
[ 2019.10.25 15:34:04 ] (combat) <color=0xffcc0000><b>52</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Emergent Sentinel</b><font size=10><color=0x77ffffff> - Oneiric Missile - Hits
[ 2019.10.25 15:34:04 ] (combat) <color=0xffcc0000><b>52</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Emergent Sentinel</b><font size=10><color=0x77ffffff> - Oneiric Missile - Hits
[ 2019.10.25 15:34:04 ] (combat) <color=0xffcc0000><b>52</b> <color=0x77ffffff><font size=10>from</font> <b><color=0xffffffff>Emergent Sentinel</b><font size=10><color=0x77ffffff> - Oneiric Missile - Hits
Как вы могли видеть на следующем рисунке, он как-то работает
Итак, первый вопрос: он не распознает маркер даты и времени, но если я изменяю его в грамматике, он терпит неудачу на этом токене, почему это происходит?
И второй вопрос не проходит по цвету= параметр говорит: " AUTO15 ожидается", но мой токен шестнадцатеричного числа должен быть полностью действительным, почему он не работает?
Может быть, я пропускаю какой-то ключевой момент, но я не могу выяснить, что именнодокументация для плагина довольно общая и не содержит примеров ...