Class AssemblyContextGraph

java.lang.Object
ghidra.app.plugin.assembler.sleigh.sem.AssemblyContextGraph
All Implemented Interfaces:
GImplicitDirectedGraph<AssemblyContextGraph.Vertex,AssemblyContextGraph.Edge>

public class AssemblyContextGraph extends Object implements GImplicitDirectedGraph<AssemblyContextGraph.Vertex,AssemblyContextGraph.Edge>
A graph of possible context changes via the application of various constructors

This is used primarily to find optimal paths for the application of recursive rules, i.e., those of the form I => I. These cannot be resolved without some form of semantic analysis. The most notable disadvantage to all of this is that you no longer get all of the possible assemblies, but only those with the fewest rule applications.

Conceivably, this may also be used to prune some possibilities during semantic resolution of a parse tree. Even better, it may be possible to derive a grammar which accounts for the context changes already; however, it's unclear how many rules this will generate, and consequently, how much larger its LALR(1) parser would become.