博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何解析字符串指令
阅读量:5310 次
发布时间:2019-06-14

本文共 1011 字,大约阅读时间需要 3 分钟。

大实验涉及到解析字符命令,要求在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.正则表达式

利用强大的字符串处理工具正则表达式,可以省略很多工作。

关于正则表达式可以参考:

----------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/2010Freeze/archive/2012/04/24/2442145.html

你可能感兴趣的文章
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
判断9X9数组是否是数独的java代码
查看>>
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>