protected Collection<AssemblyParseNumericToken> match(int s, String buffer,
			AssemblyGrammar grammar, AssemblyNumericSymbols symbols) {
		if (s >= buffer.length()) {
			return Collections.emptySet();
		}
		// Try a literal number first
		if (Character.isDigit(buffer.charAt(s))) {
			return matchLiteral(s, buffer, s, false, grammar);
		}
		// Now, try a label
		int b = s;
		while (b < buffer.length()) {
			char c = buffer.charAt(b);
			if (Character.isJavaIdentifierPart(c)) {
				b++;
				continue;
			}
			break;
		}
		String lab = buffer.substring(s, b);
		return symbols.choose(lab, space)
				.stream()
				.map(val -> new AssemblyParseNumericToken(grammar, this, lab, val))
				.collect(Collectors.toList());
	}
Try to match a sign-less numeric literal, or a program label

@param s the buffer cursor where the literal or label is expected
@param buffer the input buffer
@param grammar the grammar containing this terminal
@param symbols the program symbols
@return the parsed token, or null
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/symbol/AssemblyNumericTerminal.java