
I ::=   "title:    Object-oriented Design Patterns\n"
      ^ "author:   Princess Pi <princesspi@proton.me>\n"
      ^ "language: english\n"
      ^ "status:   refinable\n"
      ^ "topic:    misc\n"
      ^ "audience: poor OO programmers\n"
      ^ "created:  2025-12-20"
;

S ::= Adjective Noun Extra;

Adjective ::= "Business" | "Data Access" | "Fast Lane" | "Composite"
            | "Front" | "Intercepting" | "Session" | "Transfer" | "Value List"
            | "View" | "Half" | "Immutable" | "Dynamic" | "Virtual"
            | "Model" | "Layered" | "Null" | "Template";
            
Noun ::= "Delegate" | "Abstract" | "Entity" | "View" | "Object" | "Reader"
       | "Controller" | "Filter" | "Locator" | "Facade" | "Handler" | "Helper" | "Call" | "Interface" | "Proxy"
       | "Builder" | "Method" | "Prototype" | "Singleton" | "Pool" | "Marker" | "Factory"
       | "Bridge" | "Flyweight" | "Service" | "Adapter" | "Listener" | "Decorator"
       | "Cache" | "Command" | "Strategy" | "Producer" | "Consumer";

Extra ::= "added" | "removed" | "fixed" | "updated" | "tweaked" | "revised" | "corrected";
