169 lines
5.0 KiB
JSON
169 lines
5.0 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
|
"name": "Midas",
|
|
"scopeName": "source.midas",
|
|
"patterns": [{ "include": "#statement" }],
|
|
"repository": {
|
|
"comment": {
|
|
"begin": "(//)",
|
|
"end": "($)",
|
|
"name": "comment.line",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "comment.line.double-dash"
|
|
}
|
|
}
|
|
},
|
|
"type-def": {
|
|
"begin": "\\b(type)\\s+([a-zA-Z_][a-zA-Z_\\d]*)",
|
|
"end": "$",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.type.midas"
|
|
},
|
|
"2": {
|
|
"name" : "variable.name"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{ "include": "#type-base" },
|
|
{ "include": "#type-body" }
|
|
]
|
|
},
|
|
"type-base": {
|
|
"begin": "(\\()([a-zA-Z_][a-zA-Z_\\d]*)(\\))",
|
|
"end": "$",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.base.begin.midas"
|
|
},
|
|
"2": {
|
|
"name": "variable.name"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.base.end.midas"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{ "include": "#type-cond" }
|
|
]
|
|
},
|
|
"type-cond": {
|
|
"begin": "where",
|
|
"end": "$",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.control.where.midas"
|
|
}
|
|
}
|
|
},
|
|
"type-body": {
|
|
"begin": "\\{",
|
|
"end": "\\}",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.type-body.begin.midas"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.type-body.end.midas"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{"include": "#type-prop"},
|
|
{"include": "#comment"}
|
|
]
|
|
},
|
|
"type-prop": {
|
|
"match": "([a-zA-Z_][a-zA-Z_\\d]*)(:)\\s*([a-zA-Z_][a-zA-Z_\\d]*)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "variable.name"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.separator.annotation.midas"
|
|
},
|
|
"3": {
|
|
"name": "meta.type.name"
|
|
}
|
|
}
|
|
},
|
|
"extend-def": {
|
|
"begin": "\\b(extend)\\s*([a-zA-Z_][a-zA-Z_\\d]*)\\s+(\\{)",
|
|
"end": "\\}",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.extend.midas"
|
|
},
|
|
"2": {
|
|
"name": "variable.name"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.extend-body.begin.midas"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.extend-body.end.midas"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{"include": "#op-def"},
|
|
{"include": "#comment"}
|
|
]
|
|
},
|
|
"op-def": {
|
|
"match": "\\b(op)\\s+(\\S+)\\s*\\(\\s*([a-zA-Z_][a-zA-Z_\\d]*)\\s*\\)\\s*(->)\\s*([a-zA-Z_][a-zA-Z_\\d]*)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.op.midas"
|
|
},
|
|
"2": {
|
|
"name" : "keyword.operator"
|
|
},
|
|
"3": {
|
|
"name" : "variable.name"
|
|
},
|
|
"4": {
|
|
"name" : "keyword.operator.assignment"
|
|
},
|
|
"5": {
|
|
"name" : "variable.name"
|
|
}
|
|
}
|
|
},
|
|
"pred-def": {
|
|
"begin": "(predicate)\\s+([a-zA-Z_][a-zA-Z_\\d]*)\\(([a-zA-Z_][a-zA-Z_\\d]*):\\s*([a-zA-Z_][a-zA-Z_\\d]*)\\)\\s*(=)",
|
|
"end": "$",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.pred.midas"
|
|
},
|
|
"2": {
|
|
"name": "variable.name"
|
|
},
|
|
"3": {
|
|
"name": "variable.name"
|
|
},
|
|
"4": {
|
|
"name": "variable.name"
|
|
},
|
|
"5": {
|
|
"name": "keyword.operator.assignment"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{ "include": "source.python" }
|
|
]
|
|
},
|
|
"statement": {
|
|
"patterns": [
|
|
{ "include": "#comment" },
|
|
{ "include": "#type-def" },
|
|
{ "include": "#extend-def" },
|
|
{ "include": "#pred-def" }
|
|
]
|
|
}
|
|
}
|
|
} |