{ This grammar defines the language S of Thot The notation used here is defined in file META.LAN ' ' : keyword [ ] : optional part < > : optional and repeatable part / : choice V. Quint March 1985 } StructModel = 'STRUCTURE' [ 'EXTENSION' ] ElemName ';' 'DEFPRES' PresentName ';' [ 'ATTR' AttrList ] [ 'CONST' ConstList ] [ 'PARAM' RuleList ] [ 'STRUCT' RuleList ] { section STRUCT is optional only for extensions } [ 'EXTENS' ExtensList ] [ 'ASSOC' RuleList ] [ 'UNITS' RuleList ] [ 'EXPORT' ExpList ] [ 'EXCEPT' ExceptList ] 'END' . PresentName = NAME . AttrList = Attribute < Attribute > . Attribute = AttrName '=' AttrType ';' . AttrType = 'INTEGER' / 'TEXT' / 'REFERENCE' '(' TypeRef ')' / ValueList . TypeRef = 'ANY' / [ FirstSec ] ElemName [ ExtStruct ] . FirstSec = 'First' / 'Second' . ValueList = AttrValue < ',' AttrValue > . ConstList = Const < Const > . Const = ConstName '=' ConstValue ';' . ConstName = NAME . ConstValue = STRING . BasicType = 'TEXT' / 'GRAPHICS' / 'SYMBOL' / 'PICTURE' / 'UNIT' / 'NATURE' . RuleList = Rule ';' < Rule ';' > . Rule = ElemName [ LocAttrList ] '=' DefWith . ElemName = NAME . LocAttrList = '(' 'ATTR' LocalAttr < ';' LocalAttr > ')' . LocalAttr = [ '!' ] AttrName [ '=' AttrType ] . DefWith = Definition [ '+' '(' InclList ')' ] [ '-' '(' ExclList ')' ] [ 'WITH' FixedAttrList ] . InclList = InclElem < ',' InclElem > . InclElem = ElemName / BasicType . ExclList = ExclElem < ',' ExclElem > . ExclElem = ElemName / BasicType . Definition = BasicType [ LocAttrList ] / Constr / Element . Element = ElemName [ ExtOrDef ] . ExtOrDef = 'EXTERN' / 'INCLUDED' / [ LocAttrList ] '=' Definition . Constr = 'LIST' [ '[' min '.' '.' max ']' ] 'OF' '(' DefWith ')' / 'BEGIN' OptDefList 'END' / 'AGGREGATE' OptDefList 'END' / 'CASE' 'OF' DefList 'END' / 'REFERENCE' '(' TypeRef ')' / 'CONSTANT' ConstName / 'PAIR' . OptDefList = OptDefWith ';' < OptDefWith ';' > . OptDefWith = [ '?' ] DefWith . DefList = DefWith ';' < DefWith ';' > . min = Integer / '*' . max = Integer / '*' . Integer = NUMBER . FixedAttrList = FixedAttr < ',' FixedAttr > . FixedAttr = AttrName [ FixModValue ] . FixModValue = ['?'] '=' FixedValue . FixedValue = [ '-' ] NumValue / StrValue / AttrValue . AttrName = NAME . AttrValue = NAME . NumValue = NUMBER . StrValue = STRING . ExtStruct = '(' ElemName ')' . ExpList = Export < ',' Export > ';' . Export = ElemName [ 'WITH' Content ] . Content = 'Nothing' / ElemName [ ExtStruct ] . ExceptList = Except ';' < Except ';' > . Except = ExceptType ':' ExValList . ExceptType = BasicType / [ 'EXTERN' ] [ FirstSec ] ElemName / AttrName / ConstName . ExValList = ExceptVal < ',' ExceptVal > . ExceptVal = 'NoCut' / 'NoCreate' / 'NoHMove' / 'NoVMove' / 'NoHResize' / 'NoVResize' / 'NewWidth' / 'NewHeight' / 'NewHPos' / 'NewVPos' / 'Invisible' / 'GraphCreation' / 'Hidden' / 'IsDraw' / 'NoMove' / 'NoResize' / 'MoveResize' / 'NoSelect' / 'NoSpellCheck' / 'PageBreak' / 'PageBreakAllowed' / 'PageBreakPlace' / 'PageBreakRepetition' / 'PageBreakRepBefore' / 'ActiveRef' / 'NoPaginate' / 'ImportLine' / 'ImportParagraph' / 'ParagraphBreak' / 'HighlightChildren' / 'ExtendedSelection' / 'ReturnCreateNL' / ExceptNum . ExceptNum = NUMBER . ExtensList = Extens ';' < Extens ';' > . Extens = RootOrElem [ LocAttrList ] [ '+' '(' InclList ')' ] [ '-' '(' ExclList ')' ] [ 'WITH' FixedAttrList ] . RootOrElem = 'Root' / ElemName . END