Mudanças entre as edições de "ABNF++: um gerador de parser ABNF"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '__toc__ O compilador ABNF é um aplicativo desenvolvido no IFSC que gera um ''parser'' a partir de uma gramática. O ''parser'' se apresenta como uma classe C++ capaz de identif...')
 
Linha 16: Linha 16:
 
A classe ''Parser_default'' contém a tabela de regras finais do ''parser''. Uma regra final corresponde a uma linha completa de texto identificada pelo ''parser'', enquanto uma regra intermediária corresponde a um trecho do texto identificado. O ''parser'' procura identificar uma regra final que corresponda integralmente a uma linha de texto. No exemplo acima existe uma regra final chamada ''header'' e duas regras intermediárias chamadas ''email'' e ''nome''. Regras finais sempre terminam com ''CRLF'' (a sequência ''\r\n''). Assim, o ''Parser_default'' do exemplo consegue identificar apenas linhas de texto que estejam no formato definido pela regra ''header''. Além disso, ele consegue decompô-las em sequências de caracteres dadas pelas regras intermediárias ''email'' e ''nome''.
 
A classe ''Parser_default'' contém a tabela de regras finais do ''parser''. Uma regra final corresponde a uma linha completa de texto identificada pelo ''parser'', enquanto uma regra intermediária corresponde a um trecho do texto identificado. O ''parser'' procura identificar uma regra final que corresponda integralmente a uma linha de texto. No exemplo acima existe uma regra final chamada ''header'' e duas regras intermediárias chamadas ''email'' e ''nome''. Regras finais sempre terminam com ''CRLF'' (a sequência ''\r\n''). Assim, o ''Parser_default'' do exemplo consegue identificar apenas linhas de texto que estejam no formato definido pela regra ''header''. Além disso, ele consegue decompô-las em sequências de caracteres dadas pelas regras intermediárias ''email'' e ''nome''.
  
= Uso do compilador =
+
= Instalação =
 +
 
 +
O compilador ABNF deve ser instalado a partir do seguinte arquivo:
 +
* [http://tele.sj.ifsc.edu.br/~msobral/ptc/abnf/abnfparser_1.0_all.deb abnfparser_1.0_all.deb]
 +
 
 +
Instale-o com o seguinte comando executado em um terminal:
 +
<syntaxhighlight lang=bash>
 +
sudo dpkg -i abnfparser_1.0_all.deb
 +
</syntaxhighlight>
  
 
= API do parser=
 
= API do parser=

Edição das 13h45min de 26 de outubro de 2015

O compilador ABNF é um aplicativo desenvolvido no IFSC que gera um parser a partir de uma gramática. O parser se apresenta como uma classe C++ capaz de identificar e decompor texto de entrada de acordo com um conjunto de regras gerado com base na gramática especificada. Por exemplo, ao compilar esta especificação de gramática ABNF:

header="E-mail: " %d60 nome %d62 WSP email CRLF
email=1*16ALPHA %d64 1*8(1*16ALPHA ".") 1*16ALPHA
nome=*6(1*16ALPHA WSP) 1*16ALPHA

... são gerados estes arquivos:

  • parser_default.h: declaração da classe Parser_default
  • parser_default.cpp: implementação da classe Parser_default


A classe Parser_default contém a tabela de regras finais do parser. Uma regra final corresponde a uma linha completa de texto identificada pelo parser, enquanto uma regra intermediária corresponde a um trecho do texto identificado. O parser procura identificar uma regra final que corresponda integralmente a uma linha de texto. No exemplo acima existe uma regra final chamada header e duas regras intermediárias chamadas email e nome. Regras finais sempre terminam com CRLF (a sequência \r\n). Assim, o Parser_default do exemplo consegue identificar apenas linhas de texto que estejam no formato definido pela regra header. Além disso, ele consegue decompô-las em sequências de caracteres dadas pelas regras intermediárias email e nome.

Instalação

O compilador ABNF deve ser instalado a partir do seguinte arquivo:

Instale-o com o seguinte comando executado em um terminal:

sudo dpkg -i abnfparser_1.0_all.deb

API do parser