PY-23279, PY-9963: Support quotes in commandline interface:

* GeneralCommandLine does not support "as is" command line:
 it should be splitted to arguments (due to ProcessBuilder interface).
So, we need to support quotes in command line to use to split arguments
This commit is contained in:
Ilya.Kazakevich
2017-03-31 02:16:05 +03:00
parent 634aa3d1c5
commit eb06387c01
13 changed files with 292 additions and 80 deletions
@@ -18,6 +18,12 @@ public interface CommandLineElementTypes {
IElementType LITERAL_STARTS_FROM_SYMBOL = new IElementType("LITERAL_STARTS_FROM_SYMBOL", null);
IElementType LONG_OPTION_NAME_TOKEN = new IElementType("LONG_OPTION_NAME_TOKEN", null);
IElementType SHORT_OPTION_NAME_TOKEN = new IElementType("SHORT_OPTION_NAME_TOKEN", null);
IElementType SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT = new IElementType("SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT", null);
IElementType SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER = new IElementType("SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER", null);
IElementType SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL = new IElementType("SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL", null);
IElementType SPACED_LITERAL_STARTS_FROM_DIGIT = new IElementType("SPACED_LITERAL_STARTS_FROM_DIGIT", null);
IElementType SPACED_LITERAL_STARTS_FROM_LETTER = new IElementType("SPACED_LITERAL_STARTS_FROM_LETTER", null);
IElementType SPACED_LITERAL_STARTS_FROM_SYMBOL = new IElementType("SPACED_LITERAL_STARTS_FROM_SYMBOL", null);
class Factory {
public static PsiElement createElement(ASTNode node) {
@@ -43,7 +43,9 @@ public class CommandLineParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
// LITERAL_STARTS_FROM_LETTER | LITERAL_STARTS_FROM_DIGIT | LITERAL_STARTS_FROM_SYMBOL
// LITERAL_STARTS_FROM_LETTER | LITERAL_STARTS_FROM_DIGIT | LITERAL_STARTS_FROM_SYMBOL |
// SPACED_LITERAL_STARTS_FROM_LETTER | SPACED_LITERAL_STARTS_FROM_DIGIT | SPACED_LITERAL_STARTS_FROM_SYMBOL |
// SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER | SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT | SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL
public static boolean argument(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument")) return false;
boolean r;
@@ -51,6 +53,12 @@ public class CommandLineParser implements PsiParser, LightPsiParser {
r = consumeToken(b, LITERAL_STARTS_FROM_LETTER);
if (!r) r = consumeToken(b, LITERAL_STARTS_FROM_DIGIT);
if (!r) r = consumeToken(b, LITERAL_STARTS_FROM_SYMBOL);
if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_LETTER);
if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_DIGIT);
if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_SYMBOL);
if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER);
if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT);
if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL);
exit_section_(b, l, m, r, false, null);
return r;
}
@@ -1,9 +1,12 @@
/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
package com.jetbrains.commandInterface.commandLine;
import com.intellij.lexer.*;
import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;
import static com.intellij.psi.TokenType.*;
import static com.intellij.psi.TokenType.BAD_CHARACTER;
import static com.intellij.psi.TokenType.WHITE_SPACE;
import static com.jetbrains.commandInterface.commandLine.CommandLineElementTypes.*;
@@ -109,47 +112,47 @@ public class _CommandLineLexer implements FlexLexer {
/* The ZZ_CMAP_A table has 3088 entries */
static final char ZZ_CMAP_A[] = zzUnpackCMap(
"\11\0\5\1\22\0\1\1\14\0\1\7\2\6\12\11\1\5\2\0\1\13\3\0\32\4\1\0\1\5\2\0\1"+
"\3\13\4\3\0\1\12\6\0\1\1\12\0\1\1\11\0\1\2\12\0\1\2\4\0\1\2\5\0\27\2\1\0\12"+
"\2\4\0\14\2\16\0\5\2\7\0\1\2\1\0\1\2\1\0\5\2\1\0\2\2\2\0\4\2\1\0\1\2\6\0\1"+
"\2\1\0\3\2\1\0\1\2\1\0\4\2\1\0\23\2\1\0\13\2\10\0\6\2\1\0\26\2\2\0\1\2\6\0"+
"\10\2\10\0\13\2\5\0\3\2\15\0\12\10\4\0\6\2\1\0\1\2\17\0\2\2\7\0\2\2\12\10"+
"\3\2\2\0\2\2\1\0\16\2\15\0\11\2\13\0\1\2\16\0\12\10\6\2\4\0\2\2\4\0\1\2\5"+
"\0\6\2\4\0\1\2\11\0\1\2\3\0\1\2\7\0\11\2\7\0\5\2\17\0\26\2\3\0\1\2\2\0\1\2"+
"\7\0\12\2\4\0\12\10\1\2\4\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\1\2\3\0\4\2"+
"\3\0\1\2\20\0\1\2\15\0\2\2\1\0\1\2\5\0\6\2\4\0\2\2\1\0\2\2\1\0\2\2\1\0\2\2"+
"\17\0\4\2\1\0\1\2\7\0\12\10\2\0\3\2\20\0\11\2\1\0\2\2\1\0\2\2\1\0\5\2\3\0"+
"\1\2\2\0\1\2\30\0\1\2\13\0\10\2\2\0\1\2\3\0\1\2\1\0\6\2\3\0\3\2\1\0\4\2\3"+
"\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2\3\0\3\2\3\0\14\2\13\0\10\2\1\0\2\2\10\0\3\2"+
"\5\0\4\2\1\0\5\2\3\0\1\2\3\0\2\2\15\0\13\2\2\0\1\2\21\0\1\2\12\0\6\2\5\0\22"+
"\2\3\0\10\2\1\0\11\2\1\0\1\2\2\0\7\2\11\0\1\2\1\0\2\2\14\0\12\10\7\0\2\2\1"+
"\0\1\2\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2\1\0\3\2\1\0\1\2\1\0\1\2\2\0"+
"\2\2\1\0\4\2\1\0\2\2\11\0\1\2\2\0\5\2\1\0\1\2\11\0\12\10\2\0\14\2\1\0\24\2"+
"\13\0\5\2\3\0\6\2\4\0\4\2\3\0\1\2\3\0\2\2\7\0\3\2\4\0\15\2\14\0\1\2\1\0\6"+
"\2\1\0\1\2\5\0\1\2\2\0\13\2\1\0\15\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0\1"+
"\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0\16\2\2\0\6\2\2\0\15\2\2\0\1\2\1\1\17"+
"\2\1\0\10\2\7\0\15\2\1\0\6\2\23\0\1\2\4\0\1\2\3\0\11\2\1\0\1\2\5\0\17\2\1"+
"\0\16\2\2\0\14\2\13\0\1\2\15\0\7\2\7\0\16\2\15\0\2\2\12\10\3\0\3\2\11\0\4"+
"\2\1\0\4\2\3\0\2\2\11\0\10\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\6\2\1\0\7\2\1\0\1"+
"\2\3\0\3\2\1\0\7\2\3\0\4\2\2\0\6\2\4\0\13\1\15\0\2\1\5\0\1\1\17\0\1\1\1\0"+
"\1\2\15\0\1\2\2\0\1\2\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0\1\2\1\0"+
"\1\2\1\0\4\2\1\0\13\2\2\0\4\2\5\0\5\2\4\0\1\2\4\0\2\2\13\0\5\2\6\0\4\2\3\0"+
"\2\2\14\0\10\2\7\0\10\2\1\0\7\2\1\0\1\1\4\0\2\2\12\0\5\2\5\0\2\2\3\0\7\2\6"+
"\0\3\2\12\10\2\2\13\0\11\2\2\0\27\2\2\0\7\2\1\0\3\2\1\0\4\2\1\0\4\2\2\0\6"+
"\2\3\0\1\2\1\0\1\2\2\0\5\2\1\0\12\2\12\10\5\2\1\0\3\2\1\0\10\2\4\0\7\2\3\0"+
"\1\2\3\0\2\2\1\0\1\2\3\0\2\2\2\0\5\2\2\0\1\2\1\0\1\2\30\0\3\2\3\0\6\2\2\0"+
"\6\2\2\0\6\2\11\0\7\2\4\0\5\2\3\0\5\2\5\0\1\2\1\0\10\2\1\0\5\2\1\0\1\2\1\0"+
"\2\2\1\0\2\2\1\0\12\2\6\0\12\2\2\0\6\2\2\0\6\2\2\0\6\2\2\0\3\2\3\0\14\2\1"+
"\0\16\2\1\0\2\2\1\0\2\2\1\0\10\2\6\0\4\2\4\0\16\2\2\0\1\2\1\0\14\2\1\0\2\2"+
"\3\0\1\2\2\0\4\2\1\0\2\2\12\0\10\2\6\0\6\2\1\0\3\2\1\0\12\2\3\0\1\2\12\0\4"+
"\2\13\0\12\10\1\2\1\0\1\2\3\0\7\2\1\0\1\2\1\0\4\2\1\0\17\2\1\0\2\2\14\0\3"+
"\2\4\0\2\2\1\0\1\2\20\0\4\2\10\0\1\2\13\0\10\2\5\0\3\2\2\0\1\2\2\0\2\2\2\0"+
"\4\2\1\0\14\2\1\0\1\2\1\0\7\2\1\0\21\2\1\0\4\2\2\0\10\2\1\0\7\2\1\0\14\2\1"+
"\0\4\2\1\0\5\2\1\0\1\2\3\0\14\2\2\0\13\2\1\0\10\2\2\0\22\10\1\0\2\2\1\0\1"+
"\2\2\0\1\2\1\0\12\2\1\0\4\2\1\0\1\2\1\0\1\2\6\0\1\2\4\0\1\2\1\0\1\2\1\0\1"+
"\2\1\0\3\2\1\0\2\2\1\0\1\2\2\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\1\2\1\0\2\2"+
"\1\0\1\2\2\0\4\2\1\0\7\2\1\0\4\2\1\0\4\2\1\0\1\2\1\0\12\2\1\0\5\2\1\0\3\2"+
"\1\0\5\2\1\0\5\2");
"\11\0\5\2\22\0\1\2\1\0\1\14\4\0\1\15\5\0\1\10\2\7\12\12\1\6\2\0\1\16\3\0\32"+
"\5\1\0\1\6\2\0\1\4\13\5\3\0\1\13\6\0\1\1\12\0\1\1\11\0\1\3\12\0\1\3\4\0\1"+
"\3\5\0\27\3\1\0\12\3\4\0\14\3\16\0\5\3\7\0\1\3\1\0\1\3\1\0\5\3\1\0\2\3\2\0"+
"\4\3\1\0\1\3\6\0\1\3\1\0\3\3\1\0\1\3\1\0\4\3\1\0\23\3\1\0\13\3\10\0\6\3\1"+
"\0\26\3\2\0\1\3\6\0\10\3\10\0\13\3\5\0\3\3\15\0\12\11\4\0\6\3\1\0\1\3\17\0"+
"\2\3\7\0\2\3\12\11\3\3\2\0\2\3\1\0\16\3\15\0\11\3\13\0\1\3\16\0\12\11\6\3"+
"\4\0\2\3\4\0\1\3\5\0\6\3\4\0\1\3\11\0\1\3\3\0\1\3\7\0\11\3\7\0\5\3\17\0\26"+
"\3\3\0\1\3\2\0\1\3\7\0\12\3\4\0\12\11\1\3\4\0\10\3\2\0\2\3\2\0\26\3\1\0\7"+
"\3\1\0\1\3\3\0\4\3\3\0\1\3\20\0\1\3\15\0\2\3\1\0\1\3\5\0\6\3\4\0\2\3\1\0\2"+
"\3\1\0\2\3\1\0\2\3\17\0\4\3\1\0\1\3\7\0\12\11\2\0\3\3\20\0\11\3\1\0\2\3\1"+
"\0\2\3\1\0\5\3\3\0\1\3\2\0\1\3\30\0\1\3\13\0\10\3\2\0\1\3\3\0\1\3\1\0\6\3"+
"\3\0\3\3\1\0\4\3\3\0\2\3\1\0\1\3\1\0\2\3\3\0\2\3\3\0\3\3\3\0\14\3\13\0\10"+
"\3\1\0\2\3\10\0\3\3\5\0\4\3\1\0\5\3\3\0\1\3\3\0\2\3\15\0\13\3\2\0\1\3\21\0"+
"\1\3\12\0\6\3\5\0\22\3\3\0\10\3\1\0\11\3\1\0\1\3\2\0\7\3\11\0\1\3\1\0\2\3"+
"\14\0\12\11\7\0\2\3\1\0\1\3\2\0\2\3\1\0\1\3\2\0\1\3\6\0\4\3\1\0\7\3\1\0\3"+
"\3\1\0\1\3\1\0\1\3\2\0\2\3\1\0\4\3\1\0\2\3\11\0\1\3\2\0\5\3\1\0\1\3\11\0\12"+
"\11\2\0\14\3\1\0\24\3\13\0\5\3\3\0\6\3\4\0\4\3\3\0\1\3\3\0\2\3\7\0\3\3\4\0"+
"\15\3\14\0\1\3\1\0\6\3\1\0\1\3\5\0\1\3\2\0\13\3\1\0\15\3\1\0\4\3\2\0\7\3\1"+
"\0\1\3\1\0\4\3\2\0\1\3\1\0\4\3\2\0\7\3\1\0\1\3\1\0\4\3\2\0\16\3\2\0\6\3\2"+
"\0\15\3\2\0\1\3\1\1\17\3\1\0\10\3\7\0\15\3\1\0\6\3\23\0\1\3\4\0\1\3\3\0\11"+
"\3\1\0\1\3\5\0\17\3\1\0\16\3\2\0\14\3\13\0\1\3\15\0\7\3\7\0\16\3\15\0\2\3"+
"\12\11\3\0\3\3\11\0\4\3\1\0\4\3\3\0\2\3\11\0\10\3\1\0\1\3\1\0\1\3\1\0\1\3"+
"\1\0\6\3\1\0\7\3\1\0\1\3\3\0\3\3\1\0\7\3\3\0\4\3\2\0\6\3\4\0\13\1\15\0\2\1"+
"\5\0\1\1\17\0\1\1\1\0\1\3\15\0\1\3\2\0\1\3\4\0\1\3\2\0\12\3\1\0\1\3\3\0\5"+
"\3\6\0\1\3\1\0\1\3\1\0\1\3\1\0\4\3\1\0\13\3\2\0\4\3\5\0\5\3\4\0\1\3\4\0\2"+
"\3\13\0\5\3\6\0\4\3\3\0\2\3\14\0\10\3\7\0\10\3\1\0\7\3\1\0\1\1\4\0\2\3\12"+
"\0\5\3\5\0\2\3\3\0\7\3\6\0\3\3\12\11\2\3\13\0\11\3\2\0\27\3\2\0\7\3\1\0\3"+
"\3\1\0\4\3\1\0\4\3\2\0\6\3\3\0\1\3\1\0\1\3\2\0\5\3\1\0\12\3\12\11\5\3\1\0"+
"\3\3\1\0\10\3\4\0\7\3\3\0\1\3\3\0\2\3\1\0\1\3\3\0\2\3\2\0\5\3\2\0\1\3\1\0"+
"\1\3\30\0\3\3\3\0\6\3\2\0\6\3\2\0\6\3\11\0\7\3\4\0\5\3\3\0\5\3\5\0\1\3\1\0"+
"\10\3\1\0\5\3\1\0\1\3\1\0\2\3\1\0\2\3\1\0\12\3\6\0\12\3\2\0\6\3\2\0\6\3\2"+
"\0\6\3\2\0\3\3\3\0\14\3\1\0\16\3\1\0\2\3\1\0\2\3\1\0\10\3\6\0\4\3\4\0\16\3"+
"\2\0\1\3\1\0\14\3\1\0\2\3\3\0\1\3\2\0\4\3\1\0\2\3\12\0\10\3\6\0\6\3\1\0\3"+
"\3\1\0\12\3\3\0\1\3\12\0\4\3\13\0\12\11\1\3\1\0\1\3\3\0\7\3\1\0\1\3\1\0\4"+
"\3\1\0\17\3\1\0\2\3\14\0\3\3\4\0\2\3\1\0\1\3\20\0\4\3\10\0\1\3\13\0\10\3\5"+
"\0\3\3\2\0\1\3\2\0\2\3\2\0\4\3\1\0\14\3\1\0\1\3\1\0\7\3\1\0\21\3\1\0\4\3\2"+
"\0\10\3\1\0\7\3\1\0\14\3\1\0\4\3\1\0\5\3\1\0\1\3\3\0\14\3\2\0\13\3\1\0\10"+
"\3\2\0\22\11\1\0\2\3\1\0\1\3\2\0\1\3\1\0\12\3\1\0\4\3\1\0\1\3\1\0\1\3\6\0"+
"\1\3\4\0\1\3\1\0\1\3\1\0\1\3\1\0\3\3\1\0\2\3\1\0\1\3\2\0\1\3\1\0\1\3\1\0\1"+
"\3\1\0\1\3\1\0\1\3\1\0\2\3\1\0\1\3\2\0\4\3\1\0\7\3\1\0\4\3\1\0\4\3\1\0\1\3"+
"\1\0\12\3\1\0\5\3\1\0\3\3\1\0\5\3\1\0\5\3");
/**
* Translates DFA states to action switch labels.
@@ -157,11 +160,12 @@ public class _CommandLineLexer implements FlexLexer {
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\1\0\1\1\1\2\1\3\1\4\1\1\1\5\1\6"+
"\1\7\1\0\1\10";
"\1\0\1\1\1\2\1\3\1\4\1\1\1\5\2\1"+
"\1\6\1\7\7\0\1\10\1\11\1\12\1\13\1\14"+
"\1\15\1\16";
private static int [] zzUnpackAction() {
int [] result = new int[11];
int [] result = new int[25];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -186,11 +190,13 @@ public class _CommandLineLexer implements FlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\14\0\30\0\44\0\60\0\74\0\110\0\14"+
"\0\14\0\124\0\140";
"\0\0\0\17\0\36\0\55\0\74\0\113\0\132\0\151"+
"\0\170\0\17\0\17\0\207\0\226\0\245\0\264\0\303"+
"\0\322\0\341\0\360\0\17\0\17\0\17\0\17\0\17"+
"\0\17";
private static int [] zzUnpackRowMap() {
int [] result = new int[11];
int [] result = new int[25];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -213,15 +219,23 @@ public class _CommandLineLexer implements FlexLexer {
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\2\1\3\1\4\1\2\1\4\1\2\1\5\1\6"+
"\2\7\1\5\1\10\15\0\1\3\15\0\5\4\1\0"+
"\1\4\5\0\5\5\1\0\1\5\4\0\1\11\1\0"+
"\1\11\2\0\1\12\7\0\5\7\1\0\1\7\4\0"+
"\1\13\1\0\1\13\12\0\2\13\2\0\1\13\1\0"+
"\1\13\2\0";
"\1\2\2\3\1\4\1\2\1\4\1\2\1\5\1\6"+
"\2\7\1\5\1\10\1\11\1\12\20\0\2\3\20\0"+
"\5\4\1\0\1\4\10\0\5\5\1\0\1\5\7\0"+
"\1\13\1\0\1\13\2\0\1\14\12\0\5\7\1\0"+
"\1\7\7\0\1\15\1\0\1\15\1\0\1\16\1\0"+
"\2\17\1\16\6\0\1\20\1\0\1\20\1\0\1\21"+
"\1\0\2\22\1\21\6\0\1\23\1\0\1\23\13\0"+
"\1\15\1\0\5\15\1\0\1\15\1\0\1\24\4\0"+
"\1\16\1\0\5\16\1\0\1\16\1\0\1\25\4\0"+
"\1\17\1\0\5\17\1\0\1\17\1\0\1\26\4\0"+
"\1\20\1\0\5\20\1\0\1\20\2\0\1\27\3\0"+
"\1\21\1\0\5\21\1\0\1\21\2\0\1\30\3\0"+
"\1\22\1\0\5\22\1\0\1\22\2\0\1\31\5\0"+
"\2\23\2\0\1\23\1\0\1\23\4\0";
private static int [] zzUnpackTrans() {
int [] result = new int[108];
int [] result = new int[255];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -259,10 +273,10 @@ public class _CommandLineLexer implements FlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\1\0\1\11\5\1\2\11\1\0\1\1";
"\1\0\1\11\7\1\2\11\7\0\1\1\6\11";
private static int [] zzUnpackAttribute() {
int [] result = new int[11];
int [] result = new int[25];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -570,35 +584,59 @@ public class _CommandLineLexer implements FlexLexer {
case 1:
{ return BAD_CHARACTER;
}
case 9: break;
case 15: break;
case 2:
{ return WHITE_SPACE;
}
case 10: break;
case 16: break;
case 3:
{ return LITERAL_STARTS_FROM_LETTER;
}
case 11: break;
case 17: break;
case 4:
{ return LITERAL_STARTS_FROM_SYMBOL;
}
case 12: break;
case 18: break;
case 5:
{ return LITERAL_STARTS_FROM_DIGIT;
}
case 13: break;
case 19: break;
case 6:
{ return EQ;
}
case 14: break;
case 20: break;
case 7:
{ return SHORT_OPTION_NAME_TOKEN;
}
case 15: break;
case 21: break;
case 8:
{ return LONG_OPTION_NAME_TOKEN;
}
case 16: break;
case 22: break;
case 9:
{ return SPACED_LITERAL_STARTS_FROM_LETTER;
}
case 23: break;
case 10:
{ return SPACED_LITERAL_STARTS_FROM_SYMBOL;
}
case 24: break;
case 11:
{ return SPACED_LITERAL_STARTS_FROM_DIGIT;
}
case 25: break;
case 12:
{ return SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER;
}
case 26: break;
case 13:
{ return SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL;
}
case 27: break;
case 14:
{ return SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT;
}
case 28: break;
default:
zzScanError(ZZ_NO_MATCH);
}
@@ -20,6 +20,24 @@ public interface CommandLineArgument extends CommandLinePart {
@Nullable
PsiElement getLiteralStartsFromSymbol();
@Nullable
PsiElement getSingleQSpacedLiteralStartsFromDigit();
@Nullable
PsiElement getSingleQSpacedLiteralStartsFromLetter();
@Nullable
PsiElement getSingleQSpacedLiteralStartsFromSymbol();
@Nullable
PsiElement getSpacedLiteralStartsFromDigit();
@Nullable
PsiElement getSpacedLiteralStartsFromLetter();
@Nullable
PsiElement getSpacedLiteralStartsFromSymbol();
@Nullable
Option findOptionForOptionArgument();
@@ -29,4 +47,7 @@ public interface CommandLineArgument extends CommandLinePart {
@Nullable
Help findBestHelp();
@NotNull
String getValueNoQuotes();
}
@@ -24,4 +24,7 @@ public interface CommandLineOption extends CommandLinePart {
@Nullable
Option findRealOption();
@Nullable
CommandLineArgument findArgument();
}
@@ -47,6 +47,42 @@ public class CommandLineArgumentImpl extends CommandLineElement implements Comma
return findChildByType(LITERAL_STARTS_FROM_SYMBOL);
}
@Override
@Nullable
public PsiElement getSingleQSpacedLiteralStartsFromDigit() {
return findChildByType(SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT);
}
@Override
@Nullable
public PsiElement getSingleQSpacedLiteralStartsFromLetter() {
return findChildByType(SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER);
}
@Override
@Nullable
public PsiElement getSingleQSpacedLiteralStartsFromSymbol() {
return findChildByType(SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL);
}
@Override
@Nullable
public PsiElement getSpacedLiteralStartsFromDigit() {
return findChildByType(SPACED_LITERAL_STARTS_FROM_DIGIT);
}
@Override
@Nullable
public PsiElement getSpacedLiteralStartsFromLetter() {
return findChildByType(SPACED_LITERAL_STARTS_FROM_LETTER);
}
@Override
@Nullable
public PsiElement getSpacedLiteralStartsFromSymbol() {
return findChildByType(SPACED_LITERAL_STARTS_FROM_SYMBOL);
}
@Nullable
public Option findOptionForOptionArgument() {
return CommandLinePsiImplUtils.findOptionForOptionArgument(this);
@@ -62,4 +98,9 @@ public class CommandLineArgumentImpl extends CommandLineElement implements Comma
return CommandLinePsiImplUtils.findBestHelp(this);
}
@NotNull
public String getValueNoQuotes() {
return CommandLinePsiImplUtils.getValueNoQuotes(this);
}
}
@@ -54,4 +54,9 @@ public class CommandLineOptionImpl extends CommandLineElement implements Command
return CommandLinePsiImplUtils.findRealOption(this);
}
@Nullable
public CommandLineArgument findArgument() {
return CommandLinePsiImplUtils.findArgument(this);
}
}