}
}
for (Entry<Production, LRState> entry : state
.getProductionTransitions().entrySet()) {
Production production = entry.getKey();
LRState target = entry.getValue();
String production_CamelCaseName = to_CamelCase(production
.getName());
mLrStateSingleton.newProductionLrTransitionTarget(
production_CamelCaseName, target.getName());
}
Map<Integer, MDistance> distanceMap = new LinkedHashMap<Integer, MDistance>();
boolean isLr1OrMore = false;
for (Action action : state.getActions()) {
int maxLookahead = action.getMaxLookahead();
while (maxLookahead > distanceMap.size() - 1) {
int distance = distanceMap.size();
distanceMap.put(distance, mLrStateSingleton.newDistance(""
+ distance));
}
MDistance mDistance = distanceMap.get(maxLookahead);
MAction mAction = mDistance.newAction();
if (maxLookahead > 0) {
isLr1OrMore = true;
for (Entry<Integer, Set<Item>> entry : action
.getDistanceToItemSetMap().entrySet()) {
String ahead = "" + entry.getKey();
Set<Item> items = entry.getValue();
Set<Token> tokens = new LinkedHashSet<Token>();
for (Item item : items) {
tokens.add(item.getTokenElement().getToken());
}
if (tokens.size() == 0) {
mAction.newFalseGroup();
}
else {
MNormalGroup mNormalGroup = mAction
.newNormalGroup();
for (Token token : tokens) {
if (token.getName().equals("$end")) {
mNormalGroup.newEndCondition(ahead);
}
else {
MatchedToken matchedToken = context
.getMatchedToken(token.getName());
String element_CamelCaseType;
if (matchedToken instanceof NameToken) {
NameToken nameToken = (NameToken) matchedToken;
element_CamelCaseType = nameToken
.get_CamelCaseName();
}
else {
AnonymousToken anonymousToken = (AnonymousToken) matchedToken;
element_CamelCaseType = ""
+ anonymousToken
.get_CamelCaseName();
}
mNormalGroup.newNormalCondition(ahead,
element_CamelCaseType);
}
}
}
}
}
if (action.getType() == ActionType.SHIFT) {
mAction.newShift();
}
else {
ReduceAction reduceAction = (ReduceAction) action;
Alternative alternative = reduceAction.getAlternative();
Production production = alternative.getProduction();
String production_CamelCaseName = to_CamelCase(production
.getName());
String alt_CamelCaseName = to_CamelCase(alternative
.getName());
String alt_CamelCaseFullName = production_CamelCaseName
+ (alt_CamelCaseName.equals("") ? "" : "_"