需要用C ++编写Parser

时间:2013-09-14 18:58:59

标签: c++

bool check_column_name(Token_stream& ts) {
    Token t = ts.get();
    if(t.kind == '(') {
        while(t.kind != ')') {
            t = ts.get();
                if(t.kind == 'a' || t.kind == '0') {
                    string column_names = "";
                    while(t.kind != ' ' && t.kind != ')') {
                        column_names += t.value;
                        t = ts.get();
                }
                cout << column_names << endl;
            }
        }
        return true;
    }
}

我需要解析这个

  

(Column_name1 VARCHAR [20],Column_name2 VARCHAR [8],Column_name3   整数);

我需要解析上面的那行来调用Create()函数来创建一个表。在解析该行之后,我将能够知道我的列名将是什么以及我的表中有多少列以及每列的类型。例如,第一列的名称为“Column_name1”,其类型为“VARCHAR”,这将是一个字符串。我的代码能够解析(column_name1 Column_nam2),但这不是我想要的。我想解析该行(Column_name1 VARCHAR [20],Column_name2 VARCHAR [8],Column_name3 INTEGER);。

1 个答案:

答案 0 :(得分:3)

这样做正确的方式是一个复杂的主题。它涉及熟悉语法,词法分析器,解析器等。

关于这个主题的最着名的书是“Dragon Book”。

我过去成功地使用了ANTLR和C ++。