标准sql语法分析源程序个人觉得SQL SERVER 2000的查询分析器就很好用啊,
不知楼主所求何物?
不知楼主所求何物?
解决方案 »
- 菜鸟有段存储过程看不懂~~~~~麻烦帮帮忙!!!
- ASP.NET+C#+Sql Server 2K5 如何提交临时表中的数据到数据库中?
- 在MSSQL建立表出现[]
- 基于SQL Server的应用程序,是不是在应用服务器上一定要安装SQL Server?
- 多种促销方式匹配的问题
- 学习sqlserver2k有没好书推荐以下啊?
- 求一SQL语句
- 行列相互转换的问题
- 在SQLServer中如何求表的大小
- 用什么样的SQL能实现这种功能,我想了好几天都解决不了,请高手帮忙,在线等待。。。。
- 使用ntext这类指针数据类型后,数据库文件及备份文件的容量狂涨,正常吗,为什么啊
- 数据导入保留原ID标识的问题
http://www.gotdotnet.com/workspaces/workspace.aspx?id=ea06f702-480a-4b60-8402-70b27c6472dd源程序里有SQL词法、语法分析的完整代码,就是基本没什么注释。
<Tokenizer.cs>
private void GetToken()
{
if (bWait)
{
bWait = false; return;
}
//如果当前字符是空格则搜索下一个,直到找到非空格的字符
while (iIndex < iLength && Char.IsWhiteSpace(cCommand[iIndex]))
{
iIndex++;
} sToken = ""; if (iIndex >= iLength)
{
iType = 0; return;
} bool point = false, digit = false, exp = false, afterexp = false;
bool end = false;
char c = cCommand[iIndex];
char cfirst = '0';
StringBuilder name = new StringBuilder();
//是字母则表示该单词是Name
if (Char.IsLetter(c)) {
iType = TokenType.NAME;
}
//如果当前字符是特殊字符
//则返回该特殊字符,退出函数
else if ("(),*=;+%".IndexOf(c) >= 0)
{
iType = TokenType.SPECIAL;
iIndex++;
sToken = "" + c; return;
}
//如果当前字符是数字
//则表示该单词是数字
else if (Char.IsDigit(c))
{
iType = TokenType.NUMBER;
digit = true;
}
//如果当前字符是@
//则表示该单词是变量名
else if ("@".IndexOf(c) >= 0)
{
cfirst = c;
iType = TokenType.VARIABLE;
}
//如果当前字符是比较符或者运算符
//则表示该单词是特殊字符
else if ("!<>|/-".IndexOf(c) >= 0)
{
cfirst = c;
iType = TokenType.SPECIAL;
}
//如果当前字符是双引号
//则表示是后面的单词是引用
else if (c == '\"')
{
iType = TokenType.QUOTED_IDENTIFIER;
}
//如果当前字符是单引号
//则表示后面的单词是字符串常量
else if (c == '\'')
{
iType = TokenType.STRING; name.Append('\'');
}
//如果当前字符是小数点,则表示该单词是Float数
else if (c == '.')
{
iType = TokenType.FLOAT;
point = true;
}
//其他字符均为非法字符
else
{
throw Trace.Error(Trace.UnexpectedToken, "" + c);
} int start = iIndex++;