Skip to content

History

Showing with 101 additions and 93 deletions.
  1. +88 −89 Home.md
  2. +13 −4 XBGF.md
177 changes: 88 additions & 89 deletions Home.md
@@ -1,89 +1,88 @@
| **Concepts, languages, techniques** | **Tools, libraries, functions** |
|---------------|-----------|
| [[BGF]] | [[ANTLR2BGF]] |
| [[XBGF]] | [[AppendXBGF]] |
| [[ΞBGF]] | [[AsFix2BTF]] |
| [[MegaL]] | [[BGF2BNF]] |
| [[ANF]] | [[BGF2DMS]] |
| [[LCI]] | [[BGF2dot]] |
| [[BTF]] | [[BGF2HTML]] |
| [[LCF]] | [[BGF2Rsc]] |
| [[Rascal]] | [[BGF2SDF]] |
| [[Prolog]] | [[BGF2TeX]] |
| [[XML]] | [[BGF2TXL]] |
| [[LDF]] | [[BGFlc]] |
| [[XLDF]] | [[BGFover]] |
| [[XSD]] | [[BGFpp]] |
| [[EDD]] | [[BGFreformat]] |
| | [[BTF2BGF]] |
| | [[BTF2src]] |
| | [[BuildTestSetXml]] |
| | [[CBGF]] |
| | [[CBGF2]] |
| | [[CBGF2CBNF]] |
| | [[CBGF2XBGF]] |
| | [[CheckBGF]] |
| | [[CheckXBGF]] |
| | [[DCG2BGF]] |
| | [[Ecore2BGF]] |
| | [[EDD2Rsc]] |
| | [[EXBGF]] |
| | [[EXBGF2XBGF]] |
| | [[EXBGFover]] |
| | [[ExtractOver]] |
| | [[FindHoriz]] |
| | [[GBTF]] |
| | [[GDT]] |
| | [[GDTM]] |
| | [[GDTS]] |
| | [[HTML2BGF]] |
| | [[Java2BGF]] |
| | [[LCI]] |
| | [[LDF2BGF]] |
| | [[LDF2HTML]] |
| | [[LDF2PDF]] |
| | [[LDF2SET]] |
| | [[LDF2TEX]] |
| | [[LDINC]] |
| | [[LLL2BGF]] |
| | [[MergeBGF]] |
| | [[NIGDT]] |
| | [[NormBGF]] |
| | [[PDF2BGF]] |
| | [[PlotBGF]] |
| | [[Py2BGF]] |
| | [[REPP]] |
| | [[Rsc2BGF]] |
| | [[RscD2BGF]] |
| | [[RscS2BGF]] |
| | [[SDF2BGF]] |
| | [[ShowBGF]] |
| | [[ShowG]] |
| | [[ShowPNF]] |
| | [[ShowROOTPRODS]] |
| | [[ShowT]] |
| | [[ShowX]] |
| | [[ShowXBGF]] |
| | [[ShowXSD]] |
| | [[Spec2BGF]] |
| | [[SubGrammar]] |
| | [[TDT]] |
| | [[TNB]] |
| | [[TokenOver]] |
| | [[TXL2BGF]] |
| | [[Validate]] |
| | [[XBGF]] |
| | [[XBGF2CBGF]] |
| | [[XBGF2HTML]] |
| | [[XBGF2TeX]] |
| | [[XBGF2XBNF]] |
| | [[XBGFI]] |
| | [[XBGFLC]] |
| | [[XBGFOVER]] |
| | [[XBGFS]] |
| | [[XBTF]] |
| | [[XLDF]] |
| | [[XLLL]] |
| | [[XML2BTF]] |
| | [[XSD2BGF]] |
| | [[XSD2LDF]] |
|**Concepts, languages, techniques**|**Tools, libraries, functions**|**Transformation operators**|
|-----------------------------------|-------------------------------|----------------------------|
| [[ANF]] | [[ANTLR2BGF]] | [[Abridge]] |
| [[BGF]] | [[AppendXBGF]] | [[Abstractize]] |
| [[BTF]] | [[AsFix2BTF]] | [[AddH]] |
| [[EDD]] | [[BGF2BNF]] | [[AddV]] |
| [[EXBGF]] | [[BGF2DMS]] | [[Anonymize]] |
| [[Factorial Language]] | [[BGF2HTML]] | [[Appear]] |
| [[LCF]] | [[BGF2Rsc]] | [[Chain]] |
| [[LCI]] | [[BGF2SDF]] | [[Concretize]] |
| [[LDF]] | [[BGF2TXL]] | [[Deanonymize]] |
| [[MegaL]] | [[BGF2TeX]] | [[Define]] |
| [[Prolog]] | [[BGF2dot]] | [[Designate]] |
| [[Rascal]] | [[BGFlc]] | [[Detour]] |
| [[XBGF]] | [[BGFover]] | [[Deyaccify]] |
| [[XLDF]] | [[BGFpp]] | [[Disappear]] |
| [[XML]] | [[BGFreformat]] | [[Distribute]] |
| [[XSD]] | [[BTF2BGF]] | [[Downgrade]] |
| [[ΞBGF]] | [[BTF2src]] | [[Dump]] |
| | [[BuildTestSetXml]] | [[Eliminate]] |
| | [[CBGF]] | [[Equate]] |
| | [[CBGF2]] | [[Extract]] |
| | [[CBGF2CBNF]] | [[Factor]] |
| | [[CBGF2XBGF]] | [[Fold]] |
| | [[CheckBGF]] | [[Horizontal]] |
| | [[CheckXBGF]] | [[Import]] |
| | [[DCG2BGF]] | [[Inject]] |
| | [[EDD2Rsc]] | [[Inline]] |
| | [[EXBGF]] | [[Introduce]] |
| | [[EXBGF2XBGF]] | [[LAssoc]] |
| | [[EXBGFover]] | [[Massage]] |
| | [[Ecore2BGF]] | [[Narrow]] |
| | [[ExtractOver]] | [[Permute]] |
| | [[FindHoriz]] | [[Project]] |
| | [[GBTF]] | [[RAssoc]] |
| | [[GDT]] | [[Redefine]] |
| | [[GDTM]] | [[Remove]] |
| | [[GDTS]] | [[RemoveH]] |
| | [[HTML2BGF]] | [[RemoveV]] |
| | [[Java2BGF]] | [[RenameL]] |
| | [[LCI]] | [[RenameN]] |
| | [[LDF2BGF]] | [[RenameS]] |
| | [[LDF2HTML]] | [[RenameT]] |
| | [[LDF2PDF]] | [[Replace]] |
| | [[LDF2SET]] | [[Undefine]] |
| | [[LDF2TEX]] | [[Unfold]] |
| | [[LDinc]] | [[Unite]] |
| | [[LLL2BGF]] | [[Unlabel]] |
| | [[MergeBGF]] | [[Upgrade]] |
| | [[NIGDT]] | [[Vertical]] |
| | [[NormBGF]] | [[Widen]] |
| | [[PDF2BGF]] | [[Yaccify]] |
| | [[PlotBGF]] | |
| | [[Py2BGF]] | |
| | [[REPP]] | |
| | [[Rsc2BGF]] | |
| | [[RscD2BGF]] | |
| | [[RscS2BGF]] | |
| | [[SDF2BGF]] | |
| | [[ShowBGF]] | |
| | [[ShowG]] | |
| | [[ShowPNF]] | |
| | [[ShowRootProds]] | |
| | [[ShowT]] | |
| | [[ShowX]] | |
| | [[ShowXBGF]] | |
| | [[ShowXSD]] | |
| | [[Spec2BGF]] | |
| | [[SubGrammar]] | |
| | [[TDT]] | |
| | [[TXL2BGF]] | |
| | [[TnB]] | |
| | [[TokenOver]] | |
| | [[Validate]] | |
| | [[XBGF]] | |
| | [[XBGF2CBGF]] | |
| | [[XBGF2HTML]] | |
| | [[XBGF2TeX]] | |
| | [[XBGF2XBNF]] | |
| | [[XBGFI]] | |
| | [[XBGFS]] | |
| | [[XBGFlc]] | |
| | [[XBGFover]] | |
| | [[XBTF]] | |
| | [[XLLL]] | |
| | [[XML2BTF]] | |
| | [[XSD2BGF]] | |
| | [[XSD2LDF]] | |
17 changes: 13 additions & 4 deletions XBGF.md
Expand Up @@ -2,6 +2,15 @@

