On 07/07/2010 05:19 PM, David Maier wrote:
> Hello,
> 
> 
> I am getting the following error message as Output of a tree generating 
> grammar which I am currently writing. 
> 
> Exception in thread "main" 
> org.antlr.runtime.tree.RewriteEmptyStreamException: rule sp_decls
>         at 
> org.antlr.runtime.tree.RewriteRuleElementStream._next(RewriteRuleElementStream.java:158)
>       at 
> org.antlr.runtime.tree.RewriteRuleElementStream.nextTree(RewriteRuleElementStream.java:145)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.sp_block_content(MySQLASTGenParser.java:10730)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.sp_unlabeled_block(MySQLASTGenParser.java:9691)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.sp_proc_stmt(MySQLASTGenParser.java:8577)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.sp_tail(MySQLASTGenParser.java:1691)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.no_definer_tail(MySQLASTGenParser.java:1541)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.view_or_trigger_or_sp_or_event(MySQLASTGenParser.java:1401)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.create(MySQLASTGenParser.java:1260)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.stmt(MySQLASTGenParser.java:1186)
>       at 
> com.ingres.antlr.idiom.mysql.MySQLASTGenParser.prog(MySQLASTGenParser.java:1117)
>       at __Test__.main(__Test__.java:16)
> 
> So the last rules are looking as the following:
> 
> sp_unlabeled_block:
>           
>           sp_block_content
>           
>         ;
> 
> sp_block_content:
>           BEGIN_SYM
>           
>           sp_decls
>           sp_proc_stmts
>           END  -> sp_decls sp_proc_stmts //To ignore the BEGIN and END
>         ;
> 
> sp_decls:  (sp_decl ';')* -> (sp_decl)*;
> 
> sp_decl:
>                 DECLARE_SYM sp_decl_idents
>                 
>                 type
>                 (sp_opt_default)? -> ^(TN_DECLARE ^(TN_PARAMS  sp_decl_idents 
> type) ^(TN_TODO sp_opt_default)?)
>               
>                 
>               | DECLARE_SYM ident CURSOR_SYM FOR_SYM sp_cursor_stmt ->  
> ^(TN_DECLARE ^(TN_NAME ident) ^(TN_SELECT sp_cursor_stmt))
>                 
>               ;
> 
> 
> There is a TN_CODE token type which I want to use as the root node of the 
> subtree which will then have this TN_DECLARE nodes as child nodes. So I only 
> did rewrite the rules 'between' TN_CODE and TN_DECLARE to remove unnecessary 
> information like the ';' or the BEGIN and END keywords.
>  
> So I guess that the error occurs because my test input does not have a 
> DECLARE section, but this is OK because of the rule 'sp_decls:  (sp_decl 
> ';')* -> (sp_decl)*;
> ' which says that there could be even no one (*=0 or multiple). So has 
> anybody an answer what is causing the issue and how to solve it?

sp_decls might be void.  Try

sp_block_content:
          BEGIN_SYM
          
          sp_decls
          sp_proc_stmts
          END  -> sp_decls? sp_proc_stmts //To ignore the BEGIN and END
        ;


List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to