-
Notifications
You must be signed in to change notification settings - Fork 4
/
modelica.cson
129 lines (129 loc) · 3.08 KB
/
modelica.cson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
'fileTypes': [
"mo"
]
name: "Modelica"
patterns: [
{
begin: "/\\*"
end: "\\*/"
name: "comment.block"
}
{
match: "(//).*$\\n?"
name: "comment.line"
}
{
match: "\\b(true|false)\\b"
name: "constant.language"
}
{
match: "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b"
name: "constant.numeric"
}
{
match: "\\b(Real|Integer|Boolean|String|enumeration|type)\\b"
name: "storage.type"
}
{
match: "\\b(constant|final|parameter|expandable|replaceable|redeclare|constrainedby|import|flow|stream|input|output|discrete|connector)\\b"
name: "storage.modifier"
}
{
match: "\\b\\s*([A-Z])(?:([^ ;$]+)(;)?)([.]([A-Z])(?:([^ ;$]+)(;)?)?)++\\b"
name: "keyword"
}
{
match: "\\b(for|if|when|while|then|loop|end if|end when|end for|end while|else|elsewhen|and|break|return|each|elseif)\\b"
name: "keyword.control"
}
{
match: "\\b(and|or|not)\\b"
name: "keyword.operator.logical"
}
{
match: "<|<\\=|>|>\\=|\\=\\=|<>"
name: "keyword.operator.comparison"
}
{
match: "\\+|\\-|\\.\\+|\\.\\-|\\*|\\.\\*|/|\\./|\\^"
name: "keyword.operator.arithmetic"
}
{
match: "\\=|\\:\\="
name: "keyword.operator.assignment"
}
{
match: "\\b(algorithm|equation|initial algorithm|initial equation|protected|public|end|pure|impure|external|encapsulated|in|inner|operator|outer)\\b"
name: "keyword"
}
{
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.mathematical"
}
{
match: "\\b(scalar|vector|matrix|identity|diagonal|zeros|ones|fill|linspace|transpose|outerProduct|symmetric|cross|skew)\\b"
name: "support.function.array"
}
{
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.event"
}
{
match: "\\b(connect|der|inStream|actualStream|semiLinear|spatialDistribution|getInstanceName|homotopy|delay|assert|ndims|size|cardinality|isPresent)\\b"
name: "support.function.special"
}
{
match: "\\b(extends|partial|within)\\b"
name: "support.type"
}
{
captures:
"1":
name: "entity.name.type"
"2":
name: "keyword"
"3":
name: "comment.line"
match: "\\b((model|class|record|block|package)\\s+\\w+\\s*(\".*\")*)"
}
{
captures:
"1":
name: "entity.name.function"
"2":
name: "keyword"
"3":
name: "comment.line"
match: "((function)\\s+\\w+\\s*(\".*\")*)"
}
{
begin: "annotation"
end: '\\)\\s*;\\s*$'
name: "comment.block"
patterns: [
{
begin: "\""
end: "\""
name: "comment.block"
}
]
}
{
captures:
"1":
name: "constant.string"
match: "[\"\\w\\)](\\s+\".*\"\\s*);"
}
{
begin: "\""
end: "\""
name: "constant.string"
patterns: [
{
match: "\\\\."
name: "constant.character.escaped"
}
]
}
]
scopeName: "source.modelica"