private Syntax.InitializerList.Designation ParseDesignation() { Syntax.InitializerList.Designation designation = null, subdisignation = null; while (true) { if (scan.Peek().type == Token.Type.COMMA) { CheckToken(scan.Peek(), Token.Type.IDENTIFICATOR); subdisignation = new Syntax.InitializerList.Designation(); subdisignation.SetDesignator(new Syntax.Identifier(scan.Read())); } else if (scan.Peek().type == Token.Type.LBRACKET) { scan.Read(); Syntax.Expression const_expr = ParseConstExpr(); Syntax.Object.CheckObject(const_expr); subdisignation = new Syntax.InitializerList.Designation(); subdisignation.SetDesignator(const_expr); CheckToken(scan.Peek(), Token.Type.RBRACKET, true); } if (subdisignation == null) { break; } if (designation == null) { designation = subdisignation; } else { designation.SetDesignator(subdisignation); } subdisignation = null; } return(designation); }
private Syntax.InitializerList.Designation ParseDesignation() { Syntax.InitializerList.Designation designation = null, subdisignation = null; while (true) { if (scan.Peek().type == Token.Type.COMMA) { CheckToken(scan.Peek(), Token.Type.IDENTIFICATOR); subdisignation = new Syntax.InitializerList.Designation(); subdisignation.SetDesignator(new Syntax.Identifier(scan.Read())); } else if (scan.Peek().type == Token.Type.LBRACKET) { scan.Read(); Syntax.Expression const_expr = ParseConstExpr(); Syntax.Object.CheckObject(const_expr); subdisignation = new Syntax.InitializerList.Designation(); subdisignation.SetDesignator(const_expr); CheckToken(scan.Peek(), Token.Type.RBRACKET, true); } if (subdisignation == null) { break; } if (designation == null) { designation = subdisignation; } else { designation.SetDesignator(subdisignation); } subdisignation = null; } return designation; }