diff --git a/build.xml b/build.xml index 9d5f5597..2bd1ffa6 100644 --- a/build.xml +++ b/build.xml @@ -3,6 +3,9 @@ Tasks for Haskell plugin + + + @@ -10,17 +13,10 @@ - - - - - - - - - + diff --git a/lib/JFlex.jar b/lib/JFlex.jar deleted file mode 100644 index 8bef2fdb..00000000 Binary files a/lib/JFlex.jar and /dev/null differ diff --git a/lib/jflex-1.5.1.jar b/lib/jflex-1.5.1.jar new file mode 100644 index 00000000..4a5649a8 Binary files /dev/null and b/lib/jflex-1.5.1.jar differ diff --git a/plugin/src/org/jetbrains/haskell/parser/grammar/ExpressionsGrammar.kt b/plugin/src/org/jetbrains/haskell/parser/grammar/ExpressionsGrammar.kt index 7065cf1f..e8f69061 100644 --- a/plugin/src/org/jetbrains/haskell/parser/grammar/ExpressionsGrammar.kt +++ b/plugin/src/org/jetbrains/haskell/parser/grammar/ExpressionsGrammar.kt @@ -6,7 +6,7 @@ import org.jetbrains.haskell.parser.token.COLON import org.jetbrains.haskell.parser.token.STRING import org.jetbrains.haskell.parser.token.NUMBER import org.jetbrains.haskell.parser.token.DOT -import org.jetbrains.haskell.parser.token.OPERATOR +import org.jetbrains.haskell.parser.token.OPERATOR_ID import org.jetbrains.haskell.parser.token.DOLLAR import org.jetbrains.haskell.parser.rules.rule import org.jetbrains.haskell.parser.token.TYPE_OR_CONS @@ -50,7 +50,7 @@ val anAtomExpression = lazy { NUMBER or REFERENCE_EXPRESSION or DOT or - OPERATOR or + OPERATOR_ID or DOLLAR or FIELD_UPDATE or CASE_EXPRESSION or diff --git a/plugin/src/org/jetbrains/haskell/parser/grammar/HaskellGrammar.kt b/plugin/src/org/jetbrains/haskell/parser/grammar/HaskellGrammar.kt index f15488cb..154430a4 100644 --- a/plugin/src/org/jetbrains/haskell/parser/grammar/HaskellGrammar.kt +++ b/plugin/src/org/jetbrains/haskell/parser/grammar/HaskellGrammar.kt @@ -107,7 +107,7 @@ private val aModuleExports = rule(MODULE_EXPORTS) { val anExport = lazy { val symbolExport = rule(SYMBOL_EXPORT) { - ID or TYPE_OR_CONS or inParentheses(OPERATOR) + ID or TYPE_OR_CONS or inParentheses(OPERATOR_ID) } val qcnameExt = maybe(TYPE_KW) + symbolExport @@ -158,7 +158,7 @@ val aDataDeclaration = rule(DATA_DECLARATION) { } val SOME_ID = RuleBasedElementType("Some id", ::SomeId) { - ID or TYPE_OR_CONS or OPERATOR + ID or TYPE_OR_CONS or OPERATOR_ID } val ANY : Rule = RuleBasedElementType("Any", ::UnparsedToken) { diff --git a/plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex b/plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex index 45f5ab96..7d24c098 100644 --- a/plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex +++ b/plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex @@ -36,6 +36,7 @@ digit = {ascdigit}|{unidigit} special = [\(\)\,\;\[\]\`\{\}] ascsymbol = [\!\#\$\%\&\*\+\.\/\<\=\>\?\@\\\^\|\-\~] +unisymbol = [[\p{P}\p{S}]&&[^(),;\[\]`{}_\"\']] symbol = {ascsymbol}|{unisymbol} large = [:uppercase:] @@ -133,6 +134,8 @@ UCHARACTER = (\'\\x[0-9]*\') "=>" { return TokenPackage.getDOUBLE_ARROW(); } "!" { return TokenPackage.getEXCLAMATION(); } "_" { return TokenPackage.getUNDERSCORE(); } +":"{symbol}+ { return TokenPackage.getOPERATOR_CONS(); } +{symbol}+ { return TokenPackage.getOPERATOR_ID(); } // - Keywords diff --git a/plugin/src/org/jetbrains/haskell/parser/lexer/_HaskellLexer.java b/plugin/src/org/jetbrains/haskell/parser/lexer/_HaskellLexer.java index 9f85d299..a57e0b5a 100644 --- a/plugin/src/org/jetbrains/haskell/parser/lexer/_HaskellLexer.java +++ b/plugin/src/org/jetbrains/haskell/parser/lexer/_HaskellLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 6/5/14 11:58 AM */ +/* The following code was generated by JFlex 1.5.1 */ package org.jetbrains.haskell.parser.lexer; @@ -11,17 +11,16 @@ /** * This class is a scanner generated by - * JFlex 1.4.3 - * on 6/5/14 11:58 AM from the specification file - * plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex + * JFlex 1.5.1 + * from the specification file /Users/atsky/Dropbox/haskell-idea-plugin/plugin/src/org/jetbrains/haskell/parser/lexer/Haskell.flex */ class _HaskellLexer implements FlexLexer { /** initial size of the lookahead buffer */ private static final int ZZ_BUFFERSIZE = 16384; /** lexical states */ - public static final int BLOCK_COMMENT = 2; public static final int YYINITIAL = 0; + public static final int BLOCK_COMMENT = 2; public static final int TEX = 4; /** @@ -38,100 +37,172 @@ class _HaskellLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\3\0\1\4\1\0\1\1\3\0\1\0\1\2\1\0\1\1\1\1"+ - "\22\0\1\1\1\54\1\10\1\71\1\16\2\0\1\15\1\40\1\41"+ - "\1\0\1\0\1\44\1\21\1\43\1\0\1\72\7\11\2\3\1\14"+ - "\1\42\1\47\1\45\1\50\1\0\1\52\6\12\10\5\1\73\10\5"+ - "\1\74\2\5\1\36\1\22\1\37\1\0\1\7\1\0\1\20\1\24"+ - "\1\32\1\34\1\25\1\13\1\26\1\64\1\27\2\6\1\56\1\17"+ - "\1\30\1\33\1\63\1\70\1\61\1\55\1\57\1\60\1\62\1\66"+ - "\1\23\1\67\1\6\1\31\1\46\1\35\1\53\53\0\1\6\12\0"+ - "\1\6\4\0\1\6\5\0\27\5\1\0\7\5\30\6\1\0\10\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\2\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\2\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\2\5\1\6"+ - "\1\5\1\6\1\5\3\6\2\5\1\6\1\5\1\6\2\5\1\6"+ - "\3\5\2\6\4\5\1\6\2\5\1\6\3\5\3\6\2\5\1\6"+ - "\2\5\1\6\1\5\1\6\1\5\1\6\2\5\1\6\1\5\2\6"+ - "\1\5\1\6\2\5\1\6\3\5\1\6\1\5\1\6\2\5\2\6"+ - "\1\0\1\5\3\6\4\0\1\5\1\0\1\6\1\5\1\0\1\6"+ - "\1\5\1\0\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\2\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\2\6\1\5\1\0\1\6"+ - "\1\5\1\6\3\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\4\6\31\0\140\6\326\0\1\5\1\0\3\5\1\0\1\5"+ - "\1\0\2\5\1\6\21\5\1\0\11\5\43\6\1\0\2\6\3\5"+ - "\3\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\5\6\1\5\1\6\1\0\1\5\1\6"+ - "\2\5\1\6\4\0\60\5\60\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\10\0"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\2\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\0\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\2\0\1\5\1\6"+ - "\6\0\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\41\0\46\5\12\0"+ - "\47\6\u0b18\0\46\5\u0c3a\0\54\6\66\0\12\6\224\0\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"+ - "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\7\6\4\0\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"+ - "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\6\0"+ - "\10\6\10\5\6\6\2\0\6\5\2\0\10\6\10\5\10\6\10\5"+ - "\6\6\2\0\6\5\2\0\10\6\1\0\1\5\1\0\1\5\1\0"+ - "\1\5\1\0\1\5\10\6\10\5\16\6\2\0\10\6\10\0\10\6"+ - "\10\0\10\6\10\0\5\6\1\0\2\6\4\5\2\0\1\6\3\0"+ - "\3\6\1\0\2\6\4\5\4\0\4\6\2\0\2\6\4\5\4\0"+ - "\10\6\5\5\5\0\3\6\1\0\2\6\4\5\165\0\1\6\15\0"+ - "\1\6\202\0\1\5\4\0\1\5\2\0\1\6\3\5\2\6\3\5"+ - "\1\6\1\0\1\5\3\0\5\5\6\0\1\5\1\0\1\5\1\0"+ - "\1\5\1\0\4\5\1\0\1\6\2\5\1\0\1\5\1\6\4\0"+ - "\1\6\3\0\1\6\2\5\5\0\1\5\4\6\110\0\1\51\155\0"+ - "\1\65\ud8ff\0\7\6\14\0\5\6\u0409\0\32\5\6\0\32\6\245\0"; + "\3\0\1\5\1\0\1\1\3\0\1\0\1\3\1\27\1\2\1\2"+ + "\22\0\1\1\1\61\1\7\1\75\1\22\2\6\1\21\1\45\1\46"+ + "\1\6\1\6\1\51\1\25\1\50\1\6\1\76\7\16\2\4\1\15"+ + "\1\47\1\54\1\52\1\55\1\6\1\57\6\17\10\10\1\77\10\10"+ + "\1\100\2\10\1\43\1\26\1\44\1\6\1\14\1\0\1\24\1\31"+ + "\1\37\1\41\1\32\1\20\1\33\1\71\1\34\2\12\1\63\1\23"+ + "\1\35\1\40\1\70\1\74\1\66\1\62\1\64\1\65\1\67\1\72"+ + "\1\30\1\73\1\12\1\36\1\53\1\42\1\60\6\0\1\27\33\0"+ + "\11\6\1\12\2\6\1\0\4\6\2\0\1\6\1\12\3\6\1\0"+ + "\1\12\1\6\3\0\1\6\27\10\1\6\7\10\30\12\1\6\10\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\2\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\2\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\2\10\1\12"+ + "\1\10\1\12\1\10\3\12\2\10\1\12\1\10\1\12\2\10\1\12"+ + "\3\10\2\12\4\10\1\12\2\10\1\12\3\10\3\12\2\10\1\12"+ + "\2\10\1\12\1\10\1\12\1\10\1\12\2\10\1\12\1\10\2\12"+ + "\1\10\1\12\2\10\1\12\3\10\1\12\1\10\1\12\2\10\2\12"+ + "\1\0\1\10\3\12\4\0\1\10\1\0\1\12\1\10\1\0\1\12"+ + "\1\10\1\0\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\2\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\2\12\1\10\1\0\1\12"+ + "\1\10\1\12\3\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\7\12\2\10\1\12\2\10\2\12\1\10\1\12\4\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\105\12\1\0\44\12"+ + "\7\0\2\12\4\6\14\0\16\6\5\12\7\6\1\0\1\6\1\0"+ + "\21\6\105\0\1\12\52\0\1\10\1\12\1\10\1\12\1\0\1\6"+ + "\1\10\1\12\2\0\4\12\1\6\5\0\2\6\1\10\1\6\3\10"+ + "\1\0\1\10\1\0\2\10\1\12\21\10\1\0\11\10\43\12\1\10"+ + "\2\12\3\10\3\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\5\12\1\10\1\12\1\6"+ + "\1\10\1\12\2\10\2\12\63\10\60\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\6\7\0\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\2\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\2\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\11\0\46\10"+ + "\3\0\6\6\1\0\47\12\1\0\2\6\4\0\1\6\56\0\1\6"+ + "\1\0\1\6\2\0\1\6\2\0\1\6\54\0\2\6\21\0\12\6"+ + "\13\0\1\6\2\0\2\6\112\0\4\6\146\0\1\6\11\0\1\6"+ + "\12\0\1\6\23\0\2\6\1\0\16\6\350\0\4\6\66\0\17\6"+ + "\37\0\1\6\u0105\0\2\6\12\0\1\6\201\0\2\6\6\0\2\6"+ + "\364\0\2\6\176\0\1\6\202\0\10\6\204\0\1\6\371\0\1\6"+ + "\172\0\1\6\112\0\1\6\17\0\1\6\12\0\2\6\245\0\27\6"+ + "\2\0\6\6\24\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6"+ + "\107\0\1\6\70\0\10\6\1\0\6\6\1\0\15\6\157\0\6\6"+ + "\116\0\2\6\46\10\1\0\1\10\5\0\1\10\55\0\1\6\u0264\0"+ + "\11\6\47\0\12\6\146\0\1\6\u026c\0\2\6\54\0\2\6\116\0"+ + "\3\6\107\0\2\6\235\0\3\6\1\0\4\6\44\0\13\6\u0135\0"+ + "\1\6\3\0\2\6\230\0\42\6\36\0\2\6\200\0\7\6\1\0"+ + "\6\6\254\0\21\6\11\0\11\6\177\0\4\6\73\0\5\6\76\0"+ + "\2\6\100\0\10\6\13\0\1\6\54\0\300\12\100\0\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\11\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\11\12\10\10\6\12\2\0\6\10"+ + "\2\0\10\12\10\10\10\12\10\10\6\12\2\0\6\10\2\0\10\12"+ + "\1\0\1\10\1\0\1\10\1\0\1\10\1\0\1\10\10\12\10\10"+ + "\16\12\2\0\10\12\10\0\10\12\10\0\10\12\10\0\5\12\1\0"+ + "\2\12\4\10\1\0\1\6\1\12\3\6\3\12\1\0\2\12\4\10"+ + "\1\0\3\6\4\12\2\0\2\12\4\10\1\0\3\6\10\12\5\10"+ + "\3\6\2\0\3\12\1\0\2\12\4\10\1\0\2\6\21\0\30\6"+ + "\1\27\1\27\6\0\57\6\22\0\1\12\10\0\5\6\1\12\12\0"+ + "\5\6\1\0\15\12\3\0\33\6\105\0\2\6\1\10\4\6\1\10"+ + "\2\6\1\12\3\10\2\12\3\10\1\12\1\6\1\10\3\6\5\10"+ + "\6\6\1\10\1\6\1\10\1\6\1\10\1\6\4\10\1\6\1\12"+ + "\4\10\1\12\4\0\1\12\2\6\2\12\2\10\5\6\1\10\4\12"+ + "\4\6\1\12\1\6\20\0\20\10\20\12\3\0\1\10\1\12\13\0"+ + "\2\6\1\56\155\6\1\6\u01f3\6\14\0\47\6\31\0\13\6\121\0"+ + "\32\6\32\11\32\13\26\0\u0200\6\1\0\165\6\36\0\u03b9\6\3\0"+ + "\12\6\246\0\57\10\1\0\57\12\1\0\1\10\1\12\3\10\2\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\4\10\1\12\1\10\2\12"+ + "\1\10\10\12\3\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\2\12\6\6\1\10\1\12\1\10\1\12\3\0\1\10\1\12"+ + "\5\0\4\6\1\0\2\6\46\12\1\0\1\12\5\0\1\12\102\0"+ + "\1\6\217\0\57\6\1\0\14\6\104\0\32\6\1\0\131\6\14\0"+ + "\326\6\32\0\14\6\5\0\4\6\3\0\31\6\17\0\1\6\5\0"+ + "\2\6\5\0\3\6\133\0\2\6\3\0\1\6\132\0\1\6\224\0"+ + "\2\6\4\0\12\6\40\0\44\6\34\0\37\6\13\0\36\6\10\0"+ + "\1\6\17\0\40\6\12\0\47\6\17\0\77\6\1\0\u0100\6\u19c0\0"+ + "\100\6\u5690\0\67\6\67\0\2\6\u010d\0\3\6\60\0\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12"+ + "\1\10\1\12\1\10\1\12\5\0\1\6\12\0\1\6\1\0\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\132\0\6\6\10\0\27\6\11\0\2\6\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\3\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\1\12\1\10\12\12\1\10\1\12\1\10\1\12\2\10"+ + "\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\0"+ + "\2\6\1\10\1\12\1\10\1\12\1\0\1\10\1\12\1\10\1\12"+ + "\14\0\1\10\1\12\1\10\1\12\1\10\1\12\1\10\1\12\1\10"+ + "\1\12\1\10\115\0\3\12\55\0\4\6\12\0\4\6\72\0\4\6"+ + "\126\0\2\6\50\0\3\6\63\0\2\6\57\0\1\6\141\0\15\6"+ + "\20\0\2\6\174\0\4\6\27\0\3\6\144\0\2\6\20\0\2\6"+ + "\371\0\1\6\u4f14\0\7\12\14\0\5\12\21\0\1\6\210\0\20\6"+ + "\u017c\0\2\6\274\0\2\6\22\0\12\6\26\0\43\6\1\0\23\6"+ + "\1\0\4\6\225\0\17\6\12\0\7\6\32\10\6\6\32\12\13\6"+ + "\172\0\7\6\1\0\7\6\15\0\2\6\2\0"; /** * Translates characters to character classes @@ -144,27 +215,27 @@ class _HaskellLexer implements FlexLexer { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\2\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+ - "\1\10\1\2\1\7\1\11\1\12\1\13\2\7\1\2"+ - "\1\14\3\7\1\15\3\7\1\16\1\17\1\20\1\21"+ - "\1\22\1\23\1\24\1\25\1\26\1\27\1\2\1\30"+ - "\1\31\1\32\1\33\5\7\1\34\2\7\1\5\3\35"+ - "\2\1\1\0\1\36\1\0\1\7\1\37\1\0\1\40"+ - "\1\0\1\7\1\41\1\42\1\0\2\7\1\43\1\7"+ - "\1\44\1\7\1\45\2\7\1\46\2\7\1\47\1\50"+ - "\1\51\1\52\10\7\2\5\1\53\1\54\1\1\1\0"+ - "\1\7\2\55\1\0\1\7\1\0\6\7\1\0\6\7"+ - "\1\56\6\7\1\0\3\7\1\0\1\7\1\57\4\7"+ - "\1\0\1\60\1\7\1\61\2\7\1\62\1\63\1\64"+ - "\4\7\1\0\3\7\1\0\2\7\1\65\2\7\1\0"+ - "\1\66\4\7\1\67\1\7\1\0\1\34\1\7\1\70"+ - "\1\0\1\71\1\72\1\73\1\74\2\7\1\75\2\7"+ - "\1\76\1\77\1\7\1\0\1\100\1\0\1\7\1\101"+ - "\1\102\2\7\2\0\1\103\1\104\1\7\2\0\1\105"+ - "\1\0\1\106\2\0\1\107"; + "\2\0\1\1\1\2\1\3\1\4\1\5\1\6\1\2"+ + "\1\7\1\6\1\10\1\6\1\11\1\12\1\10\1\13"+ + "\1\14\2\10\1\6\1\15\3\10\1\16\3\10\1\17"+ + "\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+ + "\1\30\1\6\1\31\1\32\1\33\1\34\7\10\1\5"+ + "\3\35\2\1\1\0\1\36\1\0\1\37\1\40\1\10"+ + "\1\0\1\41\1\0\1\10\1\42\1\43\1\0\2\10"+ + "\1\44\1\10\1\45\1\10\1\46\2\10\1\47\2\10"+ + "\1\50\1\51\1\52\1\53\10\10\2\5\1\54\1\55"+ + "\1\1\1\0\1\10\2\56\1\0\1\10\1\0\6\10"+ + "\1\0\6\10\1\57\6\10\1\0\3\10\1\0\1\10"+ + "\1\60\4\10\1\0\1\61\1\10\1\62\2\10\1\63"+ + "\1\64\1\65\4\10\1\0\3\10\1\0\2\10\1\66"+ + "\2\10\1\0\1\67\4\10\1\70\1\10\1\0\1\71"+ + "\1\10\1\72\1\0\1\73\1\74\1\75\1\76\2\10"+ + "\1\77\2\10\1\100\1\101\1\10\1\0\1\102\1\0"+ + "\1\10\1\103\1\104\2\10\2\0\1\105\1\106\1\10"+ + "\2\0\1\107\1\0\1\110\2\0\1\111"; private static int [] zzUnpackAction() { - int [] result = new int[203]; + int [] result = new int[206]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -189,35 +260,35 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\75\0\172\0\267\0\364\0\u0131\0\u016e\0\u01ab"+ - "\0\u01e8\0\u01e8\0\u0225\0\u0262\0\u029f\0\u02dc\0\267\0\u0319"+ - "\0\u0356\0\u0393\0\u03d0\0\u040d\0\u044a\0\u0487\0\u04c4\0\u0501"+ - "\0\u053e\0\u057b\0\267\0\267\0\267\0\267\0\267\0\267"+ - "\0\u05b8\0\267\0\u05f5\0\267\0\u0632\0\267\0\267\0\267"+ - "\0\267\0\u066f\0\u06ac\0\u06e9\0\u0726\0\u0763\0\267\0\u07a0"+ - "\0\u07dd\0\u081a\0\267\0\u0857\0\u0894\0\u08d1\0\u090e\0\u0225"+ - "\0\267\0\u094b\0\u0988\0\267\0\u09c5\0\267\0\u0a02\0\u0a3f"+ - "\0\u01e8\0\u0a7c\0\u0ab9\0\u0af6\0\u0b33\0\u01e8\0\u0b70\0\u0bad"+ - "\0\u0bea\0\u0c27\0\u0c64\0\u0ca1\0\u01e8\0\u0cde\0\u0d1b\0\u01e8"+ - "\0\267\0\267\0\267\0\u0d58\0\u0d95\0\u0dd2\0\u0e0f\0\u0e4c"+ - "\0\u0e89\0\u0ec6\0\u0f03\0\u0f40\0\u0f7d\0\267\0\267\0\u0fba"+ - "\0\u0ff7\0\u1034\0\267\0\u09c5\0\u1071\0\u10ae\0\u10eb\0\u1128"+ - "\0\u1165\0\u11a2\0\u11df\0\u121c\0\u1259\0\u1296\0\u12d3\0\u1310"+ - "\0\u134d\0\u138a\0\u13c7\0\u1404\0\u01e8\0\u1441\0\u147e\0\u14bb"+ - "\0\u14f8\0\u1535\0\u1572\0\u15af\0\u15ec\0\u1629\0\u1666\0\u16a3"+ - "\0\u16e0\0\u01e8\0\u171d\0\u175a\0\u1797\0\u17d4\0\u1811\0\u01e8"+ - "\0\u184e\0\u01e8\0\u188b\0\u18c8\0\u01e8\0\u01e8\0\u01e8\0\u1905"+ - "\0\u1942\0\u197f\0\u19bc\0\u19f9\0\u1a36\0\u1a73\0\u1ab0\0\u1aed"+ - "\0\u1b2a\0\u1b67\0\u1ba4\0\u1be1\0\u1c1e\0\u1c5b\0\u01e8\0\u1c98"+ - "\0\u1cd5\0\u1d12\0\u1d4f\0\u01e8\0\u1d8c\0\u1dc9\0\u01e8\0\u1e06"+ - "\0\u01e8\0\u1e43\0\u01e8\0\u01e8\0\u01e8\0\u01e8\0\u1e80\0\u1ebd"+ - "\0\u1296\0\u1efa\0\u1f37\0\u01e8\0\u01e8\0\u1f74\0\u1fb1\0\u01e8"+ - "\0\u1fee\0\u202b\0\u01e8\0\u01e8\0\u2068\0\u20a5\0\u20e2\0\u211f"+ - "\0\u01e8\0\u01e8\0\u215c\0\u2199\0\u21d6\0\u01e8\0\u2213\0\267"+ - "\0\u2250\0\u228d\0\267"; + "\0\0\0\101\0\202\0\303\0\u0104\0\u0145\0\u0186\0\u01c7"+ + "\0\u0208\0\u0249\0\u028a\0\u02cb\0\u030c\0\u02cb\0\u034d\0\u038e"+ + "\0\u03cf\0\u01c7\0\u0410\0\u0451\0\u0492\0\u04d3\0\u0514\0\u0555"+ + "\0\u0596\0\u05d7\0\u0618\0\u0659\0\u069a\0\303\0\303\0\303"+ + "\0\303\0\303\0\303\0\u06db\0\303\0\u071c\0\u01c7\0\u075d"+ + "\0\u01c7\0\u01c7\0\u01c7\0\u01c7\0\u079e\0\u07df\0\u0820\0\u0861"+ + "\0\u08a2\0\u08e3\0\u0924\0\u0965\0\303\0\u09a6\0\u09e7\0\u0a28"+ + "\0\u0a69\0\u0208\0\303\0\u0aaa\0\u0aeb\0\u0aeb\0\u0b2c\0\u0b6d"+ + "\0\303\0\u0bae\0\u0bef\0\u02cb\0\u0c30\0\u0c71\0\u0cb2\0\u0cf3"+ + "\0\u02cb\0\u0d34\0\u0d75\0\u0db6\0\u0df7\0\u0e38\0\u0e79\0\u02cb"+ + "\0\u0eba\0\u0efb\0\u02cb\0\u01c7\0\u01c7\0\u01c7\0\u0f3c\0\u0f7d"+ + "\0\u0fbe\0\u0fff\0\u1040\0\u1081\0\u10c2\0\u1103\0\u1144\0\u1185"+ + "\0\303\0\303\0\u11c6\0\u1207\0\u1248\0\303\0\u0b6d\0\u1289"+ + "\0\u12ca\0\u130b\0\u134c\0\u138d\0\u13ce\0\u140f\0\u1450\0\u1491"+ + "\0\u14d2\0\u1513\0\u1554\0\u1595\0\u15d6\0\u1617\0\u1658\0\u02cb"+ + "\0\u1699\0\u16da\0\u171b\0\u175c\0\u179d\0\u17de\0\u181f\0\u1860"+ + "\0\u18a1\0\u18e2\0\u1923\0\u1964\0\u02cb\0\u19a5\0\u19e6\0\u1a27"+ + "\0\u1a68\0\u1aa9\0\u02cb\0\u1aea\0\u02cb\0\u1b2b\0\u1b6c\0\u02cb"+ + "\0\u02cb\0\u02cb\0\u1bad\0\u1bee\0\u1c2f\0\u1c70\0\u1cb1\0\u1cf2"+ + "\0\u1d33\0\u1d74\0\u1db5\0\u1df6\0\u1e37\0\u1e78\0\u1eb9\0\u1efa"+ + "\0\u1f3b\0\u02cb\0\u1f7c\0\u1fbd\0\u1ffe\0\u203f\0\u02cb\0\u2080"+ + "\0\u20c1\0\u02cb\0\u2102\0\u02cb\0\u2143\0\u02cb\0\u02cb\0\u02cb"+ + "\0\u02cb\0\u2184\0\u21c5\0\u14d2\0\u2206\0\u2247\0\u02cb\0\u02cb"+ + "\0\u2288\0\u22c9\0\u02cb\0\u230a\0\u234b\0\u02cb\0\u02cb\0\u238c"+ + "\0\u23cd\0\u240e\0\u244f\0\u02cb\0\u02cb\0\u2490\0\u24d1\0\u2512"+ + "\0\u02cb\0\u2553\0\303\0\u2594\0\u25d5\0\303"; private static int [] zzUnpackRowMap() { - int [] result = new int[203]; + int [] result = new int[206]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -240,273 +311,275 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\4\1\5\1\6\2\7\1\10\1\11\1\12\1\13"+ - "\1\7\1\10\1\14\1\15\1\16\1\17\1\20\1\21"+ - "\1\22\1\23\2\11\1\24\1\11\1\25\1\26\1\27"+ - "\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37"+ - "\1\40\1\41\1\42\1\43\1\44\1\45\1\4\1\46"+ - "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\3\11"+ - "\1\56\1\57\1\60\1\11\1\61\1\4\1\62\2\10"+ - "\21\63\1\64\7\63\1\65\43\63\22\66\1\67\52\66"+ - "\76\0\1\5\74\0\1\6\76\0\2\7\4\0\1\7"+ - "\60\0\1\7\5\0\5\10\1\0\3\10\1\0\1\10"+ - "\1\0\2\10\2\0\6\10\1\0\3\10\20\0\10\10"+ - "\1\0\3\10\1\0\3\10\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\10\70\1\71"+ - "\11\70\1\72\52\70\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\1\11\1\73"+ - "\1\11\20\0\10\11\1\0\3\11\1\0\3\11\14\0"+ - "\1\74\60\0\15\75\1\76\4\75\1\77\52\75\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\1\11\1\100\1\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\1\101\7\11\1\0\3\11\1\0\3\11\21\0\1\102"+ - "\26\0\1\46\51\0\1\103\52\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\1\104\5\11\1\0"+ - "\3\11\20\0\1\11\1\105\6\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\2\11\1\106\1\0\1\11"+ - "\1\0\1\107\1\11\2\0\5\11\1\110\1\0\3\11"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\3\0\5\11"+ - "\1\0\3\11\1\0\1\11\1\0\2\11\2\0\2\11"+ - "\1\111\3\11\1\0\3\11\20\0\10\11\1\0\3\11"+ - "\1\0\3\11\21\0\1\112\56\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\1\11\1\113\2\0\6\11\1\0"+ - "\3\11\20\0\1\11\1\114\6\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\2\11\1\115\1\0\1\11"+ - "\1\0\2\11\2\0\6\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\1\11\1\116\2\0\2\11\1\117"+ - "\3\11\1\0\1\11\1\120\1\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\43\0\1\121\101\0\1\122\45\0"+ - "\1\123\56\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\1\11\1\124\2\0\6\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\2\11\1\125\3\11"+ - "\1\0\3\11\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\6\11\1\0\3\11\20\0\7\11\1\126\1\0"+ - "\1\11\1\127\1\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\5\11\1\130"+ - "\1\0\3\11\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\4\11\1\131\1\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\7\11\1\132\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\3\11\1\133\4\11\1\0"+ - "\3\11\1\0\3\11\3\0\2\7\4\0\1\7\11\0"+ - "\1\134\7\0\1\135\36\0\1\7\1\135\1\134\35\0"+ - "\1\136\60\0\1\137\53\0\22\66\1\0\52\66\22\0"+ - "\1\140\1\0\1\141\50\0\2\70\1\0\72\70\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\4\11\1\142\3\11\1\0"+ - "\3\11\1\0\3\11\15\0\1\143\57\0\2\75\1\0"+ - "\12\75\1\144\5\75\1\145\51\75\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\2\11\1\146\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\2\102\1\0\72\102\30\0\1\147\47\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\3\11\20\0\6\11\1\150\1\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\1\151\7\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\6\11\1\152\1\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\2\11\1\153\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\1\154\7\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\10\11\1\0\1\155\2\11\1\0\3\11\71\0"+ - "\1\156\6\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\1\157\7\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\1\11\1\160\2\0\6\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\2\11\1\161\5\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\2\11\1\162"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\4\11\1\163\3\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\2\11\1\164\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\2\11\1\165\5\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\2\11\1\166\3\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\6\11\1\167\1\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\1\170\7\11\1\0\3\11"+ - "\1\0\3\11\3\0\5\11\1\0\3\11\1\0\1\11"+ - "\1\0\2\11\2\0\6\11\1\0\2\11\1\171\20\0"+ - "\10\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\2\11\1\172"+ - "\3\11\1\0\3\11\20\0\10\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\1\11\1\173\2\0\6\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\1\134\5\0\3\134"+ - "\4\0\1\134\3\0\2\134\4\0\1\134\1\0\1\134"+ - "\35\0\1\134\13\0\1\135\60\0\1\135\24\0\1\140"+ - "\77\0\1\174\52\0\5\11\1\0\3\11\1\0\1\11"+ - "\1\0\1\11\1\175\2\0\2\11\1\176\3\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\1\145\5\0\1\145\3\0\1\143\54\0\1\145\5\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\3\11\1\177\4\11\1\0"+ - "\3\11\1\0\3\11\34\0\1\200\43\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\1\11\1\201\1\11\20\0\10\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\2\11\1\202\3\11\1\0\3\11\20\0"+ - "\10\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\1\11\1\203\1\11\20\0\10\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\4\11\1\204\1\11\1\0\3\11\20\0"+ - "\10\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\3\11\20\0\2\11\1\205\5\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\2\11\1\206"+ - "\5\11\1\0\3\11\1\0\3\11\2\156\1\0\66\156"+ - "\1\207\3\156\3\0\5\11\1\0\3\11\1\0\1\11"+ - "\1\0\2\11\2\0\2\11\1\210\3\11\1\0\3\11"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\3\0\5\11"+ - "\1\0\3\11\1\0\1\11\1\0\2\11\2\0\6\11"+ - "\1\0\3\11\20\0\1\211\7\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\1\11\1\212\2\0\6\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\1\11\1\213\2\0\6\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\4\11\1\214\1\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\2\11\1\215\3\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\5\11\1\216\1\0\3\11\20\0\10\11\1\0\3\11"+ - "\1\0\3\11\3\0\5\11\1\0\3\11\1\0\1\11"+ - "\1\0\2\11\2\0\2\11\1\217\3\11\1\0\3\11"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\3\0\5\11"+ - "\1\0\3\11\1\0\1\11\1\0\1\11\1\220\2\0"+ - "\6\11\1\0\3\11\20\0\10\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\4\11\1\221\1\11\1\0\3\11\20\0"+ - "\10\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\3\11\20\0\4\11\1\222\3\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\1\11\1\223"+ - "\6\11\1\0\3\11\1\0\3\11\26\0\1\224\51\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\1\11\1\225\6\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\4\11\1\226\1\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\1\11\1\227\6\11\1\0"+ - "\3\11\1\0\3\11\31\0\1\230\46\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\3\11\20\0\4\11\1\231\3\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\4\11\1\232"+ - "\3\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\1\233\5\11"+ - "\1\0\3\11\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\1\11"+ - "\1\234\2\0\6\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\10\11\1\0\1\11\1\235\1\11\1\0\3\11\2\156"+ - "\1\0\16\156\1\236\47\156\1\207\3\156\3\0\5\11"+ - "\1\0\3\11\1\0\1\11\1\0\2\11\2\0\6\11"+ - "\1\0\3\11\20\0\1\237\7\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\3\11\1\240"+ - "\4\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\3\11\20\0\5\11\1\241\2\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\2\11\1\242\1\0\1\11"+ - "\1\0\2\11\2\0\6\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\5\11\1\243\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\2\11\1\244\3\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\4\11\1\245\1\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\27\0"+ - "\1\246\50\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\6\11\1\0\3\11\20\0\1\11\1\247"+ - "\6\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\3\11\1\250"+ - "\2\11\1\0\3\11\20\0\10\11\1\0\3\11\1\0"+ - "\3\11\3\0\5\11\1\0\3\11\1\0\1\11\1\0"+ - "\2\11\2\0\2\11\1\251\3\11\1\0\3\11\20\0"+ - "\10\11\1\0\3\11\1\0\3\11\32\0\1\252\45\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\2\11\1\253\5\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\2\11\1\254\5\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\6\11\1\0\3\11\20\0\1\11\1\255\2\11\1\256"+ - "\3\11\1\0\3\11\1\0\3\11\3\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\5\11\1\257"+ - "\1\0\3\11\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\6\11\1\0\3\11\20\0\6\11\1\260\1\11"+ - "\1\0\3\11\1\0\3\11\2\156\1\0\32\156\1\261"+ - "\33\156\1\207\3\156\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\3\11\20\0"+ - "\1\11\1\262\6\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\4\11\1\263\1\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\2\11\1\264\3\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\3\11\1\265\2\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\2\11\1\266"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\30\0\1\267"+ - "\47\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\5\11\1\270\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\33\0\1\271\44\0\5\11\1\0"+ - "\3\11\1\0\1\11\1\0\2\11\2\0\6\11\1\0"+ - "\1\272\2\11\20\0\10\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\2\11\1\273\3\11\1\0\3\11\20\0\10\11"+ - "\1\0\3\11\1\0\3\11\3\0\5\11\1\0\3\11"+ - "\1\0\1\11\1\0\2\11\2\0\6\11\1\0\3\11"+ - "\20\0\2\11\1\274\5\11\1\0\3\11\1\0\3\11"+ - "\3\0\5\11\1\0\3\11\1\0\1\11\1\0\2\11"+ - "\2\0\5\11\1\275\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\4\11\1\276\1\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\31\0"+ - "\1\277\77\0\1\300\43\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\2\11\1\301\3\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\3\0"+ - "\5\11\1\0\3\11\1\0\1\11\1\0\2\11\2\0"+ - "\3\11\1\302\2\11\1\0\3\11\20\0\10\11\1\0"+ - "\3\11\1\0\3\11\3\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\2\11\1\303\3\11\1\0"+ - "\3\11\20\0\10\11\1\0\3\11\1\0\3\11\32\0"+ - "\1\304\67\0\1\305\52\0\5\11\1\0\3\11\1\0"+ - "\1\11\1\0\2\11\2\0\6\11\1\0\2\11\1\306"+ - "\20\0\10\11\1\0\3\11\1\0\3\11\33\0\1\307"+ - "\76\0\1\310\73\0\1\311\65\0\1\312\104\0\1\313"+ - "\37\0"; + "\1\4\2\5\1\6\2\7\1\10\1\11\1\12\1\13"+ + "\1\14\1\15\1\16\1\17\1\7\1\12\1\20\1\21"+ + "\1\22\1\23\1\24\1\25\1\26\1\0\2\14\1\27"+ + "\1\14\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+ + "\1\47\1\50\1\10\1\51\1\52\1\53\1\54\1\55"+ + "\1\56\1\57\1\60\3\14\1\61\1\62\1\14\1\63"+ + "\1\10\1\64\2\12\25\65\1\66\1\65\1\0\6\65"+ + "\1\67\42\65\26\70\1\71\52\70\102\0\2\5\77\0"+ + "\2\6\102\0\2\7\10\0\1\7\57\0\1\7\10\0"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\1\10\4\0"+ + "\1\10\2\0\2\10\21\0\1\10\1\0\10\10\13\0"+ + "\1\10\3\0\7\72\1\73\16\72\1\74\52\72\4\0"+ + "\2\12\2\0\5\12\1\0\4\12\1\0\2\12\3\0"+ + "\6\12\1\0\3\12\20\0\13\12\1\0\3\12\4\0"+ + "\2\12\1\10\1\0\1\12\1\13\1\12\1\13\1\12"+ + "\1\10\4\12\1\10\2\12\2\10\1\0\6\12\1\0"+ + "\3\12\6\0\1\10\1\0\10\10\13\12\1\10\3\12"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\4\0\2\14\1\10\1\0\1\14\1\15\1\14\1\15"+ + "\1\14\1\10\4\14\1\10\2\14\2\10\1\0\6\14"+ + "\1\0\3\14\6\0\1\10\1\0\10\10\13\14\1\10"+ + "\3\14\6\0\1\75\2\0\1\75\1\0\1\75\1\0"+ + "\1\76\4\0\1\75\2\0\2\75\21\0\1\75\1\0"+ + "\10\75\13\0\1\75\7\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\1\14\1\77"+ + "\1\14\20\0\13\14\1\0\3\14\21\100\1\101\4\100"+ + "\1\102\52\100\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\6\14\1\0\1\14\1\103\1\14"+ + "\20\0\13\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\6\14\1\0\3\14"+ + "\20\0\1\104\12\14\1\0\3\14\6\0\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\1\10\4\0\1\10\2\0"+ + "\1\105\1\10\21\0\1\10\1\0\3\10\1\51\4\10"+ + "\13\0\1\10\11\0\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\1\10\4\0\1\10\2\0\2\10\3\0\1\106"+ + "\15\0\1\10\1\0\10\10\13\0\1\10\7\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\1\107"+ + "\5\14\1\0\3\14\20\0\1\14\1\110\11\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\2\14\1\111"+ + "\1\14\1\0\1\112\1\14\3\0\5\14\1\113\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\114"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\25\0"+ + "\1\115\57\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\1\14\1\116\3\0\6\14\1\0\3\14\20\0\1\14"+ + "\1\117\11\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\2\14\1\120\1\14\1\0\2\14\3\0\6\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\1\14\1\121\3\0"+ + "\2\14\1\122\3\14\1\0\1\14\1\123\1\14\20\0"+ + "\13\14\1\0\3\14\6\0\1\10\2\0\1\10\1\0"+ + "\1\10\1\0\1\10\4\0\1\10\2\0\2\10\21\0"+ + "\1\124\1\0\10\10\13\0\1\10\11\0\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\1\10\4\0\1\10\2\0"+ + "\2\10\21\0\1\10\1\0\3\10\1\125\4\10\13\0"+ + "\1\10\11\0\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\1\10\4\0\1\10\2\0\1\126\1\10\21\0\1\10"+ + "\1\0\10\10\13\0\1\10\7\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\1\14\1\127\3\0\6\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\130"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\7\14\1\131\1\14\1\132"+ + "\1\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\5\14\1\133\1\0\3\14"+ + "\20\0\13\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\4\14\1\134\1\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\6\14"+ + "\1\0\3\14\20\0\7\14\1\135\3\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\3\14\1\136\7\14"+ + "\1\0\3\14\4\0\2\7\10\0\1\7\11\0\1\137"+ + "\7\0\1\140\35\0\1\7\1\140\1\137\42\0\1\141"+ + "\63\0\1\142\53\0\26\70\1\0\52\70\26\0\1\143"+ + "\2\0\1\144\47\0\2\72\2\0\23\72\1\0\51\72"+ + "\6\0\1\75\2\0\1\75\1\0\1\75\1\0\1\75"+ + "\4\0\1\75\2\0\2\75\21\0\1\75\1\0\10\75"+ + "\13\0\1\75\7\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\6\14\1\0\3\14\20\0\4\14"+ + "\1\145\6\14\1\0\3\14\21\0\1\146\57\0\2\100"+ + "\2\0\15\100\1\147\5\100\1\0\1\150\50\100\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\2\14\1\151\20\0\13\14\1\0\3\14"+ + "\3\105\1\0\75\105\35\0\1\152\47\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\6\14\1\153\4\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\1\154\12\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\6\14\1\155\4\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\2\14"+ + "\1\156\1\14\1\0\2\14\3\0\6\14\1\0\3\14"+ + "\20\0\1\157\12\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\10\14\1\160\2\14\1\0\3\14\75\0"+ + "\1\161\7\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\2\14\3\0\6\14\1\0\3\14\20\0\1\162\12\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\1\14\1\163\3\0\6\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\2\14\1\164\10\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\2\14\1\165\1\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\4\14\1\166\6\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\2\14\1\167"+ + "\1\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\2\14\1\170\10\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\171"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\6\14\1\172\4\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\2\14\3\0\6\14\1\0\3\14\20\0\1\173\12\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\6\14\1\0\2\14\1\174\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\2\14\1\175\3\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\1\14\1\176\3\0\6\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\1\137"+ + "\11\0\3\137\3\0\1\137\4\0\2\137\4\0\1\137"+ + "\1\0\1\137\34\0\1\137\20\0\1\140\57\0\1\140"+ + "\30\0\1\143\104\0\1\177\52\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\1\14\1\200\3\0\2\14\1\201"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\1\150\11\0\1\150\2\0\1\146\54\0\1\150\6\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\3\14\1\202\7\14\1\0"+ + "\3\14\41\0\1\203\43\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\1\14\1\204"+ + "\1\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\205"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\1\14\1\206\1\14\20\0\13\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\2\14\3\0\4\14\1\207\1\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\2\14\1\210\10\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\2\14\1\211\10\14\1\0\3\14\2\161"+ + "\2\0\23\161\1\0\45\161\1\212\3\161\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\2\14"+ + "\1\213\3\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\1\214\12\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\1\14\1\215\3\0\6\14\1\0\3\14\20\0\13\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\1\14\1\216\3\0\6\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\4\14\1\217\1\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\220"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\5\14\1\221\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\2\14\1\222\3\14\1\0\3\14\20\0\13\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\1\14\1\223\3\0\6\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\4\14\1\224\1\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\4\14\1\225\6\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\1\14\1\226\11\14\1\0"+ + "\3\14\33\0\1\227\51\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\1\14\1\230\11\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\4\14\1\231"+ + "\1\14\1\0\3\14\20\0\13\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\1\14\1\232\11\14\1\0"+ + "\3\14\36\0\1\233\46\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\4\14\1\234\6\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\4\14\1\235\6\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\1\236\5\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\1\14"+ + "\1\237\3\0\6\14\1\0\3\14\20\0\13\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\2\14\3\0\6\14\1\0\3\14\20\0\11\14\1\240"+ + "\1\14\1\0\3\14\2\161\2\0\21\161\1\241\1\161"+ + "\1\0\45\161\1\212\3\161\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\6\14\1\0\3\14"+ + "\20\0\1\242\12\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\3\14\20\0\3\14\1\243\7\14\1\0\3\14\4\0"+ + "\2\14\2\0\5\14\1\0\4\14\1\0\2\14\3\0"+ + "\6\14\1\0\3\14\20\0\5\14\1\244\5\14\1\0"+ + "\3\14\4\0\2\14\2\0\5\14\1\0\2\14\1\245"+ + "\1\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\5\14\1\246\1\0\3\14"+ + "\20\0\13\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\2\14\1\247\3\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\4\14"+ + "\1\250\1\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\34\0\1\251\50\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\6\14\1\0\3\14\20\0\1\14"+ + "\1\252\11\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\3\14\1\253\2\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\2\14"+ + "\1\254\3\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\37\0\1\255\45\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\6\14\1\0\3\14\20\0\2\14"+ + "\1\256\10\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\6\14\1\0\3\14"+ + "\20\0\2\14\1\257\10\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\6\14"+ + "\1\0\3\14\20\0\1\14\1\260\2\14\1\261\6\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\5\14\1\262\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\3\14\20\0"+ + "\6\14\1\263\4\14\1\0\3\14\2\161\2\0\23\161"+ + "\1\0\12\161\1\264\32\161\1\212\3\161\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\6\14"+ + "\1\0\3\14\20\0\1\14\1\265\11\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\4\14\1\266\1\14\1\0\3\14\20\0\13\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\2\14\1\267\3\14\1\0\3\14"+ + "\20\0\13\14\1\0\3\14\4\0\2\14\2\0\5\14"+ + "\1\0\4\14\1\0\2\14\3\0\3\14\1\270\2\14"+ + "\1\0\3\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\2\14\1\271\1\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\35\0\1\272\47\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\5\14\1\273\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\40\0\1\274\44\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\6\14\1\0"+ + "\1\275\2\14\20\0\13\14\1\0\3\14\4\0\2\14"+ + "\2\0\5\14\1\0\4\14\1\0\2\14\3\0\2\14"+ + "\1\276\3\14\1\0\3\14\20\0\13\14\1\0\3\14"+ + "\4\0\2\14\2\0\5\14\1\0\4\14\1\0\2\14"+ + "\3\0\6\14\1\0\3\14\20\0\2\14\1\277\10\14"+ + "\1\0\3\14\4\0\2\14\2\0\5\14\1\0\4\14"+ + "\1\0\2\14\3\0\5\14\1\300\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\4\14\1\301\1\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\36\0\1\302\103\0"+ + "\1\303\43\0\2\14\2\0\5\14\1\0\4\14\1\0"+ + "\2\14\3\0\2\14\1\304\3\14\1\0\3\14\20\0"+ + "\13\14\1\0\3\14\4\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\3\14\1\305\2\14\1\0"+ + "\3\14\20\0\13\14\1\0\3\14\4\0\2\14\2\0"+ + "\5\14\1\0\4\14\1\0\2\14\3\0\2\14\1\306"+ + "\3\14\1\0\3\14\20\0\13\14\1\0\3\14\37\0"+ + "\1\307\73\0\1\310\52\0\2\14\2\0\5\14\1\0"+ + "\4\14\1\0\2\14\3\0\6\14\1\0\2\14\1\311"+ + "\20\0\13\14\1\0\3\14\40\0\1\312\102\0\1\313"+ + "\77\0\1\314\71\0\1\315\110\0\1\316\36\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8906]; + int [] result = new int[9750]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -547,18 +620,17 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\1\1\1\11\12\1\1\11\13\1\6\11\1\1"+ - "\1\11\1\1\1\11\1\1\4\11\5\1\1\11\3\1"+ - "\1\11\4\1\1\0\1\11\1\0\1\1\1\11\1\0"+ - "\1\11\1\0\3\1\1\0\15\1\3\11\12\1\2\11"+ - "\1\1\1\0\1\1\1\11\1\1\1\0\1\1\1\0"+ - "\6\1\1\0\15\1\1\0\3\1\1\0\6\1\1\0"+ - "\14\1\1\0\3\1\1\0\5\1\1\0\7\1\1\0"+ - "\3\1\1\0\14\1\1\0\1\1\1\0\5\1\2\0"+ - "\3\1\2\0\1\1\1\0\1\11\2\0\1\11"; + "\2\0\1\1\1\11\31\1\6\11\1\1\1\11\17\1"+ + "\1\11\4\1\1\0\1\11\1\0\3\1\1\0\1\11"+ + "\1\0\3\1\1\0\32\1\2\11\1\1\1\0\1\1"+ + "\1\11\1\1\1\0\1\1\1\0\6\1\1\0\15\1"+ + "\1\0\3\1\1\0\6\1\1\0\14\1\1\0\3\1"+ + "\1\0\5\1\1\0\7\1\1\0\3\1\1\0\14\1"+ + "\1\0\1\1\1\0\5\1\2\0\3\1\2\0\1\1"+ + "\1\0\1\11\2\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[203]; + int [] result = new int[206]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -584,7 +656,7 @@ private static int zzUnpackAttribute(String packed, int offset, int [] result) { /** this buffer contains the current text to be matched and is the source of the yytext() string */ - private CharSequence zzBuffer = ""; + private char[] zzBuffer = new char[0]; /** this buffer may contains the current text array to be matched when it is cheap to acquire it */ private char[] zzBufferArray; @@ -618,6 +690,12 @@ the source of the yytext() string */ private int commentDepth; + /** + * Creates a new scanner + * There is also a java.io.InputStream version of this constructor. + * + * @param in the java.io.Reader to read input from. + */ _HaskellLexer(java.io.Reader in) { this.zzReader = in; } @@ -629,7 +707,8 @@ the source of the yytext() string */ * @param in the java.io.Inputstream to read input from. */ _HaskellLexer(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); + this(new java.io.InputStreamReader + (in, java.nio.charset.Charset.forName("UTF-8"))); } /** @@ -642,7 +721,7 @@ the source of the yytext() string */ char [] map = new char[0x10000]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 1880) { + while (i < 3314) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); @@ -659,7 +738,7 @@ public final int getTokenEnd(){ } public void reset(CharSequence buffer, int start, int end,int initialState){ - zzBuffer = buffer; + zzBuffer = buffer.toString().toCharArray(); zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer); zzCurrentPos = zzMarkedPos = zzStartRead = start; zzPushbackPos = 0; @@ -703,7 +782,7 @@ public final void yybegin(int newState) { * Returns the text matched by the current regular expression. */ public final CharSequence yytext() { - return zzBuffer.subSequence(zzStartRead, zzMarkedPos); + return new String(zzBuffer, zzStartRead, zzMarkedPos); } @@ -719,7 +798,7 @@ public final CharSequence yytext() { * @return the character at position pos */ public final char yycharat(int pos) { - return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos); + return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer[zzStartRead+pos]; } @@ -789,7 +868,7 @@ public IElementType advance() throws java.io.IOException { int zzCurrentPosL; int zzMarkedPosL; int zzEndReadL = zzEndRead; - CharSequence zzBufferL = zzBuffer; + char[] zzBufferL = zzBuffer; char[] zzBufferArrayL = zzBufferArray; char [] zzCMapL = ZZ_CMAP; @@ -806,12 +885,18 @@ public IElementType advance() throws java.io.IOException { zzState = ZZ_LEXSTATE[zzLexicalState]; + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } + zzForAction: { while (true) { if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL.charAt(zzCurrentPosL++); + zzInput = zzBufferL[zzCurrentPosL++]; else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; @@ -831,14 +916,14 @@ else if (zzAtEOF) { break zzForAction; } else { - zzInput = zzBufferL.charAt(zzCurrentPosL++); + zzInput = zzBufferL[zzCurrentPosL++]; } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; if (zzNext == -1) break zzForAction; zzState = zzNext; - int zzAttributes = zzAttrL[zzState]; + zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; @@ -852,300 +937,308 @@ else if (zzAtEOF) { zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 30: - { return TokenPackage.getSTRING(); - } - case 72: break; - case 35: - { return TokenPackage.getIF_KW(); - } - case 73: break; - case 36: - { return TokenPackage.getIN_KW(); + case 1: + { return TokenPackage.getBLOCK_COMMENT(); } case 74: break; - case 16: - { return TokenPackage.getRIGHT_BRACKET(); + case 2: + { return TokenType.BAD_CHARACTER; } case 75: break; - case 42: - { return TokenPackage.getLEFT_ARROW(); + case 3: + { return TokenType.WHITE_SPACE; } case 76: break; - case 20: - { return TokenPackage.getDOT(); + case 4: + { return TokenType.NEW_LINE_INDENT; } case 77: break; - case 41: - { return TokenPackage.getDOUBLE_ARROW(); + case 5: + { return TokenPackage.getNUMBER(); } case 78: break; - case 12: - { return TokenPackage.getBACK_SLASH(); + case 6: + { return TokenPackage.getOPERATOR_ID(); } case 79: break; - case 56: - { return TokenPackage.getMODULE_KW(); + case 7: + { return TokenPackage.getTYPE_OR_CONS(); } case 80: break; - case 43: - { if (commentDepth > 0) { - commentDepth--; - } - else { - int state = yystate(); - yybegin(YYINITIAL); - zzStartRead = commentStart; - return TokenPackage.getBLOCK_COMMENT(); - } + case 8: + { return TokenPackage.getID(); } case 81: break; - case 22: - { return TokenPackage.getEQUALS(); + case 9: + { return TokenPackage.getUNDERSCORE(); } case 82: break; - case 71: - { yybegin(YYINITIAL); return TokenPackage.getBLOCK_COMMENT(); + case 10: + { return TokenPackage.getCOLON(); } case 83: break; - case 70: - { yybegin(TEX); return TokenPackage.getBLOCK_COMMENT(); + case 11: + { return TokenPackage.getTH_VAR_QUOTE(); } case 84: break; - case 3: - { return TokenType.WHITE_SPACE; + case 12: + { return TokenPackage.getDOLLAR(); } case 85: break; - case 25: - { return TokenPackage.getAT(); + case 13: + { return TokenPackage.getBACK_SLASH(); } case 86: break; - case 27: - { return TokenPackage.getEXCLAMATION(); + case 14: + { return TokenPackage.getLEFT_BRACE(); } case 87: break; - case 17: - { return TokenPackage.getLEFT_PAREN(); + case 15: + { return TokenPackage.getRIGHT_BRACE(); } case 88: break; - case 64: - { return TokenPackage.getFOREIGN_KW(); + case 16: + { return TokenPackage.getLEFT_BRACKET(); } case 89: break; - case 13: - { return TokenPackage.getLEFT_BRACE(); + case 17: + { return TokenPackage.getRIGHT_BRACKET(); } case 90: break; - case 53: - { return TokenPackage.getINFIX_KW(); + case 18: + { return TokenPackage.getLEFT_PAREN(); } case 91: break; - case 65: - { return TokenPackage.getNEWTYPE_KW(); + case 19: + { return TokenPackage.getRIGHT_PAREN(); } case 92: break; - case 8: - { return TokenPackage.getUNDERSCORE(); + case 20: + { return TokenPackage.getSEMICOLON(); } case 93: break; - case 61: - { return TokenPackage.getPRAGMA(); + case 21: + { return TokenPackage.getDOT(); } case 94: break; - case 5: - { return TokenPackage.getNUMBER(); + case 22: + { return TokenPackage.getCOMMA(); } case 95: break; case 23: - { return TokenPackage.getVERTICAL_BAR(); + { return TokenPackage.getEQUALS(); } case 96: break; - case 55: - { return TokenPackage.getWHERE_KW(); + case 24: + { return TokenPackage.getVERTICAL_BAR(); } case 97: break; - case 4: - { return TokenType.NEW_LINE_INDENT; + case 25: + { return TokenPackage.getRIGHT_ARROW(); } case 98: break; - case 1: - { return TokenPackage.getBLOCK_COMMENT(); + case 26: + { return TokenPackage.getAT(); } case 99: break; - case 69: - { return TokenPackage.getQUALIFIED_KW(); + case 27: + { return TokenPackage.getTILDE(); } case 100: break; - case 10: - { return TokenPackage.getTH_VAR_QUOTE(); + case 28: + { return TokenPackage.getEXCLAMATION(); } case 101: break; - case 19: - { return TokenPackage.getSEMICOLON(); + case 29: + { } case 102: break; - case 48: - { return TokenPackage.getCASE_KW(); + case 30: + { return TokenPackage.getSTRING(); } case 103: break; - case 33: - { return TokenPackage.getAS_KW(); + case 31: + { return TokenPackage.getOPERATOR_CONS(); } case 104: break; - case 7: - { return TokenPackage.getID(); + case 32: + { return TokenPackage.getDOUBLE_COLON(); } case 105: break; - case 31: - { return TokenPackage.getDOUBLE_COLON(); + case 33: + { return TokenPackage.getTH_TY_QUOTE(); } case 106: break; - case 40: - { return TokenPackage.getDOT_DOT(); + case 34: + { return TokenPackage.getAS_KW(); } case 107: break; - case 32: - { return TokenPackage.getTH_TY_QUOTE(); + case 35: + { return TokenPackage.getEND_OF_LINE_COMMENT(); } case 108: break; - case 58: - { return TokenPackage.getIMPORT_KW(); + case 36: + { return TokenPackage.getIF_KW(); } case 109: break; - case 50: - { return TokenPackage.getSAFE(); + case 37: + { return TokenPackage.getIN_KW(); } case 110: break; case 38: - { return TokenPackage.getOF_KW(); + { yybegin(BLOCK_COMMENT); + commentDepth = 0; + commentStart = getTokenStart(); } case 111: break; - case 6: - { return TokenPackage.getTYPE_OR_CONS(); + case 39: + { return TokenPackage.getOF_KW(); } case 112: break; - case 47: - { return TokenPackage.getELSE_KW(); + case 40: + { return TokenPackage.getDO_KW(); } case 113: break; - case 24: - { return TokenPackage.getRIGHT_ARROW(); + case 41: + { return TokenPackage.getDOT_DOT(); } case 114: break; - case 62: - { return TokenPackage.getUNSAFE(); + case 42: + { return TokenPackage.getDOUBLE_ARROW(); } case 115: break; - case 46: - { return TokenPackage.getLET_KW(); + case 43: + { return TokenPackage.getLEFT_ARROW(); } case 116: break; - case 2: - { return TokenType.BAD_CHARACTER; + case 44: + { if (commentDepth > 0) { + commentDepth--; + } + else { + int state = yystate(); + yybegin(YYINITIAL); + zzStartRead = commentStart; + return TokenPackage.getBLOCK_COMMENT(); + } } case 117: break; - case 26: - { return TokenPackage.getTILDE(); + case 45: + { commentDepth++; } case 118: break; - case 39: - { return TokenPackage.getDO_KW(); + case 46: + { return TokenPackage.getCHARACTER(); } case 119: break; - case 57: - { return TokenPackage.getEXPORT(); + case 47: + { return TokenPackage.getLET_KW(); } case 120: break; - case 44: - { commentDepth++; + case 48: + { return TokenPackage.getELSE_KW(); } case 121: break; - case 21: - { return TokenPackage.getCOMMA(); + case 49: + { return TokenPackage.getCASE_KW(); } case 122: break; - case 49: + case 50: { return TokenPackage.getDATA_KW(); } case 123: break; - case 18: - { return TokenPackage.getRIGHT_PAREN(); + case 51: + { return TokenPackage.getSAFE(); } case 124: break; - case 28: - { return TokenPackage.getFORALL_KW(); + case 52: + { return TokenPackage.getTHEN_KW(); } case 125: break; - case 68: - { return TokenPackage.getDERIVING_KW(); + case 53: + { return TokenPackage.getTYPE_KW(); } case 126: break; - case 59: - { return TokenPackage.getINFIXL_KW(); + case 54: + { return TokenPackage.getINFIX_KW(); } case 127: break; - case 14: - { return TokenPackage.getRIGHT_BRACE(); + case 55: + { return TokenPackage.getCLASS_KW(); } case 128: break; - case 37: - { yybegin(BLOCK_COMMENT); - commentDepth = 0; - commentStart = getTokenStart(); + case 56: + { return TokenPackage.getWHERE_KW(); } case 129: break; - case 60: - { return TokenPackage.getINFIXR_KW(); + case 57: + { return TokenPackage.getFORALL_KW(); } case 130: break; - case 45: - { return TokenPackage.getCHARACTER(); + case 58: + { return TokenPackage.getMODULE_KW(); } case 131: break; - case 34: - { return TokenPackage.getEND_OF_LINE_COMMENT(); + case 59: + { return TokenPackage.getEXPORT(); } case 132: break; - case 63: - { return TokenPackage.getHIDING_KW(); + case 60: + { return TokenPackage.getIMPORT_KW(); } case 133: break; - case 11: - { return TokenPackage.getDOLLAR(); + case 61: + { return TokenPackage.getINFIXL_KW(); } case 134: break; - case 54: - { return TokenPackage.getCLASS_KW(); + case 62: + { return TokenPackage.getINFIXR_KW(); } case 135: break; - case 51: - { return TokenPackage.getTHEN_KW(); + case 63: + { return TokenPackage.getPRAGMA(); } case 136: break; - case 15: - { return TokenPackage.getLEFT_BRACKET(); + case 64: + { return TokenPackage.getUNSAFE(); } case 137: break; - case 66: - { return TokenPackage.getDEFAULT_KW(); + case 65: + { return TokenPackage.getHIDING_KW(); } case 138: break; - case 67: - { return TokenPackage.getINSTANCE_KW(); + case 66: + { return TokenPackage.getFOREIGN_KW(); } case 139: break; - case 52: - { return TokenPackage.getTYPE_KW(); + case 67: + { return TokenPackage.getNEWTYPE_KW(); } case 140: break; - case 29: - { + case 68: + { return TokenPackage.getDEFAULT_KW(); } case 141: break; - case 9: - { return TokenPackage.getCOLON(); + case 69: + { return TokenPackage.getINSTANCE_KW(); } case 142: break; + case 70: + { return TokenPackage.getDERIVING_KW(); + } + case 143: break; + case 71: + { return TokenPackage.getQUALIFIED_KW(); + } + case 144: break; + case 72: + { yybegin(TEX); return TokenPackage.getBLOCK_COMMENT(); + } + case 145: break; + case 73: + { yybegin(YYINITIAL); return TokenPackage.getBLOCK_COMMENT(); + } + case 146: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; @@ -1156,7 +1249,7 @@ else if (zzAtEOF) { zzStartRead = commentStart; return TokenPackage.getBLOCK_COMMENT(); } - case 204: break; + case 207: break; default: return null; } diff --git a/plugin/src/org/jetbrains/haskell/parser/token/HaskelLexerTokens.kt b/plugin/src/org/jetbrains/haskell/parser/token/HaskelLexerTokens.kt index aa33d096..8c422f50 100644 --- a/plugin/src/org/jetbrains/haskell/parser/token/HaskelLexerTokens.kt +++ b/plugin/src/org/jetbrains/haskell/parser/token/HaskelLexerTokens.kt @@ -109,7 +109,8 @@ public val BLOCK_COMMENT: HaskellToken = HaskellToken("COMMENT") public val END_OF_LINE_COMMENT : HaskellToken = HaskellToken("--") public val ID : HaskellToken = HaskellToken("id") public val NUMBER : HaskellToken = HaskellToken("number") -public val OPERATOR : HaskellToken = HaskellToken("opertor") +public val OPERATOR_ID: HaskellToken = HaskellToken("opertor") +public val OPERATOR_CONS: HaskellToken = HaskellToken("opertor cons") public val PRAGMA : HaskellToken = HaskellToken("PRAGMA") public val STRING : HaskellToken = HaskellToken("string") public val TYPE_OR_CONS: HaskellToken = HaskellToken("type_cons") diff --git a/plugin/test/org/jetbrains/haskell/lexer/HaskellLexerTest.java b/plugin/test/org/jetbrains/haskell/lexer/HaskellLexerTest.java index 6f23fd89..bccb989e 100644 --- a/plugin/test/org/jetbrains/haskell/lexer/HaskellLexerTest.java +++ b/plugin/test/org/jetbrains/haskell/lexer/HaskellLexerTest.java @@ -61,6 +61,12 @@ public void testQuotation() throws Exception { "Haskell Token:id ('name')"); } + @Test + public void testOperators() throws Exception { + doTest("\u222F", + "Haskell Token:opertor ('\u222F')"); + } + @Test public void testIndentsComments() throws Exception { doTest("module Main where\n" + diff --git a/tools/idea-flex.skeleton b/tools/idea-flex.skeleton index 234a62c4..8a1f435b 100644 --- a/tools/idea-flex.skeleton +++ b/tools/idea-flex.skeleton @@ -28,7 +28,7 @@ /** this buffer contains the current text to be matched and is the source of the yytext() string */ - private CharSequence zzBuffer = ""; + private char[] zzBuffer = new char[0]; /** this buffer may contains the current text array to be matched when it is cheap to acquire it */ private char[] zzBufferArray; @@ -70,7 +70,7 @@ } public void reset(CharSequence buffer, int start, int end,int initialState){ - zzBuffer = buffer; + zzBuffer = buffer.toString().toCharArray(); zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer); zzCurrentPos = zzMarkedPos = zzStartRead = start; zzPushbackPos = 0; @@ -114,7 +114,7 @@ * Returns the text matched by the current regular expression. */ public final CharSequence yytext() { - return zzBuffer.subSequence(zzStartRead, zzMarkedPos); + return new String(zzBuffer, zzStartRead, zzMarkedPos); } @@ -130,7 +130,7 @@ * @return the character at position pos */ public final char yycharat(int pos) { - return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos); + return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer[zzStartRead+pos]; } @@ -201,7 +201,7 @@ int zzCurrentPosL; int zzMarkedPosL; int zzEndReadL = zzEndRead; - CharSequence zzBufferL = zzBuffer; + char[] zzBufferL = zzBuffer; char[] zzBufferArrayL = zzBufferArray; char [] zzCMapL = ZZ_CMAP;