diff src/plparser/PropertyListParser.java @ 5:29b5497fc942

full test passed.
author one
date Sun, 29 Aug 2010 20:28:00 +0900
parents 29c0866e3a84
children 563bcb96e4fa
line wrap: on
line diff
--- a/src/plparser/PropertyListParser.java	Sun Aug 29 18:28:38 2010 +0900
+++ b/src/plparser/PropertyListParser.java	Sun Aug 29 20:28:00 2010 +0900
@@ -98,6 +98,7 @@
 	 */
 	public LinkedList<Node> expr1() {
 		LinkedList<Node> list = new LinkedList<Node>();
+		if (nextToken.type==TokenID.CloseCurParen ) return list;
 	    expr2(list);
 		while(nextToken.type == TokenID.Semicolon) {
 			nextToken();
@@ -129,11 +130,13 @@
 	 */
 	public LinkedList<Node> expr3() {
 		LinkedList<Node>list = new LinkedList<Node>();
+		if (nextToken.type==TokenID.CloseParen) return list;
 		Node n1 = term();
 		list.add(n1); 
 		while (nextToken.type==TokenID.Comma) {
+			nextToken();
+			if (nextToken.type==TokenID.CloseParen) return list;
 			Node n2 = term();
-			if (nextToken.type==TokenID.CloseParen) return list;
 			list.add(n2);
 		}
 		return list;
@@ -157,17 +160,19 @@
 			LinkedList<Node>list1 = expr3();
 			if (nextToken.type==TokenID.CloseParen) {
 			} else { // syntax error;
-				scanner.error(") expected but got "+nextToken);
+				error(") expected but got "+nextToken);
 				return lf.trueNode();
 			}
+			nextToken();
 			return lf.arrayNode(list1);
 		case CurParen: // Dictionary
 			nextToken();
 			LinkedList<Node> list = expr1();
 			if (nextToken.type==TokenID.CloseCurParen) {
 			} else { // syntax error;
-				scanner.error("} expected");
+				error("} expected but got "+nextToken);
 			}
+			nextToken();
 			return lf.dictionaryNode(list);
 		case NUMBER:
 			n = lf.numberNode(Integer.parseInt(nextToken.name));