Lexer for CAD NC程序

时间:2014-10-22 11:20:15

标签: java lexer cad jflex cnc

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

但是,

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

其他信息

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

1 个答案:

答案 0 :(得分:1)

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

EBNF用于创建解析器,可能是也可能不是您需要的解析器。解析器通常构建在词法分析器之上,以便从令牌流中创建语法树。词法分析器将不具有诸如"规则A必须后跟令牌B或C"之类的规则,但解析器将是。 java有许多不同的解析器生成器,每个生成器都有优缺点。 ANTLR是一个稳定的,你可能会考虑。

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