[Pixelle-commit] SF.net SVN: pixelle: [83] trunk/pixelle/etc/Pixelle.g
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-06-26 03:17:08
|
Revision: 83
http://pixelle.svn.sourceforge.net/pixelle/?rev=83&view=rev
Author: dbrosius
Date: 2008-06-25 20:17:16 -0700 (Wed, 25 Jun 2008)
Log Message:
-----------
try putting in && expresssion -- problems
Modified Paths:
--------------
trunk/pixelle/etc/Pixelle.g
Modified: trunk/pixelle/etc/Pixelle.g
===================================================================
--- trunk/pixelle/etc/Pixelle.g 2008-06-26 02:31:33 UTC (rev 82)
+++ trunk/pixelle/etc/Pixelle.g 2008-06-26 03:17:16 UTC (rev 83)
@@ -71,7 +71,7 @@
Label continueLabel = null;
}
:
- cond_or_expr
+ cond_and_expr
( '?'
{
mv.visitInsn(Opcodes.DCONST_1); //TRUE
@@ -91,10 +91,34 @@
}
)? ;
+cond_and_expr
+ @init
+ {
+ Label falseLabel = null;
+ Label continueLabel = null;
+ }
+ :
+ cond_or_expr
+ ( '&&' cond_or_expr
+ {
+ falseLabel = new Label();
+ continueLabel = new Label();
+
+ mv.visitInsn(Opcodes.DCONST_0);
+ mv.visitInsn(Opcodes.DCMPG);
+ mv.visitJumpInsn(Opcodes.IFEQ, falseLabel);
+ mv.visitInsn(Opcodes.DCONST_0);
+ mv.visitInsn(Opcodes.DCMPG);
+ mv.visitJumpInsn(Opcodes.IFEQ, falseLabel);
+ mv.visitInsn(Opcodes.DCONST_1);
+ mv.visitJumpInsn(Opcodes.GOTO, continueLabel);
+ mv.visitLabel(falseLabel);
+ mv.visitInsn(Opcodes.DCONST_0);
+ mv.visitLabel(continueLabel);
+ }
+ )* ;
+
cond_or_expr :
- cond_and_expr ( '&&' cond_and_expr )* ;
-
-cond_and_expr :
eq_expr ( '||' eq_expr )* ;
eq_expr
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|