1: \begin{abstract}
2: Grammar convergence is a method that helps discovering relationships
3: between different grammars of the same language or different language
4: versions. The key element of the method is the operational,
5: transformation-based representation of those relationships. Given
6: input grammars for convergence, they are transformed until they are
7: structurally equal. The transformations are composed from
8: primitive operators; properties of these operators and the composed
9: chains provide quantitative and qualitative insight into the
10: relationships between the grammars at hand.
11:
12: We describe a refined method for grammar convergence, and we use it
13: in a major study, where we recover the relationships between all the
14: grammars that occur in the different versions of the Java Language
15: Specification (JLS). The relationships are represented as grammar
16: transformation chains that capture all accidental or intended
17: differences between the JLS grammars. This method is mechanized and
18: driven by nominal and structural differences between pairs of
19: grammars that are subject to asymmetric, binary convergence
20: steps.
21:
22: We present the underlying operator suite for grammar transformation
23: in detail, and we illustrate the suite with many examples of
24: transformations on the JLS grammars. We also describe the extraction
25: effort, which was needed to make the JLS grammars amenable to
26: automated processing. We include substantial metadata about the
27: convergence process for the JLS so that the effort becomes
28: reproducible and transparent.
29: %
30: \keywords{grammar convergence \and grammar transformation \and grammar recovery \and grammar extraction \and language documentation}
31: % \PACS{PACS code1 \and PACS code2 \and more}
32: % \subclass{MSC code1 \and MSC code2 \and more}
33: \end{abstract}
34: