We introduce ModelCC, a model-based tool for language specification. ModelCC acts as a parser generator that decouples language specification from language processing, hence avoiding many of the problems caused by grammar-driven parsers and parser generators.
Besides the model-based approach, the main functional advantages of using ModelCC over other existing tools such as lex /yacc, YAJCo, or ANTLR are the following: * Apart from regular expressions, ModelCC allows the usage of pattern matching classes, which can be coded for specific purposes. For example, a dictionary-based matcher, in contrast to a regular expression-based matcher, could be used for detecting verbal forms in ModelCC. * ModelCC supports multiple composition constructions. There is no need to bring the BNF-like notation recursion of enumeration specifications to the model. * ModelCC offers a generic associativity and priority mechanism instead of a specific and limited operator specification mechanism. It supports creating operator-alike constructions as complex as needed. For example, it allows the usage of non terminal symbols as operators and defining n-ary operators. * ModelCC provides mechanisms that allow the developer to solve most language ambiguities. For example, expression nesting ambiguities can be solved by using associativities and priorities, and if-then-optional else sentence nesting ambiguities can be solved by using composition restrictions.