public static PcodeProgram compileProgram(PcodeParser parser, SleighLanguage language,
			String sourceName, String source, PcodeUseropLibrary<?> library) {
		Map<Integer, UserOpSymbol> symbols = library.getSymbols(language);
		addParserSymbols(parser, symbols);

		ConstructTpl template = compileTemplate(language, parser, sourceName, source);
		return constructProgram(PcodeProgram::new, language, template, symbols);
	}
Compile the given Sleigh source into a simple p-code program with the given parser

<p>
This is suitable for modifying program state using Sleigh statements. Most likely, in
scripting, or perhaps in a Sleigh repl. The library given during compilation must match the
library given for execution, at least in its binding of userop IDs to symbols.

@param parser the parser to use
@param language the language of the target p-code machine
@param sourceName a diagnostic name for the Sleigh source
@param source the Sleigh source
@param library the userop library or stub library for binding userop symbols
@return the compiled p-code program
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/SleighProgramCompiler.java