import "./cljs_env.js";
goog.provide('nextjournal.clojure_mode.live_grammar');
var module$node_modules$lezer_generator$dist$index_cjs=shadow.js.require("module$node_modules$lezer_generator$dist$index_cjs", {});
nextjournal.clojure_mode.live_grammar.parser = module$node_modules$lezer_generator$dist$index_cjs.buildParser("@external prop prefixColl from \"./props\"\r\n@external prop coll from \"./props\"\r\n@external prop prefixEdge from \"./props\"\r\n@external prop sameEdge from \"./props\"\r\n@external prop prefixContainer from \"./props\"\r\n\r\n@top Program { expression* }\r\n\r\n@skip { whitespace | LineComment | Discard }\r\nexpression { Constructor | Boolean | Nil | Deref | Quote | SyntaxQuote | Unquote | UnquoteSplice | Symbol | Number | Keyword | List | Vector | Map | String | Character | Set | NamespacedMap | RegExp | Var | ReaderConditional | DataLiteral | SymbolicValue | AnonymousFunction | Meta<expression> }\r\nDiscard { \"#_\" expression }\r\n@precedence { docString @left, operator @left, meta @right, prefixLiteral @right }\r\n\r\nlistContents {\r\n   defList { defLikeWithMeta varNameWithMeta (DocString expression+ | expression+)? } |\r\n   anyList { operatorWithMeta? expression* }\r\n }\r\n\r\nDocString { !docString String }\r\nList[coll] { \"(\" listContents \")\" }\r\nVector[coll] { \"[\" expression* \"]\" }\r\nMap[coll] { \"{\" expression* \"}\" }\r\nVarName { Symbol }\r\n\r\ncoll[@isGroup=Coll] {\r\n  List | Vector | Map\r\n}\r\nprefixColl[@isGroup=PrefixColl] {\r\n  Set |\r\n  AnonymousFunction |\r\n  NamespacedMap |\r\n  Constructor |\r\n  ReaderConditional |\r\n  ReaderMetadata |\r\n  Metadata |\r\n  Deref |\r\n  Quote |\r\n  SyntaxQuote |\r\n  Unquote |\r\n  UnquoteSplice\r\n}\r\n\r\nprefixEdge[@isGroup=PrefixEdge] {\r\n KeywordPrefix |\r\n ConstructorPrefix |\r\n \"#\" |\r\n \"##\" |\r\n \"#'\" |\r\n \"#?\" |\r\n \"#^\" |\r\n \"#_\" |\r\n \"'\" |\r\n \"`\" |\r\n \"~\" |\r\n \"~@\" |\r\n \"^\" |\r\n \"@\"\r\n}\r\n\r\n@skip {} {\r\n  dataLiteral { \"#\" ident }\r\n  DataLiteral { dataLiteral }\r\n  SymbolicValue { \"##\" ident }\r\n  Set[prefixColl] { \"#\" Map }\r\n  AnonymousFunction[prefixColl] { \"#\" List }\r\n\r\n  KeywordPrefix[prefixEdge] { \"#\" keyword }\r\n  NamespacedMap[prefixColl] { KeywordPrefix Map }\r\n\r\n  ConstructorPrefix[prefixEdge] { !prefixLiteral  dataLiteral }\r\n  Constructor[prefixColl] { ConstructorPrefix (Vector | Map) }\r\n\r\n  RegExp[prefixColl] { \"#\" String }\r\n  Var[prefixColl] { \"#'\" Symbol }\r\n  ReaderConditional[prefixColl] { \"#?\" (List | Deref) }\r\n  ReaderMetadata[prefixColl] { \"#^\" expression }\r\n  Metadata[prefixColl] { \"^\" expression }\r\n  String { '\"' StringContent? '\"' }\r\n}\r\n\r\nMeta[prefixContainer]<t> { (Metadata | ReaderMetadata) !meta t }\r\n\r\nDeref[prefixColl] { \"@\" expression }\r\nQuote[prefixColl] { \"'\" expression }\r\nSyntaxQuote[prefixColl] { \"`\" expression }\r\nUnquote[prefixColl] { \"~\" expression }\r\nUnquoteSplice[prefixColl] { \"~@\" expression }\r\noperatorWithMeta { Operator | Meta<operatorWithMeta> }\r\ndefLikeWithMeta { DefLike | Meta<defLikeWithMeta> }\r\nvarNameWithMeta { VarName | Meta<varNameWithMeta> }\r\n\r\nOperator { !operator Symbol }\r\n\r\n@tokens {\r\n\r\n\r\n  \"[\"\r\n  \"{\"\r\n  \"(\"\r\n\r\n  \"#\"[prefixEdge]\r\n  \"##\"[prefixEdge]\r\n  \"#'\"[prefixEdge]\r\n  \"#?\"[prefixEdge]\r\n  \"#^\"[prefixEdge]\r\n  \"#_\"[prefixEdge]\r\n\r\n  '\"'[sameEdge, closedBy='\"', openedBy='\"']\r\n  \"'\"[prefixEdge]\r\n  \"`\"[prefixEdge]\r\n  \"~\"[prefixEdge]\r\n  \"~@\"[prefixEdge]\r\n  \"^\"[prefixEdge]\r\n  \"@\"[prefixEdge]\r\n\r\n\r\n  \"]\"\r\n  \"}\"\r\n  \")\"\r\n\r\n  whitespace { (std.whitespace | \",\")+ }\r\n\r\n  LineComment { \";\" ![\\n]* }\r\n\r\n  identStart { std.asciiLetter | $[<>&%._=?!*+\\-$\\u{a1}-\\u{10ff}/] }\r\n  identChar { identStart | std.digit | \":\" | \"'\" | \"#\" | \"/\"}\r\n  ident { identStart identChar* }\r\n  Symbol { ident }\r\n\r\n  keyword { \":\" \":\"? ident? } // the invalid token :: can also be considered as a keyword\r\n  Keyword { keyword }\r\n\r\n  Number {\r\n    (\"+\" | \"-\")? (std.digit+ (\".\" std.digit* \"M\"?)? | \".\" std.digit+) ((\"e\" | \"E\") (\"+\" | \"-\")? std.digit+ \"M\"?)? |\r\n    (\"+\" | \"-\")? std.digit+ (\"M\" | \"N\") |\r\n    (\"+\" | \"-\")? std.digit+ \"/\" std.digit+ |\r\n    (\"+\" | \"-\")? \"0x\" (std.digit | $[a-fA-F])+ |\r\n    \"0b\" $[01]+ |\r\n    \"0o\" $[0-7]+\r\n  }\r\n  @precedence { Number, Symbol }\r\n\r\n  StringContent {\r\n    (![\"] | \"\\\\\" _)+\r\n  }\r\n\r\n  Character { \"\\\\\" (std.asciiLetter | std.digit | \"@\")+ }\r\n\r\n}\r\n\r\nBoolean { @specialize<Symbol, \"true\" | \"false\"> }\r\nNil { @specialize<Symbol, \"nil\"> }\r\nDefLike[@dynamicPrecedence=1] { @extend<Symbol, \"def\" | \"defn\" | \"defn-\" | \"defmacro\" | \"definline\" | \"defonce\" | \"deftest\" | \"defcard\"> }\r\n\r\n@detectDelim\r\n",({"externalProp": nextjournal.clojure_mode.node.node_prop}));

//# sourceMappingURL=nextjournal.clojure_mode.live_grammar.js.map
