Top  Previous  Next

Grammar tests > Non-circularity


No non-terminal may be derived from itself, neither directly nor indirectly. The following production is an example for a rule, which hurts this principle:



Circular1 ::= Circular2 | "T"

Circular2 ::= Circular1 | "T"



If you parse this rule, following error message will occur:


Circular derivation: "Circular1" . "Circular2"

Circular derivation: "Circular2" . "Circular1"




Following rules however are yielding the error message, no being derivable to terminals.


Circular1 ::= Circular2

Circular2 ::= Circular1


The test of derivability is done before the circularity is found and the second test will not be performed.

This page belongs to the TextTransformer Documentation

Home  Content  German