Описание формата файла формальной грамматики.
Формальная грамматика- это четверка объектов: <Vt,Vn,R,S>, где
Vt - множество терминальных символов
Vn - множество нетерминальных символов
R - множество правил вывода
S - начальный символ грамматики
Таким образом, имеем следующий формат файла формальной грамматики.
<FormalGrammar>
<terms>
<term name="S" type="notterminal" id="1"/>
<term name="A" type="notterminal" id="1"/>
<term name="+" type="terminal" id="1"/>
<term name="i" type="terminal" id="1"/>
</terms>
<rules>
<rule s="S::=A + A" id="1" />
<rule s="A::=i" id="2" />
</rules>
</StartSymbol name="S">
</FormalGrammar>
Как видите множества Vt и Vn объединены в одном контейнере,
тэга terms . Внутри этого контейнера находятся тэги
term описыающие
терминалы и нетерминалы.
Чтобы отличать терминал, от нетерминала используется
свойство type тэга term . Присутствует также
необязательное свойство id .
Правила грамматики находятся в секции rules . Каждое правило
определяется тэгом rule с параметрами s- текст правила и id- уникальный
идентификатор правила. Текст правила задается в формате:
A::=T1 T2 t1 t2
где:
A- определяемый нетерминал,
::=- разделитель левой и правой части
Ti, ti- терминалы и нетерминалы разделенные пробелами.
Тэг StartSymbol определяет начальный символ грамматики.
|