medit/moo/mooedit/langs/modelica.lang
2013-12-06 17:03:17 -08:00

263 lines
9.3 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
Authors: Jorn Baayen
Copyright (C) 2012 Jorn Baayen <jorn.baayen@moct7.com>
Based on modelica.xml from Kate, Copyright (C) 2008 Federico Zenith.
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
GtkSourceView is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-->
<language id="modelica" _name="Modelica" version="2.0" _section="Scientific">
<metadata>
<property name="mimetypes">text/x-modelica</property>
<property name="globs">*.mo;*.mop</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="string" _name="String" map-to="def:string"/>
<style id="operator" _name="Operator" map-to="def:operator"/>
<style id="class-type" _name="Class type" map-to="def:type"/>
<style id="data-type" _name="Data type" map-to="def:type"/>
<style id="default-attribute" _name="Default Attribute" map-to="def:identifier"/>
<style id="boolean" _name="Boolean" map-to="def:boolean"/>
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
<style id="base-n-integer" _name="Base-N Integer" map-to="def:base-n-integer"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="builtin" _name="Builtin" map-to="def:builtin"/>
</styles>
<definitions>
<context id="double-quoted-string" style-ref="string" end-at-line-end="false" class="string" class-disabled="no-spell-check">
<start>"</start>
<end>"</end>
</context>
<!--To see the list of operators, use the function __operators__-->
<context id="operator" style-ref="operator">
<match extended="true">
(\.)?\+{1,2}?(?!\+) | # arithmetic operators
(\.)?\-{1,2}?(?!\-) | # already counting
(\.)?\*{1,2}?(?!\*) | # with auto increment,
(\.)?\/(?!\^) | # element by element,
(\.)?\\(?!\^) | # left division
(\.)?\^(?!\^) | # and both exp
(?&lt;=[0-9a-zA-Z_)\]}])(\.)?' | # transpose operator
&lt;=? | &gt;=? | != | ~= | == | &lt;&gt; | # comparison operators
&amp;{1,2}?(?!&amp;) | \|{1,2}?(?!\|) | ! | ~ | # boolean operators
= | # assignment operator
: | # range operator
</match>
</context>
<context id="class-type" style-ref="class-type">
<keyword>class</keyword>
<keyword>block</keyword>
<keyword>connector</keyword>
<keyword>function</keyword>
<keyword>model</keyword>
<keyword>package</keyword>
<keyword>record</keyword>
<keyword>type</keyword>
</context>
<context id="data-type" style-ref="data-type">
<keyword>Boolean</keyword>
<keyword>enumeration</keyword>
<keyword>ExternalObject</keyword>
<keyword>Integer</keyword>
<keyword>Real</keyword>
<keyword>StateSelect</keyword>
<keyword>String</keyword>
</context>
<context id="default-attribute" style-ref="default-attribute">
<keyword>display</keyword>
<keyword>fixed</keyword>
<keyword>max</keyword>
<keyword>min</keyword>
<keyword>nominal</keyword>
<keyword>quantity</keyword>
<keyword>start</keyword>
<keyword>stateSelect</keyword>
<keyword>unit</keyword>
<keyword>value</keyword>
</context>
<context id="boolean" style-ref="boolean">
<!-- falase and true can be used as functions too. Do not highlight as
boolean if followed by parentheses -->
<suffix>\b(?!(\s)*\()</suffix>
<keyword>false</keyword>
<keyword>true</keyword>
</context>
<context id="decimal" style-ref="decimal">
<match>\b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</match>
</context>
<context id="floating-point-number" style-ref="floating-point">
<match>\b([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFlL]?</match>
</context>
<!--To see the list of keywords, use the function __keywords__-->
<context id="keyword" style-ref="keyword">
<keyword>algorithm</keyword>
<keyword>and</keyword>
<keyword>annotation</keyword>
<keyword>assert</keyword>
<keyword>break</keyword>
<keyword>connect</keyword>
<keyword>constant</keyword>
<keyword>constrainedby</keyword>
<keyword>discrete</keyword>
<keyword>else</keyword>
<keyword>elseif</keyword>
<keyword>elsewhen</keyword>
<keyword>encapsulated</keyword>
<keyword>end</keyword>
<keyword>equation</keyword>
<keyword>expandable</keyword>
<keyword>extends</keyword>
<keyword>external</keyword>
<keyword>false</keyword>
<keyword>final</keyword>
<keyword>flow</keyword>
<keyword>for</keyword>
<keyword>if</keyword>
<keyword>import</keyword>
<keyword>in</keyword>
<keyword>inner</keyword>
<keyword>input</keyword>
<keyword>loop</keyword>
<keyword>not</keyword>
<keyword>or</keyword>
<keyword>outer</keyword>
<keyword>output</keyword>
<keyword>parameter</keyword>
<keyword>partial</keyword>
<keyword>protected</keyword>
<keyword>public</keyword>
<keyword>redeclare</keyword>
<keyword>replaceable</keyword>
<keyword>return</keyword>
<keyword>then</keyword>
<keyword>true</keyword>
<keyword>when</keyword>
<keyword>while</keyword>
<keyword>within</keyword>
</context>
<context id="builtin" style-ref="builtin">
<!-- NOTE this is more like a built-in variable, but as it changes
its value during the simulation it is more like a function
without the (), and has therefore been placed here.-->
<keyword>time</keyword>
<keyword>abs</keyword>
<keyword>ceil</keyword>
<keyword>div</keyword>
<keyword>floor</keyword>
<keyword>integer</keyword>
<keyword>mod</keyword>
<keyword>rem</keyword>
<keyword>sign</keyword>
<keyword>sqrt</keyword>
<keyword>sin</keyword>
<keyword>cos</keyword>
<keyword>tan</keyword>
<keyword>asin</keyword>
<keyword>acos</keyword>
<keyword>atan</keyword>
<keyword>atan2</keyword>
<keyword>sinh</keyword>
<keyword>cosh</keyword>
<keyword>tanh</keyword>
<keyword>exp</keyword>
<keyword>log</keyword>
<keyword>log10</keyword>
<keyword>analysisType</keyword>
<keyword>cardinality</keyword> <!-- NOTE deprecated in 3.0. -->
<keyword>change</keyword>
<keyword>delay</keyword>
<keyword>der</keyword>
<keyword>direction</keyword>
<keyword>edge</keyword>
<keyword>initial</keyword>
<keyword>isPresent</keyword>
<keyword>noEvent</keyword>
<keyword>pre</keyword>
<keyword>reinit</keyword>
<keyword>sample</keyword>
<keyword>semiLinear</keyword>
<keyword>smooth</keyword>
<keyword>terminal</keyword>
<keyword>terminate</keyword>
<keyword>ndims</keyword>
<keyword>size</keyword>
<keyword>scalar</keyword>
<keyword>vector</keyword>
<keyword>matrix</keyword>
<keyword>array</keyword>
<keyword>zeros</keyword>
<keyword>ones</keyword>
<keyword>fill</keyword>
<keyword>identity</keyword>
<keyword>diagonal</keyword>
<keyword>linspace</keyword>
<keyword>min</keyword>
<keyword>max</keyword>
<keyword>sum</keyword>
<keyword>product</keyword>
<keyword>transpose</keyword>
<keyword>outerProduct</keyword>
<keyword>symmetric</keyword>
<keyword>cross</keyword>
<keyword>skew</keyword>
<keyword>cat</keyword>
</context>
<context id="modelica" class="no-spell-check">
<include>
<context ref="def:c-like-comment"/>
<context ref="def:c-like-comment-multiline"/>
<context ref="def:c-like-close-comment-outside-comment"/>
<context ref="double-quoted-string"/>
<context ref="operator"/>
<context ref="class-type"/>
<context ref="data-type"/>
<context ref="default-attribute"/>
<context ref="boolean"/>
<context ref="decimal"/>
<context ref="floating-point-number"/>
<context ref="keyword"/>
<context ref="builtin"/>
</include>
</context>
</definitions>
</language>