MCPcopy Create free account
hub / github.com/RetiredWizard/PyDOS / readData

Method readData

PyBasic/basicdata.py:65–110  ·  view source on GitHub ↗
(self,read_line_number,infile,tmpfile)

Source from the content-addressed store, hash-verified

63 raise TypeError("Invalid line number: " + str(err))
64
65 def readData(self,read_line_number,infile,tmpfile):
66
67 if len(self.__data) == 0:
68 raise RuntimeError('No DATA statements available to READ ' +
69 'in line ' + str(read_line_number))
70
71 data_values = []
72
73 line_numbers = list(self.__data.keys())
74 line_numbers.sort()
75 #print("+++",self.__next_data,line_numbers)
76
77
78 if self.__next_data == 0:
79 self.__next_data = line_numbers[0]
80 elif line_numbers.index(self.__next_data) < len(line_numbers)-1:
81 self.__next_data = line_numbers[line_numbers.index(self.__next_data)+1]
82 else:
83 raise RuntimeError('No DATA statements available to READ ' +
84 'in line ' + str(read_line_number))
85
86 if self.__data[self.__next_data] >= 0:
87 infile.seek(self.__data[self.__next_data])
88 tokenlist = Lexer().tokenize((infile.readline().replace("\n","")).replace("\r",""))[1:]
89 else:
90 tmpfile.seek(-(self.__data[self.__next_data]+1))
91 tokenlist = Lexer().tokenize((tmpfile.readline().replace("\n","")).replace("\r",""))[1:]
92
93 sign = 1
94 for token in tokenlist[1:]:
95 if token.category != Token.COMMA:
96 if token.category == Token.STRING:
97 data_values.append(token.lexeme)
98 elif token.category == Token.UNSIGNEDINT:
99 data_values.append(sign*int(token.lexeme))
100 elif token.category == Token.UNSIGNEDFLOAT:
101 data_values.append(sign*eval(token.lexeme))
102 elif token.category == Token.MINUS:
103 sign = -1
104 #else:
105 #data_values.append(token.lexeme)
106 else:
107 sign = 1
108
109
110 return data_values
111
112 def restore(self,restoreLineNo):
113 if restoreLineNo == 0 or self.__data.get(restoreLineNo) != None:

Callers 1

__readstmtMethod · 0.80

Calls 3

LexerClass · 0.90
keysMethod · 0.80
tokenizeMethod · 0.80

Tested by

no test coverage detected