File tree Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -129,9 +129,13 @@ def parse_line(self, line):
129129 opcode , args = opcode_args [0 ], ()
130130 return label , opcode , args
131131
132+ def split_statements (self , lines ):
133+ for line in lines :
134+ for statement in line .split (';' ):
135+ yield statement .rstrip ()
132136
133137 def parse (self , lines ):
134- parsed = [self .parse_line (line ) for line in lines ]
138+ parsed = [self .parse_line (line ) for line in self . split_statements ( lines ) ]
135139 return [p for p in parsed if p is not None ]
136140
137141
Original file line number Diff line number Diff line change @@ -244,6 +244,21 @@ def test_symbols():
244244 assert st .resolve_absolute ('const' ) == 123
245245
246246
247+ def test_support_multiple_statements_per_line ():
248+ src = """
249+ label: nop; nop;
250+ wait 42
251+ """
252+
253+ lines = Assembler ().parse (src .splitlines ())
254+
255+ assert lines == [
256+ ('label' , 'nop' , ()),
257+ (None , 'nop' , ()),
258+ (None , 'wait' , ('42' ,))
259+ ]
260+
261+
247262test_parse_line ()
248263test_parse ()
249264test_assemble ()
@@ -254,4 +269,5 @@ def test_symbols():
254269test_assemble_evalulate_expressions ()
255270test_assemble_optional_comment_removal ()
256271test_assemble_test_regressions_from_evaluation ()
272+ test_support_multiple_statements_per_line ()
257273test_symbols ()
Original file line number Diff line number Diff line change 2525 reg_rd 12 , 7 , 0
2626 reg_rd 0x3ff48000 , 7 , 0
2727
28+ # interpret ; as statement separator - this results in 2 NOP machine instructions
29+ nop ; nop ;
30+
2831 halt
You can’t perform that action at this time.
0 commit comments