/** * */ package com.sap.furcas.parsergenerator.tcs.t2m.grammar; import java.util.HashSet; import java.util.Map; import java.util.Set; import com.sap.furcas.metamodel.FURCAS.TCS.ConcreteSyntax; import com.sap.furcas.parsergenerator.tcs.t2m.grammar.SemanticErrorBucket.SemanticErrorWrapper; import com.sap.furcas.runtime.parser.ParsingError; import com.sap.furcas.runtime.parser.TextLocation; /** * Summarizes results of Grammar generation. * */ public class GenerationReport { //May contain errors, warnings, infos, statistics, etc. Set<ParsingError> errors; Set<ParsingError> warnings; String syntaxName; private final ConcreteSyntax syntax; /** * @param locationMap * @param errorBucket * @param syntax * @param string */ public GenerationReport(Map<Object, TextLocation> locationMap, SemanticErrorBucket errorBucket, String syntaxName, ConcreteSyntax syntax) { this.syntax = syntax; warnings = new HashSet<ParsingError>(); errors = new HashSet<ParsingError>(); Set<SemanticErrorWrapper> messages = errorBucket.getErrors(); if (messages.size() > 0) { TextLocation defaultLocation = new TextLocation(-1, -1, -1, -1, -1, -1); for (SemanticErrorWrapper message : messages) { TextLocation location = null; if (locationMap != null) { location = locationMap.get(message.getSyntaxModelElement()); } if (location == null) { location = defaultLocation; } String messageString = message.getMessage(); if (message.severity == SemanticErrorBucket.SEVERITY_ERROR) { ParsingError error = new ParsingError(messageString, location); errors.add(error); } else { ParsingError warning = new ParsingError(messageString, location); warnings.add(warning); } } } this.syntaxName = syntaxName; } public Set<ParsingError> getWarnings() { return warnings; } public Set<ParsingError> getErrors() { return errors; } public void addError(ParsingError newError) { errors.add(newError); } public String getSyntaxName() { return syntaxName; } public ConcreteSyntax getSyntax() { return syntax; } }