def testValidLuaNoErrors(self): lxr = lexer.Lexer(version=4) for line in VALID_LUA.split(b'\n'): lxr._process_line(line) tokens = lxr.tokens self.assertEqual(lexer.TokName(b'v1'), tokens[0]) self.assertEqual(lexer.TokSpace(b' '), tokens[1]) self.assertEqual(lexer.TokSymbol(b'='), tokens[2]) self.assertEqual(lexer.TokSpace(b' '), tokens[3]) self.assertEqual(lexer.TokKeyword(b'nil'), tokens[4])
def main(orig_args): arg_parser = _get_argparser() args = arg_parser.parse_args(args=orig_args) assert args.lua.endswith('.lua') game_fname = args.lua[:-len('.lua')] + '.p8' my_game = game.Game.make_empty_game(filename=game_fname) my_lexer = lexer.Lexer(version=4) with open(args.lua, 'rb') as lua_fh: my_lexer.process_lines(lua_fh) my_textlib = lzwlib.LzwLib(start_addr=args.startaddr, end_addr=args.endaddr) saw_star = False for i, token in enumerate(my_lexer._tokens): if token.matches(lexer.TokSymbol(b'*')): saw_star = True elif token.matches(lexer.TokString) and saw_star: sid = my_textlib.id_for_string(token.value.decode()) my_lexer._tokens[i - 1] = lexer.TokSpace(b'') my_lexer._tokens[i] = lexer.TokString(str.encode(sid)) saw_star = False else: saw_star = False textlib_lua = str.encode(my_textlib.generate_lua()) my_lexer.process_lines([(l + b'\n') for l in textlib_lua.split(b'\n')]) my_game.lua._lexer = my_lexer my_game.lua._parser.process_tokens(my_game.lua._lexer.tokens) text_bytes = my_textlib.as_bytes() my_game.write_cart_data(text_bytes, args.startaddr) with open(game_fname, 'wb') as outstr: my_game.to_p8_file(outstr, filename=game_fname) return 0