{"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(let|entry|type)\\s+([_A-Za-z]['\\w]*)","captures":{"1":{"patterns":[{"include":"#keywords"}]},"2":{"name":"entity.name.function.futhark"}}},"keywords":{"name":"keyword.control.$1.futhark","match":"(?\u003c![#'])\\b(assert|case|do|else|entry|for|if|import|include|in|let|local|loop|match|module|open|then|type|unsafe|val|while|with)\\b(?![#'])"},"main":{"patterns":[{"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":"#"},{"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"}}}]},"var":{"name":"variable.other.readwrite.futhark","match":"[_A-Za-z]['\\w]*"}}}
