# Path: pyxc/transforming.py
# class TargetNode:
#     
#     def __init__(self, *args):
#         self.args = args
#     
#     def __str__(self):
#         return ''.join(
#                     str(x) for x in
#                         self.emit(*self.transformedArgs))
# 
# Path: pyxc/util.py
# def delimitedList(item, arr, dest=None, delimAtEnd=False):
#     if dest is None:
#         dest = []
#     if arr:
#         dest.append(arr[0])
#     for i in range(1, len(arr)):
#         dest.append(item)
#         dest.append(arr[i])
#     if delimAtEnd:
#         dest.append(item)
#     return dest


import ast, json, re
from functools import reduce
from pyxc.transforming import TargetNode
from pyxc.util import delimitedList
class JSOpMod(JSNode):
    def emit(self):
        return ['%']

class JSOpRShift(JSNode):
    def emit(self):
        return ['>>']

class JSOpLShift(JSNode):
    def emit(self):
        return ['<<']

class JSOpBitXor(JSNode):
    def emit(self):
        return ['^']

class JSOpBitAnd(JSNode):
    def emit(self):
        return ['&']

class JSOpBitOr(JSNode):
    def emit(self):
        return ['|']

class JSOpInvert(JSLeftSideUnaryOp):
    def emit(self):
        return ['~']

class JSOpStrongEq(JSNode):
    def emit(self):

# Path: pyxc/transforming.py
# class TargetNode:
#     
#     def __init__(self, *args):
#         self.args = args
#     
#     def __str__(self):
#         return ''.join(
#                     str(x) for x in
#                         self.emit(*self.transformedArgs))
# 
# Path: pyxc/util.py
# def delimitedList(item, arr, dest=None, delimAtEnd=False):
#     if dest is None:
#         dest = []
#     if arr:
#         dest.append(arr[0])
#     for i in range(1, len(arr)):
#         dest.append(item)
#         dest.append(arr[i])
#     if delimAtEnd:
#         dest.append(item)
#     return dest


# Path: pj/js_ast.py
import ast, json, re
from functools import reduce
from pyxc.transforming import TargetNode
from pyxc.util import delimitedList

class JSOpMod(JSNode):
    def emit(self):
        return ['%']

class JSOpRShift(JSNode):
    def emit(self):
        return ['>>']

class JSOpLShift(JSNode):
    def emit(self):
        return ['<<']

class JSOpBitXor(JSNode):
    def emit(self):
        return ['^']

class JSOpBitAnd(JSNode):
    def emit(self):
        return ['&']

class JSOpBitOr(JSNode):
    def emit(self):
        return ['|']

class JSOpInvert(JSLeftSideUnaryOp):
    def emit(self):
        return ['~']

class JSOpStrongEq(JSNode):
    def emit(self):

        return ['===']