0

我正在评估使用不同格式的nc 程序作为输入来跟踪工具移动的可能性。使用词法分析器将不同的程序类型标记为元层,其中只存在统一的工具和点等似乎是个好主意。

但,

  • 我对词法分析一无所知。有没有一种简单的方法来创建词法分析器?也许出于EBNF
  • 您如何看待我的方法,您是否看到一种更可行的方法来提取数据并支持多种 nc 文件格式?

附加信息

  • 关于提供哪种具体类型的 NC 程序的信息是预先知道的。
  • 我不必检查 NC 程序的语法。我认为它们是有效的,因为它们已经在生产中使用。
4

1 回答 1

1

创建词法分析器可能是标记输入命令流的有用方法。词法分析器通常可以通过给词法分析器生成器一组或正则表达式来生成。然后,词法分析器将使用这些表达式匹配您的输入字符串,并返回匹配的文本和匹配的标记。JFlex 将是词法分析器生成器的合理选择。

EBNF 用于创建解析器,这可能是也可能不是您需要的。解析器通常构建在词法分析器之上,以从标记流中创建语法树。词法分析器无法处理诸如“A 记号 A 后面必须跟着记号 B 或 C”之类的规则,但解析器可以。java 有许多不同的解析器生成器,每种都有优缺点。ANTLR 是一个稳定的,你可以考虑研究一下。

为了支持多种格式,您可能需要生成不同的词法分析器或解析器(如果您沿着这条路线),并将文本与正确的语言词法分析器匹配。

于 2014-10-22T13:41:01.870 回答