Skip to content

Commit 23bd199

Browse files
committed
Disabling error checking and fixes, adding SQL reserved words
1 parent ba9fff8 commit 23bd199

File tree

5 files changed

+59
-31
lines changed

5 files changed

+59
-31
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ patchPluginXml {
2424
<em>most HTML tags may be used</em>"""
2525
}
2626

27+
28+
2729
sourceSets.main.java.srcDirs 'src/main/gen'

src/main/java/org/intellij/sdk/language/SQLTest.bnf

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,40 +16,56 @@
1616
parserUtilClass="org.intellij.sdk.language.SQLTestParserUtil"
1717

1818
tokens=[
19-
WHITE_SPACE='regexp:\n'
2019
SEMI=';'
2120
EQ='='
2221
LP='('
2322
RP=')'
2423
space=' '
25-
tab = '\t'
26-
tempdb='kkk'
27-
24+
dot = '.'
25+
minus = '-'
26+
plus = '+'
27+
comma = ','
28+
star = '*'
29+
less = '<'
30+
higher = '>'
2831
loop = 'loop'
2932
endloop = 'endloop'
3033
statement = 'statement'
3134
comment='regexp:#.*'
3235
number='regexp:\d+(\.\d*)?'
3336
id='regexp::?\p{Alpha}\w*:?'
3437
string="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")"
35-
query_regex = "regexp:.*\;"
3638
query = 'query'
37-
query_return_type = "regexp:[TIR]*\s"
38-
query_label = "regexp:label.*\s"
39+
query_return_type = "regexp:[TIR]+\s"
40+
query_label = "regexp:label.+\s"
3941
load = 'load'
42+
pragma = 'PRAGMA'
43+
restart = 'restart'
44+
begin = 'begin'
45+
transaction = 'transaction'
46+
rollback = 'rollback'
47+
q_result = '----'
48+
49+
50+
// SQL Keywords
51+
sql = "regexp:(ADD|ALTER|AND|ANY|AS|ASC|BACKUP|BETWEEN|CASE|CHECK|CREATE|REPLACE|DELETE|DESC|COLUMN|CONSTRAINT|DROP|DATABASE|DEFAULT|EXEC|EXISTS|FOREIGN|FROM|FULL|GROUP|HAVING|IN|INDEX|INNER|INSERT|IS|LEFT|LIKE|LIMIT|NOT|OR|ORDER|BY|OUTER|PRIMARY|KEY|PROCEDURE|RIGHT|JOIN|ROWNUM|SELECT|DISTINCT|INTO|SET|TOP|TRUNCATE|TABLE|UNION|ALL|UNIQUE|UPDATE|VALUES|VIEW|WHERE)+\s"
4052
]
4153
}
4254

4355
testFile ::= item_ *
56+
external accept_all_rule ::= accept_all
57+
private item_ ::= !<<eof>> accept_all_rule
4458

45-
private item_ ::= !<<eof>> (comment| property_loop|query_statement|load_statement) item_?
46-
47-
property_loop ::= loop space id space number space number property_statement endloop
48-
external tsv_line_rule ::= sqlResults
49-
external sql_query_rule ::= sqlQuery
50-
statement_value ::='ok'|'error'
51-
query_sort_mode ::= 'nosort'|'rowsort'|'valuesort'
52-
query_statement ::= query space query_return_type [(query_sort_mode [space query_label])|query_label] sql_query_rule '____' tsv_line_rule
53-
property_statement ::= STATEMENT space statement_value query_regex
54-
load_statement ::= load space id
59+
//
60+
//private item_ ::= !<<eof>> (comment| property_loop|query_statement|load_statement|restart|property_statement) item_?
61+
//
62+
//property_loop ::= loop space id space number space number property_statement endloop
63+
//external tsv_line_rule ::= sqlResults
64+
//external sql_query_rule ::= sqlQuery
65+
//statement_value ::='ok'|'error'
66+
//query_sort_mode ::= 'nosort'|'rowsort'|'valuesort'
67+
//pragma_rule ::= pragma space id
68+
//query_statement ::= query space query_return_type [(query_sort_mode [space query_label])|query_label] query_regex '----' tsv_line_rule
69+
//property_statement ::= STATEMENT space statement_value (pragma_rule|query_regex)
70+
//load_statement ::= load space id
5571

src/main/java/org/intellij/sdk/language/SQLTestParserDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public SpaceRequirements spaceExistenceTypeBetweenTokens(ASTNode left, ASTNode r
7777
@NotNull
7878
@Override
7979
public PsiElement createElement(ASTNode node) {
80-
return TestTypes.Factory.createElement(node);
80+
return null;
8181
}
8282

8383
}

src/main/java/org/intellij/sdk/language/SQLTestParserUtil.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,29 @@ public void getLanguagesToInject(@NotNull final PsiLanguageInjectionHost host, @
2828
}
2929
}
3030
}
31+
3132
public static boolean sqlResults(PsiBuilder builder, int level) {
32-
boolean skip = false;
33+
String text = builder.getTokenText();
34+
IElementType cur = builder.getTokenType();
3335
IElementType x = builder.lookAhead(1);
3436
IElementType ID = new TestTokenType("id");
3537
IElementType NUMBER = new TestTokenType("number");
3638
IElementType EMPTY = new TestTokenType(" ");
37-
38-
while (true){
39-
assert x != null;
40-
if (!(x.toString().equals(ID.toString()) || x.toString().equals(NUMBER.toString()) || x.toString().equals(EMPTY.toString()))) break;
41-
builder.advanceLexer();
42-
x = builder.lookAhead(1);
43-
skip = true;
39+
if (cur != null){
40+
while (cur.toString().equals(ID.toString()) || cur.toString().equals(NUMBER.toString()) || cur.toString().equals(EMPTY.toString())){
41+
builder.advanceLexer();
42+
cur = builder.getTokenType();
43+
text = builder.getTokenText();
44+
}
4445
}
45-
if (skip){
46+
return true;
47+
}
48+
49+
public static boolean accept_all(PsiBuilder builder, int level) {
50+
IElementType cur = builder.getTokenType();
51+
if (cur != null){
4652
builder.advanceLexer();
53+
cur = builder.getTokenType();
4754
}
4855
return true;
4956
}

src/main/java/org/intellij/sdk/language/SQLTestSyntaxHighlighter.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class SQLTestSyntaxHighlighter extends SyntaxHighlighterBase {
2727
createTextAttributesKey("TEST_BAD_CHARACTER", HighlighterColors.BAD_CHARACTER);
2828
public static final TextAttributesKey QUERY =
2929
createTextAttributesKey("TEST_Query", HighlighterColors.TEXT);
30+
public static final TextAttributesKey SQL =
31+
createTextAttributesKey("TEST_SQL", DefaultLanguageHighlighterColors.CONSTANT);
3032

3133
private static final TextAttributesKey[] BAD_CHAR_KEYS = new TextAttributesKey[]{BAD_CHARACTER};
3234
private static final TextAttributesKey[] RESERVED_KEYS = new TextAttributesKey[]{RESERVED};
@@ -35,6 +37,7 @@ public class SQLTestSyntaxHighlighter extends SyntaxHighlighterBase {
3537

3638
private static final TextAttributesKey[] VALUE_KEYS = new TextAttributesKey[]{VALUE};
3739
private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT};
40+
private static final TextAttributesKey[] SQL_KEYS = new TextAttributesKey[]{SQL};
3841
private static final TextAttributesKey[] EMPTY_KEYS = new TextAttributesKey[0];
3942

4043
@NotNull
@@ -46,18 +49,18 @@ public Lexer getHighlightingLexer() {
4649
@NotNull
4750
@Override
4851
public TextAttributesKey[] getTokenHighlights(IElementType tokenType) {
49-
if (tokenType.equals(TestTypes.LOOP) || tokenType.equals(TestTypes.LOAD) || tokenType.equals(TestTypes.ENDLOOP)|| tokenType.equals(TestTypes.STATEMENT) || tokenType.equals(TestTypes.QUERY)) {
52+
if (tokenType.equals(TestTypes.LOOP) || tokenType.equals(TestTypes.Q_RESULT) || tokenType.equals(TestTypes.RESTART)|| tokenType.equals(TestTypes.BEGIN)|| tokenType.equals(TestTypes.TRANSACTION) || tokenType.equals(TestTypes.ROLLBACK)||tokenType.equals(TestTypes.PRAGMA) ||tokenType.equals(TestTypes.RESTART) || tokenType.equals(TestTypes.LOAD) || tokenType.equals(TestTypes.ENDLOOP)|| tokenType.equals(TestTypes.STATEMENT) || tokenType.equals(TestTypes.QUERY)) {
5053
return RESERVED_KEYS;
5154
} else if (tokenType.equals(TestTypes.ID)|| tokenType.equals(TestTypes.QUERY_RETURN_TYPE)) {
5255
return KEY_KEYS;
53-
} else if (tokenType.equals(TestTypes.NUMBER) || tokenType.equals(TestTypes.STATEMENT_VALUE) || tokenType.equals(TestTypes.QUERY_SORT_MODE) || tokenType.equals(TestTypes.QUERY_LABEL)) {
56+
} else if (tokenType.equals(TestTypes.NUMBER) || tokenType.equals(TestTypes.QUERY_LABEL)) {
5457
return VALUE_KEYS;
5558
} else if (tokenType.equals(TestTypes.COMMENT)) {
5659
return COMMENT_KEYS;
5760
} else if (tokenType.equals(TokenType.BAD_CHARACTER)) {
5861
return BAD_CHAR_KEYS;
59-
} else if (tokenType.equals(TestTypes.QUERY_REGEX)){
60-
return QUERY_KEYS;
62+
} else if (tokenType.equals(TestTypes.SQL)){
63+
return SQL_KEYS;
6164
} else {
6265
return EMPTY_KEYS;
6366
}

0 commit comments

Comments
 (0)