我希望在Javascript代码中标记Java/Javascript类表达式。我的输入将是一个包含表达式的字符串,输出需要一个令牌数组。
做这种事的最佳做法是什么?我需要迭代字符串还是有一个正则表达式可以帮我做到这一点?
我需要它能够支持:
出于安全考虑,我特别希望避免使用eval()或任何类似的东西。此外,eval()也不会为我标记这个表达式。
发布于 2009-05-22 17:44:07
对于速度不重要的简单的词汇者,我通常会为每种标记编写一个正则表达式,并反复尝试将每个标记与输入的开头依次匹配。(确保您没有得到O(n^2)算法!)像lex这样的工具将产生一个更高效的lexer,因为它将regexes组合成一个状态机。
发布于 2009-05-22 17:44:47
您需要实现一个词法分析器。您可以使用js/cc来实现它,也可以自己实现有限自动机。
因为在形式上,您要操作的语言是规则的,所以您可以使用正则表达式。但我没有再向你推荐。
虽然我从来没有使用js/cc,但我会先尝试使用它,如果它不起作用,我将尝试自己构建一个词法分析器。
https://stackoverflow.com/questions/899020
复制相似问题