contractioncategories MainPart Attributes Imperatives --- beta : aGrammar : metagrammar --- Grammar beta :
version = 9 comBegin = '(*' comEnd = '*)' stringChar = '\'' splitString = true suffix = '.bet'
  <BetaForm>  ::| <DescriptorForm> 
                | <AttributesForm>
                ;
  <DescriptorForm> ::= <ObjectDescriptor>
                    ;
  <AttributesForm> ::= <Attributes>
                    ;
  <ObjectDescriptor> ::= <PrefixOpt> <MainPart> 
                      ;
  <MainPart> ::= '(#' <Attributes> <ActionPart> '#)'
              ;
  <Attributes> ::+ <AttributeDeclOpt> ';';
  <PrefixOpt> ::? <Prefix>;
  <Prefix> ::= <AttributeDenotation>;
  <AttributeDeclOpt>    ::? <AttributeDecl>;
  <AttributeDecl> ::| <PatternDecl> 
                    | <SimpleDecl>
                    | <RepetitionDecl> 
                    | <VirtualDecl>
                    | <BindingDecl>
                    | <FinalDecl>
                    | <ErrorDecl>
                    ;
  <PatternDecl> ::= <Names> ':' <ObjectDescriptor>;
  <SimpleDecl>  ::= <Names> ':' <referenceSpecification>;
  <RepetitionDecl>::= <Names> ':' '[' <index> ']' <referenceSpecification>;
  <VirtualDecl> ::= <Names> ':' '<' <ObjectSpecification>;
  <BindingDecl> ::= <Names> ':' ':' '<' <ObjectSpecification>;
  <FinalDecl> ::= <Names> ':' ':' <ObjectSpecification>;
  <VariablePattern> ::=  '##' <AttributeDenotation>;
  <referenceSpecification> ::| <StaticItem>
                             | <DynamicItem>
                             | <StaticComponent>
                             | <DynamicComponent>
                             | <VariablePattern>
                             ;
  <StaticItem> ::= '@' <ObjectSpecification>;
  <DynamicItem> ::= '^' <AttributeDenotation>;
  
  <StaticComponent> ::= '@' '|' <ObjectSpecification>;
  <DynamicComponent> ::= '^' '|' <AttributeDenotation>;
  <ObjectSpecification> ::| <ObjectDescriptor>
                          | <AttributeDenotation>
                          ;
  <Index> ::| <SimpleIndex>
            | <NamedIndex>
            ;
  <NamedIndex>  ::= <NameDcl> ':' <Evaluation>;
  <ActionPart>  ::= <EnterPartOpt> <DoPartOpt> <ExitPartOpt>;
  <EnterPartOpt> ::? <EnterPart>;
  <DoPartOpt> ::? <DoPart>;
  <ExitPartOpt> ::? <ExitPart>;
  <EnterPart>   ::= 'enter' <Evaluation>;
  <DoPart>      ::= 'do' <Imperatives>;
  <ExitPart>    ::= 'exit' <Evaluation>;
  <Imperatives> ::+ <ImpOpt> ';' ;
  <ImpOpt>      ::? <Imp>;
  <Imp> ::| <LabelledImp>
          | <ForImp>
          | <SimpleIfImp> 
          | <GeneralIfImp> 
          | <LeaveImp>
          | <RestartImp>
          | <InnerImp>
          | <SuspendImp>
          | <Evaluation>
          | <CodeImp>
          | <errorImp>;
  <LabelledImp> ::= <NameDcl> ':' <Imp>;
  <ForImp> ::= '(' 'for' <Index> 'repeat' <Imperatives> 'for' ')';
  <GeneralIfImp> ::= '(' 'if' <Evaluation> <Alternatives> <ElsePartOpt> 'if' ')';
  <SimpleIfImp> ::= '(' 'if' <Evaluation> 'then' <Imperatives> <ElsePartOpt> 'if' ')';
  <LeaveImp> ::= 'leave' <NameApl>;
  <RestartImp>  ::= 'restart' <NameApl>;
  <InnerImp>    ::= 'inner' <NameAplOpt>;
  <NameAplOpt> ::? <NameApl> ;
  <SuspendImp>  ::= 'suspend' ;
  <CodeImp>     ::= '(' 'code' <CodeItems> 'code' ')';
  <Alternatives> ::+ <Alternative> ;
  <Alternative> ::= <Selections> 'then' <Imperatives>;
  <Selections>::+ <Selection> ;
  <Selection> ::| <CaseSelection> ;
  <CaseSelection> ::= '//' <evaluation>;
  <ElsePartOpt>  ::? <ElsePart>;
  <ElsePart>    ::= 'else' <Imperatives>;
 
  <Evaluations> ::+ <Evaluation> ',';
  <Evaluation>  ::| <Expression> 
                  | <AssignmentEvaluation>;
  <AssignmentEvaluation> ::= <Evaluation> '->' <Transaction>;
  <Transaction> ::| <ObjectEvaluation>
                  | <ComputedObjectEvaluation>
                  | <ObjectReference> 
                  | <EvalList> 
                  | <StructureReference>
                  | <Primitive>
                  | <Address>
                  ;
  <ObjectEvaluation> ::| <InsertedItem>
                       | <reference>
                       ;        
  <Reference> ::| <ObjectDenotation>
                | <DynamicObjectGeneration>
                ;
  <DynamicObjectGeneration> ::| <DynamicItemGeneration> 
                              | <DynamicComponentGeneration>
                              ;
  <InsertedItem> ::= <ObjectDescriptor> ;
  <ObjectDenotation> ::= <AttributeDenotation> ;
  <ComputedObjectEvaluation> ::= <ObjectEvaluation> '!' ;
  <ObjectReference> ::= <Reference> '[]'; 
  <StructureReference> ::= <AttributeDenotation> '##' ;
  <EvalList>    ::= '(' <Evaluations> ')';
  <DynamicItemGeneration> ::= '&' <ObjectSpecification>;
  <DynamicComponentGeneration> ::= '&' '|' <ObjectSpecification>;
  <Primitive>   ::= 'tos' <SimpleEntry>;
  <Address>     ::= '@@'  <AttributeDenotation>;
  <AttributeDenotation>::| <NameApl>
                         | <Remote>
                         | <ComputedRemote>
                         | <Indexed> 
                         | <ThisObject>
                         | <RemotePrimitive>
                         ; 
  <Remote> ::= <AttributeDenotation> '.' <NameApl>;
  <ComputedRemote> ::= '(' <Evaluations> ')' '.' <NameApl> ;
  <Indexed> ::= <AttributeDenotation> '[' <Evaluation> ']';
  <ThisObject> ::= 'this' '(' <NameApl> ')' ;
  <RemotePrimitive> ::= <AttributeDenotation> '.%' <NameApl>;
  <Expression>  ::| <RelationalExp> | <SimpleExp> ;
  <RelationalExp>::| <EqExp> | <LtExp> | <LeExp> 
                   | <GtExp> | <GeExp> | <NeExp>
                   ;
  <SimpleExp>   ::| <AddExp> | <SignedTerm> | <Term> ; 
  <AddExp>      ::| <PlusExp> | <MinusExp> | <OrExp> | <XorExp>;
  <SignedTerm> ::| <unaryPlusExp> | <unaryMinusexp>;
  <Term>        ::| <MulExp> | <Factor> ; 
  <MulExp>      ::| <TimesExp> | <RealDivExp> | <IntDivExp> 
                  | <ModExp> | <AndExp> | <PrimitiveExp> ;
 
  <EqExp> ::= <Operand1:SimpleExp> '=' <Operand2:SimpleExp>;
  <LtExp> ::= <Operand1:SimpleExp> '<' <Operand2:SimpleExp>;
  <LeExp> ::= <Operand1:SimpleExp> '<=' <Operand2:SimpleExp>;
  <GtExp> ::= <Operand1:SimpleExp> '>' <Operand2:SimpleExp>;
  <GeExp> ::= <Operand1:SimpleExp> '>=' <Operand2:SimpleExp>;
  <NeExp> ::= <Operand1:SimpleExp> '<>' <Operand2:SimpleExp>;
  <PlusExp>     ::= <SimpleExp> '+' <Term>;
  <MinusExp>    ::= <SimpleExp> '-' <Term>;
  <OrExp>       ::= <SimpleExp> 'or' <Term>;
  <XorExp>       ::= <SimpleExp> 'xor' <Term>;
  <unaryPlusExp> ::= '+' <Term>;
  <unaryMinusExp> ::= '-' <Term>;
  <TimesExp>    ::= <Term> '*' <Factor>;
  <RealDivExp>  ::= <Term> '/' <Factor>;
  <IntDivExp>   ::= <Term> 'div' <Factor>;      
  <ModExp>      ::= <Term> 'mod' <Factor>;
  <AndExp>      ::= <Term> 'and' <Factor>;
  <PrimitiveExp> ::= <Term> '%' <NameApl> <Factor> ;
  <Factor>      ::| <TextConst>
                  | <IntegerConst>
                  | <NotExp>
                  | <NoneExp>
                  | <RepetitionSlice>
                  | <Transaction>
                  | <UnaryPrimitiveExp>
                  ;
  <RepetitionSlice> ::= <AttributeDenotation> 
                        '[' <Low:Evaluation> ':' <High:Evaluation> ']' ;
  <notExp>      ::= 'not' <factor>;
  <noneExp>     ::= 'none';
  <UnaryPrimitiveExp> ::= '%' <NameApl> <factor>; 
  <Names> ::+ <NameDcl> ',';
  <NameDcl> ::= <NameDecl>;
  <NameApl> ::= <NameAppl>;
                   
  <SimpleEntry> ::? <TextConst>;
  <TextConst>   ::= <String>;
  <IntegerConst> ::= <Const>;
  <SimpleIndex> ::= <Evaluation>;
  <CodeItems> ::+ <CodeItem> ',';
  <CodeItem>    ::| <CodeString> | <CodeConst>;
  <CodeString>  ::= <String>;
  <CodeConst>   ::= <Const>;
