diff --git a/src/jasinta.py b/src/jasinta.py --- a/src/jasinta.py +++ b/src/jasinta.py @@ -61,6 +61,19 @@ class MemberExpression: return prop +class AssignmentExpression: + def __init__(self, node): + self.node = node + + def eval(self, context): + left = evaluate(self.node["left"], context) + right = evaluate(self.node["right"], context) + if self.node["operator"] == "+=": + left.val += right.val + else: + raise NotImplementedError + + class BinaryExpression: def __init__(self, node): self.node = node @@ -124,8 +137,8 @@ class Literal: node_index = {cls.__name__: cls for cls in [ - Program, ExpressionStatement, CallExpression, MemberExpression, EmptyStatement, BinaryExpression, - VariableDeclaration, VariableDeclarator, Literal + Program, ExpressionStatement, CallExpression, MemberExpression, EmptyStatement, AssignmentExpression, + BinaryExpression, VariableDeclaration, VariableDeclarator, Literal ]}