changeset 83:66719d0834f3

Almost completed.
author kono
date Thu, 17 Jan 2008 20:56:31 +0900
parents aebc899bdc62
children e70b8c36ec0a
files src/parser/MacroNodeParser.java
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/parser/MacroNodeParser.java	Thu Jan 17 18:49:34 2008 +0900
+++ b/src/parser/MacroNodeParser.java	Thu Jan 17 20:56:31 2008 +0900
@@ -77,6 +77,9 @@
 			if (op.order() > nextToken.order) {    // a + b * 
 				arg.add(exprM2(n2));
 				return logicNodeFactory.predicateNode(op, arg);
+			} else if (op.isxfy() && op.order() == nextToken.order) {  
+					arg.add(exprM2(n2));           // a + b *  "xfy" case  (odd order) 
+					return logicNodeFactory.predicateNode(op, arg);
 			} else {                               // a * b + 
 				arg.add(n2);
 				n1 = logicNodeFactory.predicateNode(op, arg);
@@ -95,7 +98,10 @@
 			Node op = makeVariable(nextToken);
 			LinkedList<Node> arg = new LinkedList<Node>();
 			nextToken();
-			arg.add(expr3());
+			if (nextToken.type!=TokenID.NULL&&nextToken.type!=TokenID.Period) { 
+				Node n = expr3();
+				arg.add(n);
+			} else arg.add(null); // prefix can be null arity 
 			return logicNodeFactory.predicateNode(op, arg );
 		} else if (nextToken.type==TokenID.Exists) {
 			return quantifier();