如何解析字符串指令
大實驗涉及到解析字符命令,要求在linux下使用C++。
簡要的列舉下需要解析的指令,不需要明白其含義。
1.任務指令有
give(human,obj),puton(obj1,obj2),goto(obj),putdown(obj),pickup(obj),opendoor(obj),putin(obj)
每條任務指令都需要robot產生動作規劃
2.環境描述指令有
sort(num),color(num),size(num),location(num,loc),dooropen(num),inside(num,num),plate(num),hold(num)
需要將環境描述轉化為數據結構
---------------------------------------------------------------------------------------------------------------
下面開始考慮各種解析字符串指令的方法。
1.最簡單的switch方法
在這個例子中,由于指令數教少,只需提取指令支付串的前四位,使用switch case即可。
如果指令較多,無法用固定位數識別,可以先查找"("然后提取完整的指令名稱,再進行switch。
在確定指令種類后,按照上述類似方法提取指令參數。
優點:簡單易理解
缺點:低效率,指令種類識別時間取決于指令種類數,代碼冗余。
2.進一步改進,使用hash或map等提高識別效率
建立各種指令函數,減少代碼冗余。
通過hash或map建立映射
map建立教容易,但是hash映射就不太好搞了。
優點:較簡單,易擴展,效率有所提高,代碼冗余減少
3.分叉樹識別
字符串指令逐位讀入并識別,通過樹建立起指令與函數的映射。
優點:結構清晰,易擴展,高效,冗余很少。
缺點:需要建立分叉識別樹。
4.正則表達式
利用強大的字符串處理工具正則表達式,可以省略很多工作。
關于正則表達式可以參考:
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
----------------------------------------------------------------------------------------------------------
轉載于:https://www.cnblogs.com/2010Freeze/archive/2012/04/24/2442145.html
總結
- 上一篇: 亲测快捷高效的编写测试用例方法
- 下一篇: 巨量jsvmp,扣逻辑分析