It has been implemented in [[Rascal]], [[Prolog]], [[XSD]] and as a [[commmand line tool]].

## Design goals

* **[[Grammar recovery]].** In order to recover a working grammar from a real grammar artifact one needs to perform various activities such as grammar extraction, grammar beautification, deyaccification, error fixing, etc,—all of them are present in XBGF.
* **[[Grammar convergence]].** An infrastructure for grammar convergence (see Chapter 4) contains three essential parts: grammar extractors, a grammar comparator and a grammar transformer. The latter component is needed for changing the source grammars so that they become structurally identical at the convergence point. XBGF suite can be used as a framework for programmable grammar transformations, it provides all the required expressive power.
* **[[Language documentation]].** It is possible and quite expected that the grammar that is shown in the language standard, programmer's manual or any similar document is not exactly the same as the one used for creating a compiler. For instance, Java Language Specification includes two grammars, each one created and maintained manually and separately. A transformation suite can be useful in such a case since it helps to generate one of the versions (perhaps the more reader-friendly one) from the other automatically, both making their relationship more explicit and reducing maintenance effort and increasing reliability.
* **[[Language evolution]].** A language rarely stays as it was developed on its first day. If any language is being used in practice for some time, new constructs are added to it to respond to the needs of the end users (programmers). XBGF suite has multiple operators for expressing language extensions and revisions, they can be used to document the changes between versions and dialects of the language.
* **[[Language design]].** DSL design is not a rare activity nowadays, and it is quite common to develop the language gradually, regularly synchronising with the needs and knowledge of domain experts. XBGF suite allows to document these steps as transformation steps departing from the base-line grammar or even an empty grammar and finally reaching the language ready to be deployed.
Disciplined grammar adaptation. In order to adapt the baseline grammar to the working circumstances one needs it to work in, it is useful to have a good support for grammar transformations. XBGF can be used to converge differently adapted grammars or as a standalone tool for applying grammar adaptation steps.

