Kalpana Kalpana (Editor)

Two level grammar

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit

A two-level grammar is a formal grammar that is used to generate another formal grammar [1], such as one with an infinite rule set [2]. This is how a Van Wijngaarden grammar was used to specify Algol 68 [3]. A context free grammar that defines the rules for a second grammar can yield an effectively infinite set of rules for the derived grammar. This makes such two-level grammars more powerful than a single layer of context free grammar, because generative two-level grammars have actually been shown to be Turing complete.

Two-level grammar can also refer to a formal grammar for a two-level formal language, which is a formal language specified at two levels, for example, the levels of words and sentences.

Example

A well-known non-context-free language is

{ a n b n a n | n 1 } .

A two-level grammar for this language is the metagrammar

N ::= 1 | N1 X ::= a | b

together with grammar schema

Start ::= a N b N a N X N 1  ::= X N X X 1  ::= X

References

Two-level grammar Wikipedia