Index: src/Parser/RunParser.cpp
===================================================================
--- src/Parser/RunParser.cpp	(revision d0bdb181c0b58d76a2c4512d3599e092e0b64422)
+++ src/Parser/RunParser.cpp	(revision d0bdb181c0b58d76a2c4512d3599e092e0b64422)
@@ -0,0 +1,63 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// RunParser.cpp -- External interface to the parser.
+//
+// Author           : Andrew Beach
+// Created On       : Mon Dec 19 11:00:00 2022
+// Last Modified By : Andrew Beach
+// Last Modified On : Mon Dec 19 11:15:00 2022
+// Update Count     : 0
+//
+
+#include "RunParser.hpp"
+
+#include "Parser/ParseNode.h"               // for DeclarationNode, buildList
+#include "Parser/TypedefTable.h"            // for TypedefTable
+
+// Variables global to the parsing code.
+LinkageSpec::Spec linkage = LinkageSpec::Cforall;
+TypedefTable typedefTable;
+DeclarationNode * parseTree = nullptr;
+
+void parse( FILE * input, LinkageSpec::Spec linkage, bool alwaysExit ) {
+	extern int yyparse( void );
+	extern FILE * yyin;
+	extern int yylineno;
+
+	// Set global information.
+	::linkage = linkage;
+	yyin = input;
+	yylineno = 1;
+
+	int parseStatus = yyparse();
+	fclose( input );
+	if ( alwaysExit || parseStatus != 0 ) {
+		exit( parseStatus );
+	} // if
+} // parse
+
+void dumpParseTree( std::ostream & out ) {
+	parseTree->printList( out );
+	delete parseTree;
+	parseTree = nullptr;
+}
+
+std::list<Declaration *> buildUnit(void) {
+	std::list<Declaration *> translationUnit;
+	buildList( parseTree, translationUnit );
+
+	delete parseTree;
+	parseTree = nullptr;
+
+	return translationUnit;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/Parser/RunParser.hpp
===================================================================
--- src/Parser/RunParser.hpp	(revision d0bdb181c0b58d76a2c4512d3599e092e0b64422)
+++ src/Parser/RunParser.hpp	(revision d0bdb181c0b58d76a2c4512d3599e092e0b64422)
@@ -0,0 +1,43 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// RunParser.hpp -- External interface to the parser.
+//
+// Author           : Andrew Beach
+// Created On       : Mon Dec 19 10:42:00 2022
+// Last Modified By : Andrew Beach
+// Last Modified On : Mon Dec 19 11:15:00 2022
+// Update Count     : 0
+//
+
+#pragma once
+
+#include <iosfwd>                           // for ostream
+#include <list>                             // for list
+
+#include "SynTree/LinkageSpec.h"            // for Spec
+class Declaration;
+
+// The Parser does not have an enclosing namespace.
+
+/// Parse the contents of the input file, setting the initial linkage to the
+/// value provided. Results are saved to the internal accumulator.
+/// The input file is closed when complete. Exits instead of returning on
+/// error or if alwaysExit is true.
+void parse( FILE * input, LinkageSpec::Spec linkage, bool alwaysExit = false );
+
+/// Drain the internal accumulator of parsed code and print it to the stream.
+void dumpParseTree( std::ostream & );
+
+/// Drain the internal accumulator of parsed code and build a translation
+/// unit from it.
+std::list<Declaration *> buildUnit(void);
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision e1d66c84e0c0d91acc25559fd73ab14706eee525)
+++ src/Parser/module.mk	(revision d0bdb181c0b58d76a2c4512d3599e092e0b64422)
@@ -30,4 +30,6 @@
        Parser/parserutility.cc \
        Parser/parserutility.h \
+       Parser/RunParser.cpp \
+       Parser/RunParser.hpp \
        Parser/StatementNode.cc \
        Parser/TypeData.cc \
