{"name":"Modelica","scopeName":"source.modelica","patterns":[{"name":"comment.block","begin":"/\\*","end":"\\*/"},{"name":"comment.line","match":"(//).*$\\n?"},{"name":"constant.language","match":"\\b(true|false)\\b"},{"name":"constant.numeric","match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b"},{"name":"storage.type","match":"\\b(Real|Integer|Boolean|String)\\b"},{"name":"storage.modifier","match":"\\b(constant|final|parameter|expandable|replaceable|redeclare|constrainedby|import|flow|stream|input|output|discrete|connector)\\b"},{"name":"keyword","match":"\\b\\s*([A-Z])(?:([^ ;$]+)(;)?)([.]([A-Z])(?:([^ ;$]+)(;)?)?)++\\b"},{"name":"keyword.control","match":"\\b(for|if|when|while|then|loop|end if|end when|end for|end while|else|elsewhen|and|break|each|elseif)\\b"},{"name":"keyword.operator.logical","match":"\\b(and|or|not)\\b"},{"name":"keyword.operator.comparison","match":"\u003c|\u003c\\=|\u003e|\u003e\\=|\\=\\=|\u003c\u003e"},{"name":"keyword.operator.arithmetic","match":"\\+|\\-|\\.\\+|\\.\\-|\\*|\\.\\*|/|\\./|\\^"},{"name":"keyword.operator.assignment","match":"\\=|\\:\\="},{"name":"keyword","match":"\\b(algorithm|equation|initial equation|protected|public|register|end)\\b"},{"name":"keyword.other","match":"\\b(inner|outer)\\b"},{"name":"support.function.mathematical","match":"\\b(acos|asin|atan|atan2|cos|cosh|exp|log|log10|sin|sinh|tan|tanh|abs|sign|sqrt|max|min|product|sum)\\b"},{"name":"support.function.array","match":"\\b(scalar|vector|matrix|identity|diagonal|zeros|ones|fill|linspace|transpose|outerProduct|symmetric|cross|skew)\\b"},{"name":"support.function.event","match":"\\b(ceil|div|fill|floor|integer|max|min|mod|rem|pre|noEvent|change|edge|initial|terminal|reinit|sample|smooth|terminate)\\b"},{"name":"support.function.special","match":"\\b(connect|der|inStream|actualStream|semiLinear|spatialDistribution|getInstanceName|homotopy|delay|assert|ndims|size|cardinality|isPresent)\\b"},{"name":"support.type","match":"\\b(extends|partial|within)\\b"},{"match":"\\b((model|class|record|block|package)\\s+\\w+\\s*(\".*\")*)","captures":{"1":{"name":"entity.name.type"},"2":{"name":"keyword"},"3":{"name":"comment.line"}}},{"match":"((function)\\s+\\w+\\s*(\".*\")*)","captures":{"1":{"name":"entity.name.function"},"2":{"name":"keyword"},"3":{"name":"comment.line"}}},{"name":"comment.block","begin":"annotation","end":";\\s*\\n","patterns":[{"name":"comment.block","begin":"\"","end":"\""}]},{"match":"[\"\\w\\)](\\s+\".*\"\\s*);","captures":{"1":{"name":"constant.string"}}},{"name":"constant.string","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escaped","match":"\\\\."}]}]}
