Skip to content

Commit

Permalink
Add addition
Browse files Browse the repository at this point in the history
  • Loading branch information
awwaiid committed Feb 4, 2013
1 parent b4386c9 commit c30047f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/main/scala/org/moe/parser/Expressions.scala
Expand Up @@ -5,15 +5,17 @@ import ParserUtils._
import scala.util.parsing.combinator._
import org.moe.ast._

trait Expressions extends Literals with JavaTokenParsers {
trait Expressions extends Literals with JavaTokenParsers with PackratParsers {

private lazy val array_index_rule = sigil ~
(namespacedIdentifier <~ literal("[")) ~
(expression <~ literal("]"))

def expression: Parser[AST] = (
// def expression: Parser[AST] = (
lazy val expression: PackratParser[AST] = (
arrayIndex
| array
| addLevel
| literal
| arrayRef
| hashRef
Expand Down Expand Up @@ -55,4 +57,9 @@ trait Expressions extends Literals with JavaTokenParsers {
case "$" ~ i ~ expr => ArrayElementAccessNode("@" + i, expr)
}

def addOps = """[-+]""".r
lazy val addLevel = expression ~ addOps ~ expression ^^ {
case left ~ op ~ right => MethodCallNode(left, op, List(right))
}

}
23 changes: 23 additions & 0 deletions src/test/scala/org/moe/parser/SimpleExpressionTestSuite.scala
@@ -0,0 +1,23 @@
package org.moe.parser

import org.scalatest.FunSuite
import org.scalatest.BeforeAndAfter

import org.moe.runtime._
import org.moe.interpreter._
import org.moe.ast._
import org.moe.parser._

class SimpleExpressionTestSuite extends FunSuite with BeforeAndAfter with ParserTestUtils {

test("... literal int addition") {
val ast = basicAST(Parser.parseStuff("2+2"))
println(Serializer.toJSON(ast))
// Interpreter.eval(runtime, runtime.getRootEnv, ast)
// }
// val result = interpretCode("2 + 2")
// assert(result.asInstanceOf[MoeIntObject].getNativeValue === 4)
}


}

0 comments on commit c30047f

Please sign in to comment.