package com.hundsun.ares.studio.engin.parser;
import java.util.ArrayList;
import java.util.List;
public class MarcroElement implements IMacroElement{
private static final String begin = "[";
private static final String end = "]";
private String keyword = "";
private String flag = "";
private String originalText = "";
private int lineNo = -1;
private String messge = null;
private List<String> parameters = new ArrayList<String>();
public MarcroElement(String originalText,int lineNo){
this.originalText = originalText;
this.lineNo = lineNo;
parse();
}
public MarcroElement(String originalText,int lineNo,String message){
this.originalText = originalText;
this.lineNo = lineNo;
this.messge = message;
parse();
}
/**
* ��ȡ�ؼ���
* @return
*/
public String getKeyword() {
return keyword;
}
/**
* ��ȡ��־λ
* @return
*/
public String getFlag() {
return flag;
}
/**
* ��ȡ�����
* @return
*/
public String[] getParameters() {
return parameters.toArray(new String[0]);
}
/**
* ������
*/
private void parse() {
String trim = originalText.trim();
if(trim.isEmpty()){
keyword = "";
return;
}
//�������ؼ��ֺͲ���
List<String> tList = new ArrayList<String>();
parseToken(tList, originalText.trim());
String s[] = tList.toArray(new String[0]);
// String s[] = trim.substring(trim.indexOf("[") + 1, trim.length() - 1).split("\\]\\[");
int flag_start = 0;
//������־λ
if (trim.startsWith("<")){
flag_start = trim.indexOf("<");
if(trim.indexOf(">") != -1 && trim.indexOf(">") > flag_start){
flag = trim.substring(flag_start + 1, trim.indexOf(">"));
}
}
keyword = s[0];
parameters.clear();
for (int i = 1; i < s.length; i++) {
parameters.add(s[i]);
}
}
public void parseToken(List<String> tlist,String text){
int sbegin = text.indexOf(begin);
int send = text.indexOf(end);
if(sbegin >= 0 && send > sbegin){
tlist.add(text.substring(sbegin+1,send));
if(send != (text.length() - 1)){
parseToken(tlist,text.substring(send + 1));
}
}
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.uft.engin.parser.IMacroElement#getLineNo()
*/
@Override
public int getLineNo() {
return lineNo;
}
public static void main(String[] args) {
MarcroElement tt = new MarcroElement("",1);
List<String> test = new ArrayList<String>();
tt.parseToken(test, "<>jjjjjjjj]");
test.size();
}
@Override
public String getAliasName() {
if(null == messge){
return keyword;
}
return messge;
}
}