求教,下面格式的序列怎么解析
求教,现在有这样一种格式的序列,需要解析成string。比如:1times(0 100,1 50,20times(1 100,0 50,300times(1 20,0 50,50times(1 20,0 60)))),1times表示后续的string重复1次。0 100,1 50,表示:100个0,后面接着50个1。急,求大侠帮忙 --------------------编程问答-------------------- 似乎编译原理的课程设计会有这样的题目吧
问题就是一个括号匹配 --------------------编程问答-------------------- 知道规则了,就自己一步步根据规则解析 --------------------编程问答-------------------- 对,大概方向就是括号匹配。 --------------------编程问答-------------------- 大师,能不能在代码上给些指导啊,比如具体用什么方法 --------------------编程问答-------------------- 没人帮忙 --------------------编程问答-------------------- 用栈分析,先处理最内层的,最后处理最外层的 --------------------编程问答-------------------- 没有看出规则。 --------------------编程问答-------------------- 小弟头一次来CSDN,是不是要送积分啊? --------------------编程问答-------------------- 你好,能有空写下代码吗?谢谢啊 --------------------编程问答--------------------
string str = "1times(0 100,1 50,20times(1 100,0 50,300times(1 20,0 50,50times(1 20,0 60))))";--------------------编程问答-------------------- 继续求啊,帮忙 --------------------编程问答-------------------- 这个东西,核心应该是括号匹配。就用一个Stack来模拟,从内往外构造这个串。
Regex reg = new Regex(@"([^()]+)(?:(?:(?<Open>\()([^()]*))*((?<-Open>\))[^()]*)*)*(?(Open)(?!))");
foreach (Match m in reg.Matches(str))
{
Response.Write(m.Groups[1].Value+" ");
foreach (Capture c in m.Groups[2].Captures)
Response.Write(c.Value+"<br/>");
}
/*
1times 0 100,1 50,20times
1 100,0 50,300times
1 20,0 50,50times
1 20,0 60
*/
数据结构或者编译原理里,你能找到相应的内容。 --------------------编程问答-------------------- + --------------------编程问答-------------------- 继续请教:把文件完整格式贴来了
TRANSITION_LIST("INT_P")
{
NODE
{
REPEAT = 1;
LEVEL 0 FOR 1004400.0;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 1;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 48;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 49;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 38;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
}
} --------------------编程问答-------------------- TRANSITION_LIST("INT_P")
{
NODE
{
REPEAT = 1;
LEVEL 0 FOR 1004400.0;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 1;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 48;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 49;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
NODE
{
REPEAT = 38;
LEVEL 1 FOR 12000.0;
LEVEL 0 FOR 99600.0;
}
}
} --------------------编程问答-------------------- 这里面还涉及到平级的并列的循环,不知道怎么处理了啊
补充:.NET技术 , ASP.NET