The non-attributed grammar for ALPACA, v0.90 BETA. -------------------------------------------------- IGNORE CHR(9)..CHR(13), COMMENTS FROM "/*" TO "*/" TOKENS character = quote printable-non-quote quote . identifier = alpha {alpha | digit} . PRODUCTIONS AlpacaProgram = Entries "." . Entries = Entry {";" Entry} . Entry = Class | State . Class = "class" ClassID {ClassDesignator} [Rules] . State = "state" StateID [Appearance] {ClassDesignator} [Rules] . ClassID = identifier . StateID = identifier . Appearance = character . ClassDesignator = "is" ClassID . Rules = Rule {"," Rule} . Rule = "to" StateDesignator "when" Expression . Expression = Term {("and" | "or" | "xor") Term} . Term = AdjacentcyFunc | "(" Expression ")" | "not" Term | BoolPrimitive | RelationalFunc . RelationalFunc = StateDesignator (StateDesignator | ClassDesignator) . StateDesignator = "n" | "^" | "nw" | "^<" | "s" | "v" | "ne" | "^>" | "w" | "<" | "sw" | "v<" | "e" | ">" | "se" | "v>" | "me" | StateID . AdjacentcyFunc = ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8") (StateDesignator | ClassDesignator). BoolPrimitive = "true" | "false" | "guess".