Loop através do dumpdef do m4

1

É possível percorrer a lista de nomes de macros dada por dumpdef ? Eu quero processar certas macros que têm um certo prefixo em seu nome.

    
por Rnet 12.12.2014 / 14:42

1 resposta

1

dumpdef grava a lista de macros com sua definição em um arquivo. Em padrão m4 , esse arquivo é um erro padrão, então a única maneira de obtê-lo é com um redirecionamento externo ao script m4. O GNU m4 fornece o debugfile macro para redirecionar a saída para um arquivo que pode ser lido novamente com input , mas você não pode confiar em uma implementação específica de m4 no autoconf.

Mesmo se você conseguir obter a saída de dumpdef , o formato da saída não será especificado. Você pode usar index e substr para dividir uma string em linhas, mas isso pressupõe que a implementação imprime uma macro por linha, o que não é garantido; Além disso, os valores macro podem conter novas linhas. Com o GNU m4, a saída é ambígua: você não consegue distinguir

define('foo', 'hello')
define('fooo', 'world')

de

 define('foo', 'hello
 fooo:   world')

Supondo que a implementação m4 imprima uma macro por linha e siga o nome com dois pontos, você pode reunir nomes de macros em potencial dessa maneira e usar ifdef para verificar se eles são de fato nomes de macros. Mas você está à mercê de uma implementação que não usa o mesmo formato de impressão de depuração.

A melhor maneira de resolver seu problema é provavelmente fora de m4.

    
por 22.12.2014 / 01:53

Tags