呵呵,我也没学过呀。
不怕的。
举个例子:
cmd[]="REPEAT 4[FD 100 WAIT 500 RT 90 WAIT 500]";
先检测这个语句中是否出现了错误,比如说[]不成对出现之类的。
然后我们通过程序把
REPEAT 4[FD 100 WAIT 500 RT 90 WAIT 500]
转换成为
REPEAT 4 FD 100 WAIT 500 RT 90 WAIT 500 ;
请注意,我特意在整个字符串后面加上了个 ; 就是方便判断是否已经到了字符串的结尾了。
然后用一个足够大的二维数组mat[50][15]去装它,以空格作为间隔符。
mat[0]="REPEAT"
mat[1]="4"
mat[2]="FD"
mat[3]="100"
mat[4]="WAIT"
mat[5]="500"
mat[6]="RT"
mat[7]="90"
mat[8]="WAIT"
mat[9]="500"
mat[10]=";"
mat[11]="\0"
mat[12]="\0"
mat[13]="\0"
....
我们转换的规则是所有单词、数字之间只留一个空格!
语句中的[]通通转换成一个空格。
最后我们到了解析mat[][]的时候了。
判断mat[i]是否是关键字(REPEAT、FD之类的)如果是,那么后面的一个数组的内容就应该是这个明令的参数。依次类推。直到遇到 ; 为止。