diff --git a/sources/zweic/Operators.scala b/sources/zweic/Operators.scala new file mode 100755 index 0000000..0da0661 --- /dev/null +++ b/sources/zweic/Operators.scala @@ -0,0 +1,52 @@ +/* zweic -- a compiler for zwei + * + * Stephane Micheloud & LAMP + * + * $Id$ + */ + +package zweic; + + +/** + * This class defines all binary operators of zwei. + */ +object Operators extends Enumeration { + type Operator = Value; + + // binary + val ADD = Value("+"); + val SUB = Value("-"); + val MUL = Value("*"); + val DIV = Value("/"); + val MOD = Value("%"); + val EQ = Value("=="); + val NE = Value("!="); + val LT = Value("<"); + val LE = Value("<="); + val GT = Value(">"); + val GE = Value(">="); + val AND = Value("&&"); + + // unary + val NEG = Value("-"); + val NOT = Value("!"); + + import scala.collection.mutable.HashMap; + + val token2op = new HashMap[Tokens.Token, Operator](); + + token2op += Tokens.ADD -> ADD; + token2op += Tokens.SUB -> SUB; + token2op += Tokens.MUL -> MUL; + token2op += Tokens.DIV -> DIV; + token2op += Tokens.MOD -> MOD; + token2op += Tokens.EQ -> EQ; + token2op += Tokens.NE -> NE; + token2op += Tokens.LT -> LT; + token2op += Tokens.LE -> LE; + token2op += Tokens.GT -> GT; + token2op += Tokens.GE -> GE; + token2op += Tokens.AND -> AND; + token2op += Tokens.NOT -> NOT; +}