Ignore:
Timestamp:
05/14/14 10:07:49 (10 years ago)
Author:
hkaulbersch
Message:

Changed Validation:
Validation now works between different files
-unused rule
-referenced only ones
-passthrough

File:
1 edited

Legend:

Unmodified
Added
Removed
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend

    r65 r66  
    1515import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition 
    1616import java.util.ArrayList 
     17import com.google.inject.Inject 
     18import org.eclipse.xtext.resource.IResourceDescriptions 
    1719 
    1820//import java.util.HashMap 
     
    2729class EbnfValidator extends AbstractEbnfValidator { 
    2830 
     31 
     32        @Inject 
     33        IResourceDescriptions resourceDescriptions; 
     34         
     35         
    2936        public static final String ruleReferencedOneDescription = "The rule is only referenced by one other rule"; 
    3037        public static final String passthroughRuleDescription = "The rule is a passthrough rule"; 
     
    4855                        return; 
    4956 
    50                 var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule); 
    51  
    52                 if (references.size() == 1 && rule.rulenumber != 1) { 
     57                var List<Rule> references = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions); 
     58                var List<RuleReference> references1 = EbnfAnalysisUtils.findReferences(rule); 
     59                if (references.size+references1.size == 1 && rule.rulenumber != 1) { 
    5360                        warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME, ruleReferencedOneDescription, 
    5461                                rule.name); 
     
    172179 
    173180                var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule); 
    174  
    175                 if ((references.size() == 0) && (rule.getRulenumber() != 1)) 
     181                var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions); 
     182                if ((references.size+references1.size == 0) && (rule.getRulenumber() != 1)) 
    176183                        warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME, unusedRuleDescription, rule.name); 
    177184        } 
     
    214221 
    215222                var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule); 
    216  
     223                var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions); 
    217224                if (EbnfAnalysisUtils.isPassthroughRule(rule) && rule.rulenumber != 1) { 
    218                         if (references.size() == 0) { 
     225                        if (references.size+references1.size == 0) { 
    219226                                warning(unreferencedPassthroughRuleDescription, EbnfPackage$Literals::RULE__NAME); 
    220227                        } else { 
Note: See TracChangeset for help on using the changeset viewer.