pyPEG

Tela Software:
pyPEG
Detalhes de Software:
Versão: 2.4.1
Data de upload: 14 Apr 15
Revelador: Volker Birk
Licença: Livre
Popularidade: 29

Rating: 1.5/5 (Total Votes: 2)

Python é uma linguagem de scripting nice. Ele ainda dá acesso ao seu próprio analisador e compilador. Ele também lhe dá acesso a diferentes outros analisadores para fins especiais, como XML e cordas modelos.
Mas às vezes você pode querer ter seu próprio analisador. Isto é o que é para pyPEG.
Para obter uma visão rápida sobre o que está acontecendo, por favor leia este artigo sobre como analisar uma linguagem arbitrária para XML com pyPEG no meu blog.
O que é PEG?
PEG significa Parsing Expression gramática. É algo parecido com a idéia de Expressões Regulares para o contexto de linguagens livres; uma explicação muito clara que você vai encontrar no artigo da Wikipedia sobre PEG.
Com PEGs você pode descrever os mesmos idiomas como com BNF (e eles são ainda similar).
O que é um analisador de intérprete?
Analisadores comuns não estão utilizando as estacas e top-down de análise, mas LR (n) ou LL (n) e análise bottom-up. Isso resulta na idéia de implementar geradores de analisador.
Porque com LR (n) ou LL (n) analisadores você precisa calcular um DFA primeiro, geralmente você deixa o gerador de analisador fazer isso por você. O resultado é um analisador para a sua implementação gramática BNF, que foi a entrada. Pode-se chamar um gerador de analisador um compilador da FBN para a implementação parser.
Um analisador-Interpreter funciona como intérprete em vez de ser um compilador tal. Basta dar a sua gramática como entrada, e ele analisa a linguagem descrita fora do texto. Não será gerado nenhum programa.
Usando pyPEG
Isso significa que: usando pyPEG é muito fácil;-) Se você conhece expressões regulares, já que você vai aprender a usar pyPEG rapidamente.
Uma pequena amostra
Um exemplo: pense em uma linguagem simples como esta:
função FAK (n) {
& Nbsp; if (n == 0) {// 0! 1 é, por definição
& Nbsp; retornar 1;
& Nbsp;} else {
& Nbsp; retorno n * FAK (n - 1);
& Nbsp;};
}
A pyPEG para que a linguagem se parece com o seguinte código (ver também o script de exemplo):
comentário def (): return [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def literal (): re.compile retorno (".? *" r'd * .d * | | d + ')
símbolo def (): retorno re.compile (r "w +")
operador def (): retorno re.compile (r "+ | - | * | / | ==")
operação def (): símbolo de retorno, operador, [literal, chamadadefuncao]
expressão def (): return [literal, operação, chamadadefuncao]
expressionlist def (): return expressão, -1, (",", expressão)
returnstatement def (): palavra-chave de retorno ("retorno"), expressão
ifstatement def (): palavra-chave de retorno ("se"), "(", expressão, ")", bloco, palavra-chave ("else"), bloco
declaração def (): return [ifstatement, returnstatement], ";"
bloco def (): return "{", -2, comunicado, "}"
de Parâmetros def (): return "(", símbolo, -1, (",", símbolo), ")"
chamadadefuncao def (): símbolo voltar ", (", expressionlist, ")"
função def (): palavra-chave de retorno ("função"), símbolo, de Parâmetros, bloco
def simpleLanguage (): função de retorno

O que é novo nesta versão:

  • Esta é uma liberação de limpeza. O código de parse () e compor () foi corrigido.

O que é novo na versão 1.4:.

  • Esta versão corrige alguns bugs com packrat parsing

O que é novo na versão 1.3:

  • Substituir a tupla para nomes em pyAST pela Symbol (lista ) classe, o que é bastante compatível, mas suporta código mais descritivo em backends compilador, também.

O que é novo na versão 1.2:.

  • Bugs com Unicode em tratamento de erros foram corrigidos

O que é novo na versão 1.1:.

  • foi adicionado suporte a Unicode

O que é novo na versão 0.46:.

  • pyPEG.print_trace como True
  • Convertendo pyPEG para Python 3.x agora funciona perfeitamente usando 2to3
  • As regras gramaticais que são aplicadas pode ser opcionalmente rastreada, definindo
  • pyPEG produzirá este rastreio para stderr.

O que é novo na versão 0.45:.

  • Bugfixes

O que é novo na versão 0.44:

  • pyPEG agora decora cada objeto pyAST com nome de arquivo de origem e linha número.

Requisitos :

  • Python

Programas semelhantes

make utilities
make utilities

3 Jun 15

purepy
purepy

14 Apr 15

Nimrod
Nimrod

20 Feb 15

Perl
Perl

17 Aug 18

Outro software de desenvolvedor Volker Birk

YML
YML

11 May 15

Comentário para pyPEG

Comentários não encontrado
Adicionar comentário
Ligue imagens!