Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/data/syntax/curry.xml
T

361 lines
15 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!-- qualification of entities -->
<!ENTITY qualify "(?:[A-Z][a-zA-Z0-9_']*\.)*">
<!-- identifier -->
<!ENTITY ident "[a-z][a-zA-Z0-9_']*">
<!-- Type -->
<!ENTITY type "[A-Z][a-zA-Z0-9_']*">
<!-- infix operator characters -->
<!ENTITY infixchar "~!@#\$&#37;\^&amp;\*\+\-=&lt;&gt;\?\./\|&backslash;:">
<!-- identifier in prefix notation, e.g.: id, ($) -->
<!ENTITY prefixIdent "(?:&ident;|\([&infixchar;]+\))">
<!-- Characters allowed in character escape sequence, e.g., \n -->
<!ENTITY escSeqChar "abfnrtv\&quot;'" >
<!-- Ascii escape sequence, e.g., \NUL -->
<!ENTITY escSeqAscii "NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL" >
<!-- Control escape sequence, e.g., \^X -->
<!ENTITY escSeqCntrl "\^[A-Z@\[&backslash;\]\^_]" >
<!-- octal number -->
<!ENTITY octal "[0-7]+" >
<!-- decimal number -->
<!ENTITY decimal "[0-9]+" >
<!-- hexadecimal number -->
<!ENTITY hexadecimal "[0-9a-fA-F]+" >
<!-- a backslash, escaped for use in regular expressions -->
<!ENTITY backslash "\\" >
<!-- dashes introducing a currydoc comment -->
<!ENTITY currydoc "---" >
]>
<language name="Curry" version="4" kateversion="5.0"
section="Sources" extensions="*.curry" mimetype="text/x-curry"
author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
indenter="haskell">
<highlighting>
<list name="keywords">
<item>case</item>
<item>data</item>
<item>do</item>
<item>else</item>
<item>external</item>
<item>fcase</item>
<item>free</item>
<item>if</item>
<!-- Although import is a keyword, it is handled in a special context
to highlight "qualified", "as" and "hiding" in keyword style,
albeit these lexemes are no keywords.
<item>import</item>
-->
<item>in</item>
<item>infix</item>
<item>infixl</item>
<item>infixr</item>
<item>let</item>
<item>module</item>
<item>of</item>
<item>then</item>
<item>type</item>
<item>where</item>
</list>
<list name="Prelude Func">
<item>and</item>
<item>all</item>
<item>any</item>
<item>appendFile</item>
<item>best</item>
<item>break</item>
<item>browse</item>
<item>browseList</item>
<item>chr</item>
<item>concat</item>
<item>concatMap</item>
<item>const</item>
<item>curry</item>
<item>div</item>
<item>done</item>
<item>doSolve</item>
<item>drop</item>
<item>dropWhile</item>
<item>either</item>
<item>elem</item>
<item>ensureNotFree</item>
<item>ensureSpine</item>
<item>enumFrom</item>
<item>enumFromThen</item>
<item>enumFromTo</item>
<item>enumFromThenTo</item>
<item>error</item>
<item>failed</item>
<item>filter</item>
<item>findall</item>
<item>flip</item>
<item>foldl</item>
<item>foldl1</item>
<item>foldr</item>
<item>foldr1</item>
<item>fst</item>
<item>getChar</item>
<item>getLine</item>
<item>id</item>
<item>if_then_else</item>
<item>iterate</item>
<item>head</item>
<item>length</item>
<item>lines</item>
<item>lookup</item>
<item>map</item>
<item>mapIO</item>
<item>mapIO_</item>
<item>max</item>
<item>maybe</item>
<item>min</item>
<item>mod</item>
<item>negate</item>
<item>not</item>
<item>notElem</item>
<item>null</item>
<item>once</item>
<item>or</item>
<item>ord</item>
<item>otherwise</item>
<item>print</item>
<item>putChar</item>
<item>putStr</item>
<item>putStrLn</item>
<item>readFile</item>
<item>repeat</item>
<item>replicate</item>
<item>return</item>
<item>reverse</item>
<item>seq</item>
<item>sequenceIO</item>
<item>sequenceIO_</item>
<item>show</item>
<item>snd</item>
<item>solveAll</item>
<item>span</item>
<item>splitAt</item>
<item>success</item>
<item>tail</item>
<item>take</item>
<item>takeWhile</item>
<item>try</item>
<item>uncurry</item>
<item>unknown</item>
<item>unlines</item>
<item>unpack</item>
<item>until</item>
<item>unwords</item>
<item>unzip</item>
<item>unzip3</item>
<item>writeFile</item>
<item>words</item>
<item>zip</item>
<item>zip3</item>
<item>zipWith</item>
<item>zipWith3</item>
</list>
<list name="Prelude Type">
<item>Bool</item>
<item>Char</item>
<item>Either</item>
<item>Float</item>
<item>Int</item>
<item>IO</item>
<item>Maybe</item>
<item>Ordering</item>
<item>String</item>
<item>Success</item>
</list>
<list name="Prelude Cons">
<item>False</item>
<item>True</item>
<item>Left</item>
<item>Right</item>
<item>Just</item>
<item>Nothing</item>
<item>EQ</item>
<item>LT</item>
<item>GT</item>
</list>
<contexts>
<context name="Normal" attribute="Normal" lineEndContext="#stay">
<!-- pragmas, currydoc, comments -->
<StringDetect attribute="Pragma" context="Pragma" String="{-#" beginRegion="Pragma" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="{" char1="-" beginRegion="Multiline Comment" />
<StringDetect attribute="Currydoc" context="Currydoc" String="&currydoc;" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-" />
<!-- keywords, Prelude entities -->
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Prelude Function" context="#stay" String="Prelude Func" />
<keyword attribute="Prelude Type" context="#stay" String="Prelude Type" />
<keyword attribute="Prelude Constructor" context="#stay" String="Prelude Cons" />
<RegExpr attribute="Keyword" context="Import" String="import\s+(?:qualified)?" />
<!-- Literals -->
<Float attribute="Float" context="#stay" />
<RegExpr attribute="Octal" context="#stay" String="0[oO]&octal;" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<DetectChar attribute="Char" context="Char" char="'" />
<DetectChar attribute="String" context="String" char="&quot;" />
<!-- Others -->
<RegExpr attribute="Special Symbol" context="#stay" String="(?:::|:=|:&gt;|\-&gt;|&lt;\-|\.\.)" />
<RegExpr attribute="Signature" context="#stay" String="\s*&prefixIdent;\s*(?:,\s*&prefixIdent;)*\s*(?=::[^&infixchar;])" />
<RegExpr attribute="Function" context="#stay" String="&qualify;&ident;" />
<RegExpr attribute="Operator" context="#stay" String="&qualify;[&infixchar;]+" />
<RegExpr attribute="Type, Constructor" context="#stay" String="&qualify;&type;" />
<DetectChar attribute="Infix Application" context="Infix" char="`" />
<!-- Folding of braces -->
<DetectChar char="(" context="#stay" beginRegion="nested" attribute="Braces" />
<DetectChar char=")" context="#stay" endRegion="nested" attribute="Braces" />
<DetectChar char="[" context="#stay" beginRegion="list" attribute="Braces" />
<DetectChar char="]" context="#stay" endRegion="list" attribute="Braces" />
<DetectChar char="{" context="#stay" beginRegion="curly" attribute="Braces" />
<DetectChar char="}" context="#stay" endRegion="curly" attribute="Braces" />
</context>
<!-- Pragma -->
<context name="Pragma" attribute="Pragma" lineEndContext="#stay" >
<StringDetect attribute="Pragma" context="#pop" String="#-}" endRegion="Pragma" />
</context>
<!-- Multiline comment -->
<context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" >
<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Multiline Comment" />
<IncludeRules context="##Comments" />
</context>
<!-- Currydoc -->
<context name="Currydoc" attribute="Currydoc" lineEndContext="#pop" />
<!-- Single line comment -->
<context name="Comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments" />
</context>
<!-- Import section -->
<context name="Import" attribute="Normal" lineEndContext="#pop" >
<!-- pragmas, currydoc, comments -->
<StringDetect attribute="Pragma" context="Pragma" String="{-#" beginRegion="Pragma" />
<Detect2Chars attribute="Comment" context="Multiline Comment" char="{" char1="-" beginRegion="Multiline Comment" />
<StringDetect attribute="Currydoc" context="Currydoc" String="&currydoc;" />
<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-" />
<RegExpr attribute="Type, Constructor" context="#stay" String="&qualify;&type;" />
<Detect2Chars attribute="Keyword" context="#stay" char="a" char1="s" />
<StringDetect attribute="Keyword" context="#stay" String="hiding" />
<!-- Pop context at open paren to highlight imported entities -->
<DetectChar attribute="Braces" context="#pop" char="(" beginRegion="nested" />
<RegExpr attribute="Syntax Error" context="#stay" String="\S+" />
</context>
<!-- A single characters, with escape sequences -->
<context name="Char" attribute="Char" lineEndContext="CharSyntaxError" >
<DetectChar attribute="Syntax Error" context="#pop" char="'" />
<DetectChar attribute="Char" context="CharEscape" char="\" />
<RegExpr attribute="Char" context="CharEnd" String="[^'&backslash;]" />
</context>
<!-- Character escape sequence -->
<context name="CharEscape" attribute="Char" lineEndContext="#pop!CharSyntaxError" >
<AnyChar attribute="Char" context="#pop!CharEnd" String="&escSeqChar;" />
<RegExpr attribute="Char" context="#pop!CharEnd" String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
<RegExpr attribute="Syntax Error" context="#pop!CharEnd" String="." />
</context>
<!-- Ending quote of character literal -->
<context name="CharEnd" attribute="Char" lineEndContext="#pop!CharSyntaxError" >
<DetectChar attribute="Char" context="#pop#pop" char="'" />
<RegExpr attribute="Syntax Error" context="#stay" String="." />
</context>
<!-- Character syntax error: Newline inside literal -->
<context name="CharSyntaxError" attribute="Syntax Error" lineEndContext="#stay" >
<DetectChar attribute="Syntax Error" context="#pop#pop" char="'" />
</context>
<!-- A string, with escape sequences -->
<context name="String" attribute="String" lineEndContext="StringSyntaxError" >
<DetectChar attribute="String" context="#pop" char="&quot;" />
<DetectChar attribute="String Escape" context="StringEscape" char="\" />
<RegExpr attribute="String" context="#stay" String="[^&quot;&backslash;]*" />
</context>
<!-- String escape sequence -->
<context name="StringEscape" attribute="String" lineEndContext="StringGap" >
<AnyChar attribute="String Escape" context="#pop" String="&escSeqChar;&amp;" />
<RegExpr attribute="String Escape" context="#pop" String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
<DetectSpaces attribute="String Escape" context="StringGap" />
<RegExpr attribute="Syntax Error" context="#pop" String="." />
</context>
<context name="StringGap" attribute="String" lineEndContext="#stay" >
<DetectSpaces attribute="String Escape" context="#stay" />
<DetectChar attribute="String Escape" context="#pop#pop#pop!String" char="\" />
<DetectChar attribute="Syntax Error" context="#pop#pop#pop" char="&quot;" />
<RegExpr attribute="Syntax Error" context="#stay" String="." />
</context>
<!-- String syntax error: Newline inside literal -->
<context name="StringSyntaxError" attribute="Syntax Error" lineEndContext="#stay" >
<DetectChar attribute="Syntax Error" context="#pop#pop" char="&quot;" />
</context>
<!-- Infix application -->
<context name="Infix" attribute="Infix Application" lineEndContext="#stay" >
<DetectChar attribute="Infix Application" context="#pop" char="`"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false" />
<!-- Comments -->
<itemData name="Pragma" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Currydoc" defStyleNum="dsDocumentation" />
<!-- Keywords, predefined entities -->
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Prelude Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Prelude Function" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Prelude Constructor" defStyleNum="dsKeyword" spellChecking="false" />
<!-- Literals -->
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String Escape" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" />
<!-- Others -->
<itemData name="Braces" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Signature" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Function" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Operator" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Type, Constructor" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Special Symbol" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Infix Application" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Syntax Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1"/>
<comments>
<comment name="singleLine" start="--" position="afterwhitespace" />
<comment name="multiLine" start="{-" end="-}" region="Multiline Comment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->