sublanguage description = set of statements;
set of statements = statement | set of statements, statement;
statement = command definition | phrase definition | escape expression | library reference;
command definition = command heading, set of rules;
phrase definition = phrase heading, set of rules;
command heading = ‘#com’,[space],command id,[‘/’,object list],new line;
object list = object reference|object list,’ ,’, object reference;
object reference = name;
command id = name;
phrase heading = ‘#def”, [space], phrase id, new line;
phrase id = name;
set of rules = rule | set of rules, rule;
rule = phrase sequence, [semantic data] , new line;
semantic data = ‘:’, set of expressions;
set of expressions = expression | set of expressions, delimiter, expression;
delimiter = ‘;’ | new line, ’;’ | ’;’ ,new line;
expression = ? arithmetic expression representing constant value ? | ? arithmetic expression containing variables p1,p2,p3… representing parameters returned by phrases 1,2,3… ?
phrase sequence = phrase | phrase sequence, space, phrase;
phrase = word sequence | phrase reference | optional phrase reference | wildcard sequence;
word sequence = word | word sequence, space, word;
word = obligatory word | optional word;
obligatory word = alphabetic string;
optional word = ‘?’, alphabetic string;
phrase reference = ‘*’, phrase id, [ ‘(‘ , library name, ‘)’];
optional phrase reference = ‘?’, phrase reference;
escape expression =’#esc’, [space], word sequence;
library reference = ‘#use’, [space], library file;
name = letter | name, letter | name, digit | name, ‘_’;
alphabetic string = letter | alphabetic string, letter;
library file = ? filename ?;
space = ? space character ?;
new line = ? new line character ?;
wildcard sequence = ‘…’;
digit = ‘0′ | ‘1′ | ‘2′ | ‘3′ | ‘4′ | ‘5′ | ‘6′ | ‘7′ | ‘8′ | ‘9′;
letter = ? alphabetic character ?;