Update of /cvsroot/nice/Nice/src/bossa/parser
In directory sc8-pr-cvs1:/tmp/cvs-serv22745/F:/nice/src/bossa/parser
Modified Files:
Parser.jj
Log Message:
Implemented user defined fields for enums.
Index: Parser.jj
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/parser/Parser.jj,v
retrieving revision 1.225
retrieving revision 1.226
diff -C2 -d -r1.225 -r1.226
*** Parser.jj 13 Dec 2003 14:06:00 -0000 1.225
--- Parser.jj 15 Dec 2003 00:04:48 -0000 1.226
***************
*** 1198,1210 ****
EnumDefinition enumDefinition(List definitions):
{
! LocatedString name, elem;
List elements = new LinkedList();
}
{
"enum" name=ident()
! "{" elem=ident() { elements.add(elem); }
! ( "," elem =ident() { elements.add(elem); } )+
"}"
! { return new EnumDefinition(name, elements, definitions); }
}
--- 1198,1231 ----
EnumDefinition enumDefinition(List definitions):
{
! LocatedString name;
List elements = new LinkedList();
+ List fields = new LinkedList();
+ MonoSymbol field;
+ List argsList = new LinkedList();
}
{
"enum" name=ident()
! [
! "(" field=monoSymbol() { fields.add(field); }
! ( "," field=monoSymbol() { fields.add(field); } )* ")"
! ]
! "{" enumElement(elements, argsList)
! ( "," enumElement(elements, argsList) )+
"}"
! { return new EnumDefinition(name, elements, fields, argsList, definitions); }
! }
!
! void enumElement(List elements, List argsList):
! {
! LocatedString elem;
! Expression arg;
! List args = new LinkedList();
! }
! {
! elem=ident() { elements.add(elem); }
! [ "(" arg=Expression() { args.add(arg); }
! ( "," arg=Expression() { args.add(arg); } )* ")"
! ]
! { argsList.add(args); }
}
|