我正在评估使用不同格式的nc程序作为输入来跟踪工具移动的可能性。使用lexer将不同的程序类型标记为元层(其中只有统一的工具和点等)似乎是个好主意。
但,
附加信息
发布于 2014-10-22 13:41:01
创建一个lexer可能是标记输入命令流的一种有用方法。通常可以通过给一个lexer生成器一个集合或正则表达式来生成一个lexer。然后,lexer将使用这些表达式匹配您的输入字符串,并返回匹配的文本和标记。对于雷克萨斯生成器来说,JFlex将是一个合理的选择。
EBNF用于创建解析器,这可能是您需要的,也可能不是您所需要的。解析器通常构建在词汇者之上,以便从令牌流中创建语法树。lexer将无法执行诸如"A令牌A必须后面跟着令牌B或C“之类的规则,但是解析器是这样的。java有许多不同的解析器生成器,每个生成器都有优缺点。ANTLR是一个稳定的,您可能会考虑调查。
为了支持多种格式,您可能需要生成不同的词汇,或者解析器,如果您沿着这条路线走下去,并将文本匹配到正确的语言lexer。
https://stackoverflow.com/questions/26506249
复制相似问题