对于那些没有看过它的人,ZPL是一种基于文本的标记语言,用于从专用打印机打印标签。 UPS运输标签就是一个很好的例子。
标记语言非常原始。有一些模态命令可以设置一些状态值,但是大部分语言都是采用<command><parameters><data>
形式的单行。没有流量控制或嵌套。
我想编写一个渲染引擎来解释ZPL并渲染到图像。有几个项目已经开始沿着这条道路前进,但这些项目还不够完整,不能用于商业用途。
我的问题是:我需要学习什么来编写一个很好的<something>
来解析ZPL文档并将其转换为我可以执行的命令? (通过'执行',我的意思是画画。)
这是解析器吗?一个词法分析者?标记生成器?翻译吗?是否有一些编译器设计理论的子集是这类项目成功的最有效途径? ......那叫什么?
答案 0 :(得分:2)
在你的情况下,它可能是一名翻译。
如果没有条件,那么可能是通过从上到下阅读ZPL文档来产生标记。
你需要的是解析ZPL命令的解析器。如果你撕掉一个之后很幸运,那么你需要执行的一切都可以从命令的参数或之前的ZPL模态命令中获得。
所以:
loop
parse ZPL fragment
execute ZPL fragment
end loop
如果您想阅读有关构建简单解析器的信息,可以在此处执行:Is there an alternative for flex/bison that is usable on 8-bit embedded systems?
很明显,在解析识别构造的每个点上,它都具有构造内容中的所有信息,因此您准备执行它。
当然,您必须知道ZPL命令的含义,并且可以使用机器来执行它们。没有人知道如何将标记请求转换为图像上的更新。如果你知道如何做到这一点,那么你面前会有很多汗水(为什么你不去获得ZPL的工作版本?)。祝你好运。
如果您不知道该怎么做,那么您需要提出另一个问题。如果您不得不询问解析/解释/执行的所有内容,那么您很可能无法完成此项目。
答案 1 :(得分:2)