Class AssemblySelector
Extensions of this class are also suitable for collecting diagnostic information about attempted assemblies. For example, an implementation may employ the syntax errors in order to produce code completion suggestions in a GUI.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final record
A resolved selection from the results given toselect(AssemblyResolutionResults, AssemblyPatternBlock)
-
Field Summary
Modifier and TypeFieldDescriptionprotected Comparator
<AssemblyResolvedPatterns> A comparator on instruction length (shortest first), then bits lexicographicallyprotected Set
<AssemblyResolvedError> protected Set
<AssemblyParseResult> -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected List
<AssemblyResolvedPatterns> filterParse
(Collection<AssemblyParseResult> parse) Filter a collection of parse trees.Select an instruction from the possible results.
-
Field Details
-
syntaxErrors
-
semanticErrors
-
compareBySizeThenBits
A comparator on instruction length (shortest first), then bits lexicographically
-
-
Constructor Details
-
AssemblySelector
public AssemblySelector()
-
-
Method Details
-
filterParse
public Collection<AssemblyParseResult> filterParse(Collection<AssemblyParseResult> parse) throws AssemblySyntaxException Filter a collection of parse trees.Generally, the assembly resolver considers every possible parsing of an assembly instruction. If, for some reason, the user wishes to ignore certain trees (perhaps for efficiency, or perhaps because a certain form of instruction is desired), entire parse trees may be pruned here.
It is possible that no trees pass the filter. In this case, this method ought to throw an
AssemblySyntaxException
. Another option is to pass the erroneous result on for semantic analysis, in which case, the error is simply copied into an erroneous semantic result. Depending on preferences, this may simplify the overall filtering and error-handling logic.By default, no filtering is applied. If all the trees produce syntax errors, an exception is thrown.
- Parameters:
parse
- the collection of parse results (errors and trees).- Returns:
- the filtered collection, optionally in-place.
- Throws:
AssemblySyntaxException
- if the selector wishes to forward one or more syntax errors
-
filterCompatibleAndSort
protected List<AssemblyResolvedPatterns> filterCompatibleAndSort(AssemblyResolutionResults rr, AssemblyPatternBlock ctx) throws AssemblySemanticException - Throws:
AssemblySemanticException
-
select
public AssemblySelector.Selection select(AssemblyResolutionResults rr, AssemblyPatternBlock ctx) throws AssemblySemanticException Select an instruction from the possible results.This must select precisely one resolved constructor from the results given back by the assembly resolver. This further implies the mask of the returned result must consist of all 1s. If no selection is suitable, this must throw an exception.
By default, this method selects the shortest instruction that is compatible with the given context and takes 0 for bits that fall outside the mask. If all possible resolutions produce errors, an exception is thrown.
- Parameters:
rr
- the collection of resolved constructorsctx
- the applicable context.- Returns:
- a single resolved constructor with a full instruction mask.
- Throws:
AssemblySemanticException
- if all the given results are semantic errors
-