日期:2014-05-20  浏览次数:20712 次

有关词法语法分析的解决思路
本人Java菜鸟一枚,现遇到有关词法语法分析方面的一些问题,在此请教各位大侠,问题描述如下:
首先,这里要分析的不是确定的C或者Java等语言代码,可以说是又一种语言吧,具体规则参考部分代码
Transition:
name=T14
src=SYN-SENT
tgt=ESTABLISHED
event=SEGMENTARRIVE()
cond=SEG_ACK_on==TRUE && (SEQ_ACK<=ISS || SEQ_ACK>SND_NXT)==FALSE && SEG_ACK>=SND_UNA && SEG_ACK<=SND_NXT && SEG_RST_on==FALSE && SND_UNA>ISS;
action=SEQ=SND_NXT; ACK=RCV_NXT; CTL=ACK;

一个Transition中有诸如name,cond等一些属性,现在要分析出其中的各种变量(主要是event,action和cond中 前三个只有名称的赋值),比如cond中:类似 x>y && y<z 这种,要得出变量x,y,z 而且还要得到x>y 和 y<z两个表达式 ,还要得到整个x>y && y<z,具体用什么方式存储,可以自己定,这些都叫做条件变量; 比如event中:可能会有function(x),这种只要分析出变量x就行了,叫做使用变量; 又或者x=y+z; m=x+3; 这种要得到的是变量x,y,z,m 同时要得到关系:x(y,z)表示x由y和z决定 m(x) 相应的表示m由x决定,最后还要得到m是由y,z决定,x是叫做连接变量。。。

以上分了很多种变量,我想用Java语言编写程序,对于各种变量怎么分析,以及该用什么形式的存储结构来存储各种变量,或是它们之间的决定关系,都搞不明白,希望各位大虾能指点我一些思路,谢谢!

------解决方案--------------------
看看antlr吧,相信会对你的问题有用
------解决方案--------------------
研究一下javacc吧