code: def run_parser(quil):
      # type: (str) -> List[AbstractInstruction]
      
      # Step 1: Run the Lexer
      input_stream = InputStream(quil)
      lexer = QuilLexer(input_stream)
      stream = CommonTokenStream(lexer)
  
      # Step 2: Run the Parser
      parser = QuilParser(stream)
      parser.removeErrorListeners()
      parser.addErrorListener(CustomErrorListener())
      tree = parser.quil()
  
      # Step 3: Run the Listener
      pyquil_listener = PyQuilListener()
      walker = ParseTreeWalker()
      walker.walk(pyquil_listener, tree)
  
      return pyquil_listener.result
docs: Run the ANTLR parser.
  
      :param str quil: a single or multiline Quil program
      :return: list of instructions that were parsed