Pergunta

I ver um exemplo principal poucos () para C flutuando sobre, por exemplo, http://www.antlr.org/ wiki / display / ANTLR3 / Five + minutos + introdução + para + ANTLR + 3 e http://www.antlr.org/api/C/index.html

O dereference parece ser AST. Eu não sei o que é, e - por favor, desculpe-me - não quer se posso evitá-lo.

I woudl gostaria de apenas definir o lexer & gramática (para modem comandos AT) e ter o main () gerados automaticamente, ou cortar / colado de algum lugar.

Ons leve torção é que a maioria dos exemplos parecem ler um arquivo, enquanto eu vou estar recebendo uma série de entradas (comandos AT) como cordas, passados ??como parâmetros.

Pode alguém por favor me aponte em um simples main () que eu posso adaptar (e talvez sugerir hwo para adaptá-la?) Pedir muito eu sei, desculpe.

Foi útil?

Solução

Um AST é uma "Sintaxe Árvore abstrata", e por comandos AT você não precisa de um.

Na verdade, ANTLR é um exagero para analisar comandos AT. Porque não basta verificar o "AT", e em seguida, analisar os comandos à mão? O conjunto de comandos modem é provavelmente suficientemente simples que vai ser mais simples de fazer isso do que ficar ANTLR indo se você nunca fez isso antes.

Se você estiver implementando um conjunto de comandos AT completo, incluindo o "+++" sequência de escape, o tempo também é um fator que você não será capaz de implementar usando ANTLR sozinho.

resposta aos comentários:

Vendo ANTLR como uma ferramenta para reduzir erros é razoável. Em resposta às suas perguntas "Você prefere ler que ou o código tinha trabalhada? E o que você preferiria manter?", A resposta é "depende". Eu uso tanto ANTLR e analisadores codificados manualmente, dependendo do contexto; Neste contexto, uma onde eu iria escolher um analisador de mão-codificado. Algumas razões: provavelmente uma aplicação integrada, relativamente simples (muitos comandos não é igual complexidade), um protocolo comms. Você tem um contexto diferente e claramente têm suas próprias razões, que incluem "tentando com isso".

Assim, para responder a outra pergunta sobre um principal: Sim, você pode usar o que está no wiki ANTLR. Para ler a partir de um pedaço de uso de memória antlr3NewAsciiStringInPlaceStream() ou antlr3NewAsciiStringCopyStream() (conforme o caso) em vez de antlr3AsciiFileStreamNew().

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