0.简介
前面有了变量声明,我希望还能支持变量声明后直接赋值的操作。
1.声明赋值
其语法样式如下
int a = 10;
2.语法实现
//变量声明语句
class VariableDeclareStatement : public Statement
{
public:
VariableDeclareStatement(int _line, int _column) :Statement(_line, _column) {}
//类型
Token type;
//类型名字
std::string typeName;
//标识符表达式
//std::string identName;
std::shared_ptr<Expression> ident;
//表达式解析
virtual operand evaluation(std::vector<Quaternion>& context, Memory& memory, NameTable& table) { return operand(); }
~VariableDeclareStatement() {}
};
这里将原来的标识符的字符串换成了表达式,表达式可以直接兼容赋值语句。
同时语法分析的步骤也有如下的变化
std::shared_ptr<VariableDeclareStatement> Parser::variableDeclare()
{
...
result->ident = parseExpression();
if(typeid(*(result->ident)) != typeid(IdentifierExpression) && typeid(*(result->ident)) != typeid(AssignExpression))
error(BAD_IDENT,lines.front(),columns.front());
...
}