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); }