snl grammar analyzer
采用LL(1)分析法的snl词法语法分析器。
封装成了一个C++类SnlGrammarAnalyser,包含头文件之后就可以用了。
main函数中打开示例代码是用的相对路径,如果你运行时候发现路径不一样的话请自行修正。
static void init()
进行初始化,求解First、Follow和Predict集。
int parse(const char *code)
解析给定的代码,返回值0为分析成功,非0为出错。
(解析前需进行初始化)
string getError()
如果解析出错可以调用这个获取出错信息。
(只写了4种错误,其中3种词法错误,一种语法错误)
vector<TokenSymbol> getTokenList()
如果解析成功可以调用这个获取TokenList。
(该TokenList中不包含注释,TokenSymbol为自定义的结构体,定义详情请参见代码)
string getTree()
如果解析成功可以调用这个获取 The DOT Language 格式的语法树。 得到的语法树可以在类似 Graphviz Online 这样的网站上在线生成图片。
snl示例代码来自SNL-Compiler项目中的随书光盘。