| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1550 人关注过本帖
标题:把一种语言解释成另一种语言的问题,请教字符串处理高手
只看楼主 加入收藏
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8913
专家分:2567
注 册:2004-3-25
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:25 
把一种语言解释成另一种语言的问题,请教字符串处理高手
问题原型:判断字符串A是否在字符串B中,也就是判断字符串B是否包含字符串A

如果是C语言,可以定义一个函数is_in,然后用函数判断
if(is_in(A,B))

有些解释型语言有更人性化的表达方式:
if(A in B)
已经很接近自然语言了。

问题需求:把 if(A in B) 解释成 if(is_in(A, B)) ,以便于运行

如果仅仅是 if(A in B) 解释成 if(is_in(A, B)) 很简单,但A和B有时候并不一定是变量名

也有可能是表达式:
if((A1+A2) in (B1+B2)) 解释成 if(is_in((A1+A2), (B1+B2)))
if("(A1)" in "(A1)(B2)") 解释成 if(is_in("(A1)", "(A1)(B2)"))
if(A in join(B1, B2)) 解释成 if(is_in(A, join(B1, B2)))
这样怎么做呢?可以用正则表达式

=====================================  2012-09-07 13:48更新  ==============================================
回复6楼:
对,就是做解释器,用php实现python的解释器,用php把python解释(编译)成php,用c语言也可以,步骤可能复杂点。卡在上面的问题上了。进度会在https://www.bccn.net/group/php/ 公布,欢迎感兴趣的朋友一起交流,做出雏形以后开源。


搜索更多相关主题的帖子: 表达式 字符串 表达方式 
2012-09-07 09:01
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
额滴神啊,静神竟然说话了~
2012-09-07 09:04
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
观察
2012-09-07 09:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
静老大 横空出世

梅尚程荀
马谭杨奚







                                                       
2012-09-07 09:31
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:0 
静老大?
who??
2012-09-07 10:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
其实还是不大清楚意图,这跟目标语言有关系。自己做解释器?

授人以渔,不授人以鱼。
2012-09-07 10:29
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:30 
接分

(\([^ ]+\)[ ]+in[ ]+\(.+\)) -> (is_in(\1, \2))

如果只是正则表达式替换的话上面的这个可以替换例子 其他的我就没试了

顺便 这个是emacs里写的 貌似和php的正则格式不大一样 这里 \(\) 是引用 ( 就是普通括号 如果环境变了表达式也得相应变

补充

貌似上面的没处理tab 比如下面这样的。。 不过我估计正常人不会写这样的东东

图片附件: 游客没有浏览图片的权限,请 登录注册


应该能看出来哪是空格 哪是tab罢

那 这个正则貌似可以

(\([^     ]+\)[     ]+in[     ]+\(.+\)) -> (is_in(\1, \2))

emacs里直接打tab就能匹配tab 其他的怎么弄的我也不知道 是\t么 还是上面说的 换环境得根据相应的环境来

坏了 发出来tab变空格了。。。

(\([^ \t]+\)[ \t]+in[ \t]+\(.+\)) -> (is_in(\1, \2))


[ 本帖最后由 zklhp 于 2012-9-7 18:15 编辑 ]
2012-09-07 11:36
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
和boss挨的近一点。
2012-09-07 13:44
神之驱逐
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:136
专家分:436
注 册:2011-11-22
收藏
得分:0 
瞻仰一下大神

你在努力,你就在进步!
2012-09-07 16:00
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
进来瞧瞧,好像超出所学了。。。。。。。。

Edsger Dijkstra:算法+数据结构=程序
2012-09-07 17:28
快速回复:把一种语言解释成另一种语言的问题,请教字符串处理高手
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042584 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved