标题:求解C++代码错误:error: expected unqualified-id
只看楼主
rrc88
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-1-20
结帖率:50%
已结贴  问题点数:20 回复次数:4 
求解C++代码错误:error: expected unqualified-id
程序代码:
#include <string>
#include <ostream>
#include "Tag.hpp"
#include "Token.hpp"


namespace Lexer {

/* Word.hpp

 * 用Word类管理保留字、标识符和复合单元词素(如&&, ||) */
class Word : public Lexer::Token {

public:
    Word( std::string str, int tag )
        : Token( tag ), lexeme( str ) {}

    ~Word() {}

    virtual void initial() final {
        Lexer::Word

            *and = new Lexer::Word( "&&", Lexer::AND ), *or = new Lexer::Word( "||", Lexer::OR ),
            *eq  = new Lexer::Word( "==", Lexer::EQ ),  *ne = new Lexer::Word( "!=", Lexer::NE ),
            *le  = new Lexer::Word( "<=", Lexer::LE ),  *ge = new Lexer::Word( ">=", Lexer::GE ),
            *minus = new Lexer::Word( "minus", Lexer::MINUS ), // minus 代表单目减号, 如-2
            *True  = new Lexer::Word( "true",  Lexer::TRUE  ),
            *False = new Lexer::Word( "false", Lexer::FALSE ),
            *temp  = new Lexer::Word( "temp",  Lexer::TEMP  );
    }

public:
    friend std::ostream& operator<<( std::ostream& out, const Lexer::Word& w ) {
        out << w.lexeme;
        return out;       

    }


public:
    std::string lexeme;

};

}
找不到自己哪里出错了,求解!!!
搜索更多相关主题的帖子: include Word public std new 
2019-01-20 11:59
rrc88
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-1-20
得分:0 
程序代码:
namespace Lexer {

/* Tag.hpp

 * 定义了各词法单元对应的常量

 * */
const static int

        AND   = 256, BASIC = 257,  BREAK = 258, DO   = 259, ELSE   = 260,
        EQ    = 261, FALSE = 262,  GE    = 263, ID   = 264, IF     = 265,
        INDEX = 266, LE    = 267,  MINUS = 268, NE   = 269, NUMBER = 270,
        OR    = 271, FLOAT  = 272, TEMP  = 273, TRUE = 274, WHILE  = 275;

}
程序代码:
#include <ostream>

namespace Lexer {

/* 符号流的定义类

 * 保存符号流的标记(在Tag类中定义标记的常量)

 * */
class Token {

public:
    Token( int t )
        : tag(t) {}
    friend std::ostream& operator<< ( std::ostream& out, const Token& tok ) {
        out << (char)tok.tag;
        return out;       

    }

public:
    int tag;

};

}

2019-01-20 15:47
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:14 
virtual void initial() final {
        Lexer::Word

            *and = new Lexer::Word( "&&", Lexer::AND ), *or = new Lexer::Word( "||", Lexer::OR ),
            *eq  = new Lexer::Word( "==", Lexer::EQ ),  *ne = new Lexer::Word( "!=", Lexer::NE ),
            *le  = new Lexer::Word( "<=", Lexer::LE ),  *ge = new Lexer::Word( ">=", Lexer::GE ),
            *minus = new Lexer::Word( "minus", Lexer::MINUS ), // minus 代表单目减号, 如-2
            *True  = new Lexer::Word( "true",  Lexer::TRUE  ),
            *False = new Lexer::Word( "false", Lexer::FALSE ),
            *temp  = new Lexer::Word( "temp",  Lexer::TEMP  );
    }
问题出在这里, 不知道你要表达什么东西
这里所有的命名都是找不到的
而且函数里面第一行是什么鬼
我猜可能有这些东西 : Lexer::Word **and, or, eq 等等
但是你都没写出来, 这些可能是作为 static 成员?
2019-01-21 01:33
rrc88
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-1-20
得分:0 
回复 3楼 Jonny0201
这里是定义Word的关键字,是这样子的
程序代码:
Lexer::Word  *and = new Lexer::Word( "&&", Lexer::AND ), *or = new Lexer::Word( "||", Lexer::OR ),
            *eq  = new Lexer::Word( "==", Lexer::EQ ),  *ne = new Lexer::Word( "!=", Lexer::NE ),
            *le  = new Lexer::Word( "<=", Lexer::LE ),  *ge = new Lexer::Word( ">=", Lexer::GE ),
            *minus = new Lexer::Word( "minus", Lexer::MINUS ), // minus 代表单目减号, 如-2
            *True  = new Lexer::Word( "true",  Lexer::TRUE  ),
            *False = new Lexer::Word( "false", Lexer::FALSE ),
            *temp  = new Lexer::Word( "temp",  Lexer::TEMP  );

2019-01-21 08:39
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
回复 4楼 rrc88
and or
这些都是 C++ 11 的关键字
换个名字吧
收到的鲜花
  • cstdio2019-02-11 15:21 送鲜花  1朵  
2019-01-21 14:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492764-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.208698 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved