declare const grammarRules = "\n  Truth {\n    Exp\n      = BiconditionalExp\n\n    BiconditionalExp\n      = BiconditionalExp BiconditionalOp BiconditionalExp  --biconditional\n      | ConverseNimplyExp\n\n    BiconditionalOp\n      = \"<-\" \"-\"? \">\"  --double_arrow\n      | \"<=\" \"=\"? \">\"  --fat_double_arrow\n      | \"=\" \"=\"?  -- single_or_double_equals\n      | caseInsensitive<\"iff \">\n      | caseInsensitive<\"if and only if \">\n\n    ConverseNimplyExp\n      = ConverseNimplyExp ConverseNimplyOp ConverseNimplyExp  --converseNimply\n      | ConverseExp\n\n    ConverseNimplyOp\n      = \"<-/-\"  --arrow\n      | \"<=/=\"  --fat_arrow\n\n    ConverseExp\n      = ConverseExp ConverseOp ConverseExp  -- arrow\n      | NimplyExp\n\n    ConverseOp\n      = \"<-\" \"-\"? --arrow\n      | \"<=\" \"=\"? --fat_arrow\n\n    NimplyExp\n      = NimplyExp NimplyOp NimplyExp  -- nimply\n      | IfExp\n\n    NimplyOp\n      = caseInsensitive<\"nimply \">  --nimply\n      | caseInsensitive<\"nimplies \">  --nimplies\n      | \"-/->\"  --arrow\n      | \"=/=>\"  --fat_arrow\n\n    IfExp\n      = IfExp IfOp IfExp  -- arrow\n      | caseInsensitive<\"if \"> IfExp caseInsensitive<\"then \"> IfExp  -- ifThen\n      | NorExp\n\n    IfOp\n      = \"->\"  --arrow\n      | \"-->\" --long_arrow\n      | \"=>\"  --fat_arrow\n      | \"==>\" --long_fat_arrow\n      | caseInsensitive<\"implies \">  --implies\n      | caseInsensitive<\"imply \">  --imply\n\n    NorExp\n      = NorExp NorOp OrExp  --nor\n      | OrExp\n\n    NorOp\n      = caseInsensitive<\"nor \">\n      | caseInsensitive<\"not or \">\n\n    OrExp\n      = OrExp OrOp XnorExp  -- or\n      | XnorExp\n\n    OrOp\n      = caseInsensitive<\"or \">\n      | \"|\" \"|\"?  -- single_or_double_pipe\n      | \"\\\\/\"\n\n    XnorExp\n      = XnorExp XnorOp XorExp  --xnor\n      | XorExp\n\n    XnorOp\n      = caseInsensitive<\"xnor \">\n      | caseInsensitive<\"equals \">\n      | caseInsensitive<\"not xor \">\n\n    XorExp\n      = XorExp XorOp NandExp  -- xor\n      | NandExp\n\n    XorOp\n      = caseInsensitive<\"xor \">\n      | caseInsensitive<\"not equals \">\n      | \"^\"\n      | \"=/=\"\n      | \"!=\"\n      | \"~=\"\n\n    NandExp\n      = NandExp NandOp AndExp  -- nand\n      | AndExp\n\n    NandOp\n      = caseInsensitive<\"nand \">\n      | caseInsensitive<\"not and \">\n\n    AndExp\n      = AndExp AndOp PriExp  -- and\n      | PriExp\n\n    AndOp\n      = caseInsensitive<\"and \">\n      | \"&\" \"&\"?  --single_or_double_ampersand\n      | \"/\\\\\"\n\n    PriExp\n      = NotExp\n      | ParenExp\n      | True\n      | False\n      | ident\n\n    ParenExp\n      = OpenParenOp Exp CloseParenOp\n\n    OpenParenOp\n      = \"(\"\n\n    CloseParenOp\n      = \")\"\n\n    NotExp\n      = NotOp PriExp\n\n    NotOp\n      = caseInsensitive<\"not \">\n      | \"!\"\n      | \"~\"\n\n    True\n      = caseInsensitive<\"true\">\n\n    False\n      = caseInsensitive<\"false\">\n\n    ident  (an identifier)\n      = ~keyword letter alnum*\n\n    keyword\n      = (\n        caseInsensitive<\"not\">\n        | caseInsensitive<\"and\">\n        | caseInsensitive<\"or\">\n        | caseInsensitive<\"xor\">\n        | caseInsensitive<\"if\">\n        | caseInsensitive<\"then\">\n        | caseInsensitive<\"only\">\n        | caseInsensitive<\"iff\">\n        | caseInsensitive<\"true\">\n        | caseInsensitive<\"false\">\n        | caseInsensitive<\"equals\">\n        | caseInsensitive<\"imply\">\n        | caseInsensitive<\"implies\">\n        | caseInsensitive<\"nimply\">\n        | caseInsensitive<\"nimplies\">\n        | caseInsensitive<\"xnor\">\n        | caseInsensitive<\"nand\">\n        | caseInsensitive<\"nor\">\n      ) ~(alnum+)\n  }\n";
export default grammarRules;
