Package de.monticore.grammar.cocos
package de.monticore.grammar.cocos
-
ClassesClassDescriptionChecks that abstract nonterminals only extends abstract or normal nonterminals..Checks that abstract nonterminals do not extend and astextend a type.Checks that abstract nonterminals do not extend more than one nonterminals/class.Checks that abstract nonterminals only implement interface nonterminals.Checks that abstract nonterminals witheout extending productions only occur in a component grammar.Checks that nonterminal names start lower-case.checks that one NonTerminal does not define a component with the same derived and a manual name at the same time for example: A = names:Name* Name*; is not allowed because both definition are merged into the same attribute but create different method names form names:Name* e.g.Checks that every EnumConstant is only used onceChecks that Prods have one symbol and one scope keyword at mostChecks that external nonterminals only occur in a component grammar.Checks that a grammar does not extend the same grammar multiple timesChecks that nonterminal names start lower-case.Checks that nonterminal names start lower-case.Checks that prods do not inherit their symbols from more than one classChecks that prods do not inherit their symbols from more than one classChecks that nonterminals only extends abstract or normal nonterminals..Checks that abstract nonterminals witheout extending productions only occur in a component grammar.Checks that keywords that are replaced by names also match "Name"Checks that a grammar using keyword rules defines the token NameChecks that alternatives of keywords are named.Checks that alternatives of keywords are named.Checks that blocks do not contain left recursive rules If Antlr (Antlr 4.5 throws an exception) can take care of it, the check is no longer necessary.Checks that used nonterminals are lexical nonterminals.Checks that used nonterminals are lexical nonterminals.Checks that for each rule there exists max.Checks that no ast rules exist for enum nonterminals.Checks that no ast rules exist for enum nonterminals.Checks only at most 1 symbolrule exists per nonterminalCoCo that checks if in a additional attribute of an astrule, symbolrule or scoperule a generic type does not contain a MCCustomTypeArgument with the *,+,? and min, max notation this can be created in different ways these cases are covered e.g.:
A<B<C>>A<B>*, A<B>+, A<B>?A<B> min = 0, A<B> max = 5, A<B> max = *because these cases cannot be handled in the generator so far and will generate the wrong typeChecks that nonterminals do not have inheritance cycles.Checks if nonterminals with an override annotation really overrides a classChecks that nonterminal names start lower-case.Checks that nonterminals only extends abstract or normal nonterminals.Checks that nonterminal names start lower-case.Checks that nonterminals only extends abstract or normal nonterminals.Checks that nonterminals do not extend and astextend a type.Checks that nonterminals do not extend more than one nonterminals/class.Checks that nonterminals only implement interface nonterminals.Checks that nonterminals or only overridden by normal nonterminals.Checks that nonterminals only extends abstract or normal nonterminals.Checks that overriding abstract nonterminals do not have super rules or classes.Checks, if additional attributes are declared twiceChecks that nonterminals only extends abstract or normal nonterminals.Checks that nonterminals only extends abstract or normal nonterminals.Checks that nonterminals or only overridden by normal nonterminals.Checks if nonterminals with an override annotation really overrides a classChecks that nonterminals or only overridden by normal nonterminals.Checks that overriding nonterminals do not have super rules or classes.Checks that the package name is lowercaseChecks that an attribute name is not used twice for different nonterminals.Checks that an attribute name is not used twice for different nonterminals.Checks that nonterminals only extends abstract or normal nonterminals.(Indirect) left recursive rules (i.e., rules which are left recursive due to an interface) are not available as non-terminal-references.checks for each prod if there exist RuleComponents which have the same usageName but do not have compatible types not compatible if: - one NonTerminal and one Terminal - two different NonTerminal typeschecks if a prod is overwriting a prod of a super grammar and logs an error if both prods define a scope e.g.Checks that the productions, which implement an interface, use the non-terminals of that interface.checks if a prod is overwriting a prod of a super grammar and logs an error if both prods define a symbol e.g.checks if a prod defining a symbol has a list of names.Checks that used terminals are not digits.Checks that used terminals are not empty strings.checks whether a grammar contains two or more prods that have the same name.Checks that productions are unique in a composition of grammars.this coco checks that an interface does not contain unnamed terminals because they do not influence the ast structureChecks that used nonterminals are defined.Checks that used nonterminals are defined.