{"id":1380,"date":"2015-09-25T17:05:30","date_gmt":"2015-09-25T21:05:30","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=1380"},"modified":"2015-09-28T20:10:50","modified_gmt":"2015-09-29T00:10:50","slug":"autointerpretador-self-interpreter","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/modo_texto\/autointerpretador-self-interpreter\/","title":{"rendered":"Autointerpretador ( self-interpreter)"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Imagine que voc\u00ea queira disponibilizar seu programa prisma sem precisar instalar o interpretador, apenas usando um execut\u00e1vel do programa.<\/p>\n<p>\u00c9 exatamente para isso que serve o auto interpretador. \u00c9 um interpretador normal com uma grande diferen\u00e7a, ao ser executado sem passar nenhum argumento ele n\u00e3o ir\u00e1 abrir o console interativo, em vez disso, ele procura um arquivo predefinido chamado inic.pris (<em>que fica dentro de uma pasta com mesmo nome do execut\u00e1vel+underline<\/em>) e o executa. Logo a impress\u00e3o que se tem \u00e9 que seu programa foi compilado em C.<\/p>\n<p><em>O prismacod.exe usa esse mecanismo, observe que na pasta bin temos prismacod_ que \u00e9 o diret\u00f3rio do inic.pris o qual \u00e9 executado ao clicar no editor prismacod.<\/em><\/p>\n<p>Vamos ao exemplo passo a passo:<\/p>\n<p><strong>1- crie uma pasta chamada &#8220;TesteAuto&#8221;<\/strong>, copie para dentro dela o auto interpretador:<strong> prismaAuto.exe<\/strong> (<em>voc\u00ea pode encontrar os auto interpretadores prismaAuto.exe e igprismaAuto \u00a0na pasta de exemplos prisma<\/em>);<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/TesteAutoPasta.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1381\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/TesteAutoPasta.png\" alt=\"TesteAutoPasta\" width=\"174\" height=\"101\" \/><\/a><\/p>\n<p><em>Obs.:<strong> prismaAuto.exe<\/strong> serve para programas modo texto, na tela de comandos do windows. J\u00e1 <strong>igprismaAuto.exe<\/strong> \u00e9 para programas gr\u00e1ficos (telas, bot\u00f5es, caixas de textos etc) pois n\u00e3o abre a tela de comando.<\/em><\/p>\n<p><strong>2 &#8211; dentro da mesma pasta TesteAuto<\/strong> crie outra pasta chamada <strong>executar_ (n\u00e3o se esque\u00e7a do underline no final)\u00a0<\/strong><\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/executar_pasta.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1382\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/executar_pasta.png\" alt=\"executar_pasta\" width=\"114\" height=\"62\" \/><\/a><\/p>\n<p><strong>3 &#8211; Modifique o nome<\/strong> prismaAuto.exe para <strong>executar.exe<\/strong>; (note que o nome \u00e9 o mesmo da pasta criada acima, sem o underline e com a extens\u00e3o .exe)<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_pasta.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1383\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_pasta-300x60.png\" alt=\"prisma_auto_pasta\" width=\"270\" height=\"54\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_pasta-300x60.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_pasta.png 539w\" sizes=\"auto, (max-width: 270px) 100vw, 270px\" \/><\/a>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/go-next.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1385 alignnone\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/go-next.png\" alt=\"go-next\" width=\"41\" height=\"42\" \/><\/a><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_to_executar.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1384 alignright\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_to_executar-300x47.png\" alt=\"prisma_auto_to_executar\" width=\"300\" height=\"47\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_to_executar-300x47.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prisma_auto_to_executar.png 354w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>4 &#8211; entre na pasta &#8220;<em>autodir&#8221;<\/em><\/strong> (a pasta com o nome do interpretador com um underline no final: <strong>executar_)\u00a0<\/strong>e crie um arquivo chamado <strong>inic.prisma.\u00a0<\/strong>abra esse arquivo e cole o c\u00f3digo abaixo:<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/teste do auto interpretador:\r\nimprima'Digite seu nome';\r\nnome = leia();\r\nimprima( \"Seu nome \u00e9 :\" , nome );\r\nimprima(\"aperte uma tecla para continuar...\");\r\nleia();<\/pre>\n<p><strong>5 &#8211; Compile o seu programa<\/strong> com a extens\u00e3o *.pris: use o editor prismacod 0.3 que j\u00e1 tem a fun\u00e7\u00e3o de compilar biblioteca pris. \u00a0( \u00a0 O resultado deve ser inic.pris \u00a0)<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prismacod_0_3_botoes.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1393\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/prismacod_0_3_botoes-300x90.png\" alt=\"prismacod_0_3_botoes\" width=\"300\" height=\"90\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prismacod_0_3_botoes-300x90.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/prismacod_0_3_botoes.png 307w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0 \u00a0 \u00a0<a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_dir.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1390\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_dir-300x175.png\" alt=\"auto_dir\" width=\"221\" height=\"129\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_dir-300x175.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_dir.png 317w\" sizes=\"auto, (max-width: 221px) 100vw, 221px\" \/><\/a><\/p>\n<p><em>Ou se preferir renomeie o arquivo fonte inic.prisma para inic.pris, funcionar\u00e1 da mesma forma j\u00e1 que o c\u00f3digo escrito pode ser executado da mesma forma que um compilado.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><strong>6 &#8211; v\u00e1 at\u00e9 o auto interpretador e o abra<\/strong> (duplo-clique). Se tudo der certo ser\u00e1 executado o arquivo inic.pris.<\/p>\n<p>Obs. veja que\u00a0inic.pris \u00e9 a forma contra\u00edda de &#8216;iniciar.pris&#8217;;<\/p>\n<p>Dica: se seu programa precisa de bibliotecas, basta voc\u00ea copiar as pastas plibs e clibs para o mesmo local do execut\u00e1vel.<\/p>\n<p>Caso utilize bibliotecas externas como a do Gtk voc\u00ea pode coloc\u00e1-las tamb\u00e9m no mesmo local do execut\u00e1vel.<\/p>\n<p>O visual seria mais ou menos assim:<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_teste.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1391\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_teste-300x81.png\" alt=\"auto_teste\" width=\"481\" height=\"130\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_teste-300x81.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_teste.png 631w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/a><\/p>\n<p>Obs. coloquei uma dll para mera ilustra\u00e7\u00e3o.<\/p>\n<p>Note que as pastas clibs e plibs trazem as bibliotecas prisma.<\/p>\n<p>&nbsp;<\/p>\n<p>Tente modificar o c\u00f3digo do inic.prisma para:<\/p>\n<pre class=\"lang:prisma decode:true \">imprima\"ola Teste AutoPrisma\"\r\n\r\nid = win.ObtJanelaEmFoco();\r\nret = win.Msg( id , \"Teste Auto Interpretador!\" , \"TESTE\" , bit32.bor ( win_mb_OkCancelar , win_mb_IconeAsterisco ) ) \r\n\r\nse ret == win_mb_ret_Cancelar entao\r\n win.poe( \"Cancelado\");\r\nsenaose ret == win_mb_ret_Ok entao\r\n win.poe(\"OK\")\r\nfim\r\n\r\nwin.FecheJanela(id);<\/pre>\n<p><em><strong>Obs.: n\u00e3o se esque\u00e7a de compilar novamente para inic.pris para ter efeito.<\/strong><\/em><\/p>\n<p>Resultado:<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_interpretador_fonte.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1392\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/09\/auto_interpretador_fonte-300x133.png\" alt=\"auto_interpretador_fonte\" width=\"300\" height=\"133\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_interpretador_fonte-300x133.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/09\/auto_interpretador_fonte.png 909w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Bem, \u00e9 isto, muito obrigado por baixar e testar Prisma, qualquer d\u00favida deixe nos coment\u00e1rios, ou v\u00e1 ao f\u00f3rum.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Imagine que voc\u00ea queira disponibilizar seu programa prisma sem precisar instalar o interpretador, apenas usando um execut\u00e1vel do programa. \u00c9 exatamente para isso que serve o auto interpretador. \u00c9 um interpretador normal com uma grande diferen\u00e7a, ao ser executado sem passar nenhum argumento ele n\u00e3o ir\u00e1 abrir o console interativo, em vez disso, ele&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"class_list":["post-1380","post","type-post","status-publish","format-standard","hentry","category-modo_texto","category-prisma"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=1380"}],"version-history":[{"count":4,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1380\/revisions"}],"predecessor-version":[{"id":1400,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1380\/revisions\/1400"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=1380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=1380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=1380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}