上一篇我们分享了Grbl的系统命令部分,在上位机发来的数据流,除了系统命令($开头),其余的就是G代码了,在protocol.c中调用gc_execute_line()这个函数,进入G代码解析部分。该函数主要完成两部分功能:1.解析G代码(M命令和G命令)2.将解析好的数据传递给mc_line()和mc_arc()进行划线或画圆。
G代码解析的内容在gcode.c中实现,这是一个代码解释器(interpreter),我们把他当作一门脚本语言,可以用脚本语言的方法分析,就显得比较清晰。脚本语言的解释器包含几个步骤:
1.词法分析:识别字符串序列中的语言标记
2.语法分析:分析单词序列中的文本并确定语法结构
3.语义分析:检查程序的语义错误
4.执行:根据分析的结果转换成目标代码
简化的代码如下: