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;