Skip to main content

Pygments lexer for Portugol Studio.

Project description

Pygments_Portugol

Pygments é um excelente pacote em Python destinado à coloração de sintaxe (syntax highlighting), sendo possível utilizá-lo, inclusive, em documentos LaTeX. Este pacote fornece um lexer para a linguagem Portugol Studio.

Instalação

Após a instalação do Python 3, você provavelmente poderá executar o comando a seguir a fim de instalar o Pygments:

$ pip install pygments

Note que $ indica o prompt do shell, você não deve digitar isso.

Algumas variações desse comando podem aparecer a depender da plataforma, por exemplo:

$ pip3 install pygments
$ python3 -m pip install pygments
$ python -m pip install pygments

Após instalar com sucesso o Pygments, você pode instalar o lexer para Portugol Studio:

$ pip install pygments-portugol

Utilização

Para utilizar o lexer, o procedimento é equivalente a qualquer outra linguagem suportada pelo Pygments. Utilize portugol ou portugolstudio como nome da linguagem. Por exemplo, o código em Python a seguir ilustra como ler um arquivo code.por e salvar em HTML no arquivo formatted.html.

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter

with open("./code.por", "r") as fl:
    code = fl.read()

lexer = get_lexer_by_name("portugol", stripall=True)
formatter = HtmlFormatter(linenos=True, noclasses=True)
result = highlight(code, lexer, formatter)

with open("./formatted.html", "w") as fl:
    fl.write(result)

Clique aqui para ver o resultado.

Utilização com LaTeX

Para tipografar um código em LaTeX com o Pygments, pode-se utilizar o pacote minted. O código a seguir é um exemplo. A fonte DejaVuSansMono foi utilizada apenas por questões estéticas. As duas linhas referentes à fonte podem ser removidas ou substituídas. Caso queira usar pdfLaTeX, remova-as.

% !TeX program = xelatex
\documentclass{article}
\usepackage{fontspec} % remover caso esteja usando pdfLaTeX
\usepackage{DejaVuSansMono} % remover caso esteja usando pdfLaTeX
\setmonofont[Scale=MatchLowercase]{DejaVuSansMono} % remover caso esteja usando pdfLaTeX

\usepackage{minted} % importa o pacote para que possamos usar
\begin{document}
O código a seguir ilustra um fatorial recursivo no Portugol Studio.

\begin{minted}[autogobble, linenos]{portugol}
    programa
    {
        funcao inicio()
        {
            inteiro numero

            escreva("Digite um número: ")
            leia(numero)

            limpa()
            escreva("O fatorial de ", numero, " é: ", fatorial(numero), "\n")
        }

        // Função recursiva que calcula o fatorial do número passado

        funcao inteiro fatorial(inteiro numero)
        {
            se (numero == 1 ou numero == 0)
            {
                retorne 1
            }

            retorne numero * fatorial(numero - 1)
        }
    }
\end{minted}
\end{document}

Resultado:

Veja este tutorial se quiser ver outras possibilidades, como escolher cores diferentes ou importar de um arquivo externo.

Utilização em LaTeX no Overleaf

Caso você tenha o costume de usar Overleaf, pode ter lido a seção anterior e pensado que é impossível instalar um pacote Python no Overleaf. Sim, é verdade. Felizmente, é possível utilizar um lexer sem instalação obrigatória.

  1. Copie o arquivo do lexer (este) e salve como, por exemplo, PortugolStudioLexer.py.

  2. Coloque no mesmo diretório do seu arquivo .tex;

  3. Substitua o nome da linguagem por PortugolStudioLexer.py:PortugolStudioLexer -x.

  4. O código deve ser assim (veja o exemplo completo na seção anterior):

% ...
\begin{minted}[autogobble, linenos]{PortugolStudioLexer.py:PortugolStudioLexer -x}
    // seu código
\end{minted}
% ...

Isto pode ser recomendado para projetos maiores, para reduzir a quantidade de dependências que outros colaboradores precisarão instalar (o mesmo vale para fontes personalizadas). Para projetos menores, entretanto, é mais prático instalar e apenas utilizar o nome da linguagem.

Contribuição

Caso note algo de errado, fique à vontade para abrir uma issue ou, ainda melhor, enviar o seu Pull Request.

Autor

Desenvolvido por Héliton Martins.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygments_portugol-0.2.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

pygments_portugol-0.2.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file pygments_portugol-0.2.0.tar.gz.

File metadata

  • Download URL: pygments_portugol-0.2.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for pygments_portugol-0.2.0.tar.gz
Algorithm Hash digest
SHA256 528b44df66711464a565d2e7dc2303412472c380c95c8734877473a5aee84e46
MD5 799bfb4051d814a31c1f4f5e9396a257
BLAKE2b-256 60d65cc66bf8f0eec435fe52dea56ae7cdee3dac1b49314e116349203207a53d

See more details on using hashes here.

File details

Details for the file pygments_portugol-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pygments_portugol-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for pygments_portugol-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59beb58b48514024065930322e3146f8dba36ad871be0d35ffd0aa64b71bc144
MD5 11a395cbd1d801d8b4775ea76601f088
BLAKE2b-256 8982c6b574ad106d5de422da6d6d9c9f7f9e45d8f61a7e427e552b7ac14f96d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page