The answer is simple: kind=165 is your new tape operator and its printing is missing in print_statement().
Your tape is no expression with a return value but a statement with side effects. Thus the MIL grammar in milprint.c expects the handling of your tape in print_statement() instead of print_expression() -- see also the grammar at the top of milprint.c (as the error message suggests :)). Jan On 04/17/2008 09:27 AM, Jan Flokstra wrote with possible deletions: > Hi Jan, > > When I remove the if_() around my tj_docmgmt_tape() function in milgen.brg I > get the following error message. [...] > > Jan. > > # End rule: "Rel: std_sort(Rel)" > a0001 := a0006; > a0004 := a0001.project (str(nil)); > a0002 := a0007; > a0003 := a0001.project (str(nil)); > DocmgmTape (ws, a0004, a0002, a0003, a0001); > fatal error: I encountered problems while generating MIL output. > fatal error: This is possibly due to an illegal MIL tree, not conforming to > the grammar in milprint.c > fatal error: This is how far I was able to generate the script: > notice: node: ALG_tj_docmgmt_tape > fatal error: Illegal MIL tree. MIL printer screwed up (kind: 165). > # halted in milprint.c (print_statement), line 596 -- Jan Rittinger Database Systems Technische Universität München (Germany) http://www-db.in.tum.de/~rittinge/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ Monetdb-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/monetdb-developers
