Change in asterixdb[master]: Easier to read parser errors for SQL++
Till Westmann has submitted this change and it was merged. Change subject: Easier to read parser errors for SQL++ .. Easier to read parser errors for SQL++ Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1182 Tested-by: Jenkins Integration-Tests: Jenkins Reviewed-by: abdullah alamoudi --- M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj 3 files changed, 135 insertions(+), 9 deletions(-) Approvals: abdullah alamoudi: Looks good to me, approved Jenkins: Verified; Verified Objections: Jenkins: Violations found diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index 54f06e6..c19593b 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -3163,7 +3163,7 @@ missing-optionality - "?" + string) enforced diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java index dc0fa93..07aa473 100644 --- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java +++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java @@ -29,6 +29,10 @@ public class ScopeChecker { +protected static String quot = "\""; + +protected String eol = System.getProperty("line.separator", "\n"); + protected Counter varCounter = new Counter(-1); protected Stack scopeStack = new Stack(); @@ -57,7 +61,6 @@ /** * Create a new scope, using the top scope in scopeStack as parent scope * - * @param scopeStack * @return new scope */ public final Scope createNewScope() { @@ -70,7 +73,6 @@ /** * Extend the current scope * - * @param scopeStack * @return */ public final Scope extendCurrentScope() { @@ -172,7 +174,88 @@ return false; } -public static final String removeQuotesAndEscapes(String s) { +protected int appendExpected(StringBuilder expected, int[][] expectedTokenSequences, String[] tokenImage) { +int maxSize = 0; +for (int i = 0; i < expectedTokenSequences.length; i++) { +if (maxSize < expectedTokenSequences[i].length) { +maxSize = expectedTokenSequences[i].length; +} +for (int j = 0; j < expectedTokenSequences[i].length; j++) { +append(expected, fixQuotes(tokenImage[expectedTokenSequences[i][j]])); +append(expected, " "); +} +if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { +append(expected, "..."); +} +append(expected, eol); +append(expected, ""); +} +return maxSize; +} + +private void append(StringBuilder expected, String str) { +if (expected != null) { +expected.append(str); +} +} + +protected String fixQuotes(String token) { +final int last = token.length() - 1; +if (token.charAt(0) == '"' && token.charAt(last) == '"') { +return "'" + token.substring(1, last) + "'"; +} else { +return token; +} +} + +protected static String addEscapes(String str) { +StringBuilder escaped = new StringBuilder(); +for (int i = 0; i < str.length(); i++) { +appendChar(escaped, str.charAt(i)); +} +return escaped.toString(); +} + +private static void appendChar(StringBuilder escaped, char c) { +char ch; +switch (c) { +case 0: +return; +case '\b': +escaped.append("\\b"); +return; +case '\t': +escaped.append("\\t"); +return; +case '\n': +escaped.append("\\n"); +return; +case '\f': +escaped.append("\\f"); +return; +case '\r': +escaped.append("\\r"); +return; +case '\"': +escaped.append("\\\""); +return; +case '\'': +escaped.append("\\\'"); +return; +case '\\': +escaped.append(""); +return; +default: +if ((
Change in asterixdb[master]: Easier to read parser errors for SQL++
abdullah alamoudi has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 3: Code-Review+2 -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Yingyi Bu Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 3: Integration-Tests+1 Integration Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/665/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 3: Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/665/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 3: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/2679/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/1182 to look at the new patch set (#3). Change subject: Easier to read parser errors for SQL++ .. Easier to read parser errors for SQL++ Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 --- M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj 3 files changed, 135 insertions(+), 9 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/82/1182/3 -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 2: Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/664/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/1182 to look at the new patch set (#2). Change subject: Easier to read parser errors for SQL++ .. Easier to read parser errors for SQL++ Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 --- M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj 3 files changed, 131 insertions(+), 7 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/82/1182/2 -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 2: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/2678/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Jenkins has posted comments on this change. Change subject: Easier to read parser errors for SQL++ .. Patch Set 1: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/2673/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1182 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb[master]: Easier to read parser errors for SQL++
Till Westmann has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1182 Change subject: Easier to read parser errors for SQL++ .. Easier to read parser errors for SQL++ Change-Id: I13fd54fe2b1237b937a1706cf83fb47ce536b546 --- M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj 2 files changed, 130 insertions(+), 6 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/82/1182/1 diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java index dc0fa93..4c4766a 100644 --- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java +++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java @@ -29,6 +29,9 @@ public class ScopeChecker { +protected static String QUOT = "\""; +protected static String NL = "\n"; + protected Counter varCounter = new Counter(-1); protected Stack scopeStack = new Stack(); @@ -57,7 +60,6 @@ /** * Create a new scope, using the top scope in scopeStack as parent scope * - * @param scopeStack * @return new scope */ public final Scope createNewScope() { @@ -70,7 +72,6 @@ /** * Extend the current scope * - * @param scopeStack * @return */ public final Scope extendCurrentScope() { @@ -172,6 +173,86 @@ return false; } +protected String eol = System.getProperty("line.separator", NL); + +protected int appendExpected(StringBuilder expected, int[][] expectedTokenSequences, String[] tokenImage) { +int maxSize = 0; +for (int i = 0; i < expectedTokenSequences.length; i++) { +if (maxSize < expectedTokenSequences[i].length) { +maxSize = expectedTokenSequences[i].length; +} +for (int j = 0; j < expectedTokenSequences[i].length; j++) { +append(expected, fixQuotes(tokenImage[expectedTokenSequences[i][j]])); +append(expected, " "); +} +if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { +append(expected, "..."); +} +append(expected, eol); +append(expected, ""); +} +return maxSize; +} + +private void append(StringBuilder expected, String str) { +if (expected != null) { +expected.append(str); +} +} + +protected String fixQuotes(String token) { +final int last = token.length() - 1; +if (token.charAt(0) == '"' && token.charAt(last) == '"') { +return "'" + token.substring(1, last) + "'"; +} else { +return token; +} +} + +protected static String addEscapes(String str) { +StringBuilder retval = new StringBuilder(); +char ch; +for (int i = 0; i < str.length(); i++) { +switch (str.charAt(i)) { +case 0: +continue; +case '\b': +retval.append("\\b"); +continue; +case '\t': +retval.append("\\t"); +continue; +case '\n': +retval.append("\\n"); +continue; +case '\f': +retval.append("\\f"); +continue; +case '\r': +retval.append("\\r"); +continue; +case '\"': +retval.append("\\\""); +continue; +case '\'': +retval.append("\\\'"); +continue; +case '\\': +retval.append(""); +continue; +default: +if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { +String s = "" + Integer.toString(ch, 16); +retval.append("\\u" + s.substring(s.length() - 4, s.length())); +} else { +retval.append(ch); +} +continue; +} +} +return retval.toString(); +} + public static final String removeQuotesAndEscapes(String s) { char q = s.charAt(0); // simple or double quote String stripped = s.substring(1, s.length() - 1); @@ -220,6 +301,10 @@ return res.toString(); } +public String getLine(int line) { +return inputLines[line - 1]; +} + public String extractFragment(