07. Gramáticas Livre do Contexto (GLC)

pdfSlides


Exercícios Propostos

onExercício 07.01 Apresente uma derivação à extrema esquerda (DEE) da sentença A := A * (B + (C * A)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.02 Apresente uma derivação à extrema direita (DED) da sentença A := A * (B + (C * A)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.03 Apresente uma árvore de derivação (parse tree) da sentença A := A * (B + (C * A)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.04 Apresente uma derivação à extrema esquerda (DEE) da sentença B := C * (A * C + B) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.05 Apresente uma derivação à extrema direita (DED) da sentença B := C * (A * C + B) sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.06 Apresente uma árvore de derivação (parse tree) da sentença B := C * (A * C + B) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.07 Apresente uma derivação à extrema esquerda (DEE) da sentença A := A * (B + (C)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.08 Apresente uma derivação à extrema direita (DED) da sentença A := A * (B + (C)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.09 Apresente uma árvore de derivação (parse tree) da sentença A := A * (B + (C)) sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.10 Apresente uma derivação à extrema esquerda (DEE) da sentença x * x + x sobre a gramática a seguir.

offExercício 07.11 Apresente uma derivação à extrema direita (DED) da sentença x * x + x sobre a gramática a seguir.

offExercício 07.12 Apresente uma árvore de derivação (parse tree) da sentença x * x + x sobre a gramática a seguir.

onExercício 07.13 Apresente uma derivação à extrema esquerda (DEE) da sentença x * x + x * x sobre a gramática a seguir.

onExercício 07.14 Apresente uma derivação à extrema direita (DED) da sentença x * x + x * x sobre a gramática a seguir.

onExercício 07.15 Apresente uma árvore de derivação (parse tree) da sentença x * x + x * x sobre a gramática a seguir.

offExercício 07.16 Apresente uma derivação à extrema esquerda (DEE) da sentença A := (A + B) * C sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.17 Apresente uma derivação à extrema direita (DED) da sentença A := (A + B) * C sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.18 Apresente uma árvore de derivação (parse tree) da sentença A := (A + B) * C sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.19 Apresente uma derivação à extrema esquerda (DEE) da sentença A := B + C + A sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.20 Apresente uma derivação à extrema direita (DED) da sentença A := B + C + A sobre a gramática a seguir (Sebesta, 2000).

offExercício 07.21 Apresente uma árvore de derivação (parse tree) da sentença A := B + C + A sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.22 Apresente uma derivação à extrema esquerda (DEE) da sentença A := A * (B + C) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.23 Apresente uma derivação à extrema direita (DED) da sentença A := A * (B + C) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.24 Apresente uma árvore de derivação (parse tree) da sentença A := A * (B + C) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.25 Apresente uma derivação à extrema esquerda (DEE) da sentença A := B * (C * (A + B)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.26 Apresente uma derivação à extrema direita (DED) da sentença A := B * (C * (A + B)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.27 Apresente uma árvore de derivação (parse tree) da sentença A := B * (C * (A + B)) sobre a gramática a seguir (Sebesta, 2000).

onExercício 07.28 Apresente uma derivação à extrema esquerda (DEE) da sentença x + (y * (z * x) + z) sobre a gramática a seguir.

onExercício 07.29 Apresente uma derivação à extrema direita (DED) da sentença x + (y * (z * x) + z) sobre a gramática a seguir.

onExercício 07.30 Apresente uma árvore de derivação (parse tree) da sentença x + (y * (z * x) + z) sobre a gramática a seguir.

offExercício 07.31 Apresente uma derivação à extrema esquerda (DEE) da sentença x * (y + z) sobre a gramática a seguir.

offExercício 07.32 Apresente uma derivação à extrema direita (DED) da sentença x * (y + z) sobre a gramática a seguir.

offExercício 07.33 Apresente uma árvore de derivação (parse tree) da sentença x * (y + z) sobre a gramática a seguir.

offExercício 07.34 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui acc como prefixo, cba ou cac como subpalavra e acb como sufixo}.

offExercício 07.35 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {1, 2, 3}, que reconheça a linguagem L = {w | w possui 132 ou 223 como prefixo, 232 ou 312 como subpalavra e 121 ou 321 como sufixo}.

offExercício 07.36 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui bac ou cbc como prefixo, bca ou caa como subpalavra e abc ou cac como sufixo}.

offExercício 07.37 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui acb ou cac como prefixo, baa ou cba como subpalavra e acb ou bac como sufixo}.

offExercício 07.38 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui abc ou cac como prefixo, cbb ou bcb como subpalavra e cba ou baa como sufixo}.

onExercício 07.39 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui bbc ou acc como prefixo, cab ou bcb como subpalavra e bba ou abc como sufixo}.

onExercício 07.40 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z}, que reconheça a linguagem L = {w | w possui xxy ou yyz como prefixo, yxz ou yzx como subpalavra e xzz ou xyx como sufixo}.

onExercício 07.41 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z, w}, que reconheça a linguagem L = {w | w possui xyw ou wzz como prefixo, wzx ou wyx como subpalavra e xyy ou xwz como sufixo}.

