Warning, /frameworks/syntax-highlighting/data/syntax/modula-2-iso-only.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language>
0003 <language name="Modula-2 (ISO only)" mimetype="text/x-modula2" version="4"
0004   kateversion="5.0" section="Sources" priority="3" extensions="*.mod;*.def"
0005   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT">
0006 <!--
0007   *****************************************************************************
0008   ISO Modula-2 syntax highlighting profile for Kate
0009 
0010   Copyright (C) 2018 Modula-2 Software Foundation
0011 
0012   Licensed under the MIT license <https://opensource.org/licenses/MIT>
0013 
0014   This profile covers ISO Modula-2 (ISO 10514-1) by ISO/IEC/TC1/SC22/WG13.
0015 
0016   Since standard specifications from ISO are not available publicly free
0017   of charge and the fees to obtain copies is quite high, references to a
0018   summary by Excelsior LLC are given in this profile.
0019 
0020   A list of ISO Modula-2 keywords can be found at:
0021 
0022   https://www.excelsior-usa.com/doc/xds/isom202.html#5
0023 
0024   In ISO Modula-2 terminology there are two kinds of built-in identifiers:
0025   (1) predefined identifiers, also called pervasive identifiers or simply
0026   pervasives, and (2) identifiers that are provided by a built-in module,
0027   called SYSTEM.  There is no terminology for the latter group.
0028 
0029   A list of pervasives can be found at:
0030 
0031   https://www.excelsior-usa.com/doc/xds/isom203.html#194
0032 
0033   Identifiers provided by built-in module SYSTEM are given at:
0034 
0035   https://www.excelsior-usa.com/doc/xds/isom204.html#306
0036 
0037   Procedures ALLOCATE and DEALLOCATE to which macros NEW and DISPOSE resolve
0038   are given under the subsections for procedures NEW and DISPOSE. Although
0039   the implementations of ALLOCATE and DEALLOCATE are library supplied, their
0040   identifiers are hardcoded into the language.  For the purpose of syntax
0041   highlighting, they should therefore  be treated as built-in identifiers.
0042   Identifiers exported by built-in module SYSTEM are given in PIM4, page 121.
0043 
0044   In ISO Modula-2 terminology, there are two kinds of procedures: those that
0045   return a result in their own name, and those that do not.  When necessary to
0046   differentiate between them, the former are called function procedures and
0047   the latter proper procedures.  For this reason, both function and procedure
0048   identifiers are listed together under "procedures" in this profile.
0049 
0050   Some ISO Modula-2 compilers implemented additional built-in types, most
0051   notably LONGCARD, LONGINT, SHORTCARD and SHORTINT.  However, these types are
0052   not part of the ISO Modula-2 language definition and consequently they are
0053   not recognised as built-in identifiers in this profile.
0054   *****************************************************************************
0055 -->
0056   <highlighting>
0057     <list name="workaround">
0058       <!-- BUG: Kate ignores first entry in context 'Normal' -->
0059       <!-- WORKAROUND: Use the name of this dummy list as first entry -->
0060       <item>???</item> <!-- use '???' in source to test/verify this bug -->
0061     </list>
0062 
0063     <!-- KeyWords -->
0064     <list name="keywords">
0065       <item>AND</item>
0066       <item>ARRAY</item>
0067       <item>BEGIN</item>
0068       <item>BY</item>
0069       <item>CASE</item>
0070       <item>CONST</item>
0071       <item>DEFINITION</item>
0072       <item>DIV</item>
0073       <item>DO</item>
0074       <item>ELSE</item>
0075       <item>ELSIF</item>
0076       <item>END</item>
0077       <item>EXIT</item>
0078       <item>EXCEPT</item>
0079       <item>EXPORT</item>
0080       <item>FINALLY</item>
0081       <item>FOR</item>
0082       <item>FORWARD</item>
0083       <item>FROM</item>
0084       <item>IF</item>
0085       <item>IMPLEMENTATION</item>
0086       <item>IMPORT</item>
0087       <item>IN</item>
0088       <item>LOOP</item>
0089       <item>MOD</item>
0090       <item>MODULE</item>
0091       <item>NOT</item>
0092       <item>OF</item>
0093       <item>OR</item>
0094       <item>PACKEDSET</item>
0095       <item>POINTER</item>
0096       <item>PROCEDURE</item>
0097       <item>QUALIFIED</item>
0098       <item>RECORD</item>
0099       <item>REM</item>
0100       <item>REPEAT</item>
0101       <item>RETRY</item>
0102       <item>RETURN</item>
0103       <item>SET</item>
0104       <item>THEN</item>
0105       <item>TO</item>
0106       <item>TYPE</item>
0107       <item>UNTIL</item>
0108       <item>VAR</item>
0109       <item>WHILE</item>
0110       <item>WITH</item>
0111     </list>
0112 
0113     <!-- Built-in Constant Identifiers -->
0114     <list name="constants">
0115       <item>FALSE</item>
0116       <item>INTERRUPTIBLE</item>
0117       <item>NIL</item>
0118       <item>TRUE</item>
0119       <item>UNINTERRUPTIBLE</item>
0120     </list>
0121 
0122     <!-- Built-in Type Identifiers -->
0123     <list name="types">
0124       <!-- Pervasives -->
0125       <item>BOOLEAN</item>
0126       <item>BITSET</item>
0127       <item>CARDINAL</item>
0128       <item>COMPLEX</item>
0129       <item>CHAR</item>
0130       <item>INTEGER</item>
0131       <item>LONGCOMPLEX</item>
0132       <item>LONGREAL</item>
0133       <item>PROC</item>
0134       <item>PROTECTION</item>
0135       <item>REAL</item>
0136     </list>
0137 
0138     <!-- Built-in Procedure Identifiers -->
0139     <list name="procedures">
0140       <!-- Pervasives -->
0141       <item>ABS</item>
0142       <item>CAP</item>
0143       <item>CHR</item>
0144       <item>CMPLX</item>
0145       <item>DEC</item>
0146       <item>EXCL</item>
0147       <item>FLOAT</item>
0148       <item>HALT</item>
0149       <item>HIGH</item>
0150       <item>IM</item>
0151       <item>INC</item>
0152       <item>INCL</item>
0153       <item>INT</item>
0154       <item>LENGTH</item>
0155       <item>LFLOAT</item>
0156       <item>MAX</item>
0157       <item>MIN</item>
0158       <item>ODD</item>
0159       <item>ORD</item>
0160       <item>RE</item>
0161       <item>SIZE</item>
0162       <item>TRUNC</item>
0163       <item>VAL</item>
0164     </list>
0165 
0166     <!-- Built-in Macros -->
0167     <list name="macros">
0168       <!-- NEW resolves to ALLOCATE -->
0169       <item>NEW</item>
0170       <item>ALLOCATE</item>
0171 
0172       <!-- DISPOSE resolves to DEALLOCATE -->
0173       <item>DISPOSE</item>
0174       <item>DEALLOCATE</item>
0175     </list>
0176 
0177     <!-- Module SYSTEM -->
0178     <list name="unsafe">
0179       <!-- Module Identifier -->
0180       <item>SYSTEM</item>
0181 
0182       <!-- Constants -->
0183       <item>BITSPERLOC</item>
0184       <item>BITSPERWORD</item>
0185 
0186       <!-- Types -->
0187       <item>ADDRESS</item>
0188       <item>LOC</item>
0189       <item>WORD</item>
0190 
0191       <!-- Procedures -->
0192       <item>ADDADR</item>
0193       <item>ADR</item>
0194       <item>CAST</item>
0195       <item>DIFADR</item>
0196       <item>MAKEADR</item>
0197       <item>ROTATE</item>
0198       <item>SHIFT</item>
0199       <item>SUBADR</item>
0200       <item>TSIZE</item>
0201     </list>
0202 
0203     <contexts>
0204       <context attribute="Plain Source" lineEndContext="#stay" name="plain">
0205         <!-- BUG: first entry is ignored, leave Dummy at first position -->
0206         <keyword attribute="Dummy" context="#stay" String="workaround"/>
0207 
0208         <!-- Keyords -->
0209         <keyword attribute="Keyword" context="#stay" String="keywords"/>
0210 
0211         <!-- Built-in Constant Identifiers -->
0212         <keyword attribute="Const" context="#stay" String="constants"/>
0213 
0214         <!-- Built-in Type Identifiers -->
0215         <keyword attribute="Type" context="#stay" String="types"/>
0216 
0217         <!-- Built-in Procedure Identifiers -->
0218         <keyword attribute="Builtin" context="#stay" String="procedures"/>
0219 
0220         <!-- Built-in Macro Identifiers and Translations -->
0221         <keyword attribute="Builtin" context="#stay" String="macros"/>
0222 
0223         <!-- Facilities from Built-in Module SYSTEM -->
0224         <keyword attribute="Unsafe" context="#stay" String="unsafe"/>
0225 
0226         <!-- Base-16 Integer Literals -->
0227         <!-- Base-8 Integers and Character Code Literals -->
0228         <RegExpr attribute="Number" context="#stay" String="0[0-9A-F]*H|[0-7]+[BC]"/>
0229 
0230         <!-- Real Number Literals -->
0231         <Float attribute="Number" context="#stay"/>
0232 
0233         <!-- Decimal Integer Literals -->
0234         <Int attribute="Number" context="#stay"/>
0235 
0236         <!-- Start of Double-Quoted String Literal -->
0237         <DetectChar attribute="String" context="DoubleQuotedString" char="&quot;" />
0238 
0239         <!-- Start of Single-Quoted String Literal -->
0240         <DetectChar attribute="String" context="SingleQuotedString" char="'" />
0241 
0242         <!-- Start of Modula-2 Dialect Tags -->
0243         <StringDetect attribute="DialectTag" context="InDialectTag" String="(*!"/>
0244 
0245         <!-- Start of Pragma -->
0246         <Detect2Chars attribute="Pragma" context="InPragma" char="&lt;" char1="*"/>
0247 
0248         <!-- Start of Comment -->
0249         <Detect2Chars attribute="Comment"
0250           context="InComment" char="(" char1="*" beginRegion="FoldableComment"/>
0251       </context>
0252 
0253       <!-- End of Double-Quoted String Literal -->
0254       <context attribute="String" lineEndContext="#pop" name="DoubleQuotedString">
0255         <DetectChar attribute="String" context="#pop" char="&quot;"/>
0256       </context>
0257 
0258       <!-- End of Single-Quoted String Literal -->
0259       <context attribute="String" lineEndContext="#pop" name="SingleQuotedString">
0260         <DetectChar attribute="String" context="#pop" char="'" />
0261       </context>
0262 
0263       <!-- End of Dialet Tag -->
0264       <context attribute="DialectTag" lineEndContext="#pop" name="InDialectTag">
0265         <Detect2Chars attribute="DialectTag" context="#pop" char="*" char1=")"/>
0266       </context>
0267 
0268       <!-- End of Pragma -->
0269       <context attribute="Pragma" lineEndContext="#stay" name="InPragma">
0270         <Detect2Chars attribute="Pragma" context="#pop" char="*" char1="&gt;"/>
0271       </context>
0272 
0273       <context attribute="Comment" lineEndContext="#stay" name="InComment">
0274         <!-- Start of nested Comment -->
0275         <Detect2Chars attribute="Comment"
0276         context="InComment" char="(" char1="*" beginRegion="FoldableComment"/>
0277 
0278         <!-- End of Comment -->
0279         <Detect2Chars attribute="Comment"
0280         context="#pop" char="*" char1=")" endRegion="FoldableComment"/>
0281 
0282         <DetectSpaces />
0283         <IncludeRules context="##Comments" />
0284       </context>
0285     </contexts>
0286 
0287     <itemDatas>
0288       <!-- Style for Plain Source Text -->
0289       <itemData name="Plain Source"
0290         defStyleNum="dsNormal" bold="0" italic="0" />
0291 
0292       <!-- Style for Reserved Words -->
0293       <itemData name="Keyword"
0294         defStyleNum="dsKeyword" bold="1" italic="0" />
0295 
0296       <!-- Style for Built-in Constant Identifiers -->
0297       <itemData name="Const"
0298         defStyleNum="dsBuiltIn" bold="1" italic="0" />
0299 
0300       <!-- Style for Built-in Type Identifiers -->
0301       <itemData name="Type"
0302         defStyleNum="dsDataType" bold="1" italic="0" />
0303 
0304       <!-- Style for Built-in Procedure Identifiers -->
0305       <itemData name="Builtin"
0306         defStyleNum="dsBuiltIn" bold="1" italic="0" />
0307 
0308       <!--  Style for Facilities from Module SYSTEM  -->
0309       <itemData name="Unsafe"
0310         defStyleNum="dsWarning" bold="1" italic="0"/>
0311 
0312       <!-- Style for Number Literals -->
0313       <itemData name="Number"
0314         defStyleNum="dsDecVal" bold="0" italic="0" />
0315 
0316       <!-- Style for Quoted Literals -->
0317       <itemData name="String"
0318         defStyleNum="dsString" bold="0" italic="0" />
0319 
0320       <!-- Style for Dialect Tags -->
0321       <itemData name="DialectTag"
0322         defStyleNum="dsComment" bold="1" italic="0" />
0323 
0324       <!-- Style for Pragmas -->
0325       <itemData name="Pragma"
0326         defStyleNum="dsPreprocessor" bold="1" italic="0" />
0327 
0328       <!-- Style for Comments -->
0329       <itemData name="Comment"
0330         defStyleNum="dsComment" bold="0" italic="1" />
0331 
0332       <!-- Dummy style for testing -->
0333       <itemData name="Dummy" defStyleNum="dsError" />
0334     </itemDatas>
0335   </highlighting>
0336 
0337   <general>
0338     <keywords casesensitive="1" />
0339     <comments>
0340       <comment name="multiLine" start="(*" end="*)" region="FoldableComment" />
0341     </comments>
0342   </general>
0343 </language>
0344 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->