Fix consists of splitting the MiniZinc grammars into separate grammar files
146 lines
4.0 KiB
Plaintext
146 lines
4.0 KiB
Plaintext
'scopeName': 'source.mzn'
|
|
'name': 'MiniZinc'
|
|
'comment': 'The MiniZinc medium level constraint modeling language'
|
|
'fileTypes': [
|
|
'mzn'
|
|
]
|
|
|
|
'patterns':[
|
|
{
|
|
'comment': 'Line comments'
|
|
'match': '\\%.*'
|
|
'name': 'comment.line.percentage.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Block comments'
|
|
'begin': '/\\*'
|
|
'end': '\\*/'
|
|
'name': 'comment.block.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\\'.*?\\\''
|
|
'name': 'string.quoted.single.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\".*?\\"'
|
|
'name': 'string.quoted.double.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(ann|annotation|any|constraint|function|in|include|list|of|op|output|minimize|maximize|par|predicate|record|satisfy|solve|test|type|var)\\b'
|
|
'name': 'keyword.control.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(array|set|bool|enum|float|int|string|tuple)\\b'
|
|
'name': 'storage.type.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(for|forall|if|then|else|endif|where)\\b'
|
|
'name': 'keyword.control.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(abort|abs|acosh|array_intersect|array_union|array1d|array2d|array3d|array4d|array5d|array6d|asin|assert|atan|bool2int|card|ceil|concat|cos|cosh|dom|dom_array|dom_size|fix|exp|floor|index_set|index_set_1of2|index_set_2of2|index_set_1of3|index_set_2of3|index_set_3of3|int2float|is_fixed|join|lb|lb_array|length|ln|log|log2|log10|min|max|pow|product|round|set2array|show|show_int|show_float|sin|sinh|sqrt|sum|tan|tanh|trace|ub|ub_array)\\b'
|
|
'name': 'entity.name.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Global constraints'
|
|
'match': '\\b(circuit|disjoint|maximum|maximum_arg|member|minimum|minimum_arg|network_flow|network_flow_cost|partition_set|range|roots|sliding_sum|subcircuit|sum_pred)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'All-Different and related constraints'
|
|
'match': '\\b(alldifferent|all_different|all_disjoint|all_equal|alldifferent_except_0|nvalue|symmetric_all_different)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Lexicographic constraints'
|
|
'match': '\\b(lex2|lex_greater|lex_greatereq|lex_less|lex_lesseq|strict_lex2|value_precede|value_precede_chain)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Sorting constraints'
|
|
'match': '\\b(arg_sort|decreasing|increasing|sort)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Channeling constraints'
|
|
'match': '\\b(int_set_channel|inverse|inverse_set|link_set_to_booleans)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Counting constraints'
|
|
'match': '\\b(among|at_least|at_most|at_most1|count|count_eq|count_geq|count_gt|count_leq|count_lt|count_neq|distribute|exactly|global_cardinality|global_cardinality_closed|global_cardinality_low_up|global_cardinality_low_up_closed)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Packing constraints'
|
|
'match': '\\b(bin_packing|bin_packing_capa|bin_packing_load|diffn|diffn_k|diffn_nonstrict|diffn_nonstrict_k|geost|geost_bb|geost_smallest_bb|knapsack)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Scheduling constraints'
|
|
'match': '\\b(alternative|cumulative|disjunctive|disjunctive_strict|span)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'comment': 'Extensional constraints (table, regular etc.)'
|
|
'match': '\\b(regular|regular_nfa|table)\\b'
|
|
'name': 'support.function.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(not|<->|->|<-|\\\\/|xor|/\\\\)\\b'
|
|
'name': 'keyword.operator.logical.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(<|>|<=|>=|==|=|!=)\\b'
|
|
'name': 'keyword.operator.math.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(\\+|-|\\*|/|div|mod)\\b'
|
|
'name': 'keyword.operator.math.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(in|subset|superset|union|diff|symdiff|intersect)\\b'
|
|
'name': 'keyword.operator.sets.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\|\\.\\.|\\+\\+'
|
|
'name': 'keyword.operator.math.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b(true|false)\\b'
|
|
'name': 'constant.language.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '\\b([_A-Za-z])(\\w*)\\b'
|
|
'name': 'variable.other.mzn'
|
|
}
|
|
|
|
{
|
|
'match': '([+-]?)\\d+(\\.(?!\\.)\\d*)?([eE][-+]?\\d+)?'
|
|
'name': 'constant.numeric.mzn'
|
|
}
|
|
]
|