【问题标题】:Lexer for CAD NC programs用于 CAD NC 程序的 Lexer
【发布时间】:2014-12-17 19:57:58
【问题描述】:

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

但是,

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

其他信息

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

【问题讨论】:

  • SO 基本上是针对具体的实现问题的。解决此类问题的更好网站可能是 Programmers.SE
  • 没有 CAD 特定的 stackexchange 网络。最与 CAD 相关的问题是在 SO 和超级用户中。此外,SO 不是“基本上针对特定的实现问题”参见。 stackoverflow.com/tour

标签: java lexer cad jflex cnc


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答!所以我朝着正确的方向前进。我将在问题中添加更多信息。
猜你喜欢
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2015-12-01
  • 2010-12-07
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多