Analise :: Eyapp.

Analise :: Eyapp Módulo contém extensões para Analise :: Yapp.
Baixe Agora

Analise :: Eyapp. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Casiano Rodriguez-Leon
  • Site do editor:
  • http://search.cpan.org/~casiano/Parse-Eyapp-1.110/lib/Parse/Eyapp.pod

Analise :: Eyapp. Tag


Analise :: Eyapp. Descrição

Analisar :: módulo Eyapp contém extensões para Parse :: Yapp. módulo de análise :: Eyapp contém extensões para análise :: Yapp.SYNOPSIS usar rigorosa; usar Parse :: Eyapp; uso Parse :: Eyapp :: Treeregexp; sub TERMINAL :: informação {$ _ {attr}} my $ gramática = q {% certo '=' # menor precedência% esquerda '-' '+' # + e - têm mais prioridade do que = disambiguate abc como ( ab) -c% esquerda '*' '/' # * e / têm precedência mais do que + desambiguar a / b / c como (a / b) / c% esquerda NEG # desambiguar -aB como (-a) e -b não como - (ab)% tree # Vamos construir uma árvore de sintaxe abstrata ... %% linha: exp {$ _ } / * lista de expressões separadas por ';' * /; / * A directiva% name define o nome da classe à qual o nó que está sendo construído pertence * / exp: nome% NUM NUM | % VAR nome VAR | name% ASSIGN VAR '=' exp | nome PLUS exp% '+' exp | % Exp nome menos '-' exp | TIMES nome% exp '*' exp | name% DIV exp '/' exp | name% UMINUS '-' exp% prec NEG | '(' Exp ')' {$ _ } / * Vamos simplificar um pouco a árvore * /; %% sub _error {die "Erro de sintaxe próximo" ($ _ -> YYCurval $ _ -> YYCurval: "fim de arquivo").. "N"} sub _Lexer {my ($ parser) = shift; # O objeto analisador for ($ parser-> YYData -> {ENTRADA}) {# Topicalize m {Gs +} gc; $ _ Eq '' e retorno ( '', undef); m {G ( + (:?.? +))} gc e retorno ( 'NUM', $ 1); m {G ( *)} GC e de retorno ( 'VAR', $ 1); m {L (.)} gcs e retorno ($ 1, $ 1); }} Sub Run {my ($ self) = shift; $ Auto-> yyparse (yylex => _Lexer, yyerror => _error,); }}; # Fim gramática nosso (@all, $ UMINUS); Parse :: Eyapp-> new_grammar (# Criar a entrada pacote analisador / class => $ gramática, classname => 'Calc', # O nome do pacote que contém o firstline parser => 7 # string $ gramática começa na linha 7 ( para diagnóstico de erro)); my $ parser = Calc-> new (); # Criar um analisador $ parser-> YYData -> {ENTRADA} = "2 * -3 + b * 0, - 2n"; # Set a entrada my $ t = $ parser-> Executar; # Analisá-lo! locais $ Parse :: Eyapp :: Node :: TRAVESSÃO = 2; imprimir "Syntax Tree:", $ t-> str; # Vamos transformar a árvore. Definir as expressões de árvores regular .. my $ p = Parse :: Eyapp :: Treeregexp-> new (String => q {{# Exemplo de código de suporte my% Op = (PLUS => '+', MENOS => ' -', TIMES => '*', DIV => '/');} constantfold: / TIMES | plus | DIV | MINUS /: bin (NUM ($ x), NUM ($ y)) => {my $ op = $ op {ref ($ bin)}; $ x -> {attr} = eval "$ x -> {attr} $ op $ y -> {attr}"; $ _ = $ NUM ;} UMINUS: UMINUS (NUM ($ x)) => {$ x -> {attr} = - $ x -> {attr}; $ _ = $ num} zero_times_whatever: Times (NUM ($ x .),) e {$ x -> {attr} == 0} => {$ _ = $ NUM} whatever_times_zero:. TIMES (, NUM ($ x)) e {$ x -> {attr} == 0} => {$ _ = $ NUM}}, outputfile => 'main.pm'); $ P> generate (); # Criar as Transformações $ t-> s ($ UMINUS); # Transform UMINUS nós $ t-> s (@all); # Constante dobragem e mult. por zero locais $ Parse :: Eyapp :: Node :: TRAVESSÃO = 0; imprimir "nSyntax Árvore após transformações: n", $ t-> str, "n"; Requisitos: · Requisitos Perl: · Perl.


Analise :: Eyapp. Software Relacionado

Urri.

URI é identificadores de recursos uniformes (absolutos e parentes). ...

242

Download

Transação :: Simples

Transaction :: Simples é uma biblioteca Ruby que fornece suporte transacional ativo ("ao vivo", não-backend) aos objetos de marechal. ...

143

Download

Tnfox.

TNFOX é uma biblioteca de kit de ferramentas C ++ e Python. ...

193

Download