Class AssemblyFirstFollow
- java.lang.Object
-
- ghidra.app.plugin.assembler.sleigh.parse.AssemblyFirstFollow
-
public class AssemblyFirstFollow extends java.lang.ObjectA class to compute the first and follow of every non-terminal in a grammar See Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, & Tools. Bostom, MA: Pearson, 2007, pp. 220-2.
-
-
Constructor Summary
Constructors Constructor Description AssemblyFirstFollow(AbstractAssemblyGrammar<?,?> grammar)Compute the first and follow sets for every non-terminal in the given grammar
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcomputeFirsts()Compute the first set for each non-terminalprotected voidcomputeFollows()Compute the follow set for each non-terminalprotected voidcomputeNullable()Compute the nullable setjava.util.Collection<AssemblyTerminal>getFirst(AssemblyNonTerminal nt)Get the first set for a given non-terminal That is the set of all terminals, which through some derivation from the given non-terminal, can appear first in a sentential form.java.util.Collection<AssemblyTerminal>getFollow(AssemblyNonTerminal nt)Get the follow set for a given non-terminal That is the set of all terminals, which through some derivation from the start symbol, can appear immediately after the given non-terminal in a sentential form.java.util.Collection<AssemblyNonTerminal>getNullable()Get the nullable set That is the set of all non-terminals, which through some derivation, can produce epsilon.voidprint(java.io.PrintStream out)For debugging, print out the computed sets to the given stream
-
-
-
Constructor Detail
-
AssemblyFirstFollow
public AssemblyFirstFollow(AbstractAssemblyGrammar<?,?> grammar)
Compute the first and follow sets for every non-terminal in the given grammar- Parameters:
grammar- the grammar
-
-
Method Detail
-
computeNullable
protected void computeNullable()
Compute the nullable set
-
computeFirsts
protected void computeFirsts()
Compute the first set for each non-terminal
-
computeFollows
protected void computeFollows()
Compute the follow set for each non-terminal
-
getNullable
public java.util.Collection<AssemblyNonTerminal> getNullable()
Get the nullable set That is the set of all non-terminals, which through some derivation, can produce epsilon.- Returns:
- the set
-
getFirst
public java.util.Collection<AssemblyTerminal> getFirst(AssemblyNonTerminal nt)
Get the first set for a given non-terminal That is the set of all terminals, which through some derivation from the given non-terminal, can appear first in a sentential form.- Parameters:
nt- the non-terminal- Returns:
- the set
-
getFollow
public java.util.Collection<AssemblyTerminal> getFollow(AssemblyNonTerminal nt)
Get the follow set for a given non-terminal That is the set of all terminals, which through some derivation from the start symbol, can appear immediately after the given non-terminal in a sentential form.- Parameters:
nt- the non-terminal- Returns:
- the set
-
print
public void print(java.io.PrintStream out)
For debugging, print out the computed sets to the given stream- Parameters:
out- the stream
-
-