You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
365 lines
16 KiB
365 lines
16 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE language SYSTEM "language.dtd"
|
|
[
|
|
<!-- 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 "~!@#\$%\^&\*\+\-=<>\?\./\|&backslash;:">
|
|
<!-- identifier in prefix notation, e.g.: id, ($) -->
|
|
<!ENTITY prefixIdent "(&ident;|\([&infixchar;]+\))">
|
|
|
|
<!-- Characters allowed in character escape sequence, e.g., \n -->
|
|
<!ENTITY escSeqChar "abfnrtv\"'" >
|
|
<!-- 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="0.4" kateversion="2.5"
|
|
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(o|O)&octal;" />
|
|
<HlCHex attribute="Hex" context="#stay" />
|
|
<Int attribute="Decimal" context="#stay" />
|
|
<DetectChar attribute="Char" context="Char" char="'" />
|
|
<DetectChar attribute="String" context="String" char=""" />
|
|
|
|
<!-- Others -->
|
|
<RegExpr attribute="Special Symbol" context="#stay" String="(::|:=|:>|\->|<\-|\.\.)" />
|
|
<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" />
|
|
</context>
|
|
|
|
<!-- Currydoc -->
|
|
<context name="Currydoc" attribute="Currydoc" lineEndContext="#pop" />
|
|
|
|
<!-- Single line comment -->
|
|
<context name="Comment" attribute="Comment" lineEndContext="#pop" />
|
|
|
|
<!-- 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="#popCharSyntaxError" >
|
|
<AnyChar attribute="Char" context="#popCharEnd" String="&escSeqChar;" />
|
|
<RegExpr attribute="Char" context="#popCharEnd" String="o&octal;" />
|
|
<RegExpr attribute="Char" context="#popCharEnd" String="&decimal;" />
|
|
<RegExpr attribute="Char" context="#popCharEnd" String="x&hexadecimal;" />
|
|
<RegExpr attribute="Char" context="#popCharEnd" String="&escSeqCntrl;" />
|
|
<RegExpr attribute="Char" context="#popCharEnd" String="&escSeqAscii;" />
|
|
<RegExpr attribute="Syntax Error" context="#popCharEnd" String="." />
|
|
</context>
|
|
|
|
<!-- Ending quote of character literal -->
|
|
<context name="CharEnd" attribute="Char" lineEndContext="#popCharSyntaxError" >
|
|
<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=""" />
|
|
<DetectChar attribute="String Escape" context="StringEscape" char="\" />
|
|
<RegExpr attribute="String" context="#stay" String="[^"&backslash;]*" />
|
|
</context>
|
|
|
|
<!-- String escape sequence -->
|
|
<context name="StringEscape" attribute="String" lineEndContext="StringGap" >
|
|
<AnyChar attribute="String Escape" context="#pop" String="&escSeqChar;&" />
|
|
<RegExpr attribute="String Escape" context="#pop" String="o&octal;" />
|
|
<RegExpr attribute="String Escape" context="#pop" String="&decimal;" />
|
|
<RegExpr attribute="String Escape" context="#pop" String="x&hexadecimal;" />
|
|
<RegExpr attribute="String Escape" context="#pop" String="&escSeqCntrl;" />
|
|
<RegExpr attribute="String Escape" context="#pop" String="&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#popString" char="\" />
|
|
<DetectChar attribute="Syntax Error" context="#pop#pop#pop" char=""" />
|
|
<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=""" />
|
|
</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="dsComment" color="#008000" selColor="#FFFFFF"/>
|
|
|
|
<!-- 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="--" />
|
|
<comment name="multiLine" start="{-" end="-}" region="Multiline Comment" />
|
|
</comments>
|
|
<keywords casesensitive="1" />
|
|
</general>
|
|
</language>
|