Ett brett spektrum av parsergeneratorer används för att generera parsers för programmeringsspråk. De grammatikformalismer som kommer med parsergeneratorer ger olika metoder för att definiera operatörens företräde. Vissa generatorer (t.ex. YACC) stöd priority deklarationer, andra kräver grammatiken för att vara entydiga, vilket kodar för företrädesregler. Även om grammatikformalismen ger företrädesregler, kanske en viss grammatik inte använder den. Resultatet är grammatikvarianter som implementerar samma språk. För C-språket använder GNU Compiler YACC med företrädesregler, C-Transformers använder SDF utan prioriteringar, medan SDF-biblioteket använder prioriteringar. För PHP använder Zend YACC med företrädesregler, medan PHP-front använder SDF med prioritet och associativitetsdeklarationer. Variansen mellan grammatiken väcker frågan om företrädesreglerna för en grammatik är kompatibla med reglerna för en annan grammatik. Detta är vanligtvis inte uppenbart, eftersom vissa språk har komplexa företrädesregler. För vissa parsergeneratorer definieras också semantiken för företrädesregler operativt, vilket gör det svårt att resonera om deras inverkan på det definierade språket. Vi presenterar en metod och ett verktyg för att jämföra reglerna för olika grammatiker och parsergeneratorer. Även om det är oavgjort om två grammatiker definierar samma språk, detta verktyg ger stöd för att jämföra och återhämta företrädesregler, vilket är särskilt användbart för tillförlitlig migration av en grammatik från en grammatikformalism till en annan. Vi utvärderar vår metod genom ansökan till icke-triviala vanliga programmeringsspråk, såsom PHP och C.
I REF kontrolleras kompatibiliteten mellan (olika genomföranden av) företrädesregler i grammatik.
Grammar Engineering Support for Precedence Rule Recovery and Compatibility Checking
{'venue': None, 'journal': None, 'mag_field_of_study': ['Computer Science']}