ClassSpecifier.name('specification'))) Package.ebnf(syntax=(Optional(hasLiteral('encapsulated')) + Optional(hasLiteral('partial')) + Suppress('package') + ClassSpecifier.name('specification'))) Function.ebnf(syntax=(Optional(hasLiteral('encapsulated')) + Optional(hasLiteral('partial')) + Suppress('function') + ClassSpecifier.name('specification'))) Operator.ebnf(syntax=(Optional(hasLiteral('encapsulated')) + Optional(hasLiteral('partial')) + Suppress('operator') + Optional(hasLiteral('function') ^ hasLiteral('record')) + ClassSpecifier.name('specification'))) class_name = IDENT.name('class_name') ClassSpecifier.ebnf(syntax=Or( (class_name + StringComment.name('comment') + Composition.name('composition') + Suppress('end') + matchPreviousExpr(class_name)), (IDENT.name('class_name') + Suppress('=') + BasePrefix.name('base_prefix') + Name.name('base_name') + Optional(ArraySubscripts.name('base_subscripts')) + Optional(ClassModification.name('base_modification')) + Comment.name('comment')), )) ### B.2.3 Extends ### B.2.4 Component Clause
Optional(hasLiteral('partial')) + Suppress('function') + ClassSpecifier.name('specification') ) ) Operator.ebnf( syntax = ( Optional(hasLiteral('encapsulated')) + Optional(hasLiteral('partial')) + Suppress('operator') + Optional( hasLiteral('function') ^ hasLiteral('record') ) + ClassSpecifier.name('specification') ) ) class_name = IDENT.name('class_name') ClassSpecifier.ebnf( syntax = Or( ( class_name + StringComment.name('comment') + Composition.name('composition') + Suppress('end') + matchPreviousExpr(class_name) ), ( IDENT.name('class_name') + Suppress('=') + BasePrefix.name('base_prefix') + Name.name('base_name') + Optional(ArraySubscripts.name('base_subscripts')) + Optional(ClassModification.name('base_modification')) + Comment.name('comment') ),
syntax = ( Suppress("for") + ForIndices.name("indices") + Suppress("loop") + ZeroOrMore( Statement.names('statements') + Suppress(";")) + Suppress('end') + Suppress("for") ), action = lambda s, l, t: ForStatement(**dict(t)) ) ForIndices.ebnf( syntax = delimitedList(ForIndex.names('indices'), delim=','), action = lambda s,l,t: ForIndices(**dict(t)) ) ForIndex.ebnf( syntax = IDENT.name("identifier") + Optional(Suppress('in') + Expression.name('expression')), action = lambda s, l, t: ForIndex(**dict(t)) ) WhileStatement.ebnf( syntax = ( Suppress("while") + Expression.name("expression") + Suppress('loop') + StatementArray.name('statements') + Suppress('end') + Suppress("while") ), action = lambda s,l,t: WhileStatement(**dict(t)) ) WhenEquation.ebnf( syntax = ( Suppress('when') + Expression.names('expressions') + Suppress('then') +