func substpatt { ${{ var th = arguments[0]; var repatt = arguments[1]; var reattr = arguments[2]; var repstr = arguments[3]; return th.replace(RegExp(repatt, reattr), repstr); }}$; } func findpatt { ${{ var th = arguments[0]; var repatt = arguments[1]; var reattr = arguments[2]; return th.match(RegExp(repatt, reattr)); }}$; } func getlscomp { return $1[$2]; } inputstr="(A+BC):width>5 % dim,length"; strvals is findpatt(inputstr,"[A-Z]+","g")//findpatt(inputstr,"[a-z]+","g")//findpatt(inputstr,"[0-9]+","g"); InputText=inputstr; InputText = substpatt(inputstr," ","g",""); InputText = substpatt(InputText,"[a-z]+","g","a"); InputText = substpatt(InputText,"[A-Z]+","g","i"); InputText = substpatt(InputText,"[0-9]+","g","v"); func makeinputvals { para input, vals; auto i,j,result,found; j=1; result=[]; for(i=1;i<=input#;i++) { if(input[i]=="i") { for(j=1;j<=vals#;j++) { writeln("yes"); writeln(j); if (findpatt(vals[j],"[A-Z]+","g") != null) { result=result//vals[j]; vals[j]=""; break; } else writeln("syntax error"); } } else if(input[i] == "a") { for(j=1;j<=vals#;j++) { if (findpatt(vals[j],"[a-z]+","g") != null) { result=result//vals[j]; vals[j]=""; break; } } } else if (input[i]=="v") { for(j=1;j<=vals#;j++) { if (findpatt(vals[j],"[0-9]+","g") != null) { result=result//vals[j]; vals[j]=""; break; } } } else {result=result//[""];} } return result; } inputvals is makeinputvals(InputText,strvals);