diff --git a/python/src/com/jetbrains/python/PyTokenTypes.java b/python/src/com/jetbrains/python/PyTokenTypes.java
index 7fce0f9792b8..30adcaa3e20e 100644
--- a/python/src/com/jetbrains/python/PyTokenTypes.java
+++ b/python/src/com/jetbrains/python/PyTokenTypes.java
@@ -94,6 +94,7 @@ public class PyTokenTypes {
public static final PyElementType EQEQ = new PyElementType("EQEQ");// ==
public static final PyElementType NE = new PyElementType("NE");// !=
public static final PyElementType NE_OLD = new PyElementType("NE_OLD");// <>
+ public static final PyElementType ELLIPSIS = new PyElementType("ELLIPSIS"); // ...
// Delimiters
public static final PyElementType LPAR = new PyElementType("LPAR");// (
diff --git a/python/src/com/jetbrains/python/lexer/Python.flex b/python/src/com/jetbrains/python/lexer/Python.flex
index b7cc3b99a9b4..4bbc4b919ae7 100644
--- a/python/src/com/jetbrains/python/lexer/Python.flex
+++ b/python/src/com/jetbrains/python/lexer/Python.flex
@@ -151,6 +151,7 @@ TRIPLE_APOS_LITERAL = {THREE_APOS} {STRING_3CHAR_APOS}* {THREE_APOS}
"@" { return PyTokenTypes.AT; }
"," { return PyTokenTypes.COMMA; }
":" { return PyTokenTypes.COLON; }
+"..." { return PyTokenTypes.ELLIPSIS; }
"." { return PyTokenTypes.DOT; }
"`" { return PyTokenTypes.TICK; }
"=" { return PyTokenTypes.EQ; }
diff --git a/python/src/com/jetbrains/python/lexer/_PythonLexer.java b/python/src/com/jetbrains/python/lexer/_PythonLexer.java
index 31acaade7b61..62859ace2333 100644
--- a/python/src/com/jetbrains/python/lexer/_PythonLexer.java
+++ b/python/src/com/jetbrains/python/lexer/_PythonLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 22.01.10 14:12 */
+/* The following code was generated by JFlex 1.4.3 on 25.01.10 15:43 */
/* It's an automatically generated code. Do not modify it. */
package com.jetbrains.python.lexer;
@@ -11,7 +11,7 @@ import com.jetbrains.python.PyTokenTypes;
/**
* This class is a scanner generated by
* JFlex 1.4.3
- * on 22.01.10 14:12 from the specification file
+ * on 25.01.10 15:43 from the specification file
* C:/JetBrains/IDEA/tools/lexer/../../python/src/com/jetbrains/python/lexer/Python.flex
*/
class _PythonLexer implements FlexLexer {
@@ -61,19 +61,20 @@ class _PythonLexer implements FlexLexer {
"\17\3\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+
"\1\24\1\25\1\26\1\1\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\2\4\0\1\2\1\43\1\0\1\44\1\45\6\10"+
- "\1\46\1\47\1\50\16\3\1\51\7\3\1\52\1\53"+
- "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+
- "\1\64\1\65\1\66\1\67\1\70\1\71\3\2\1\43"+
- "\1\0\1\10\2\0\1\3\1\72\1\3\1\73\1\74"+
- "\1\75\5\3\1\76\6\3\1\77\4\3\1\100\1\101"+
- "\1\102\1\103\6\0\2\3\1\104\1\105\10\3\1\106"+
- "\1\107\3\3\4\0\3\3\1\110\1\3\1\111\1\112"+
- "\3\3\1\113\1\3\1\114\1\115\1\116\1\117\1\120"+
- "\1\3\1\121\1\3\1\122\1\3\1\123\1\124";
+ "\1\2\4\0\1\2\1\43\1\0\1\44\1\0\1\45"+
+ "\6\10\1\46\1\47\1\50\16\3\1\51\7\3\1\52"+
+ "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62"+
+ "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\3\2"+
+ "\1\43\1\0\1\72\1\10\2\0\1\3\1\73\1\3"+
+ "\1\74\1\75\1\76\5\3\1\77\6\3\1\100\4\3"+
+ "\1\101\1\102\1\103\1\104\6\0\2\3\1\105\1\106"+
+ "\10\3\1\107\1\110\3\3\4\0\3\3\1\111\1\3"+
+ "\1\112\1\113\3\3\1\114\1\3\1\115\1\116\1\117"+
+ "\1\120\1\121\1\3\1\122\1\3\1\123\1\3\1\124"+
+ "\1\125";
private static int [] zzUnpackAction() {
- int [] result = new int[199];
+ int [] result = new int[201];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -106,26 +107,27 @@ class _PythonLexer implements FlexLexer {
"\0\u09d8\0\u0a1e\0\u0a64\0\u0aaa\0\106\0\106\0\106\0\106"+
"\0\106\0\106\0\106\0\106\0\106\0\106\0\106\0\106"+
"\0\u0af0\0\u0b36\0\u0b7c\0\u0bc2\0\u0c08\0\106\0\u0c4e\0\u0c94"+
- "\0\106\0\106\0\u0cda\0\u0d20\0\u0d66\0\u0dac\0\u0df2\0\u0e38"+
- "\0\u0118\0\u0118\0\u0118\0\u0e7e\0\u0ec4\0\u0f0a\0\u0f50\0\u0f96"+
+ "\0\106\0\u0cda\0\106\0\u0d20\0\u0d66\0\u0dac\0\u0df2\0\u0e38"+
+ "\0\u0e7e\0\u0118\0\u0118\0\u0118\0\u0ec4\0\u0f0a\0\u0f50\0\u0f96"+
"\0\u0fdc\0\u1022\0\u1068\0\u10ae\0\u10f4\0\u113a\0\u1180\0\u11c6"+
- "\0\u120c\0\u0118\0\u1252\0\u1298\0\u12de\0\u1324\0\u136a\0\u13b0"+
- "\0\u13f6\0\106\0\106\0\106\0\u143c\0\106\0\u1482\0\106"+
- "\0\106\0\106\0\106\0\106\0\u14c8\0\106\0\106\0\u150e"+
- "\0\106\0\u1554\0\u159a\0\u15e0\0\u1626\0\u166c\0\106\0\u16b2"+
- "\0\u16f8\0\u173e\0\u0118\0\u1784\0\u0118\0\u0118\0\u0118\0\u17ca"+
- "\0\u1810\0\u1856\0\u189c\0\u18e2\0\u0118\0\u1928\0\u196e\0\u19b4"+
- "\0\u19fa\0\u1a40\0\u1a86\0\u0118\0\u1acc\0\u1b12\0\u1b58\0\u1b9e"+
- "\0\106\0\106\0\106\0\106\0\u1be4\0\u1c2a\0\u1c70\0\u1cb6"+
- "\0\u1cfc\0\u1d42\0\u1d88\0\u1dce\0\u0118\0\u0118\0\u1e14\0\u1e5a"+
- "\0\u1ea0\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8\0\u1ffe\0\u0118\0\u0118"+
- "\0\u2044\0\u208a\0\u20d0\0\u2116\0\u215c\0\u21a2\0\u21e8\0\u222e"+
- "\0\u2274\0\u22ba\0\u0118\0\u2300\0\u0118\0\u0118\0\u2346\0\u238c"+
- "\0\u23d2\0\u0118\0\u2418\0\u0118\0\u0118\0\u0118\0\u0118\0\u0118"+
- "\0\u245e\0\u0118\0\u24a4\0\u0118\0\u24ea\0\u0118\0\u0118";
+ "\0\u120c\0\u1252\0\u0118\0\u1298\0\u12de\0\u1324\0\u136a\0\u13b0"+
+ "\0\u13f6\0\u143c\0\106\0\106\0\106\0\u1482\0\106\0\u14c8"+
+ "\0\106\0\106\0\106\0\106\0\106\0\u150e\0\106\0\106"+
+ "\0\u1554\0\106\0\u159a\0\u15e0\0\u1626\0\u166c\0\u16b2\0\106"+
+ "\0\106\0\u16f8\0\u173e\0\u1784\0\u0118\0\u17ca\0\u0118\0\u0118"+
+ "\0\u0118\0\u1810\0\u1856\0\u189c\0\u18e2\0\u1928\0\u0118\0\u196e"+
+ "\0\u19b4\0\u19fa\0\u1a40\0\u1a86\0\u1acc\0\u0118\0\u1b12\0\u1b58"+
+ "\0\u1b9e\0\u1be4\0\106\0\106\0\106\0\106\0\u1c2a\0\u1c70"+
+ "\0\u1cb6\0\u1cfc\0\u1d42\0\u1d88\0\u1dce\0\u1e14\0\u0118\0\u0118"+
+ "\0\u1e5a\0\u1ea0\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8\0\u1ffe\0\u2044"+
+ "\0\u0118\0\u0118\0\u208a\0\u20d0\0\u2116\0\u215c\0\u21a2\0\u21e8"+
+ "\0\u222e\0\u2274\0\u22ba\0\u2300\0\u0118\0\u2346\0\u0118\0\u0118"+
+ "\0\u238c\0\u23d2\0\u2418\0\u0118\0\u245e\0\u0118\0\u0118\0\u0118"+
+ "\0\u0118\0\u0118\0\u24a4\0\u0118\0\u24ea\0\u0118\0\u2530\0\u0118"+
+ "\0\u0118";
private static int [] zzUnpackRowMap() {
- int [] result = new int[199];
+ int [] result = new int[201];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -166,180 +168,180 @@ class _PythonLexer implements FlexLexer {
"\11\5\2\0\1\5\1\0\1\5\1\0\2\5\1\13"+
"\1\14\1\0\1\16\1\5\3\0\5\5\1\13\17\5"+
"\27\0\13\7\1\0\72\7\13\0\1\10\73\0\3\77"+
- "\1\0\1\77\160\0\1\102\26\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\1\14\1\0\1\16\1\5"+
- "\3\0\25\5\27\0\13\103\1\0\7\103\1\104\1\105"+
- "\61\103\13\106\1\0\10\106\1\107\1\110\60\106\1\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\1\5\1\111\1\5\1\112\11\5\1\113"+
- "\3\5\1\114\3\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\1\5\1\115"+
- "\1\5\1\116\21\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\117"+
- "\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\4\5\1\120\20\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\12\5\1\121\3\5\1\122\6\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\1\14"+
- "\1\0\1\16\1\5\3\0\1\123\3\5\1\124\20\5"+
- "\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\5\5\1\125\17\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\2\5\1\13\1\14"+
- "\1\0\1\16\1\5\3\0\5\5\1\126\17\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\12\5\1\127\1\130\11\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\1\131\24\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\5\5\1\132"+
+ "\1\0\1\77\7\0\1\102\150\0\1\103\26\0\11\5"+
+ "\2\0\1\5\1\0\1\5\1\0\3\5\1\14\1\0"+
+ "\1\16\1\5\3\0\25\5\27\0\13\104\1\0\7\104"+
+ "\1\105\1\106\61\104\13\107\1\0\10\107\1\110\1\111"+
+ "\60\107\1\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\1\5\1\112\1\5\1\113"+
+ "\11\5\1\114\3\5\1\115\3\5\30\0\11\5\2\0"+
+ "\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
+ "\1\5\1\116\1\5\1\117\21\5\30\0\11\5\2\0"+
+ "\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
+ "\13\5\1\120\11\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\121"+
+ "\20\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\12\5\1\122\3\5\1\123"+
+ "\6\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\1\14\1\0\1\16\1\5\3\0\1\124\3\5"+
+ "\1\125\20\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\5\5\1\126\17\5"+
+ "\30\0\11\5\2\0\1\5\1\0\1\5\1\0\2\5"+
+ "\1\13\1\14\1\0\1\16\1\5\3\0\5\5\1\127"+
"\17\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\133\3\0\5\5\1\134\5\5\1\135"+
- "\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\1\136\24\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\137"+
- "\3\0\25\5\30\0\11\5\2\0\1\5\1\0\1\5"+
- "\1\0\3\5\3\0\1\5\3\0\12\5\1\140\12\5"+
+ "\3\5\3\0\1\5\3\0\12\5\1\130\1\131\11\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\24\5\1\141\107\0\1\142\105\0"+
- "\1\143\105\0\1\144\1\145\104\0\1\146\1\0\1\147"+
- "\103\0\1\150\105\0\1\151\105\0\1\152\105\0\1\153"+
- "\105\0\1\154\6\0\1\155\76\0\1\156\6\0\1\157"+
- "\1\160\75\0\1\161\26\0\1\71\1\72\1\71\1\0"+
- "\1\71\3\0\1\76\3\0\1\77\1\100\1\0\1\101"+
- "\15\0\1\100\5\0\1\76\42\0\3\72\1\0\1\72"+
- "\7\0\1\77\1\100\1\0\1\101\15\0\1\100\50\0"+
- "\5\162\2\0\1\162\5\0\1\162\13\0\1\162\1\0"+
- "\1\162\1\0\1\162\2\0\1\162\1\0\1\162\3\0"+
- "\1\162\37\0\1\163\1\0\1\163\1\0\1\163\101\0"+
- "\1\164\3\0\1\164\101\0\3\77\1\0\1\77\10\0"+
- "\1\100\1\0\1\101\15\0\1\100\50\0\3\165\1\0"+
- "\1\165\11\0\1\166\37\0\1\166\26\0\13\103\1\0"+
- "\7\103\1\167\1\105\61\103\23\0\1\170\62\0\106\103"+
- "\13\106\1\0\10\106\1\107\1\167\166\106\25\0\1\171"+
- "\61\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\17\5\1\172\5\5\30\0\11\5"+
+ "\3\0\1\5\3\0\1\132\24\5\30\0\11\5\2\0"+
+ "\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
+ "\5\5\1\133\17\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\134\3\0\5\5\1\135"+
+ "\5\5\1\136\11\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\1\137\24\5"+
+ "\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
+ "\3\0\1\140\3\0\25\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\12\5"+
+ "\1\141\12\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\24\5\1\142\107\0"+
+ "\1\143\105\0\1\144\105\0\1\145\1\146\104\0\1\147"+
+ "\1\0\1\150\103\0\1\151\105\0\1\152\105\0\1\153"+
+ "\105\0\1\154\105\0\1\155\6\0\1\156\76\0\1\157"+
+ "\6\0\1\160\1\161\75\0\1\162\26\0\1\71\1\72"+
+ "\1\71\1\0\1\71\3\0\1\76\3\0\1\77\1\100"+
+ "\1\0\1\101\15\0\1\100\5\0\1\76\42\0\3\72"+
+ "\1\0\1\72\7\0\1\77\1\100\1\0\1\101\15\0"+
+ "\1\100\50\0\5\163\2\0\1\163\5\0\1\163\13\0"+
+ "\1\163\1\0\1\163\1\0\1\163\2\0\1\163\1\0"+
+ "\1\163\3\0\1\163\37\0\1\164\1\0\1\164\1\0"+
+ "\1\164\101\0\1\165\3\0\1\165\101\0\3\77\1\0"+
+ "\1\77\10\0\1\100\1\0\1\101\15\0\1\100\50\0"+
+ "\3\166\1\0\1\166\11\0\1\167\37\0\1\167\43\0"+
+ "\1\170\70\0\13\104\1\0\7\104\1\171\1\106\61\104"+
+ "\23\0\1\172\62\0\106\104\13\107\1\0\10\107\1\110"+
+ "\1\171\166\107\25\0\1\173\61\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\17\5"+
+ "\1\174\5\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\2\5\1\175\22\5"+
+ "\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
+ "\3\0\1\5\3\0\3\5\1\176\21\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\2\5\1\173\22\5\30\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\3\5"+
- "\1\174\21\5\30\0\11\5\2\0\1\5\1\0\1\5"+
- "\1\0\3\5\3\0\1\5\3\0\6\5\1\175\16\5"+
+ "\3\0\6\5\1\177\16\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\12\5"+
+ "\1\200\2\5\1\201\7\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\202\3\0\3\5"+
+ "\1\203\21\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\11\5\1\204\13\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\12\5\1\176\2\5\1\177\7\5"+
+ "\3\0\1\205\3\0\25\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\6\5"+
+ "\1\206\16\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\20\5\1\207\4\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\200\3\0\3\5\1\201\21\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\11\5\1\202\13\5\30\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\3\0\1\203\3\0\25\5"+
+ "\1\14\1\0\1\16\1\5\3\0\4\5\1\210\20\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\6\5\1\204\16\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\20\5\1\205\4\5\30\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\1\14\1\0\1\16\1\5"+
- "\3\0\4\5\1\206\20\5\30\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\1\207"+
- "\24\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\1\5\1\210\23\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\21\5\1\211\3\5\30\0\11\5\2\0"+
+ "\3\0\1\5\3\0\1\211\24\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\1\5\1\212\23\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\213"+
- "\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\5\5\1\214\17\5\30\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\21\5\1\213"+
+ "\3\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\1\5\1\214\23\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\3\5\1\215\21\5\30\0\11\5\2\0"+
+ "\1\5\3\0\13\5\1\215\11\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\4\5\1\216\20\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\217"+
- "\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\220\3\0\25\5\107\0\1\221\105\0"+
- "\1\222\105\0\1\223\105\0\1\224\26\0\5\162\2\0"+
- "\1\162\1\76\4\0\1\162\13\0\1\162\1\0\1\162"+
- "\1\0\1\162\2\0\1\162\1\0\1\162\1\76\2\0"+
- "\1\162\37\0\1\163\1\0\1\163\1\0\1\163\3\0"+
- "\1\76\32\0\1\76\42\0\1\164\3\0\1\164\3\0"+
- "\1\76\32\0\1\76\42\0\3\165\1\0\1\165\12\0"+
- "\1\101\66\0\3\165\1\0\1\165\100\0\23\170\1\225"+
- "\1\226\1\170\1\227\57\170\24\171\1\230\1\231\1\232"+
- "\57\171\1\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\13\5\1\233\11\5\30\0"+
+ "\5\5\1\216\17\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\3\5\1\217"+
+ "\21\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\4\5\1\220\20\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\4\5\1\234\20\5\30\0\11\5\2\0"+
+ "\1\5\3\0\13\5\1\221\11\5\30\0\11\5\2\0"+
+ "\1\5\1\0\1\5\1\0\3\5\3\0\1\222\3\0"+
+ "\25\5\107\0\1\223\105\0\1\224\105\0\1\225\105\0"+
+ "\1\226\26\0\5\163\2\0\1\163\1\76\4\0\1\163"+
+ "\13\0\1\163\1\0\1\163\1\0\1\163\2\0\1\163"+
+ "\1\0\1\163\1\76\2\0\1\163\37\0\1\164\1\0"+
+ "\1\164\1\0\1\164\3\0\1\76\32\0\1\76\42\0"+
+ "\1\165\3\0\1\165\3\0\1\76\32\0\1\76\42\0"+
+ "\3\166\1\0\1\166\12\0\1\101\66\0\3\166\1\0"+
+ "\1\166\100\0\23\172\1\227\1\230\1\172\1\231\57\172"+
+ "\24\173\1\232\1\233\1\234\57\173\1\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\15\5\1\235\7\5\30\0\11\5\2\0\1\5\1\0"+
+ "\13\5\1\235\11\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\236"+
"\20\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\4\5\1\237\20\5\30\0"+
+ "\3\5\3\0\1\5\3\0\15\5\1\237\7\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\3\5\1\240\21\5\30\0\11\5\2\0"+
+ "\1\5\3\0\4\5\1\240\20\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\14\5\1\241\10\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\1\242\24\5"+
+ "\4\5\1\241\20\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\3\5\1\242"+
+ "\21\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\14\5\1\243\10\5\30\0"+
+ "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
+ "\1\5\3\0\1\244\24\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\3\5"+
+ "\1\245\21\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\6\5\1\246\16\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\3\5\1\243\21\5\30\0\11\5"+
+ "\3\0\1\5\3\0\7\5\1\247\15\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\6\5\1\244\16\5\30\0\11\5\2\0\1\5"+
- "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\7\5"+
- "\1\245\15\5\30\0\11\5\2\0\1\5\1\0\1\5"+
- "\1\0\3\5\3\0\1\5\3\0\1\246\24\5\30\0"+
+ "\3\0\1\250\24\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\21\5\1\251"+
+ "\3\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\3\5\1\252\21\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\21\5\1\247\3\5\30\0\11\5\2\0"+
+ "\1\5\3\0\12\5\1\253\12\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\3\5\1\250\21\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\12\5\1\251"+
- "\12\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\7\5\1\252\15\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\12\5\1\253\12\5\27\0\23\170\1\254"+
- "\1\226\1\170\1\255\210\170\1\255\1\226\1\170\1\255"+
- "\57\170\132\171\1\230\1\256\1\257\103\171\1\230\2\257"+
- "\57\171\1\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\5\5\1\260\17\5\30\0"+
- "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\5\5\1\261\17\5\30\0\11\5\2\0"+
+ "\7\5\1\254\15\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\12\5\1\255"+
+ "\12\5\27\0\23\172\1\256\1\230\1\172\1\257\210\172"+
+ "\1\257\1\230\1\172\1\257\57\172\132\173\1\232\1\260"+
+ "\1\261\103\173\1\232\2\261\57\173\1\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\17\5\1\262\5\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\263"+
- "\20\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\5\5\1\264\17\5\30\0"+
+ "\5\5\1\262\17\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\5\5\1\263"+
+ "\17\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\17\5\1\264\5\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\10\5\1\265\14\5\30\0\11\5\2\0"+
+ "\1\5\3\0\4\5\1\265\20\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\3\5\1\266\21\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\267\3\0\25\5\30\0"+
+ "\5\5\1\266\17\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\10\5\1\267"+
+ "\14\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\3\5\1\270\21\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\2\5\1\270\22\5\30\0\11\5\2\0"+
- "\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\12\5\1\271\12\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\271\3\0\25\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\2\5\1\272"+
"\22\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\1\273\24\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\4\5\1\274\20\5\27\0\23\170\1\167\1\226"+
- "\1\170\1\0\102\170\1\0\1\226\1\170\1\0\57\170"+
- "\24\171\1\230\1\167\1\0\103\171\1\230\2\0\57\171"+
- "\1\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\6\5\1\275\16\5\30\0\11\5"+
- "\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\6\5\1\276\16\5\30\0\11\5\2\0\1\5"+
+ "\3\5\3\0\1\5\3\0\12\5\1\273\12\5\30\0"+
+ "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
+ "\1\5\3\0\2\5\1\274\22\5\30\0\11\5\2\0"+
+ "\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
+ "\1\275\24\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\4\5\1\276\20\5"+
+ "\27\0\23\172\1\171\1\230\1\172\1\0\102\172\1\0"+
+ "\1\230\1\172\1\0\57\172\24\173\1\232\1\171\1\0"+
+ "\103\173\1\232\2\0\57\173\1\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\5\3\0\6\5"+
"\1\277\16\5\30\0\11\5\2\0\1\5\1\0\1\5"+
- "\1\0\3\5\3\0\1\5\3\0\1\5\1\300\23\5"+
+ "\1\0\3\5\3\0\1\5\3\0\6\5\1\300\16\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
- "\3\0\1\5\3\0\1\5\1\301\23\5\30\0\11\5"+
+ "\3\0\1\5\3\0\6\5\1\301\16\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
- "\3\0\1\302\24\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\12\5\1\303"+
- "\12\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
- "\3\5\3\0\1\5\3\0\12\5\1\304\12\5\30\0"+
+ "\3\0\1\5\1\302\23\5\30\0\11\5\2\0\1\5"+
+ "\1\0\1\5\1\0\3\5\3\0\1\5\3\0\1\5"+
+ "\1\303\23\5\30\0\11\5\2\0\1\5\1\0\1\5"+
+ "\1\0\3\5\3\0\1\5\3\0\1\304\24\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
- "\1\5\3\0\14\5\1\305\10\5\30\0\11\5\2\0"+
+ "\1\5\3\0\12\5\1\305\12\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
- "\20\5\1\306\4\5\30\0\11\5\2\0\1\5\1\0"+
- "\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\307"+
- "\20\5\27\0";
+ "\12\5\1\306\12\5\30\0\11\5\2\0\1\5\1\0"+
+ "\1\5\1\0\3\5\3\0\1\5\3\0\14\5\1\307"+
+ "\10\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
+ "\3\5\3\0\1\5\3\0\20\5\1\310\4\5\30\0"+
+ "\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
+ "\1\5\3\0\4\5\1\311\20\5\27\0";
private static int [] zzUnpackTrans() {
- int [] result = new int[9520];
+ int [] result = new int[9590];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -381,13 +383,13 @@ class _PythonLexer implements FlexLexer {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\1\0\1\11\12\1\1\11\2\1\3\11\32\1\14\11"+
- "\1\1\4\0\1\11\1\1\1\0\2\11\37\1\3\11"+
- "\1\1\1\11\1\1\5\11\1\1\2\11\1\1\1\11"+
- "\4\1\1\0\1\11\2\0\27\1\4\11\6\0\21\1"+
- "\4\0\30\1";
+ "\1\1\4\0\1\11\1\1\1\0\1\11\1\0\1\11"+
+ "\37\1\3\11\1\1\1\11\1\1\5\11\1\1\2\11"+
+ "\1\1\1\11\4\1\1\0\2\11\2\0\27\1\4\11"+
+ "\6\0\21\1\4\0\30\1";
private static int [] zzUnpackAttribute() {
- int [] result = new int[199];
+ int [] result = new int[201];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -704,342 +706,346 @@ class _PythonLexer implements FlexLexer {
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
- case 75:
+ case 76:
{ return PyTokenTypes.YIELD_KEYWORD;
}
- case 85: break;
+ case 86: break;
case 2:
{ return PyTokenTypes.INTEGER_LITERAL;
}
- case 86: break;
+ case 87: break;
case 16:
{ return PyTokenTypes.DIV;
}
- case 87: break;
+ case 88: break;
case 17:
{ return PyTokenTypes.PERC;
}
- case 88: break;
+ case 89: break;
case 9:
{ return PyTokenTypes.BACKSLASH;
}
- case 89: break;
+ case 90: break;
case 25:
{ return PyTokenTypes.RPAR;
}
- case 90: break;
+ case 91: break;
case 1:
{ return PyTokenTypes.BAD_CHARACTER;
}
- case 91: break;
+ case 92: break;
case 28:
{ return PyTokenTypes.LBRACE;
}
- case 92: break;
+ case 93: break;
case 7:
{ return PyTokenTypes.MINUS;
}
- case 93: break;
- case 73:
+ case 94: break;
+ case 74:
{ return PyTokenTypes.BREAK_KEYWORD;
}
- case 94: break;
+ case 95: break;
case 27:
{ return PyTokenTypes.RBRACKET;
}
- case 95: break;
+ case 96: break;
case 6:
{ return PyTokenTypes.DOT;
}
- case 96: break;
+ case 97: break;
case 3:
{ return PyTokenTypes.IDENTIFIER;
}
- case 97: break;
+ case 98: break;
case 24:
{ return PyTokenTypes.LPAR;
}
- case 98: break;
+ case 99: break;
case 22:
{ return PyTokenTypes.LT;
}
- case 99: break;
+ case 100: break;
case 38:
{ return PyTokenTypes.IN_KEYWORD;
}
- case 100: break;
- case 72:
+ case 101: break;
+ case 73:
{ return PyTokenTypes.RAISE_KEYWORD;
}
- case 101: break;
+ case 102: break;
case 8:
{ return PyTokenTypes.STRING_LITERAL;
}
- case 102: break;
- case 66:
+ case 103: break;
+ case 67:
{ return PyTokenTypes.GTGTEQ;
}
- case 103: break;
+ case 104: break;
case 10:
{ return PyTokenTypes.SPACE;
}
- case 104: break;
- case 79:
+ case 105: break;
+ case 80:
{ return PyTokenTypes.EXCEPT_KEYWORD;
}
- case 105: break;
+ case 106: break;
case 36:
{ return PyTokenTypes.IMAGINARY_LITERAL;
}
- case 106: break;
+ case 107: break;
case 12:
{ return PyTokenTypes.FORMFEED;
}
- case 107: break;
+ case 108: break;
case 34:
{ return PyTokenTypes.SEMICOLON;
}
- case 108: break;
+ case 109: break;
case 21:
{ return PyTokenTypes.GT;
}
- case 109: break;
+ case 110: break;
case 26:
{ return PyTokenTypes.LBRACKET;
}
- case 110: break;
+ case 111: break;
case 32:
{ return PyTokenTypes.COLON;
}
- case 111: break;
- case 67:
+ case 112: break;
+ case 68:
{ return PyTokenTypes.LTLTEQ;
}
- case 112: break;
+ case 113: break;
case 19:
{ return PyTokenTypes.OR;
}
- case 113: break;
- case 69:
+ case 114: break;
+ case 70:
{ return PyTokenTypes.ELSE_KEYWORD;
}
- case 114: break;
+ case 115: break;
case 44:
{ return PyTokenTypes.MULTEQ;
}
- case 115: break;
- case 83:
+ case 116: break;
+ case 84:
{ return PyTokenTypes.FINALLY_KEYWORD;
}
- case 116: break;
- case 76:
+ case 117: break;
+ case 77:
{ return PyTokenTypes.WHILE_KEYWORD;
}
- case 117: break;
+ case 118: break;
case 15:
{ return PyTokenTypes.MULT;
}
- case 118: break;
- case 78:
+ case 119: break;
+ case 79:
{ return PyTokenTypes.ASSERT_KEYWORD;
}
- case 119: break;
+ case 120: break;
case 47:
{ return PyTokenTypes.FLOORDIV;
}
- case 120: break;
- case 82:
+ case 121: break;
+ case 83:
{ return PyTokenTypes.GLOBAL_KEYWORD;
}
- case 121: break;
- case 81:
+ case 122: break;
+ case 82:
{ return PyTokenTypes.LAMBDA_KEYWORD;
}
- case 122: break;
+ case 123: break;
case 51:
{ return PyTokenTypes.XOREQ;
}
- case 123: break;
- case 63:
+ case 124: break;
+ case 64:
{ return PyTokenTypes.FOR_KEYWORD;
}
- case 124: break;
+ case 125: break;
case 30:
{ return PyTokenTypes.AT;
}
- case 125: break;
- case 59:
+ case 126: break;
+ case 60:
{ return PyTokenTypes.NOT_KEYWORD;
}
- case 126: break;
+ case 127: break;
case 13:
{ return PyTokenTypes.PLUS;
}
- case 127: break;
+ case 128: break;
case 37:
{ return PyTokenTypes.MINUSEQ;
}
- case 128: break;
+ case 129: break;
case 57:
{ return PyTokenTypes.NE;
}
- case 129: break;
+ case 130: break;
case 31:
{ return PyTokenTypes.COMMA;
}
- case 130: break;
+ case 131: break;
case 43:
{ return PyTokenTypes.EQEQ;
}
- case 131: break;
+ case 132: break;
case 33:
{ return PyTokenTypes.TICK;
}
- case 132: break;
+ case 133: break;
case 45:
{ return PyTokenTypes.EXP;
}
- case 133: break;
- case 84:
+ case 134: break;
+ case 85:
{ return PyTokenTypes.CONTINUE_KEYWORD;
}
- case 134: break;
+ case 135: break;
case 56:
{ return PyTokenTypes.LTLT;
}
- case 135: break;
+ case 136: break;
case 54:
{ return PyTokenTypes.LE;
}
- case 136: break;
- case 58:
+ case 137: break;
+ case 59:
{ return PyTokenTypes.AND_KEYWORD;
}
- case 137: break;
+ case 138: break;
case 41:
{ return PyTokenTypes.OR_KEYWORD;
}
- case 138: break;
- case 71:
+ case 139: break;
+ case 72:
{ return PyTokenTypes.PASS_KEYWORD;
}
- case 139: break;
+ case 140: break;
case 4:
{ return PyTokenTypes.END_OF_LINE_COMMENT;
}
- case 140: break;
+ case 141: break;
case 50:
{ return PyTokenTypes.OREQ;
}
- case 141: break;
+ case 142: break;
case 53:
{ return PyTokenTypes.GTGT;
}
- case 142: break;
+ case 143: break;
case 18:
{ return PyTokenTypes.AND;
}
- case 143: break;
+ case 144: break;
case 46:
{ return PyTokenTypes.DIVEQ;
}
- case 144: break;
- case 80:
+ case 145: break;
+ case 81:
{ return PyTokenTypes.RETURN_KEYWORD;
}
- case 145: break;
- case 77:
+ case 146: break;
+ case 78:
{ return PyTokenTypes.IMPORT_KEYWORD;
}
- case 146: break;
+ case 147: break;
case 52:
{ return PyTokenTypes.GE;
}
- case 147: break;
+ case 148: break;
case 42:
{ return PyTokenTypes.PLUSEQ;
}
- case 148: break;
- case 61:
+ case 149: break;
+ case 62:
{ return PyTokenTypes.DEF_KEYWORD;
}
- case 149: break;
+ case 150: break;
case 39:
{ return PyTokenTypes.IS_KEYWORD;
}
- case 150: break;
+ case 151: break;
+ case 58:
+ { return PyTokenTypes.ELLIPSIS;
+ }
+ case 152: break;
case 35:
{ return PyTokenTypes.FLOAT_LITERAL;
}
- case 151: break;
- case 65:
+ case 153: break;
+ case 66:
{ return PyTokenTypes.FLOORDIVEQ;
}
- case 152: break;
+ case 154: break;
case 5:
{ return PyTokenTypes.LINE_BREAK;
}
- case 153: break;
+ case 155: break;
case 48:
{ return PyTokenTypes.PERCEQ;
}
- case 154: break;
- case 62:
+ case 156: break;
+ case 63:
{ return PyTokenTypes.TRY_KEYWORD;
}
- case 155: break;
+ case 157: break;
case 49:
{ return PyTokenTypes.ANDEQ;
}
- case 156: break;
+ case 158: break;
case 14:
{ return PyTokenTypes.EQ;
}
- case 157: break;
- case 70:
+ case 159: break;
+ case 71:
{ return PyTokenTypes.FROM_KEYWORD;
}
- case 158: break;
- case 64:
+ case 160: break;
+ case 65:
{ return PyTokenTypes.EXPEQ;
}
- case 159: break;
- case 68:
+ case 161: break;
+ case 69:
{ return PyTokenTypes.ELIF_KEYWORD;
}
- case 160: break;
+ case 162: break;
case 29:
{ return PyTokenTypes.RBRACE;
}
- case 161: break;
- case 74:
+ case 163: break;
+ case 75:
{ return PyTokenTypes.CLASS_KEYWORD;
}
- case 162: break;
+ case 164: break;
case 40:
{ return PyTokenTypes.IF_KEYWORD;
}
- case 163: break;
+ case 165: break;
case 11:
{ return PyTokenTypes.TAB;
}
- case 164: break;
+ case 166: break;
case 55:
{ return PyTokenTypes.NE_OLD;
}
- case 165: break;
+ case 167: break;
case 23:
{ return PyTokenTypes.TILDE;
}
- case 166: break;
+ case 168: break;
case 20:
{ return PyTokenTypes.XOR;
}
- case 167: break;
- case 60:
+ case 169: break;
+ case 61:
{ return PyTokenTypes.DEL_KEYWORD;
}
- case 168: break;
+ case 170: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
diff --git a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java
index 6850f94cd544..7a74ee806aac 100644
--- a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java
+++ b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java
@@ -41,7 +41,7 @@ public class ExpressionParsing extends Parsing {
buildTokenElement(PyElementTypes.IMAGINARY_LITERAL_EXPRESSION, builder);
return true;
}
- else if (firstToken == PyTokenTypes.NONE_KEYWORD) {
+ else if (firstToken == PyTokenTypes.NONE_KEYWORD || firstToken == PyTokenTypes.ELLIPSIS) {
buildTokenElement(PyElementTypes.NONE_LITERAL_EXPRESSION, builder);
return true;
}
diff --git a/python/src/com/jetbrains/python/psi/PyNoneLiteralExpression.java b/python/src/com/jetbrains/python/psi/PyNoneLiteralExpression.java
index 21cb99ce50b7..ca83704e149d 100644
--- a/python/src/com/jetbrains/python/psi/PyNoneLiteralExpression.java
+++ b/python/src/com/jetbrains/python/psi/PyNoneLiteralExpression.java
@@ -1,6 +1,8 @@
package com.jetbrains.python.psi;
/**
+ * Used for literal None and literal ... (Ellipsis).
+ *
* @author yole
*/
public interface PyNoneLiteralExpression extends PyLiteralExpression {
diff --git a/python/testData/psi/Ellipsis.py b/python/testData/psi/Ellipsis.py
new file mode 100644
index 000000000000..775d0a587236
--- /dev/null
+++ b/python/testData/psi/Ellipsis.py
@@ -0,0 +1 @@
+d[...] = 1
diff --git a/python/testData/psi/Ellipsis.txt b/python/testData/psi/Ellipsis.txt
new file mode 100644
index 000000000000..4c5e5068d210
--- /dev/null
+++ b/python/testData/psi/Ellipsis.txt
@@ -0,0 +1,14 @@
+PyFile:Ellipsis.py
+ PyAssignmentStatement
+ PySubscriptionExpression
+ PyReferenceExpression: d
+ PsiElement(Py:IDENTIFIER)('d')
+ PsiElement(Py:LBRACKET)('[')
+ PyNoneLiteralExpression
+ PsiElement(Py:ELLIPSIS)('...')
+ PsiElement(Py:RBRACKET)(']')
+ PsiWhiteSpace(' ')
+ PsiElement(Py:EQ)('=')
+ PsiWhiteSpace(' ')
+ PyNumericLiteralExpression
+ PsiElement(Py:INTEGER_LITERAL)('1')
\ No newline at end of file
diff --git a/python/testSrc/com/jetbrains/python/PythonParsingTest.java b/python/testSrc/com/jetbrains/python/PythonParsingTest.java
index 97ad423e4a8f..c54451723ab5 100644
--- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java
+++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java
@@ -158,6 +158,10 @@ public class PythonParsingTest extends ParsingTestCase {
doTest(LanguageLevel.PYTHON30);
}
+ public void testEllipsis() throws Exception {
+ doTest();
+ }
+
public void doTest() throws Exception {
doTest(LanguageLevel.PYTHON25);
}