Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean isStrongLlk(MyLang language) {
- // FIRSTk(a FOLLOWk(A)) + FIRSTk(b FOLLOWk(A)) = 0
- boolean retValue = true;
- int indexI = 0;
- List<Node> rules = language.getLanguarge();
- for (Node ruleI : rules) {
- if (!retValue) {
- break;
- }
- ++indexI;
- LlkContext contextI = ruleI.getFirstFollowK();
- int indexJ = 0;
- for (Node ruleJ : rules) {
- ++indexJ;
- if (ruleI == ruleJ || !retValue) {
- break;
- }
- if (ruleI.getRoole()[0] == ruleJ.getRoole()[0]) {
- LlkContext contextJ = ruleJ.getFirstFollowK();
- for (int i = 0; i < contextI.calcWords(); ++i) {
- if (contextJ.wordInContext(contextI.getWord(i))) {
- System.out.println(
- String.format("Rules with indices %s and %s do not conform to strong LLk k = %s",
- indexI, indexJ, language.getLlkConst()
- )
- );
- retValue = false;
- break;
- }
- }
- }
- }
- }
- return retValue;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement