Grammar Rules
Pattern Structure
Pattern := "pattern" String "{" PatternBody "}"
PatternBody := Import* Metadata* Element*
Import := "import" String "as" Identifier
Metadata := ThreadSpec | ShuttleSpec | DifficultySpec
Element := Assignment | Control | Block | PatternUse
Element Definitions
Assignment := Identifier ":" ElementType
ElementType := Ring | Chain | SplitRing | PatternReference
Ring := "R(" StitchSequence ")"
Chain := "C(" StitchSequence ")"
SplitRing := "SR(" ShuttleStitches ";" ShuttleStitches ")"
PatternReference := "use" Identifier ("with" JoinSpec)?
Pattern References
JoinSpec := "{" JoinMapping ("," JoinMapping)* "}"
JoinMapping := "connect" Reference "to" Reference
Reference := Identifier "." PicotRef
PicotRef := "picot" Number | Identifier