(* now for the errorproductions *)
  <ErrorDecl>   ::= Error; 
  <ErrorImp>    ::= Error
<ObjectSpecification> : 0 <Attributes> : 0 <DescriptorForm> : 18 <AttributesForm> : 18 <ObjectDescriptor> : 8 <MainPart> : 2 <DoPart> : 2 <ForImp> : 2 <repetitionDecl> : 2 <LabelledImp> : 2 <nameDcl> : 2 <nameApl> : 4 <bindingDecl> : 2 <FinalDecl> : 2 <InsertedItem> : 2 <ObjectDenotation> : 2 <ComputedObjectEvaluation> : 2 <RepetitionSlice>:2 <ObjectReference> : 2 <EvalList> : 2 <Address> : 2 <Primitive> : 2 <DynamicItemGeneration> : 2 <DynamicComponentGeneration> : 2 <EqExp> : 2 <LtExp> : 2 <LeExp> : 2 <GtExp> : 2 <GeExp> : 2 <NeExp> : 2 <PlusExp> : 2 <MinusExp> : 2 <OrExp> : 2 <XorExp> : 2 <MulExp> : 2 <TimesExp> : 2 <RealDivExp> : 2 <IntDivExp> : 2 <ModExp> : 2 <AndExp> : 2 <EnterPart> : 2 <ExitPart> : 2 <DescriptorForm>: (# descNo: integer; Xorigin: AST; sysAtt: integer #) <AttributesForm>: (# Xorigin: AST; descNo: integer; dclRoot: NameDcl; lib: AST; kind: integer #) <ObjectDescriptor>: (# descNo: integer; origin: AST; size: integer; attSize: integer; mark: int16u; kind: int8u; type: int8u; dclRoot: NameDcl; lib: AST; returnOff: integer; originOff: integer #) <MainPart>: (# descNo: integer; xorigin: AST #) <RepetitionDecl>: (# origin: AST #) <EnterPart>: (# NXOff: integer; NXSize: integer #) <DoPart>: (# xorigin: AST; descNo: integer #) <ExitPart>: (# NXOff: integer; NXSize: integer #) <LabelledImp>: (# origin: AST #) <ForImp>: (# off: integer; origin: AST #) <InsertedItem>: (# insOff: integer #) <ObjectDenotation>: (# evalkind: integer #) <Expression>: (# eval1: integer; eval2: integer #) <RepetitionSlice>: (# evalKind: integer #) <nameDcl>: (# left: NameDcl; right: NameDcl; access: integer; off: integer; virtDcl: AST; restartAdr: integer; leaveAdr: integer #) <nameApl>: (# on: integer; pn: integer; dclRef: NameDcl; onForThis: integer; descRef: AST; origin: AST #)
| Beta Grammar | © 1990-2004 Mjølner Informatics | [Modified: Monday April 5th 2004 at 3:12]
 |