export declare const grammarRules = "\nTruth {\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";
