implement grammar and grammarrule
This commit is contained in:
43
src/main/java/parser/grammar/Grammar.java
Normal file
43
src/main/java/parser/grammar/Grammar.java
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package parser.grammar;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class Grammar {
|
||||||
|
|
||||||
|
private final Set<String> terminals;
|
||||||
|
private final Set<String> nonterminals;
|
||||||
|
private final String startSymbol;
|
||||||
|
private final String epsilonSymbol;
|
||||||
|
|
||||||
|
private final Set<GrammarRule> rules;
|
||||||
|
|
||||||
|
public Grammar(Set<String> terminals, Set<String> nonterminals,
|
||||||
|
String startSymbol, String epsilonSymbol,
|
||||||
|
Set<GrammarRule> rules) {
|
||||||
|
this.terminals = terminals;
|
||||||
|
this.nonterminals = nonterminals;
|
||||||
|
this.startSymbol = startSymbol;
|
||||||
|
this.epsilonSymbol = epsilonSymbol;
|
||||||
|
this.rules = rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getTerminals() {
|
||||||
|
return this.terminals;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getNonterminals() {
|
||||||
|
return this.nonterminals;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStartSymbol() {
|
||||||
|
return this.startSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEpsilonSymbol() {
|
||||||
|
return this.epsilonSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<GrammarRule> getRules() {
|
||||||
|
return this.rules;
|
||||||
|
}
|
||||||
|
}
|
||||||
20
src/main/java/parser/grammar/GrammarRule.java
Normal file
20
src/main/java/parser/grammar/GrammarRule.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package parser.grammar;
|
||||||
|
|
||||||
|
public class GrammarRule {
|
||||||
|
|
||||||
|
private final String leftside;
|
||||||
|
private final String rightside;
|
||||||
|
|
||||||
|
public GrammarRule(String leftside, String... rightside) {
|
||||||
|
this.leftside = leftside;
|
||||||
|
this.rightside = String.join(" ", rightside);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLeftside() {
|
||||||
|
return this.leftside;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRightside() {
|
||||||
|
return this.rightside;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user