{"name":"Futhark","scopeName":"source.futhark","patterns":[{"include":"#main"}],"repository":{"attribute":{"name":"meta.attribute.futhark","match":"(#\\[)([^\\]]*)(\\])","captures":{"1":{"name":"punctuation.definition.attribute.begin.futhark"},"2":{"name":"storage.modifier.attribute.futhark"},"3":{"name":"punctuation.definition.attribute.end.futhark"}}},"booleans":{"name":"constant.language.boolean.$1.futhark","match":"(?\u003c![#'])(true|false)\\b(?![#'])"},"builtInTypes":{"patterns":[{"name":"support.type.builtin.futhark","match":"(?\u003c![#'])(bool)\\b(?![#'])"},{"include":"#numericTypes"}]},"character":{"name":"string.quoted.single.character.futhark","match":"(')[^']?(')","captures":{"1":{"name":"punctuation.definition.string.begin.futhark"},"2":{"name":"punctuation.definition.string.end.futhark"}}},"comment":{"name":"comment.line.double-dash.futhark","begin":"--","end":"$"},"constructor":{"name":"entity.name.function.constructor.futhark","match":"(#)['\\w]+","captures":{"1":{"name":"punctuation.definition.constructor.number-sign.futhark"}}},"functionDefinition":{"match":"(?\u003c![#'])\\b(def|let|entry)(?:\\s+([_A-Za-z]['\\w]*))?(?:\\b(?![#'])|(?\u003c=')\\B(?!#))","captures":{"1":{"name":"storage.type.var.$1.futhark"},"2":{"name":"entity.name.function.futhark"}}},"keywords":{"name":"keyword.control.$1.futhark","match":"(?\u003c![#'])\\b(assert|case|do|else|def|entry|for|if|import|include|in|let|local|loop|match|module|open|then|unsafe|val|while|with)\\b(?![#'])"},"main":{"patterns":[{"include":"#typeBinding"},{"include":"#typeParameter"},{"include":"#functionDefinition"},{"include":"#comment"},{"include":"#keywords"},{"include":"#attribute"},{"include":"#numericTypes"},{"include":"#builtInTypes"},{"include":"#booleans"},{"include":"#number"},{"include":"#character"},{"include":"#var"},{"include":"#constructor"},{"include":"#operator"},{"match":"#"},{"match":"'"},{"include":"etc#bracket"},{"include":"etc"}]},"number":{"name":"constant.numeric.futhark","match":"(?x) -?\n(?:\n\t(?:0[xX])\n\t[0-9a-fA-F]+\n\t(?: \\.[0-9a-fA-F]+)?\n\t(?: [Pp][+-]?[0-9]+)?\n\t\n\t|\n\t\n\t(?:0[bB])\n\t[0-1_]+\n\t\n\t|\n\n\t[0-9]+\n\t(?:\\.[0-9]+)?\n\t(?:[Ee][+-]?[0-9]+)?\n) (?:i8|i16|i32|i64|u8|u16|u32|u64|f32|f64)?"},"numericTypes":{"name":"support.type.numeric.futhark","match":"(?\u003c![#'])\\b(f32|f64|i16|i32|i64|i8|u16|u32|u64|u8)\\b(?![#'])"},"operator":{"patterns":[{"name":"keyword.operator.futhark","match":"[-+*/%!\u003c\u003e=\u0026|@]+"},{"name":"string.interpolated.quoted.backticks.futhark","match":"(`)[^`]*(`)","captures":{"1":{"name":"punctuation.definition.string.begin.futhark"},"2":{"name":"punctuation.definition.string.end.futhark"}}}]},"typeBinding":{"name":"meta.type.binding.futhark","begin":"(?\u003c![#'])\\b(module\\s+)?(type[~^]?)(?:\\s+([_A-Za-z]['\\w]*))?(?:\\b(?![#'])|(?\u003c=')\\B(?!#))","end":"=|(?=\\s*(?!--)[^\\s=])","patterns":[{"include":"#comment"},{"include":"#typeParameter"}],"beginCaptures":{"1":{"name":"storage.modifier.module.futhark"},"2":{"name":"storage.type.decl.futhark"},"3":{"name":"entity.name.type.futhark"}},"endCaptures":{"0":{"name":"keyword.operator.futhark"}}},"typeParameter":{"name":"entity.name.type.parameter.futhark","match":"('[~^]?)[_A-Za-z]\\w*\\b(?![#'])","captures":{"1":{"name":"punctuation.definition.type.parameter.futhark"}}},"var":{"name":"variable.other.readwrite.futhark","match":"(?\u003c![#'])\\b[_A-Za-z]['\\w]*"}}}
