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

Reply via email to