public Collection<AssemblyParseResult> parse(final String input,
			AssemblyNumericSymbols symbols) {
		AssemblyParseMachine init = new AssemblyParseMachine(this, input, 0, null, symbols);
		Set<AssemblyParseMachine> results = init.exhaust();

		Set<AssemblyParseResult> ret = new LinkedHashSet<>();
		for (AssemblyParseMachine m : results) {
			if (m.accepted) {
				ret.add(AssemblyParseResult.accept(m.getTree()));
			}
			else if (m.error != 0) {
				Set<String> suggestions = new TreeSet<>();
				for (AssemblyTerminal t : m.expected) {
					suggestions.addAll(t.getSuggestions(m.got, symbols));
				}
				ret.add(AssemblyParseResult.error(m.got, suggestions));
			}
			else {
				throw new AssertionError("INTERNAL: Unfinished machine was returned");
			}
		}
		return ret;
	}
Parse the given sentence with the given defined symbols

<p>
The tokenizer for numeric terminals also accepts any key in {@code labels}. In such cases,
the resulting token is assigned the value of the symbols.

@param input the sentence to parser
@param symbols the symbols
@return all possible parse results (trees and errors)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/parse/AssemblyParser.java