[antlr-interest] Get an iterator?

Brian Lavender brian at brie.com
Sun Aug 22 23:59:43 PDT 2010


On Sun, Aug 22, 2010 at 11:05:50PM -0700, Brian Lavender wrote:
> How do I get an iterator for the one or more? The following doesn't quite seem 
> to work.
> 
> 
> grammar Agenda;
> 
> options {language='Java';}
> 

Turns out that the following works.

agenda	returns [List l1]
@init { $l1 = new ArrayList(); } :	 
	( e=bill { 
		$l1.add($e.xml);
		//System.out.println($e.xml);
	 } )+
	;

> agenda	:	
> 	l1=bill+ { Iterator it = $l1.iterator() ; } ;
> bill	returns[String xml] 	:	
> 	active fiscal title author NL 
> 	subject NL NL {
> 		$xml = "<BILL>\n"; 
> 		$xml += $title.xml + "\n";
> 		$xml += $author.xml + "\n";
> 		$xml += $subject.xml + "\n";
> 		$xml += "</flag type=\"active\" status=\"" + $active.text + "\">\n";
> 		$xml += "</flag type=\"fiscal\" status=\"" + $fiscal.text + "\">\n";
> 		$xml += "</BILL>\n";				
> }
> ;
> 
> title returns [String xml]	:	
> 	fifteen { 
> 		$xml="<Title>" + $fifteen.text + "</Title>";	
> 	};
> author	returns [String xml] 	:	
> 	ten { 
> 		$xml="<Author>" + $ten.text + "</Author>";
> 	};
> subject	returns [String xml]	:	
> 	ten {
> 		$xml="<Subject>" + $ten.text + "</Subject>";
> 	};
> 	
> active	:	FLAG;
> fiscal	:	FLAG;
> 
> fifteen	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR;
> ten	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR;
> 	
> 
> NL	:	('\n'|'\r'|'\r\n');
> FLAG	:	('Y'|'N');
> LTR  :   . ;
> 
> 
> Input to the Lexer/Parser is the following.
> 
> YYconstruct bill frank burn
> Make lifez
> 
> YYeazememnt bill billy bob 
> roughlife 
> 
> 
> 
> 
> -- 
> Brian Lavender
> http://www.brie.com/brian/
> 
> "There are two ways of constructing a software design. One way is to
> make it so simple that there are obviously no deficiencies. And the other
> way is to make it so complicated that there are no obvious deficiencies."
> 
> Professor C. A. R. Hoare
> The 1980 Turing award lecture
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
Brian Lavender
http://www.brie.com/brian/

"There are two ways of constructing a software design. One way is to
make it so simple that there are obviously no deficiencies. And the other
way is to make it so complicated that there are no obvious deficiencies."

Professor C. A. R. Hoare
The 1980 Turing award lecture


More information about the antlr-interest mailing list