diff options
Diffstat (limited to 'kate/data/curry.xml')
-rw-r--r-- | kate/data/curry.xml | 364 |
1 files changed, 364 insertions, 0 deletions
diff --git a/kate/data/curry.xml b/kate/data/curry.xml new file mode 100644 index 000000000..07e6dd35c --- /dev/null +++ b/kate/data/curry.xml @@ -0,0 +1,364 @@ +<?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> |