onExercício 07.42 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z, w}, que reconheça a linguagem L = {w | w possui xyw ou wzw como prefixo, wzx ou ywx como subpalavra e xyy ou xwz como sufixo}.

onExercício 07.43 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z}, que reconheça a linguagem L = {w | w possui xyz ou zyx ou yzy como prefixo, xyy ou xzx ou xxz como subpalavra e yxy ou yzy ou yxx como sufixo}.

onExercício 07.44 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui abc ou bcd ou cdd como prefixo, dba ou cda ou cab como subpalavra e adb ou dad ou bca como sufixo}.

onExercício 07.45 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui bab ou dac ou ba como prefixo, abb ou cac ou acbc como subpalavra e bca ou acd ou cda como sufixo}.

onExercício 07.46 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui ab ou bcda ou bca como prefixo, dab ou acab ou cad como subpalavra e dad ou aba ou bbc como sufixo}.

onExercício 07.47 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {i, j, k}, que reconheça a linguagem L = {w | w possui iik ou kji ou jkj como prefixo, kjji ou jiik ou ikki como subpalavra e ikk ou jii ou kkj como sufixo}.

onExercício 07.48 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z, w}, que reconheça a linguagem L = {w | w possui xzxy ou wyzy ou zyyw como prefixo, ywzy ou wxxy ou xyx como subpalavra e xwzw ou yxx ou zw como sufixo}.

onExercício 07.49 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui accb ou cbab ou dacd como prefixo, bcad ou dcbd ou abca como subpalavra e adab ou abab ou dcab como sufixo}.

onExercício 07.50 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui abab ou acdb ou bbac como prefixo, accba ou abccb ou badad como subpalavra e adc ou bab ou cbb como sufixo}.

onExercício 07.51 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d}, que reconheça a linguagem L = {w | w possui abcd ou dcba ou baba como prefixo, badcd ou abcbc ou ccdab como subpalavra e bcca ou cdac ou dabc como sufixo}.

onExercício 07.52 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {1, 2, 3, 4}, que reconheça a linguagem L = {w | w possui 1234 ou 1212 ou 3434 como prefixo, 3412 ou 4421 ou 1243 ou 2234 como subpalavra e 2212 ou 1123 ou 2431 ou 3444 como sufixo}.

onExercício 07.53 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c}, que reconheça a linguagem L = {w | w possui abc ou cba como prefixo, acc ou abb como subpalavra e cbb ou caa como sufixo, caso a subpalavra seja acc, ou bab ou bcb como sufixo, caso a subpalavra seja abb}.

onExercício 07.54 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação pré-fixada (notação polonesa), considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros e reais.

onExercício 07.55 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação in-fixada, considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros e reais.

onExercício 07.56 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação pós-fixada (notação polonesa inversa), considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros e reais.

onExercício 07.57 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação pré-fixada (notação polonesa), considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros, reais e variáveis. Uma variável é uma palavra composta por dígitos e letras, cujo primeiro símbolo deve ser obrigatoriamente uma letra.

onExercício 07.58 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação in-fixada, considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros, reais e variáveis. Uma variável é uma palavra composta por dígitos e letras, cujo primeiro símbolo deve ser obrigatoriamente uma letra.

onExercício 07.59 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação pós-fixada (notação polonesa inversa), considerando os operadores aritméticos de adição, subtração, multiplicação e divisão sobre operandos numéricos inteiros, reais e variáveis. Uma variável é uma palavra composta por dígitos e letras, cujo primeiro símbolo deve ser obrigatoriamente uma letra.

onExercício 07.60 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça expressões matemáticas na notação in-fixada, considerando os operadores aritméticos de adição e multiplicação sobre os operandos A, B e C, e os sinais de pontuação parênteses, colchetes e chaves.

onExercício 07.61 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça a linguagem de programação SIMPLE (Deitel, 2003).

onExercício 07.62 Apresente a árvore de derivação (parse tree) da expressão aritmética x = a * b + c * d - e * f, sobre a gramática livre de contexto apresentada a seguir (Price, 2005).

onExercício 07.63 Apresente uma derivação à extrema esquerda (DEE) da sentença x = y * z + k - w sobre a gramática a seguir.

onExercício 07.64 Apresente uma derivação à extrema direita (DED) da sentença x = (z + k) * (w - z) sobre a gramática a seguir.

onExercício 07.65 Apresente uma árvore de derivação (parse tree) da sentença x = (y - k * w) - (k / y) * (w + k) + k sobre a gramática a seguir.

