13.5 Metagrammarcfl Interface

ORIGIN '~beta/mps/astlevel';
LIB_DEF 'mpsmetagrammarcfl' '../lib';
--astInterfaceLib: attributes--

metagrammar: TreeLevel
  (# <<SLOT metagrammarAttributes:attributes>>;
     AGrammar: cons
       (# getGrammarName: getson1(# #);
          putGrammarName: putson1(# #);
          getOptionOp: getson2(# #);
          putOptionOp: putson2(# #);
          getProductionList: getson3(# #);
          putProductionList: putson3(# #);
          getAttributeOp: getson4(# #);
          putAttributeOp: putson4(# #);
          <<SLOT AGrammarAttributes:attributes>> 
       exit 1
       #);
     GrammarName: cons
       (# getNameDecl: getson1(# #);
          putNameDecl: putson1(# #);
       exit 2
       #);
     ProductionList: list
       (# soncat::< Prod;
       exit 3
       #);
     Prod: cons
       (# <<SLOT ProdAttributes:attributes>> #);
     LeftSide: cons
       (# getSynDeclName: getson1(# #);
          putSynDeclName: putson1(# #);
          <<SLOT LeftSideAttributes:attributes>> 
       exit 5
       #);
     Alternation: Prod
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getSynCatList: getson2(# #);
          putSynCatList: putson2(# #);
       exit 6
       #);
     SynCatList: list
       (# soncat::< SynCat;
       exit 7
       #);
     Constructor: Prod
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getConsElemList: getson2(# #);
          putConsElemList: putson2(# #);
       exit 8
       #);
     ConsElemList: list
       (# soncat::< ConsElem;
       exit 9
       #);
     ConsElem: cons
       (# <<SLOT ConsElemAttributes:attributes>> #);
     TaggedSyn: ConsElem
       (# getTagName: getson1(# #);
          putTagName: putson1(# #);
          getSynName: getson2(# #);
          putSynName: putson2(# #);
          <<SLOT TaggedSynAttributes:attributes>> 
       exit 11
       #);
     SynCat: ConsElem
       (# getSynName: getson1(# #);
          putSynName: putson1(# #);
          <<SLOT SynCatAttributes:attributes>> 
       exit 12
       #);
     ErrorSpec: ConsElem
       (# exit 13 #);
     Lst: Prod
       (# #);
     ListOne: Lst
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getSynCat: getson2(# #);
          putSynCat: putson2(# #);
          getTermOp: getson3(# #);
          putTermOp: putson3(# #);
       exit 15
       #);
     ListZero: Lst
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getSynCat: getson2(# #);
          putSynCat: putson2(# #);
          getTermOp: getson3(# #);
          putTermOp: putson3(# #);
       exit 16
       #);
     Opt: Prod
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getSynCat: getson2(# #);
          putSynCat: putson2(# #);
       exit 18
       #);
     Dummy: Prod
       (# getLeftSide: getson1(# #);
          putLeftSide: putson1(# #);
          getSynCat: getson2(# #);
          putSynCat: putson2(# #);
       exit 19
       #);
     SynName: cons
       (# getNameAppl: getson1(# #);
          putNameAppl: putson1(# #);
          <<SLOT SynNameAttributes:attributes>> 
       exit 20
       #);
     TagName: cons
       (# getNameDecl: getson1(# #);
          putNameDecl: putson1(# #);
       exit 21
       #);
     SynDeclName: cons
       (# getNameDecl: getson1(# #);
          putNameDecl: putson1(# #);
       exit 22
       #);
     Term: ConsElem
       (# getString: getson1(# #);
          putString: putson1(# #);
          <<SLOT TermAttributes:attributes>> 
       exit 23
       #);
     OptionPart: cons
       (# getoptionList: getson1(# #);
          putoptionList: putson1(# #);
       exit 25
       #);
     optionList: list
       (# soncat::< optionElement;
       exit 26
       #);
     optionElement: cons
       (# getoptionName: getson1(# #);
          putoptionName: putson1(# #);
          getoptionSpecification: getson2(# #);
          putoptionSpecification: putson2(# #);
       exit 27
       #);
     optionSpecification: cons
       (# #);
     optionSpecLst: optionSpecification
       (# getoptionSpecList: getson1(# #);
          putoptionSpecList: putson1(# #);
       exit 29
       #);
     optionSpecList: list
       (# soncat::< singleOption;
       exit 30
       #);
     singleOption: optionSpecification
       (# #);
     optionName: singleOption
       (# getNameAppl: getson1(# #);
          putNameAppl: putson1(# #);
       exit 32
       #);
     optionConst: singleOption
       (# getConst: getson1(# #);
          putConst: putson1(# #);
       exit 33
       #);
     optionString: singleOption
       (# getString: getson1(# #);
          putString: putson1(# #);
       exit 34
       #);
     AttributePart: cons
       (# getattriblist: getson1(# #);
          putattriblist: putson1(# #);
       exit 36
       #);
     AttribList: list
       (# soncat::< Attrib;
       exit 37
       #);
     Attrib: cons
       (# getSynCat: getson1(# #);
          putSynCat: putson1(# #);
          getNoOfAttributes: getson2(# #);
          putNoOfAttributes: putson2(# #);
       exit 38
       #);
     NoOfAttributes: cons
       (# getconst: getson1(# #);
          putconst: putson1(# #);
       exit 39
       #);
     errorProd: Prod
       (# exit 40 #);
     optionError: singleOption
       (# exit 41 #);

     grammarIdentification::<(# do 'metagrammar' -> theGrammarName #);
     version::<
       (# do 5 -> value #);
     suffix::<
       (# do '.gram' -> theSuffix #);
     maxproductions::<
       (# do 41 -> value #);

     init::<
       (# ... #);
  #)


13.5 Metagrammarcfl Interface
© 1991-2002 Mjølner Informatics
[Modified: Monday January 10th 2000 at 13:00]