应用YACC解析器生成器来解析GCODE(GRBL)的代码,主要步骤如下:
%{
#include
#include
%}
%token WORD
%start program
%% program: commands
;
commands: command
| command commands
;
command : WORD
;
%%
int main()
{
int result = yyparse();
return result;
}
int yyerror(char* s)
{
printf("Error: %s\n", s);
return 0;
}
command : WORD {
if(strcmp($1, "X+1") == 0) {
stepper(1); //向X轴正方向移动一步
} else if(strcmp($1, "X-1") == 0) {
stepper(-1); //向X轴负方向移动一步
} else if(strcmp($1, "Y+1") == 0) {
stepper(2); //向Y轴正方向移动一步
} else if(strcmp($1, "Y-1") == 0) {
stepper(-2); //向Y轴负方向移动一步
} else if(strcmp($1, "Z+1") == 0) {
stepper(3); //向Z轴正方向移动一步
} else if(strcmp($1, "Z-1") == 0) {
stepper(-3); //向Z轴负方向移动一步
}
}
void stepper(int direction)
{