Example #1
0
 /// <summary>
 /// Parse a sequence of queries.
 /// Eeach query in the sequence must end with a ';'.
 /// Output also the individual query strings.
 /// </summary>
 public static List <Expression> ParseQueries(string query_sequence, out List <string> query_strings)
 {
     try
     {
         var input  = new Antlr.Runtime.ANTLRStringStream(query_sequence);
         var lexer  = new queryLexer(input);
         var tokens = new Antlr.Runtime.CommonTokenStream(lexer);
         var parser = new queryParser(tokens);
         var res    = parser.Queries();
         query_strings = res.Item2;
         return(res.Item1);
     }
     catch (Antlr.Runtime.MismatchedTokenException e)
     {
         string tok = (e.Token != null ? "'" + e.Token.Text + "'" : (e.Character >= 0 ? StringUtility.Escape((char)e.Character) : ""));
         string msg = "unexpected token " + tok;
         if (tok != "" && 0 <= e.Expecting && e.Expecting < queryParser.tokenNames.Length)
         {
             msg += string.Format(" expecting {0}", queryParser.tokenNames[e.Expecting]);
         }
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.FailedPredicateException e)
     {
         string msg = string.Format("unexpected '{0}' failed {1}", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()), e.PredicateText);
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.NoViableAltException e)
     {
         string msg = string.Format("unexpected '{0}' no alternatives", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.RecognitionException e)
     {
         string msg = string.Format("unexpected '{0}'", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (QueryParseException e)
     {
         throw e;
     }
     catch (Exception e)
     {
         throw new QueryParseException(1, 1, e.Message);
     }
 }
Example #2
0
 /// <summary>
 /// Parse a single query expression.
 /// </summary>
 public static Expression ParseQuery(string query)
 {
     try
     {
         var input = new Antlr.Runtime.ANTLRStringStream(query);
         var lexer = new queryLexer(input);
         var tokens = new Antlr.Runtime.CommonTokenStream(lexer);
         var parser = new queryParser(tokens);
         var res = parser.Query();
         return res;
     }
     catch (Antlr.Runtime.MismatchedTokenException e)
     {
         string tok = (e.Token != null ? "'" + e.Token.Text + "'" : (e.Character >= 0 ? Microsoft.Automata.StringUtility.Escape((char)e.Character) : ""));
         string msg = "unexpected token " + tok;
         if (tok !="" && 0 <= e.Expecting && e.Expecting < queryParser.tokenNames.Length)
             msg += string.Format(" expecting {0}", queryParser.tokenNames[e.Expecting]);
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.FailedPredicateException e)
     {
         string msg = string.Format("unexpected '{0}' failed {1}", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()), e.PredicateText);
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.NoViableAltException e)
     {
         string msg = string.Format("unexpected '{0}' no alternatives", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (Antlr.Runtime.RecognitionException e)
     {
         string msg = string.Format("unexpected '{0}'", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
         throw new QueryParseException(e.Line, e.CharPositionInLine + 1, msg);
     }
     catch (QueryParseException e)
     {
         throw e;
     }
     catch (Exception e)
     {
         throw new QueryParseException(1, 1, e.Message);
     }
 }