摘要:
在实现lexer和parser的过程中,要定义token的类型。《编程语言实现模式》中使用的是java代码,直接定义static int TEXT = 1;并且可以在lexer扩展的时候继承到实际使用的lexer里面。但C++定义类的static成员时,必须在外面单独的进行初始化,对这一点不是很爽,在C++11中,实现了enum class,先看看这个enum class能不能满足要求,例如enum class TokenType{ _EOF, TEXT};TokenType a = TokenType::TEXT;那么就可以方便地使用TokenType::TEXT指代类型,只有同... 阅读全文