## Operator list
* Folding and unfolding transformations: [[unfold]], [[fold]], [[inline]], [[extract]], [[abridge]], [[detour]], [[unchain]], [[chain]]
* Other refactoring transformations: [[massage]], [[distribute]], [[factor]], [[deyaccify]], [[yaccify]], [[eliminate]], [[introduce]], [[import]], [[vertical]], [[horizontal]], [[rassoc]], [[lassoc]], [[equate]]
Expand All @@ -20,7 +29,7 @@ It has been implemented in [[Rascal]], [[Prolog]], [[XSD]] and as a [[commmand l
* [`shared/rascal/src/transform/XBGF.rsc`](../blob/master/shared/rascal/src/transform/XBGF.rsc)

## Related publications
* [_BGF transformation operator suite v.1.0_](http://slps.github.com/xbgf) — reference manual
* [_BGF transformation operator suite v.1.0_](http://slps.github.com/xbgf)core reference manual
* [_An Introduction to Grammar Convergence_](http://grammarware.net/writes/#Convergence2009) — at **iFM 2009**
* [_Recovering Grammar Relationships for the Java Language Specification_](http://grammarware.net/writes/#JLS-SCAM2009) — at **SCAM 2009**
* [_Reverse Engineering Grammar Relationships_](http://grammarware.net/writes/#REGR2010) — at **WSR 2010**
Expand All @@ -31,9 +40,9 @@ It has been implemented in [[Rascal]], [[Prolog]], [[XSD]] and as a [[commmand l
* [_The Grammar Hammer of 2012_](http://arxiv.org/abs/1212.4446) — at CoRR

## See also
* [[BGF]]
* [[ΞBGF]]
* [[EXBGF]]
* [[BGF]] — base grammar notation
* [[ΞBGF]] — bidirectional dialect of XBGF
* [[EXBGF]] — Extended XBGF

## Contributors
* [Ralf Lämmel (@rlaemmel)](https://github.com/rlaemmel)
Expand Down