import sys from html.parser import HTMLParser from cs50 import get_string class Stack: def __init__(self): """Implement stack with a list.""" self.list = [] def peek(self): """Return item on top of stack without removing.""" return None # TODO def pop(self): """Remove and return item on top of stack.""" return None # TODO def push(self, item): """Add item to top of stack.""" pass # TODO def size(self): """Return number of items in stack.""" return len(self.list) class MyHTMLParser(HTMLParser): def __init__(self): """Initialize parser.""" super().__init__() self.stack = Stack() def handle_starttag(self, tag, attrs): """Handle the start of a tag.""" pass # TODO def handle_endtag(self, tag): """Handle the end tag of an element.""" pass # TODO def feed(self, data): """ Feed some text to the parser. Return True if all end tags match start tags. """ try: super().feed(data) except: return False else: return self.stack.size() == 0 def main(): # Get HTML html = get_string("HTML: ") # Parse HTML parser = MyHTMLParser() if parser.feed(html): print("matched") else: print("mismatched") if __name__ == "__main__": main()