Lines Matching refs:self

178     def __init__(self, string: str):  argument
179 self.input = string
180 self.cur = 0
182 def is_done(self) -> bool: argument
183 return self.cur == len(self.input)
185 def consume_whitespace(self): argument
186 while not self.is_done() and self.input[self.cur] in ' \t\n':
187 self.cur += 1
189 def parse(self): argument
207 result = self._parse_allow_trailing()
208 self.consume_whitespace()
209 if not self.is_done():
211 self.input[self.cur:])
214 def parse_args(self) -> dict: argument
221 self.consume_whitespace()
222 while not self.is_done():
223 ident = self._parse_ident()
224 self.consume_whitespace()
225 if self.input[self.cur] != '=':
226 raise GNException("Unexpected token: " + self.input[self.cur:])
227 self.cur += 1
228 self.consume_whitespace()
229 val = self._parse_allow_trailing()
230 self.consume_whitespace()
235 def parse_number(self) -> int: argument
236 self.consume_whitespace()
237 if self.is_done():
240 begin = self.cur
243 if not self.is_done() and _is_digit_or_minus(self.input[self.cur]):
244 self.cur += 1
245 while not self.is_done() and self.input[self.cur].isdigit():
246 self.cur += 1
248 number_string = self.input[begin:self.cur]
253 def parse_string(self) -> str: argument
254 self.consume_whitespace()
255 if self.is_done():
258 if self.input[self.cur] != '"':
260 self.input[self.cur:])
261 self.cur += 1 # Skip over quote.
263 begin = self.cur
264 while not self.is_done() and self.input[self.cur] != '"':
265 if self.input[self.cur] == '\\':
266 self.cur += 1 # Skip over the backslash.
267 if self.is_done():
269 self.input)
270 self.cur += 1
272 if self.is_done():
273 raise GNException('Unterminated string:\n ' + self.input[begin:])
275 end = self.cur
276 self.cur += 1 # Consume trailing ".
278 return unescape_gn_string(self.input[begin:end])
280 def parse_list(self): argument
281 self.consume_whitespace()
282 if self.is_done():
286 if self.input[self.cur] != '[':
288 self.input[self.cur:])
289 self.cur += 1
290 self.consume_whitespace()
291 if self.is_done():
292 raise GNException("Unterminated list:\n " + self.input)
296 while not self.is_done():
297 if self.input[self.cur] == ']':
298 self.cur += 1 # Skip over ']'.
304 list_result += [self._parse_allow_trailing()]
305 self.consume_whitespace()
306 if self.is_done():
310 previous_had_trailing_comma = self.input[self.cur] == ','
313 self.cur += 1
314 self.consume_whitespace()
316 raise GNException("Unterminated list:\n " + self.input)
318 def _constant_follows(self, constant) -> bool: argument
323 end = self.cur + len(constant)
324 if end > len(self.input):
326 if self.input[self.cur:end] == constant:
327 self.cur = end
331 def _parse_allow_trailing(self): argument
333 self.consume_whitespace()
334 if self.is_done():
337 next_char = self.input[self.cur]
339 return self.parse_list()
341 return self.parse_number()
343 return self.parse_string()
344 elif self._constant_follows('true'):
346 elif self._constant_follows('false'):
349 raise GNException("Unexpected token: " + self.input[self.cur:])
351 def _parse_ident(self) -> str: argument
354 next_char = self.input[self.cur]
356 raise GNException("Expected an identifier: " + self.input[self.cur:])
359 self.cur += 1
361 next_char = self.input[self.cur]
364 self.cur += 1
365 next_char = self.input[self.cur]