{"name":"AMPL","scopeName":"source.ampl","patterns":[{"include":"#general"},{"include":"#argumentcurly"},{"include":"#argumentbracket"}],"repository":{"argumentbracket":{"begin":"\\[","end":"\\]","patterns":[{"include":"#general"},{"name":"meta.function-call.arguments.ampl","match":"\\w"}]},"argumentcurly":{"begin":"\\{","end":"\\}","patterns":[{"include":"#general"},{"name":"meta.function-call.arguments.ampl","match":"."}]},"blockcomment":{"name":"comment.slashstar.ampl","contentName":"comment.block.documentation.ampl","begin":"/\\*","end":"\\*/"},"doublequotestring":{"name":"string.quoted.double.ampl","begin":"\"","end":"\"","patterns":[{"name":"entity.name.class.ampl","match":"%(\\w+%|\\d+)"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ampl"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.ampl"}}},"general":{"patterns":[{"include":"#linecomment"},{"include":"#blockcomment"},{"include":"#singlequotestring"},{"include":"#doublequotestring"},{"include":"#number"},{"include":"#keyword"},{"include":"#suffix"},{"include":"#math"},{"include":"#operator"}]},"keyword":{"name":"keyword.control.ampl","match":"(?i)\\b(minimize|maximize|objective|coeff|coef|cover|obj|default|from|to|to_come|net_in|net_out|dimen|dimension|integer|binary|set|param|var|node|ordered|circular|reversed|symbolic|arc|check|close|display|drop|include|print|printf|quit|reset|restore|solve|update|write|shell|model|data|option|let|solution|fix|unfix|end|function|pipe|format|if|then|else|and|or|exists|forall|in|not|within|while|repeat|for|subject to|subj to|s\\.t\\.|card|next|nextw|prev|prevw|first|last|member|ord|ord0)\\b"},"linecomment":{"name":"comment.line.sharp.ampl","match":"(#.*)(?!\\[\\[).*$\\n?","captures":{"1":{"name":"punctuation.definition.comment.gms"}}},"math":{"name":"keyword.operator.ampl","match":"(?i)\\b(union|diff|difference|symdiff|sum|inter|intersect|intersection|cross|setof|by|less|mod|div|product|abs|acos|acosh|alias|asin|asinh|atan|atan2|atanh|ceil|cos|exp|floor|log|log10|max|min|precision|round|sin|sinh|sqrt|tan|tanh|trunc|Beta|Cauchy|Exponential|Gamma|Irand224|Normal|Poisson|Uniform|Uniform01)\\b"},"number":{"name":"constant.numeric.ampl","match":"(?\u003c![\\d.])\\b\\d+(\\.\\d+)?([eE]-?\\d+)?|\\.\\d+([eE]-?\\d+)?|(?i)([+-]?infinity)"},"operator":{"name":"keyword.operator.ampl","match":"(\\+|-|\\*|\\/|\\*\\*|=|\u003c=?|\u003e=?|==|\\||\\^|\u003c|\u003e|!|\\.\\.|:=|\u0026|!=|:|/)"},"singlequotestring":{"name":"string.quoted.single.ampl","begin":"'","end":"'","patterns":[{"name":"entity.name.class.ampl","match":"%(\\w+%|\\d+)"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ampl"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.ampl"}}},"suffix":{"name":"keyword.ampl","match":"\\b\\w*.(lb|ub|lb0|lb1|lb2|lrc|ub0|ub1|ub2|urc|val|lbs|ubs|init|body|dinit|dual|init0|ldual|slack|udual|lslack|uslack|dinit0)|(\u003c\u003c|\u003e\u003e)"}}}