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: 108

Rating: 1.3/5 (Total Votes: 3)

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

autogen.sh
autogen.sh

20 Feb 15

Mozart
Mozart

3 Jun 15

JBasic
JBasic

3 Jun 15

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!