public static DataType RefType(Token tokRef, ObjectName objRef, bool rowType, bool extRef) { if (extRef) throw new NotSupportedException(); if (objRef == null && tokRef != null) objRef = ObjectName(tokRef.image); return rowType ? (DataType) PrimitiveTypes.RowType(objRef) : PrimitiveTypes.ColumnType(objRef); }
public PlSql(System.IO.TextReader stream) { mcc_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new PlSqlTokenManager(mcc_input_stream); token = new Token(); mcc_ntk = -1; mcc_gen = 0; for (int i = 0; i < 239; i++) mcc_la1[i] = -1; for (int i = 0; i < mcc_2_rtns.Length; i++) mcc_2_rtns[i] = new MccCalls(); }
public static DataType PrimitiveType(SqlType sqlType, Token sizeToken, Token scaleToken) { int size = -1; byte scale = 0; if (sizeToken != null) { if (!Int32.TryParse(sizeToken.image, out size)) throw new ParseException(); } if (scaleToken != null) { if (!Byte.TryParse(scaleToken.image, out scale)) throw new ParseException(); } return PrimitiveTypes.Type(sqlType, size, scale); }
public static String MakeLabel(Token start, Token end) { StringBuilder buf = new StringBuilder(); Token t = start.next; bool last_letter = false; while (t != end) { bool is_letter_token = Char.IsLetter(t.image[0]); if (is_letter_token) { if (last_letter) { buf.Append(' '); } last_letter = true; } else { last_letter = false; } buf.Append(t.image); t = t.next; } buf.Append(t.image); return buf.ToString(); }
public static String AsNonQuotedRef(Token token) { if (token.kind == SqlParserConstants.QUOTED_VARIABLE) // Strip " from start and end if a quoted variable return token.image.Substring(1, token.image.Length - 2); if (token.kind == SqlParserConstants.QUOTED_DELIMINATED_REF || token.kind == SqlParserConstants.QUOTEDGLOBVARIABLE) { // Remove all " from the string string image = token.image; StringBuilder b = new StringBuilder(); int sz = image.Length; for (int i = 0; i < sz; ++i) { char c = image[i]; if (c != '\"') { b.Append(c); } } return b.ToString(); } return token.image; }
private bool mcc_3_59() { if (mcc_3R_66()) return true; Token xsp; xsp = mcc_scanpos; if (mcc_3R_261()) mcc_scanpos = xsp; return false; }
public PlSql(PlSqlTokenManager tm) { token_source = tm; token = new Token(); mcc_ntk = -1; mcc_gen = 0; for (int i = 0; i < 239; i++) mcc_la1[i] = -1; for (int i = 0; i < mcc_2_rtns.Length; i++) mcc_2_rtns[i] = new MccCalls(); }
private bool mcc_3_54() { if (mcc_3R_66()) return true; Token xsp; while (true) { xsp = mcc_scanpos; if (mcc_3R_213()) { mcc_scanpos = xsp; break; } } return false; }
private bool mcc_3_56() { Token xsp; xsp = mcc_scanpos; if (mcc_3R_77()) mcc_scanpos = xsp; xsp = mcc_scanpos; if (mcc_3_55()) { mcc_scanpos = xsp; if (mcc_3R_78()) return true; } return false; }
public static SqlObject ParseNumberToken(Token token, bool negative) { if (negative) return new SqlObject(BigNumber.Parse("-" + token.image)); return new SqlObject(BigNumber.Parse(token.image)); }
private bool mcc_3R_96() { Token xsp; xsp = mcc_scanpos; if (mcc_3R_121()) { mcc_scanpos = xsp; if (mcc_3_27()) return true; } return false; }
private bool mcc_3_36() { Token xsp; xsp = mcc_scanpos; if (mcc_3R_69()) mcc_scanpos = xsp; if (mcc_3R_70()) return true; return false; }
private bool mcc_scan_token(int kind) { if (mcc_scanpos == mcc_lastpos) { mcc_la--; if (mcc_scanpos.next == null) { mcc_lastpos = mcc_scanpos = mcc_scanpos.next = token_source.GetNextToken(); } else { mcc_lastpos = mcc_scanpos = mcc_scanpos.next; } } else { mcc_scanpos = mcc_scanpos.next; } if (mcc_rescan) { int i = 0; Token tok = token; while (tok != null && tok != mcc_scanpos) { i++; tok = tok.next; } if (tok != null) mcc_add_error_token(kind, i); } if (mcc_scanpos.kind != kind) return true; if (mcc_la == 0 && mcc_scanpos == mcc_lastpos) throw mcc_ls; return false; }
private bool mcc_3_2() { Token xsp; xsp = mcc_scanpos; lookingAhead = true; mcc_semLA = !seeTYPE(); lookingAhead = false; if (!mcc_semLA || mcc_3R_46()) { mcc_scanpos = xsp; lookingAhead = true; mcc_semLA = !seeTYPE(); lookingAhead = false; if (!mcc_semLA || mcc_3R_47()) return true; } return false; }
private bool mcc_3_21() { Token xsp; xsp = mcc_scanpos; if (mcc_scan_token(144)) { mcc_scanpos = xsp; if (mcc_scan_token(116)) return true; } if (mcc_scan_token(169)) return true; if (mcc_3R_54()) return true; return false; }
private bool mcc_3_1() { Token xsp; xsp = mcc_scanpos; lookingAhead = true; mcc_semLA = seeTYPE(); lookingAhead = false; if (!mcc_semLA || mcc_3R_42()) { mcc_scanpos = xsp; if (mcc_3R_43()) { mcc_scanpos = xsp; if (mcc_3R_44()) { mcc_scanpos = xsp; if (mcc_3R_45()) return true; } } } return false; }
private bool mcc_3R_99() { if (mcc_3R_54()) return true; Token xsp; xsp = mcc_scanpos; if (mcc_3R_123()) mcc_scanpos = xsp; if (mcc_scan_token(K_TO)) return true; if (mcc_3R_54()) return true; xsp = mcc_scanpos; if (mcc_3R_124()) mcc_scanpos = xsp; return false; }
private bool mcc_3R_98() { if (mcc_scan_token(K_FROM)) return true; if (mcc_3R_228()) return true; Token xsp; while (true) { xsp = mcc_scanpos; if (mcc_3R_229()) { mcc_scanpos = xsp; break; } } return false; }
private Token mcc_consume_token(int kind) { Token oldToken = null; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.GetNextToken(); mcc_ntk = -1; if (token.kind == kind) { mcc_gen++; if (++mcc_gc > 100) { mcc_gc = 0; for (int i = 0; i < mcc_2_rtns.Length; i++) { MccCalls c = mcc_2_rtns[i]; while (c != null) { if (c.gen < mcc_gen) c.first = null; c = c.next; } } } return token; } token = oldToken; mcc_kind = kind; throw GenerateParseException(); }
public static TableName ParseTableName(Token token) { if (token.kind == SqlParserConstants.QUOTED_VARIABLE || token.kind == SqlParserConstants.GLOBVARIABLE || // eg. Part.* token.kind == SqlParserConstants.IDENTIFIER || token.kind == SqlParserConstants.DOT_DELIMINATED_REF || token.kind == SqlParserConstants.QUOTED_DELIMINATED_REF) { return TableName.Resolve(AsNonQuotedRef(token)); } return TableName.Resolve(token.image); }
private void mcc_rescan_token() { mcc_rescan = true; for (int i = 0; i < 59; i++) { MccCalls p = mcc_2_rtns[i]; do { if (p.gen > mcc_gen) { mcc_la = p.arg; mcc_lastpos = mcc_scanpos = p.first; switch (i) { case 0: mcc_3_1(); break; case 1: mcc_3_2(); break; case 2: mcc_3_3(); break; case 3: mcc_3_4(); break; case 4: mcc_3_5(); break; case 5: mcc_3_6(); break; case 6: mcc_3_7(); break; case 7: mcc_3_8(); break; case 8: mcc_3_9(); break; case 9: mcc_3_10(); break; case 10: mcc_3_11(); break; case 11: mcc_3_12(); break; case 12: mcc_3_13(); break; case 13: mcc_3_14(); break; case 14: mcc_3_15(); break; case 15: mcc_3_16(); break; case 16: mcc_3_17(); break; case 17: mcc_3_18(); break; case 18: mcc_3_19(); break; case 19: mcc_3_20(); break; case 20: mcc_3_21(); break; case 21: mcc_3_22(); break; case 22: mcc_3_23(); break; case 23: mcc_3_24(); break; case 24: mcc_3_25(); break; case 25: mcc_3_26(); break; case 26: mcc_3_27(); break; case 27: mcc_3_28(); break; case 28: mcc_3_29(); break; case 29: mcc_3_30(); break; case 30: mcc_3_31(); break; case 31: mcc_3_32(); break; case 32: mcc_3_33(); break; case 33: mcc_3_34(); break; case 34: mcc_3_35(); break; case 35: mcc_3_36(); break; case 36: mcc_3_37(); break; case 37: mcc_3_38(); break; case 38: mcc_3_39(); break; case 39: mcc_3_40(); break; case 40: mcc_3_41(); break; case 41: mcc_3_42(); break; case 42: mcc_3_43(); break; case 43: mcc_3_44(); break; case 44: mcc_3_45(); break; case 45: mcc_3_46(); break; case 46: mcc_3_47(); break; case 47: mcc_3_48(); break; case 48: mcc_3_49(); break; case 49: mcc_3_50(); break; case 50: mcc_3_51(); break; case 51: mcc_3_52(); break; case 52: mcc_3_53(); break; case 53: mcc_3_54(); break; case 54: mcc_3_55(); break; case 55: mcc_3_56(); break; case 56: mcc_3_57(); break; case 57: mcc_3_58(); break; case 58: mcc_3_59(); break; } } p = p.next; } while (p != null); } mcc_rescan = false; }
private bool mcc_3R_91() { if (mcc_3R_119()) return true; Token xsp; while (true) { xsp = mcc_scanpos; if (mcc_3R_234()) { mcc_scanpos = xsp; break; } } return false; }
void CommonTokenAction(Token token) { tokenHistory.Add(token); }
private bool mcc_3R_89() { if (mcc_scan_token(154)) return true; Token xsp; xsp = mcc_scanpos; if (mcc_3R_116()) mcc_scanpos = xsp; if (mcc_scan_token(155)) return true; return false; }
private bool mcc_3_44() { Token xsp; xsp = mcc_scanpos; if (mcc_scan_token(8)) { mcc_scanpos = xsp; if (mcc_scan_token(5)) { mcc_scanpos = xsp; if (mcc_scan_token(154)) return true; } } return false; }
private bool mcc_3R_95() { Token xsp; xsp = mcc_scanpos; if (mcc_scan_token(5)) { mcc_scanpos = xsp; if (mcc_3R_120()) { mcc_scanpos = xsp; if (mcc_scan_token(124)) return true; } } return false; }
public static object ToParamObject(Token token, bool upperIdentifiers) { if (token.kind == SqlParserConstants.STRING_LITERAL) { string raw_string = token.image.Substring(1, token.image.Length - 2); return new SqlObject(EscapeTranslated(raw_string)); } if (token.kind == SqlParserConstants.BOOLEAN_LITERAL) return new SqlObject(token.image.ToLower(CultureInfo.InvariantCulture).Equals("true")); if (token.kind == SqlParserConstants.NULL_LITERAL) return SqlObject.Null; if (token.kind == SqlParserConstants.REGEX_LITERAL) { // Horrible hack, // Get rid of the 'regex' string at the start, String str = token.image.Substring(5).Trim(); return new SqlObject(str); } if (token.kind == SqlParserConstants.QUOTED_VARIABLE || token.kind == SqlParserConstants.GLOBVARIABLE || // eg. Part.* token.kind == SqlParserConstants.IDENTIFIER || token.kind == SqlParserConstants.DOT_DELIMINATED_REF || token.kind == SqlParserConstants.QUOTED_DELIMINATED_REF) { string name = AsNonQuotedRef(token); if (upperIdentifiers) name = name.ToUpper(CultureInfo.InvariantCulture); Variable v; int div = name.LastIndexOf('.'); if (div != -1) { // Column represents '[something].[name]' // Check if the column name is an alias. String column_name = name.Substring(div + 1); // Make the '[something]' into a TableName TableName table_name = TableName.Resolve(name.Substring(0, div)); // Set the variable name v = new Variable(table_name, column_name); } else { // Column represents '[something]' v = new Variable(name); } return v; } else { // Otherwise it must be a reserved word, so just return the image // as a variable. string name = token.image; if (upperIdentifiers) { name = name.ToUpper(CultureInfo.InvariantCulture); } return new Variable(name); } }
private bool mcc_3_45() { Token xsp; xsp = mcc_scanpos; if (mcc_scan_token(91)) mcc_scanpos = xsp; if (mcc_3R_66()) return true; return false; }
public static String MakeSourceString(Token start, Token end) { StringBuilder buf = new StringBuilder(); Token t = start.next; while (t != end) { buf.Append(t.image); buf.Append(' '); t = t.next; } buf.Append(t.image); return buf.ToString(); }
private bool mcc_3_5() { if (mcc_scan_token(S_IDENTIFIER)) return true; Token xsp; xsp = mcc_scanpos; if (mcc_scan_token(158)) { mcc_scanpos = xsp; if (mcc_3R_49()) return true; } return false; }