class P extends Parser; { FileIO fileio=new FileIO(); // FileIO filemap=new FileIO(); // // int dsllinenumber=0; // int gplbeginline=0; // int gplendline=0; } root : ( b: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; fileio.begin("C:\\Eclipse3.0\\eclipse\\runtime-workbench-workspace\\A\\Robot.java"); fileio.print("public class Robot"); fileio.print("{"); fileio.print(" public static void main(String[] args) {"); fileio.print(" int time = 0;"); //gplbeginline=fileio.getLinenumber(); //gplendline=fileio.getLinenumber(); fileio.print(" "); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } cs:commands { } e:END EOF! { //dsllinenumber=dsllinenumber+1; fileio.print(" System.out.println(\"time is \"+time);"); //gplbeginline=fileio.getLinenumber(); fileio.print(" }"); //gplendline=fileio.getLinenumber(); fileio.print("}"); fileio.end(); // filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); // filemap.print(" mapping.add(new Map("+(dsllinenumber+1)+", \"Robot.java\","+gplendline+","+gplendline+"));"); // filemap.print("dsllinenumber= "+dsllinenumber); // filemap.end(); } ) ; commands : ( c:command cs:commands { // System.out.pirntln("c "+c.getType()); } | { System.out.println(" "); } ) ; command : ( RIGHT { //dsllinenumber=dsllinenumber+1; fileio.print(" //move right"); fileio.print(" x=x+1;"); //gplbeginline=fileio.getLinenumber(); fileio.print(" time=time+1;"); //gplendline=fileio.getLinenumber(); fileio.print(" "); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } |LEFT { //dsllinenumber=dsllinenumber+1; fileio.print(" //move left"); fileio.print(" x=x-1;"); //gplbeginline=fileio.getLinenumber(); fileio.print(" time=time+1;"); //gplendline=fileio.getLinenumber(); fileio.print(" "); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } |UP { //dsllinenumber=dsllinenumber+1; fileio.print(" //move up"); fileio.print(" y=y+1;"); //gplbeginline=fileio.getLinenumber(); fileio.print(" time=time+1;"); //gplendline=fileio.getLinenumber(); fileio.print(" "); //f//ilemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } |DOWN { //dsllinenumber=dsllinenumber+1; fileio.print(" //move down"); fileio.print(" y=y-1;"); //gplbeginline=fileio.getLinenumber(); fileio.print(" time=time+1;"); //gplendline=fileio.getLinenumber(); fileio.print(" "); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } | INIT VARIABLES LPAREN init_num1:NUMBER COMMA init_num2:NUMBER RPAREN { //dsllinenumber=dsllinenumber+1; fileio.print(" int x = "+init_num1.getText()+";"); //gplbeginline=fileio.getLinenumber(); fileio.print(" int y = "+init_num2.getText()+";"); //gplendline=fileio.getLinenumber(); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } | SET VARIABLES LPAREN set_num1:NUMBER COMMA set_num2:NUMBER RPAREN { //dsllinenumber=dsllinenumber+1; fileio.print(" x = "+set_num1.getText()+";"); //gplbeginline=fileio.getLinenumber(); fileio.print(" y = "+set_num2.getText()+";"); //gplendline=fileio.getLinenumber(); fileio.print(" "); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } | PRINT VARIABLES { //dsllinenumber=dsllinenumber+1; fileio.print(" System.out.println(\"x coordiator= \" + x + \" \" + \"y coordinator= \" + y);"); //gplbeginline=fileio.getLinenumber(); //gplendline=fileio.getLinenumber(); //filemap.print(" mapping.add(new Map("+dsllinenumber+", \"Robot.java\","+gplbeginline+","+gplendline+"));"); } ) ; class L extends Lexer; BEGIN : "begin" ; END : "end" ; RIGHT : "right" ; LEFT : "left" ; UP : "up" ; DOWN : "down" ; SET : "set" ; PRINT : "print" ; INIT : "init" ; LPAREN : '(' ; RPAREN : ')' ; COMMA : ',' ; // match a decimal age of any length VARIABLES : ('a'..'z'|'A'..'Z')+ ; NUMBER : ('0'..'9')+ ; // whitespace WS : ( ' ' | '\t' | '\r' '\n' { newline(); } | '\n' { newline(); } ) {$setType(Token.SKIP);} //ignore this token ;