onExercício 07.66 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {0, 1}, que reconheça a linguagem L = {w | w ??0??1??, podendo ? ser 0 ou 1}.

offExercício 07.67 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a + b * c - d * a + b sobre a gramática a seguir.

offExercício 07.68 Apresente uma derivação à extrema direita (DED) da sentença x = a + b * c - d * a + b sobre a gramática a seguir.

onExercício 07.69 Apresente uma árvore de derivação (parse tree) da sentença x = a + b * c - d * a + b sobre a gramática a seguir.

onExercício 07.70 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a * b - c / d sobre a gramática a seguir.

offExercício 07.71 Apresente uma derivação à extrema direita (DED) da sentença x = a * b - c / d sobre a gramática a seguir.

onExercício 07.72 Apresente uma árvore de derivação (parse tree) da sentença x = a * b - c / d sobre a gramática a seguir.

onExercício 07.73 Apresente uma derivação à extrema esquerda (DEE) da sentença x = (a - b) * c + d sobre a gramática a seguir.

onExercício 07.74 Apresente uma derivação à extrema direita (DED) da sentença x = (a - b) * c + d sobre a gramática a seguir.

offExercício 07.75 Apresente uma árvore de derivação (parse tree) da sentença x = (a - b) * c + d sobre a gramática a seguir.

offExercício 07.76 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a + a * (b - c) + (b - c) * d sobre a gramática a seguir.

onExercício 07.77 Apresente uma derivação à extrema direita (DED) da sentença x = a + a * (b - c) + (b - c) * d sobre a gramática a seguir.

onExercício 07.78 Apresente uma árvore de derivação (parse tree) da sentença x = a + a * (b - c) + (b - c) * d sobre a gramática a seguir.

onExercício 07.79 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z, w}, que reconheça a linguagem L = {w | w possui xzx ou yzy como prefixo, xyw ou yxw como subpalavra e wyx ou ywz como sufixo}.

onExercício 07.80 Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça a instrução de controle switch-case.

onExercício 07.81 Apresente uma derivação à extrema esquerda (DEE) da sentença x = (a - b) * c + d sobre a gramática a seguir.

onExercício 07.82 Apresente uma derivação à extrema direita (DED) da sentença x = (a - b) * c + d sobre a gramática a seguir.

offExercício 07.83 Apresente uma árvore de derivação (parse tree) da sentença x = (a - b) * c + d sobre a gramática a seguir.

onExercício 07.84 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a * b - c / d sobre a gramática a seguir.

onExercício 07.85 Apresente uma derivação à extrema direita (DED) da sentença x = a * b - c / d sobre a gramática a seguir.

onExercício 07.86 Apresente uma árvore de derivação (parse tree) da sentença x = a * b - c / d sobre a gramática a seguir.

offExercício 07.87 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a * b + c / d - a * b sobre a gramática a seguir.

offExercício 07.88 Apresente uma derivação à extrema direita (DED) da sentença x = a * b + c / d - a * b sobre a gramática a seguir.

onExercício 07.89 Apresente uma árvore de derivação (parse tree) da sentença x = a * b + c / d - a * b sobre a gramática a seguir.

onExercício 07.90 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {x, y, z, w}, que reconheça a linguagem L = {w | w possui wxy ou xyy ou zwx como prefixo, xyz ou xzw ou ywz como subpalavra e wxz ou yzy ou zyw como sufixo}.

onExercício 07.91 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a + b * c / d + a - b sobre a gramática a seguir.

offExercício 07.92 Apresente uma derivação à extrema direita (DED) da sentença x = a + b * c / d + a - b sobre a gramática a seguir.

onExercício 07.93 Apresente uma árvore de derivação (parse tree) da sentença x = a + b * c / d + a - b sobre a gramática a seguir.

onExercício 07.94 Projetar um compilador para uma determinada linguagem envolve, entre outras coisas, especificar quais são os símbolos válidos nesta linguagem, bem como quais são as regras sintáticas que a definem. A linguagem de programação Java é uma linguagem com suporte à orientação a objetos que não permite herança múltipla e que permite que uma classe implemente múltiplas interfaces. A seguir, exibem-se trechos de código sintaticamente válidos na linguagem Java. Trecho 1: class A extends B { } Trecho 2: class F implements C { } Trecho 3: class J extends A implements C, D { } No trecho 1, cria-se uma classe chamada A que herda de uma classe chamada B. No trecho 2, cria-se uma classe chamada F que implementa uma interface chamada C. No trecho 3, cria-se uma classe chamada J que herda de uma classe chamada A e implementa duas interfaces, chamadas C e D. Desenvolva uma Gramática Livre do Contexto (GLC) que especifica uma linguagem que não permita herança múltipla e que implemente zero ou mais interfaces, como definido na linguagem de programação Java.

