雪湖小札@blogjava
心情与技术文档同行 http://hi.baidu.com/jingleq
BlogJava
首页
新随笔
联系
聚合
管理
24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
随笔档案
(24)
2012年2月 (1)
2007年11月 (1)
2007年7月 (1)
2007年6月 (13)
2007年5月 (8)
文章档案
(2)
2007年6月 (2)
搜索
最新评论
1. re: struts与flex通过xml交互模型
路过,哈
--豆抓
2. re: 跑在groovy上的rmi
Groovy可以充分利用Java世界中的一切资源,这也是Groovy的一大优势 :)
--山风小子
3. re: 征服javascript(七)-Jquery插件jquery.jq.mvc发布
玩jQuery有一段时间,看起来你这是一个有意思的东西
--NetFetch
4. re: antlr-语言编译的简化
是antlr2的写法
--山风小子
阅读排行榜
1. struts与flex通过xml交互模型(2149)
2. asm学习(6)--asm应用(使用jasml对antlrstudio破解)(1820)
3. 跑在groovy上的rmi(1318)
4. antlr-(一)语言编译的简化(1266)
5. 征服javascript(七)-Jquery插件jquery.jq.mvc发布 (1108)
评论排行榜
1. 征服javascript(七)-Jquery插件jquery.jq.mvc发布 (1)
2. struts与flex通过xml交互模型(1)
3. 跑在groovy上的rmi(1)
4. antlr-(一)语言编译的简化(1)
5. asm学习(6)--asm应用(使用jasml对antlrstudio破解)(0)
antlr-(二)用武之地之处理平衡组
有这么一个字符串:a1=1,a2=X2{b1=1,b2=X3{c1=1,c2=2}},a3=X4{b1=1}
想写一个正则表达式,让下面code的执行结果是:
result(以逗号为token来分割字符串,逗号在"{"和"}"里面的忽略其做为token):
a1
=
1
a2
=
X2{b1
=
1
,
b2
=
X3{c1
=
1
,
c2
=
2
}}
a3
=
X4{b1
=
1
}
以上问题来自
http://www.javaeye.com/post/265973
使用antlr3规则处理
grammar Spl
;
options {
output
=
AST
;
ASTLabelType
=
CommonTree
;
}
stat : spl
[
0
]
;
spl
[
int step
]
returns
[
String value
]
: (expr
[
step
]
{
if ($value!
=
null)
$value +
=
$expr.value
;
else
$value
=
$expr.value
;
}) +
;
expr
[
int step
]
returns
[
String value
]
: a
=
ID '
=
' b
=
ID (| p
=
param
[
step
]
) c
=
'
,
'?
{
String str
=
$a.text +
"
=
"
+ $b.text
;
if (p !
=
null)
str +
=
$param.value
;
if ($step
==
0
) {
System.out.println(str)
;
} else {
$value
=
str
;
if (c!
=
null)
$value +
=
"
,
"
;
}
}
;
param
[
int step
]
returns
[
String value
]
: '{' spl
[
1
]
'}'
{
$value
=
"
{
"
+ $spl.value +
"
}
"
;
}
;
ID : ('a'..'z' | 'A'..'Z' | '
0
' .. '
9
')('a'..'z' | 'A'..'Z' | '
0
' .. '
9
') *
;
EQPARAM : '
=
'
;
WS : (' '|'\t'|'\n'|'\r') + {skip()
;
};
posted on 2007-06-25 13:26
csnowfox
阅读(853)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © csnowfox