看来结论还是下得太早。死循环的原因是没有拦截无法匹配的字符。
使用以下规则作为末规则后,问题解决。
. : {error, {"unknown", TokenChars}}
与ANTLR相比,ANTLR不会死机,错误信息很详细,调试图形化,比较方便。
而Erlang的优点是可以把词法分析(leex, .xrl)和语法分析(yecc, .yrl)分别调试,
各有千秋啊。
而在调试过程中,Erlang的命令行方式可以调试单独的函数(当然要EXPORT)这一优点
又更加突出。如果换了C的lex,也会挺麻烦。
使用以下规则作为末规则后,问题解决。
. : {error, {"unknown", TokenChars}}
与ANTLR相比,ANTLR不会死机,错误信息很详细,调试图形化,比较方便。
而Erlang的优点是可以把词法分析(leex, .xrl)和语法分析(yecc, .yrl)分别调试,
各有千秋啊。
而在调试过程中,Erlang的命令行方式可以调试单独的函数(当然要EXPORT)这一优点
又更加突出。如果换了C的lex,也会挺麻烦。