init with {: System.err.println("Traduction Brainfuck vers C (compact)"); :} action code {: BFTrad out=new BFTrad(); :} terminal Integer PTR, VAL; terminal PUTCHAR, GETCHAR, LOOP_IN, LOOP_OUT; nonterminal Axiome, ListeInst, Inst; Axiome ::= {: out.open("out.c","pre_out.c"); :} ListeInst {: out.close("post_out.c"); :} ; ListeInst ::= /* vide */ {: :} | ListeInst Inst {: :} ; Inst ::= PTR:r {: out.println("ptr+="+r+";"); :} | VAL:r {: out.println("(*ptr)+="+r+";"); :} | PUTCHAR {: out.println("putchar(*ptr);"); :} | GETCHAR {: out.println("(*ptr)=getchar();"); :} | LOOP_IN {: out.println("while(*ptr) {"); out.indent++; :} ListeInst LOOP_OUT {: out.indent--; out.println("}"); :} ;