Alguém sabe o significado de yy?

10

Como as questões de história são consideradas no tópico , imaginei que perguntaria uma que me incomoda há algum tempo e ninguém que conheço parece saber a resposta. Alguém sabe qual é o significado histórico do prefixo yy? A maioria das variáveis ​​e funções geradas pelo lex começam com ele, como yylval, e yylex(). Também me lembro de ter visto um utilitário chamado em yyrsaalgum lugar, mas não consigo encontrar referências a ele em nenhum lugar agora. Mentes inquiridoras querem saber!

Timothy
fonte
5
e eu pensei que esta era uma pergunta vim: P
xenoterracide

Respostas:

10

Eu acho que tem algo a ver com o yacc, que possui arquivos que terminam em .ye requer uma função chamada yylex.


fonte
6
Esta questão SO parece concordar
Michael Mrozek
6
Citando a resposta de @ peterb no post do SO vinculado por Michael, "não há um significado aparente discutido além do simples desejo de um espaço para nome. O" yy "em lex.yy.c indica que a saída lex é destinada a um analisador yacc". Obrigado rapazes!
Timothy
2

Como outros já apontaram aqui e no StackOverflow , pode ser simplesmente uma duplicação do ynome do yaccutilitário, usado para gerar um espaço de nome exclusivo.

As reservas padrão POSIX os espaços de nomes começam com ambos yye YYpara yacccom o seguinte número :

Os nomes são de tamanho arbitrário, compostos por letras, pontos ( .), sublinhados ( _) e dígitos não iniciais. Letras maiúsculas e minúsculas são distintas. Aplicativos em conformidade não devem usar nomes iniciados em yyou YYporque o yaccanalisador usa esses nomes . Muitos dos nomes aparecem na saída final de yacce, portanto, devem ser escolhidos em conformidade com quaisquer regras adicionais criadas pelo compilador C a serem usadas. Em particular, eles aparecem em #definedeclarações.

Infelizmente, os documentos do POSIX são muito ruins em relacionar qualquer forma de história sobre o motivo pelo qual as coisas passaram a ser do jeito que são atualmente.

Kusalananda
fonte