[Pixelle-commit] SF.net SVN: pixelle: [38] trunk/pixelle/etc/Pixelle.g
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-06-21 03:06:12
|
Revision: 38
http://pixelle.svn.sourceforge.net/pixelle/?rev=38&view=rev
Author: dbrosius
Date: 2008-06-20 20:06:19 -0700 (Fri, 20 Jun 2008)
Log Message:
-----------
add '(' expr ')' and abs( expr )
Modified Paths:
--------------
trunk/pixelle/etc/Pixelle.g
Modified: trunk/pixelle/etc/Pixelle.g
===================================================================
--- trunk/pixelle/etc/Pixelle.g 2008-06-20 05:59:16 UTC (rev 37)
+++ trunk/pixelle/etc/Pixelle.g 2008-06-21 03:06:19 UTC (rev 38)
@@ -48,14 +48,12 @@
}
public byte[] getClassBytes() {
- mv.visitInsn(Opcodes.DRETURN);
- mv.visitMaxs(0,0);
- cw.visitEnd();
return cw.toByteArray();
}
}
-pixelle : expr;
+pixelle :
+ expr {mv.visitInsn(Opcodes.DRETURN);mv.visitMaxs(0,0);cw.visitEnd();} ;
expr
: term
@@ -65,8 +63,8 @@
{mv.visitInsn(Opcodes.DSUB);})*;
term
- : factor {}
- ('*' factor
+ : factor
+ ('*' factor
{mv.visitInsn(Opcodes.DMUL);}
| '/' factor
{mv.visitInsn(Opcodes.DDIV);})*;
@@ -74,12 +72,14 @@
factor
: NUMBER
{mv.visitLdcInsn(Double.valueOf($NUMBER.text));}
+ | '(' expr ')'
| 'p' {mv.visitVarInsn(Opcodes.ALOAD, 1);} '[' expr { mv.visitInsn(Opcodes.D2I); } ',' expr { mv.visitInsn(Opcodes.D2I); } ']' '.' spec=('r'|'g'|'b'|'t'|'s') {String s = $spec.text; mv.visitLdcInsn(Character.valueOf(s.charAt(0))); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "com/mebigfatguy/pixelle/PixelleEval", "getValue", "(IIC)D" );}
| 'x' {mv.visitVarInsn(Opcodes.ILOAD, 2); mv.visitInsn(Opcodes.I2D);}
| 'y' {mv.visitVarInsn(Opcodes.ILOAD, 3); mv.visitInsn(Opcodes.I2D);}
| 'width' {mv.visitVarInsn(Opcodes.ALOAD, 1); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "com/mebigfatguy/pixelle/PixelleEval", "getWidth", "()I" ); mv.visitInsn(Opcodes.I2D);}
- | 'height' {mv.visitVarInsn(Opcodes.ALOAD, 1); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "com/mebigfatguy/pixelle/PixelleEval", "getHeight", "()I" ); mv.visitInsn(Opcodes.I2D);};
-
+ | 'height' {mv.visitVarInsn(Opcodes.ALOAD, 1); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "com/mebigfatguy/pixelle/PixelleEval", "getHeight", "()I" ); mv.visitInsn(Opcodes.I2D);}
+ | 'abs' '(' expr ')' {mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D");};
+
NUMBER : '0'..'9'+ ( '.' ('0'..'9'+))?;
NEWLINE:'\r'? '\n' ;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|