Pergunta

Em muitos linguagem de programação de seqüência de caracteres é um token.

Por exemplo:

 token               ::= '"' string
                       | digit nat

 string              ::= char string
                       | '"'

 nat                 ::= digit nat
                       | ϵ

Este é um LL(1) gramática para alguma linguagem de programação da toke gramática.

Ao analisar um string, não há necessidade de verificar siga conjunto, porque há uma " no final de cada string.

Comparando com nat, string é mais fácil de analisar.

A minha pergunta é

Existe alguma terminologia oficial sobre esse tipo de gramática?

Obrigado.


Edição:

Houve algum erro no original gramática, obrigado @rici para apontar meus erros.

Foi útil?

Solução

FOLLLOW conjuntos não são utilizados na análise de string ou nat.Em ambos os casos, o analisador simplesmente precisa determinar se a entrada é um conjunto de símbolos válidos.No caso de nat, os símbolos válidos são dígitos;no caso de string, eles são caracteres que ".(Em línguas verdadeiras, o analisador também seria de verificação para \).Mas em ambos os casos, uma verificação é necessário, e não existe um bom critério para se dizer: um teste é "mais simples" do que outro.(Na prática, ambas as verificações são susceptíveis de ser uma simples tabela de pesquisa.Então eles são O(1).)

SIGA conjuntos são necessárias somente quando a gramática contém ε produções.Mesmo assim, o analisador ações não são complicados.O que é mais complicado, é a construção do analisador, algo que só acontece uma vez.Ele não é realmente o que de um grande negócio, mas é suficientemente notável que "ε-livre gramáticas" são uma coisa.Eu não acho que há qualquer vocabulário comum para descrever a diferença entre explicitamente e implicitamente terminada a repetição, e de qualquer forma, a distinção será muito difícil de definir de forma rigorosa.O seu string gostaria de ser analisado por um analisador, que usou uma regra diferente para recolher o final ", e é bem possível que os dois analisadores de acabar com a mesma implementação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a cs.stackexchange
scroll top