def match(self, match): if self.tokens: token = self.tokens.pop() else: token = self.get() if token != match: raise common.RCSExpected(token, match)
def match(self, match): "Try to match the next token from the input buffer." token = self.get() if token != match: raise common.RCSExpected(token, match)
def parse_rcs_admin(self): while 1: # Read initial token at beginning of line token = self.ts.get() # We're done once we reach the description of the RCS tree if token[0] in string.digits: self.ts.unget(token) return if token == "head": semi, rev = self.ts.mget(2) self.sink.set_head_revision(rev) if semi != ';': raise common.RCSExpected(semi, ';') elif token == "branch": semi, branch = self.ts.mget(2) if semi == ';': self.sink.set_principal_branch(branch) else: if branch == ';': self.ts.unget(semi) else: raise common.RCSExpected(semi, ';') elif token == "symbols": while 1: tag = self.ts.get() if tag == ';': break (tag_name, tag_rev) = string.split(tag, ':') self.sink.define_tag(tag_name, tag_rev) elif token == "comment": semi, comment = self.ts.mget(2) self.sink.set_comment(comment) if semi != ';': raise common.RCSExpected(semi, ';') elif token == "expand": semi, expand_mode = self.ts.mget(2) self.sink.set_expansion(expand_mode) if semi != ';': raise RCSExpected(semi, ';') elif token == "locks": while 1: tag = self.ts.get() if tag == ';': break (locker, rev) = string.split(tag, ':') self.sink.set_locker(rev, locker) tag = self.ts.get() if tag == "strict": self.sink.set_locking("strict") self.ts.match(';') else: self.ts.unget(tag) elif token == "access": accessors = [] while 1: tag = self.ts.get() if tag == ';': if accessors != []: self.sink.set_access(accessors) break accessors = accessors + [tag] # Chew up "newphrase". else: pass # warn("Unexpected RCS token: $token\n") raise RuntimeError, "Unexpected EOF"