Mercurial > hg > Members > kono > PLparser
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));