Преамбула
Стал я разбираться, как писать моды. Попутно решил добавить в свой любимый редактор подсветку синтаксиса всех необходимых скриптов (я по этому поводу человек избалованный: без нормальной подсветки не пишу. Соответственно — изучение любого нового языка обычно именно с этого и начинается. Очень помогает, кстати). А для подсветки в этом редакторе используется такая вещь, как . Библиотека очень мощная, позволяет разобрать и обработать самые малейшие детали этого самого синтаксиса. И вот, собственно, за этими деталями я сюда и пишу. Итак.
1. BAF
1.0. Существует ли в природе точное описание языка? То, что лежит на , таковым, увы, не является. То что мне там удалось найти — это только список функций и констант + некоторые примеры их использование...
1.1. Допустим ли пробел между именем тригера/акции и открывающей скобкой?
1.2. Допустимы ли комментарии повсюду в тексте? (Например: «Action(FOO /*какая-то константа*/)» )
1.3. Точный смысл выражений вида « [ FOO . BAR . BAZ ] » ?
2.Диалоги
2.1 Каков формат меток? (допустимые символы, длина, etc)
2.2. Как правильно — «+~Trigger()~+» или «+Trigger()+»? (Если второе — то как сам WeiDU его отличает от «+метка»?..)
2.3. После IF и DO идут строки, внутри которых находятся куски BAF-скрипта. Допустимы ли комментарии внутри этих кусков?
2.4. В какой части допустимы внутри CHAIN? В про них не слова, а в откуда-то вылезает DO...
2.5. Вот скрипт валиден? Там используется синтаксис CHAIN, но само слово CHAIN отсутствует, вместо этого — обычный BEGIN с последующим IF...
2.6. В каких ситуациях необходим THEN после IF? Если верить описанию — при использовании CHAIN (включая ) необходим, а в обычных / блоках — нет. Это правильно или тоже опечатка, как в 2.4?
Пока на этом все. Продолжение следует... Неизбежно будет следовать по мере процесса превращения не вполне однозначного текста в последовательность регэкспов и правил синтаксического разбора...
|