  Formal languages let us define the textual representation of data with
precision. Formal grammars, typically in the form of BNF-like productions,
describe the language syntax, which is then annotated for syntax-directed
translation and completed with semantic actions. When, apart from the textual
representation of data, an explicit representation of the corresponding data
structure is required, the language designer has to devise the mapping between
the suitable data model and its proper language specification, and then develop
the conversion procedure from the parse tree to the data model instance.
Unfortunately, whenever the format of the textual representation has to be
modified, changes have to propagated throughout the entire language processor
tool chain. These updates are time-consuming, tedious, and error-prone.
Besides, in case different applications use the same language, several copies
of the same language specification have to be maintained. In this paper, we
introduce ModelCC, a model-based parser generator that decouples language
specification from language processing, hence avoiding many of the problems
caused by grammar-driven parsers and parser generators. ModelCC incorporates
reference resolution within the parsing process. Therefore, instead of
returning mere abstract syntax trees, ModelCC is able to obtain abstract syntax
graphs from input strings.
