I would like to write a grammar to convert EBNF description to a list of CFG production rules, instead of an algorithm.
Can CFG production rules is generated from an EBNF description by a rewrite system rewrite EBNF description to halt state that final string is composed by CFG production rules and separate character for that list (for example character '/')?
For example: From intuition view, I could convert as below:
EBNF Description:
letter = "A" | "B" | "C" ;
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
identifier = letter , { letter | digit | "_" } ;
Generated production rules:
letter ⟶ "A"
letter ⟶ "B"
letter ⟶ "C"
digit ⟶ "0"
digit ⟶ "1"
digit ⟶ "2"
digit ⟶ "3"
digit ⟶ "4"
digit ⟶ "5"
digit ⟶ "6"
digit ⟶ "7"
digit ⟶ "8"
digit ⟶ "9"
identifier ⟶ letter
identifier ⟶ letter noname_nonterminal
noname_nonterminal ⟶ letter noname_nonterminal
noname_nonterminal ⟶ digit noname_nonterminal
noname_nonterminal ⟶ "_" noname_nonterminal
noname_nonterminal ⟶ letter
noname_nonterminal ⟶ digit
noname_nonterminal ⟶ "_"
Thank you for your reading,