onExercício 07.95 Apresente uma derivação à extrema esquerda (DEE) da sentença x = (a * b + c) / (b / c - a) sobre a gramática a seguir.

onExercício 07.96 Apresente uma derivação à extrema direita (DED) da sentença x = (a * b + c) / (b / c - a) sobre a gramática a seguir.

onExercício 07.97 Apresente uma árvore de derivação (parse tree) da sentença x = (a * b + c) / (b / c - a) sobre a gramática a seguir.

onExercício 07.98 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a + b * c / d + b sobre a gramática a seguir.

onExercício 07.99 Apresente uma derivação à extrema direita (DED) da sentença x = a + b * c / d + b sobre a gramática a seguir.

offExercício 07.100 Apresente uma árvore de derivação (parse tree) da sentença x = a + b * c / d + b sobre a gramática a seguir.

onExercício 07.101 Apresente uma derivação à extrema esquerda (DEE) da sentença x = a - (b * c - d) * (d - c / b) - a sobre a gramática a seguir.

onExercício 07.102 Apresente uma derivação à extrema direita (DED) da sentença x = a - (b * c - d) * (d - c / b) - a sobre a gramática a seguir.

onExercício 07.103 Apresente uma árvore de derivação (parse tree) da sentença x = a - (b * c - d) * (d - c / b) - a sobre a gramática a seguir.

onExercício 07.104 Especifique uma Gramática Livre do Contexto (GLC) que especifique o conteúdo de um arquivo CSV, utilizando o ponto e vírgula (;) como delimitador de campo, as aspas duplas (") como delimitador de texto e o \n para indicar a nova linha.

onExercício 07.105 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {w, x, y, z}, que reconheça a linguagem L = {w | w possui wwzx ou zwzw ou zxyw como prefixo, wzyzy ou zwxxw ou zxxwz como subpalavra e wzw ou xww ou zyx como sufixo}.

onExercício 07.106 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /, (, ), >, <, =, !, :, ;}, que reconheça as seguintes instruções de programação:

< label > : do < expr > goto < label > ;
< label > : if < cond > then goto < label > else goto < label > ;

Sendo as variáveis label, expr e cond informalmente definidas como:

< label > ::= r seguido por um número;
< expr >  ::= uma expressão aritmética, com os operadores +, -, * e /, os delimitadores ( e ) e os
              operandos int e var, que representam um número inteiro e o nome de uma variável,
              respectivamente;
< cond >  ::= uma expressão lógica, com os operadores >, >=, <, <=, ==, != e os operandos int e var,
              que representam um número inteiro e o nome de uma variável, respectivamente.

onExercício 07.107 Apresente uma derivação à extrema esquerda (DEE) da sentença a = a + b * c / d - e sobre a gramática a seguir.

onExercício 07.108 Apresente uma derivação à extrema direita (DED) da sentença a = a + b * c / d - e sobre a gramática a seguir.

onExercício 07.109 Apresente uma árvore de derivação (parse tree) da sentença a = a + b * c / d - e sobre a gramática a seguir.

onExercício 07.110 Apresente uma derivação à extrema esquerda (DEE) da sentença a = a * (b - c) + (d / e) sobre a gramática a seguir.

onExercício 07.111 Apresente uma derivação à extrema direita (DED) da sentença a = a * (b - c) + (d / e) sobre a gramática a seguir.

onExercício 07.112 Apresente uma árvore de derivação (parse tree) da sentença a = a * (b - c) + (d / e) sobre a gramática a seguir.

offExercício 07.113 Apresente uma derivação à extrema esquerda (DEE) da sentença a = b + (c * (d - e) - d) * c sobre a gramática a seguir.

onExercício 07.114 Apresente uma derivação à extrema direita (DED) da sentença a = b + (c * (d - e) - d) * c sobre a gramática a seguir.

onExercício 07.115 Apresente uma árvore de derivação (parse tree) da sentença a = b + (c * (d - e) - d) * c sobre a gramática a seguir.

onExercício 07.116 Desenvolva uma Gramática Livre do Contexto (GLC) sobre o alfabeto Σ = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /, (, ), >, <, =, !, .}, que reconheça as seguintes instruções na linguagem de programação LISP:

onExercício 07.117 Desenvolva uma Gramática Livre do Contexto que produza a linguagem L = {ω ∈ {a, b, c} | aic*bi com i ≥ 1}.

onExercício 07.118 Desenvolva uma Gramática Livre do Contexto que produza a linguagem L = {ω ∈ {a, b} | aibi com i sendo par}.

onExercício 07.119 Desenvolva uma Gramática Livre do Contexto que produza a linguagem L = {ω ∈ {a, b} | (aibi)* com i ≥ 1}.


Recomendamos

Revista Espírito Livre Vida de Programador Revista Segurança Digital