Skip to content
This repository has been archived by the owner on Nov 15, 2021. It is now read-only.

Commit

Permalink
string operations including concatenation work
Browse files Browse the repository at this point in the history
  • Loading branch information
localhuman committed Sep 20, 2017
1 parent 4c159b7 commit 1f02a9c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 15 deletions.
7 changes: 3 additions & 4 deletions boa/code/method.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ class Method():

tokenizer = None


local_stores = None

start_line_no = None
Expand Down Expand Up @@ -219,10 +218,10 @@ def process_block_groups(self):


def tokenize(self):

prevtoken = None
for t in self.tokens:
t.to_vm(self.tokenizer)

t.to_vm(self.tokenizer, prevtoken)
prevtoken = t

def convert_jumps(self):
for key,vm_token in self.tokenizer.vm_tokens.items():
Expand Down
18 changes: 10 additions & 8 deletions boa/code/token.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def __str__(self):
return '%s %s %s' % (self.line_no, self.addr, self.op_name)


def to_vm(self, tokenizer):
def to_vm(self, tokenizer, prev_token=None):

self.tokenizer = tokenizer
token = None
Expand Down Expand Up @@ -132,7 +132,13 @@ def to_vm(self, tokenizer):

#math
elif op == pyop.BINARY_ADD:
token = tokenizer.convert1(OpCode.ADD, self)
print('prevtoken %s ' % prev_token, type(prev_token.args))

if prev_token and type(prev_token.args) is str:
print("adding cat!!!")
token = tokenizer.convert1(OpCode.CAT, self)
else:
token = tokenizer.convert1(OpCode.ADD, self)

elif op == pyop.BINARY_SUBTRACT:
token = tokenizer.convert1(OpCode.SUB, self)
Expand Down Expand Up @@ -162,12 +168,8 @@ def to_vm(self, tokenizer):
elif self.args == '==':
token = tokenizer.convert1(OpCode.EQUAL, self)

# tokn = tokenizer.convert1(Op)
return token

# print("created vm token %s " % token)
#
# if token is None:
# print("did not get token for %s %s" % (self, self.op_name))

class VMToken():

Expand Down Expand Up @@ -244,7 +246,7 @@ def to_s(self):

lno = "{:<10}".format(pt.line_no if do_print_line_no or pstart else '')
addr = "{:<4}".format(key)
op = "{:<20}".format(str(pt.op_name))
op = "{:<20}".format(str(pt.py_op))
arg = "{:<50}".format(to_label if to_label is not None else pt.arg_s)

print("%s%s%s%s" % (lno,addr,op,arg))
Expand Down
7 changes: 4 additions & 3 deletions boa/tests/src/StringTest1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@
class SCTest(FunctionCode):

@staticmethod
def Main(a):
def Main(a, b):

c = a + b

if a == 'hello':
if c == 'hellogoodbye':

return 2
return a + b + a + b


return 1

0 comments on commit 1f02a9c

Please sign in to comment.