public static Number String2Number(string str) { if (str == null) { return 0; } //TODO --ExprEvalUtils-String2Number try { return Convert.ToInt32(str); } catch (Exception ex) { Console.WriteLine("String2Number-ToInt32-{0}-{1}", str, ex); } try { return Convert.ToInt64(str); } catch (Exception ex) { Console.WriteLine("String2Number-ToInt64-{0}-{1}", str, ex); } try { var lexer = new MySqlLexer(str); switch (lexer.Token()) { case MySqlToken.LiteralNumPureDigit: { return lexer.GetIntegerValue(); } case MySqlToken.LiteralNumMixDigit: { return lexer.GetDecimalValue(); } default: { throw new ArgumentException("unrecognized number: " + str); } } } catch (SqlSyntaxErrorException e) { throw new ArgumentException("str", e); } }
/// <exception cref="System.SqlSyntaxErrorException" /> public static void Main(string[] args) { var sql = Performance.SqlBenchmarkSelect; var chars = sql.ToCharArray(); var sut = new MySqlLexer(sql); var start = Runtime.CurrentTimeMillis(); var end = Runtime.CurrentTimeMillis(); for (var i = 0; i < 1; ++i) { for (; !sut.Eof();) { sut.NextToken(); switch (sut.Token()) { case MySqlToken.LiteralNumMixDigit: { sut.GetDecimalValue(); break; } case MySqlToken.LiteralNumPureDigit: { sut.GetIntegerValue(); break; } default: { sut.GetStringValue(); break; } } } } var loop = 5000000; sut = new MySqlLexer(sql); start = Runtime.CurrentTimeMillis(); for (var i_1 = 0; i_1 < loop; ++i_1) { sut = new MySqlLexer(chars); for (; !sut.Eof();) { sut.NextToken(); switch (sut.Token()) { case MySqlToken.LiteralNumMixDigit: { sut.GetDecimalValue(); break; } case MySqlToken.LiteralNumPureDigit: { sut.GetIntegerValue(); break; } default: { sut.GetStringValue(); break; } } } } end = Runtime.CurrentTimeMillis(); Console.Out.WriteLine((end - start)*1.0d/(loop/1000) + " us."); }
public virtual void TestNumber() { var sut = new MySqlLexer(" . 12e3/***/.12e3#/**\n.123ee123.1-- \r\t\n.12e/*a*//* !*/.12e_a/12e-- \r\t.12e-1"); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12000", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("123ee123", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("0.1", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e_a", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpSlash, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12e-1 "); Assert.AreEqual("0.012", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12e000000000000000 "); Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString()); sut = new MySqlLexer(".12e- "); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpMinus, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12e-1d "); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpMinus, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("1d", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12.e+1d "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("d", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12.f "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("f", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12f "); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12f", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("1.2f "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("1.2", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("f", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); try { sut = new MySqlLexer("12.e "); Assert.IsFalse(true, "should not reach here"); } catch (SqlSyntaxErrorException) { } sut = new MySqlLexer("0e "); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("0e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12. e "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12. e+1 "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpPlus, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("1", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12.e+1 "); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("120", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12."); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12"); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("0.12", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12e"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12ef"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12ef", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12e"); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("1.0e0"); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("1.0", sut.GetDecimalValue().ToPlainString()); sut = new MySqlLexer("1.01e0,"); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("1.01", sut.GetDecimalValue().ToPlainString()); sut = new MySqlLexer(".12e-"); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpMinus, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".12e-d"); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("12e", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpMinus, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("d", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("123E2.*"); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("12300", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("1e-1 "); Assert.AreEqual("0.1", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(".E5"); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("E5", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("0E5d"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("0E5d", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("0E10"); Assert.AreEqual(MySqlToken.LiteralNumMixDigit, sut.Token()); Assert.AreEqual("0", sut.GetDecimalValue().ToPlainString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer(". "); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("12345678901234567890123 1234567890 1234567890123456789"); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("12345678901234567890123", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("1234567890", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("1234567890123456789", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("."); Assert.AreEqual(MySqlToken.PuncDot, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); }
public virtual void TestCStyleComment() { var sut = new MySqlLexer("id1 /*!id2 */ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("id1 /*! id2 */ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); sut = new MySqlLexer("id1 /*!*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); var version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40001id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!4000id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("4000id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!400001id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("1id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!400011id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!4000*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("4000", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40001*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!400001*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.LiteralNumPureDigit, sut.Token()); Assert.AreEqual("1", sut.GetIntegerValue().ToString()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000 -- id2\n*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000 /* id2*/*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/* id2*/*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000id2*/* id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.OpAsterisk, sut.Token()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40001/*/*/id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ /*!40000 id4*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id4", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40001/*/*/id2*/ /*!40000 id4*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id4", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*/ /*!40001 id4*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*//*!40001 id4*//*!40001 id5*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); version = MySqlLexer.SetCStyleCommentVersion(40000); sut = new MySqlLexer("id1 /*!40000/*/*/id2*//*!40001 id4*//*!40000id5*/ id3"); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id1", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id2", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id5", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Identifier, sut.Token()); Assert.AreEqual("id3", sut.GetStringValue()); sut.NextToken(); Assert.AreEqual(MySqlToken.Eof, sut.Token()); MySqlLexer.SetCStyleCommentVersion(version); }