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