public aspect SpecificationWeaver { int dsllinenumber=0; int gplbeginline=0; int gplendline=0; int b1=0,b2=0,e1=0,e2=0; boolean status1=true,status2=true,status3=true,status4=true; FileIO filemap=new FileIO(); after(int commandname): call (void antlr.Parser.match(int))&&args(commandname) { match(commandname); } pointcut count_dsllinenumber(): call (void P.command()); after(): count_dsllinenumber(){ dsllinenumber=dsllinenumber+1; filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } before(FileIO file_io,String st): target(file_io)&&call (void FileIO.print(String))&&args(st) { if((st==" time=time+1;")){ gplbeginline=file_io.getLinenumber(); } } after(FileIO file_io,String st): target(file_io)&&call (void FileIO.print(String))&&args(st) { if((st.startsWith(" x = "))||(st.startsWith(" int x = "))||(st==" int time = 0;")||(st==" System.out.println(\"time is \"+time);")||(st==" System.out.println(\"x coordiator= \" + x + \" \" + \"y coordinator= \" + y);")){ gplbeginline=file_io.getLinenumber(); if(dsllinenumber==1&&status1==true){ b1=gplbeginline; status1=false; } if(dsllinenumber==9&&status2==true){ b2=file_io.getLinenumber(); status2=false; } } } after(FileIO file_io,String st): target(file_io)&&call (void FileIO.print(String))&&args(st) { if((st.startsWith(" y = "))||(st==" }")||(st==" int time = 0;")||(st==" time=time+1;")||(st.startsWith(" int y = "))||(st==" System.out.println(\"x coordiator= \" + x + \" \" + \"y coordinator= \" + y);")){ gplendline=file_io.getLinenumber(); if(dsllinenumber==1&&status3==true){ status3=false; e1=gplendline; filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+b1+","+e1+"));"); } else if(dsllinenumber==9&&status4==true){//change 9 to a ariable in future status4=false; e2=file_io.getLinenumber(); filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+b2+","+e2+"));"); filemap.print(" mapping.add(new Map("+(dsllinenumber+1)+", \"Robot.java\","+e2+","+e2+"));"); filemap.print("dsllinenumber= "+dsllinenumber); filemap.end(); } } } private void match(int name){ switch(name){ case PTokenTypes.BEGIN: filemap.begin("C:\\Eclipse3.0\\eclipse\\workspace\\org.eclipse.debug.examples.core\\src-core\\org\\eclipse\\debug\\examples\\core\\pda\\model\\Mapping.txt"); dsllinenumber=dsllinenumber+1; break; case antlr.Token.EOF_TYPE: dsllinenumber=dsllinenumber+1; break; default: break; } } }