Especifique uma Gramática Livre do Contexto (GLC) que especifique o conteúdo de um arquivo CSV, utilizando o ponto e vírgula (;) como delimitador de campo, as aspas duplas (") como delimitador de texto e o \n para indicar a nova linha.
Resposta com recursividade à esquerda
G = ({file, line, word, text, letter, digit}, {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q,
r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ;, ", \n}, P, file)
P = {< file > -> < line > \n < file >
| < line >
< line > -> < word > ; < line >
| < word >
< word > -> " < text > "
< text > -> < letter > < text >
| < digit > < text >
| ε
< letter > -> a | b | c | d | e | f | g | h | i | j | k | l | m
| n | o | p | q | r | s | t | u | v | w | x | y | z
< digit > -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }