A szintaxis leírására a következő szabályokat használjuk:
<A> ::| <A1> | ... | <An><A>, <Ai>-k nemterminálisok, és <A> valamelyik <Ai> értéket veszi fel.
<A> ::= w0 <t1:A1> w1 ... <tn:An> wn<A>, <ti:Ai> nemterminálisok, wi-k terminális sorozatok (üres is lehet), és <A> a w0 <A1> w1 ... <An> wn értéket veszi fel. A jobboldalon álló <t:A> nemterminálisokban a t a tagnév, A pedig a szintaktikai kategória. A tagneveket az azonos szintaktikai kategóriába tartozó nemterminálisok megkülönböztetésére használjuk. Egy szabályon belül minden tagnévnek különbözőnek kell lennie. Ha nincs tagnév megadva, akkor a szintatktikai kategóriát használjuk tagnévnek.
<A> ::+ <B> w<A>, <B> nemterminálisok, w terminális sorozat (üres is lehet), és <A> a <B> w <B> w ... <B> értéket veszi fel.
<A> ::* <B> w<A>, <B> nemterminálisok, w terminális sorozat (üres is lehet), és <A> a <B> w <B> w ... <B> értéket veszi fel (a sorozat 0 elemből is állhat).
<A> ::? <B><A>, és <B> nemterminálisok és <A> a <B> vagy az üres értéket veheti fel.
Négy előredefiniált nemterminális van: <NameDecl>, <NameAppl>, <String>, <Const>. A kezdőszimbólum a <BetaForm>.
<BetaForm> ::| <DescriptorForm>
| <AttributesForm>
<DescriptorForm> ::= <ObjectDescriptor>
<AttributesForm> ::= <Attributes>
<ObjectDescriptor> ::= <SuperPattenrOpt> <MainPart>
<MainPart> ::= (# <Attributes> <ActionPart> #)
<Attributes> ::+ <AttributeDeclOpt> ;
<SuperPattern> ::? <SuperPattern>
<SuperPattern> ::= <AttributeDenotation>
<AttributeDeclOpt> ::? <AttributeDecl>
<AttributeDecl> ::| <PatternDecl>
| <SimpleDecl>
| <RepetitionDecl>
| <VirtualDecl>
| <BindingDecl>
| <FinalBindingDecl>
| <VariablePatternDecl>
<PatternDecl> ::= <Names> : <ObjectDescriptor>
<SimpleDecl> ::= <Names> : <referenceSpecification>
<RepetitionDecl>::= <Names> : [ <index> ] <referenceSpecification>
<VirtualDecl> ::= <Names> :< <ObjectSpecification>
<BindingDecl> ::= <Names> :: < <ObjectSpecification>
<FinalBindingDecl> ::= <Names> :: <ObjectSpecification>
<VariablePatternDecl> ::= <Names> : ## <AttributeDenotation>
<referenceSpecification> ::| <StaticItem>
| <DynamicItem>
| <StaticComponent>
| <DynamicComponent>
<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>
| <LabelledCompoundImp>
| <ForImp>
| <IfImp>
| <LeaveImp>
| <RestartImp>
| <InnerImp>
| <SuspendImp>
| <Evaluation>
<LabelledImp> ::= <NameDcl> : <Imp>
<LabelledCompoundImp> ::= ( <NameDcl> <Imperatives> <NameDcl> )
<ForImp> ::= (for <Index> repeat <Imperatives> for)
<IfImp> ::= (if <Evaluation> <Alternatives> <ElsePartOpt> if)
<Alternatives> ::+ <Alternative>
<Alternative> ::= <Selections> then <Imperatives>
<Selections>::+ <Selection>
<Selection> ::| <CaseSelection>
<CaseSelection> ::= // <evaluation>
<ElsePartOpt> ::? <ElsePart>
<ElsePart> ::= else <Imperatives>
<LeaveImp> ::= leave <NameApl>
<RestartImp> ::= restart <NameApl>
<InnerImp> ::= inner <NameAplOpt>
<NameAplOpt> ::? <NameApl>
<SuspendImp> ::= suspend
<Evaluations> ::+ <Evaluation> ,
<Evaluation> ::| <Expression>
| <AssignmentEvaluation>
<AssignmentEvaluation> ::= <Evaluation> -> <Transaction>
<Transaction> ::| <ObjectEvaluation>
| <ComputedObjectEvaluation>
| <ObjectReference>
| <EvalList>
| <StructureReference>
<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>
<AttributeDenotation>::| <NameApl>
| <Remote>
| <ComputedRemote>
| <Indexed>
| <ThisObject>
<Remote> ::= <AttributeDenotation> . <NameApl>
<ComputedRemote> ::= ( <Evaluations> ) . <NameApl>
<Indexed> ::= <AttributeDenotation> [ <Evaluation> ]
<ThisObject> ::= this ( <NameApl> )
<Expression> ::| <RelationalExp> | <SimpleExp>
<RelationalExp>::| <EqExp> | <LtExp> | <LeExp>
| <GtExp> | <GeExp> | <NeExp>
<SimpleExp> ::| <AddExp> | <SignedTerm> | <Term>
<AddExp> ::| <PlusExp> | <MinusExp> | <OrExp>
<SignedTerm> ::| <unaryPlusExp> | <unaryMinusexp>
<Term> ::| <MulExp> | <Factor>
<MulExp> ::| <TimesExp> | <DivExp> | <ModExp> | <AndExp>
<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>
<unaryPlusExp> ::= + <Term>
<unaryMinusExp> ::= - <Term>
<TimesExp> ::= <Term> * <Factor>
<DivExp> ::= <Term> div <Factor>
<ModExp> ::= <Term> mod <Factor>
<AndExp> ::= <Term> and <Factor>
<Factor> ::| <TextConst>
| <IntegerConst>
| <NotExp>
| <NoneExp>
| <RepetitionSlice>
| <Transaction>
<RepetitionSlice> ::= <AttributeDenotation>
[ <Evaluation> : <Evaluation> ]
<notExp> ::= not <factor>
<noneExp> ::= none
<Names> ::+ <NameDcl> ,
<NameDcl> ::= <NameDecl>
<NameApl> ::= <NameAppl>
<SimpleEntry> ::? <TextConst>
<TextConst> ::= <String>
<IntegerConst> ::= <Const>
<SimpleIndex> ::= <Evaluation>