@designliquido/delegua 0.36.1 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +69 -69
  2. package/analisador-semantico/analisador-semantico-base.js +180 -180
  3. package/analisador-semantico/analisador-semantico.d.ts +59 -59
  4. package/analisador-semantico/analisador-semantico.js +442 -442
  5. package/analisador-semantico/analisador-semantico.js.map +1 -1
  6. package/analisador-semantico/index.d.ts +3 -3
  7. package/analisador-semantico/index.js +19 -19
  8. package/analisador-semantico/pilha-variaveis.d.ts +20 -20
  9. package/analisador-semantico/pilha-variaveis.js +25 -25
  10. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +90 -69
  11. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  12. package/avaliador-sintatico/avaliador-sintatico-base.js +232 -223
  13. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  14. package/avaliador-sintatico/avaliador-sintatico.d.ts +118 -126
  15. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  16. package/avaliador-sintatico/avaliador-sintatico.js +1041 -1093
  17. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  18. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +73 -73
  19. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +648 -648
  20. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +27 -21
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts.map +1 -1
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +156 -149
  24. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  25. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +87 -87
  26. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +770 -770
  27. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  28. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +34 -34
  29. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +168 -168
  30. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  31. package/avaliador-sintatico/dialetos/index.d.ts +3 -3
  32. package/avaliador-sintatico/dialetos/index.js +19 -19
  33. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
  34. package/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
  35. package/avaliador-sintatico/index.d.ts +6 -6
  36. package/avaliador-sintatico/index.js +22 -22
  37. package/avaliador-sintatico/micro-avaliador-sintatico-base.d.ts +27 -27
  38. package/avaliador-sintatico/micro-avaliador-sintatico-base.js +116 -116
  39. package/avaliador-sintatico/micro-avaliador-sintatico-base.js.map +1 -1
  40. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts +21 -33
  41. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
  42. package/avaliador-sintatico/micro-avaliador-sintatico.js +204 -287
  43. package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  44. package/avaliador-sintatico/retornos/index.d.ts +3 -3
  45. package/avaliador-sintatico/retornos/index.js +19 -19
  46. package/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
  47. package/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
  48. package/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
  49. package/avaliador-sintatico/retornos/retorno-primario.js +2 -2
  50. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
  51. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
  52. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +59 -59
  53. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js +150 -150
  54. package/bibliotecas/biblioteca-global.d.ts +157 -157
  55. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  56. package/bibliotecas/biblioteca-global.js +487 -498
  57. package/bibliotecas/biblioteca-global.js.map +1 -1
  58. package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
  59. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +236 -236
  60. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
  61. package/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
  62. package/bibliotecas/dialetos/egua-classico/index.js +32 -32
  63. package/bibliotecas/dialetos/egua-classico/index.js.map +1 -1
  64. package/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
  65. package/bibliotecas/dialetos/egua-classico/matematica.js +541 -541
  66. package/bibliotecas/dialetos/egua-classico/matematica.js.map +1 -1
  67. package/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
  68. package/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
  69. package/bibliotecas/dialetos/egua-classico/tempo.js.map +1 -1
  70. package/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
  71. package/bibliotecas/dialetos/egua-classico/textos.js +201 -201
  72. package/bibliotecas/dialetos/egua-classico/textos.js.map +1 -1
  73. package/bibliotecas/primitivas-dicionario.d.ts +6 -6
  74. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  75. package/bibliotecas/primitivas-dicionario.js +10 -10
  76. package/bibliotecas/primitivas-numero.d.ts +6 -6
  77. package/bibliotecas/primitivas-numero.d.ts.map +1 -1
  78. package/bibliotecas/primitivas-numero.js +10 -10
  79. package/bibliotecas/primitivas-texto.d.ts +17 -17
  80. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  81. package/bibliotecas/primitivas-texto.js +22 -22
  82. package/bibliotecas/primitivas-texto.js.map +1 -1
  83. package/bibliotecas/primitivas-vetor.d.ts +21 -21
  84. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  85. package/bibliotecas/primitivas-vetor.js +88 -90
  86. package/bibliotecas/primitivas-vetor.js.map +1 -1
  87. package/bin/package.json +13 -12
  88. package/construtos/acesso-elemento-matriz.d.ts +12 -12
  89. package/construtos/acesso-elemento-matriz.js +17 -17
  90. package/construtos/acesso-indice-variavel.d.ts +15 -15
  91. package/construtos/acesso-indice-variavel.js +20 -20
  92. package/construtos/acesso-metodo-ou-propriedade.d.ts +14 -14
  93. package/construtos/acesso-metodo-ou-propriedade.js +19 -19
  94. package/construtos/agrupamento.d.ts +14 -14
  95. package/construtos/agrupamento.js +19 -19
  96. package/construtos/atribuicao-por-indice.d.ts +11 -11
  97. package/construtos/atribuicao-por-indice.js +16 -16
  98. package/construtos/atribuicao-por-indices-matriz.d.ts +12 -12
  99. package/construtos/atribuicao-por-indices-matriz.js +17 -17
  100. package/construtos/atribuir.d.ts +15 -15
  101. package/construtos/atribuir.js +24 -24
  102. package/construtos/atribuir.js.map +1 -1
  103. package/construtos/binario.d.ts +33 -33
  104. package/construtos/binario.d.ts.map +1 -1
  105. package/construtos/binario.js +38 -38
  106. package/construtos/binario.js.map +1 -1
  107. package/construtos/chamada.d.ts +15 -15
  108. package/construtos/chamada.d.ts.map +1 -1
  109. package/construtos/chamada.js +21 -21
  110. package/construtos/chamada.js.map +1 -1
  111. package/construtos/comentario.d.ts +15 -15
  112. package/construtos/comentario.js +20 -20
  113. package/construtos/constante.d.ts +12 -12
  114. package/construtos/constante.d.ts.map +1 -1
  115. package/construtos/constante.js +17 -17
  116. package/construtos/constante.js.map +1 -1
  117. package/construtos/construto.d.ts +7 -7
  118. package/construtos/construto.js +2 -2
  119. package/construtos/decorador.d.ts +18 -14
  120. package/construtos/decorador.d.ts.map +1 -1
  121. package/construtos/decorador.js +19 -19
  122. package/construtos/decorador.js.map +1 -1
  123. package/construtos/definir-valor.d.ts +11 -11
  124. package/construtos/definir-valor.js +16 -16
  125. package/construtos/dicionario.d.ts +10 -10
  126. package/construtos/dicionario.js +15 -15
  127. package/construtos/expressao-regular.d.ts +10 -10
  128. package/construtos/expressao-regular.d.ts.map +1 -1
  129. package/construtos/expressao-regular.js +15 -15
  130. package/construtos/expressao-regular.js.map +1 -1
  131. package/construtos/fim-para.d.ts +22 -22
  132. package/construtos/fim-para.js +25 -25
  133. package/construtos/formatacao-escrita.d.ts +16 -16
  134. package/construtos/formatacao-escrita.js +21 -21
  135. package/construtos/funcao.d.ts +12 -12
  136. package/construtos/funcao.js +16 -16
  137. package/construtos/index.d.ts +29 -29
  138. package/construtos/index.js +45 -45
  139. package/construtos/isto.d.ts +9 -9
  140. package/construtos/isto.js +14 -14
  141. package/construtos/literal.d.ts +10 -10
  142. package/construtos/literal.js +14 -14
  143. package/construtos/logico.d.ts +11 -11
  144. package/construtos/logico.js +16 -16
  145. package/construtos/qual-tipo.d.ts +11 -11
  146. package/construtos/qual-tipo.d.ts.map +1 -1
  147. package/construtos/qual-tipo.js +16 -16
  148. package/construtos/qual-tipo.js.map +1 -1
  149. package/construtos/super.d.ts +10 -10
  150. package/construtos/super.js +15 -15
  151. package/construtos/tipo-de.d.ts +10 -10
  152. package/construtos/tipo-de.d.ts.map +1 -1
  153. package/construtos/tipo-de.js +15 -15
  154. package/construtos/tipo-de.js.map +1 -1
  155. package/construtos/tuplas/deceto.d.ts +18 -18
  156. package/construtos/tuplas/deceto.js +32 -32
  157. package/construtos/tuplas/dupla.d.ts +6 -6
  158. package/construtos/tuplas/dupla.js +12 -12
  159. package/construtos/tuplas/index.d.ts +13 -13
  160. package/construtos/tuplas/index.js +67 -67
  161. package/construtos/tuplas/index.js.map +1 -1
  162. package/construtos/tuplas/noneto.d.ts +15 -15
  163. package/construtos/tuplas/noneto.js +25 -25
  164. package/construtos/tuplas/octeto.d.ts +14 -14
  165. package/construtos/tuplas/octeto.js +24 -24
  166. package/construtos/tuplas/quarteto.d.ts +8 -8
  167. package/construtos/tuplas/quarteto.js +14 -14
  168. package/construtos/tuplas/quinteto.d.ts +9 -9
  169. package/construtos/tuplas/quinteto.js +15 -15
  170. package/construtos/tuplas/septeto.d.ts +13 -13
  171. package/construtos/tuplas/septeto.js +23 -23
  172. package/construtos/tuplas/sexteto.d.ts +10 -10
  173. package/construtos/tuplas/sexteto.js +16 -16
  174. package/construtos/tuplas/trio.d.ts +7 -7
  175. package/construtos/tuplas/trio.js +13 -13
  176. package/construtos/tuplas/tupla.d.ts +8 -8
  177. package/construtos/tuplas/tupla.js +9 -9
  178. package/construtos/unario.d.ts +11 -11
  179. package/construtos/unario.js +16 -16
  180. package/construtos/variavel.d.ts +9 -9
  181. package/construtos/variavel.d.ts.map +1 -1
  182. package/construtos/variavel.js +14 -14
  183. package/construtos/variavel.js.map +1 -1
  184. package/construtos/vetor.d.ts +11 -11
  185. package/construtos/vetor.js +21 -21
  186. package/construtos/vetor.js.map +1 -1
  187. package/declaracoes/aleatorio.d.ts +15 -15
  188. package/declaracoes/aleatorio.js +15 -15
  189. package/declaracoes/bloco.d.ts +7 -7
  190. package/declaracoes/bloco.js +14 -14
  191. package/declaracoes/cabecalho-programa.d.ts +7 -7
  192. package/declaracoes/cabecalho-programa.js +14 -14
  193. package/declaracoes/classe.d.ts +14 -14
  194. package/declaracoes/classe.js +18 -18
  195. package/declaracoes/const-multiplo.d.ts +14 -14
  196. package/declaracoes/const-multiplo.js +19 -19
  197. package/declaracoes/const.d.ts +14 -14
  198. package/declaracoes/const.d.ts.map +1 -1
  199. package/declaracoes/const.js +19 -19
  200. package/declaracoes/const.js.map +1 -1
  201. package/declaracoes/continua.d.ts +6 -6
  202. package/declaracoes/continua.js +13 -13
  203. package/declaracoes/declaracao.d.ts +10 -8
  204. package/declaracoes/declaracao.d.ts.map +1 -1
  205. package/declaracoes/declaracao.js +18 -17
  206. package/declaracoes/declaracao.js.map +1 -1
  207. package/declaracoes/enquanto.d.ts +10 -10
  208. package/declaracoes/enquanto.js +15 -15
  209. package/declaracoes/escolha.d.ts +14 -14
  210. package/declaracoes/escolha.js +19 -19
  211. package/declaracoes/escreva-mesma-linha.d.ts +8 -8
  212. package/declaracoes/escreva-mesma-linha.js +14 -14
  213. package/declaracoes/escreva.d.ts +8 -8
  214. package/declaracoes/escreva.js +14 -14
  215. package/declaracoes/expressao.d.ts +8 -8
  216. package/declaracoes/expressao.d.ts.map +1 -1
  217. package/declaracoes/expressao.js +14 -14
  218. package/declaracoes/expressao.js.map +1 -1
  219. package/declaracoes/falhar.d.ts +8 -8
  220. package/declaracoes/falhar.js +15 -15
  221. package/declaracoes/fazer.d.ts +10 -10
  222. package/declaracoes/fazer.js +15 -15
  223. package/declaracoes/funcao.d.ts +11 -11
  224. package/declaracoes/funcao.js +17 -17
  225. package/declaracoes/importar.d.ts +9 -9
  226. package/declaracoes/importar.js +15 -15
  227. package/declaracoes/index.d.ts +31 -31
  228. package/declaracoes/index.js +47 -47
  229. package/declaracoes/inicio-algoritmo.d.ts +6 -6
  230. package/declaracoes/inicio-algoritmo.js +13 -13
  231. package/declaracoes/leia-multiplo.d.ts +14 -14
  232. package/declaracoes/leia-multiplo.js +21 -21
  233. package/declaracoes/leia.d.ts +17 -17
  234. package/declaracoes/leia.js +21 -21
  235. package/declaracoes/para-cada.d.ts +11 -11
  236. package/declaracoes/para-cada.js +17 -17
  237. package/declaracoes/para.d.ts +19 -19
  238. package/declaracoes/para.js +24 -24
  239. package/declaracoes/propriedade-classe.d.ts +10 -10
  240. package/declaracoes/propriedade-classe.js +16 -16
  241. package/declaracoes/retorna.d.ts +8 -8
  242. package/declaracoes/retorna.js +15 -15
  243. package/declaracoes/se.d.ts +11 -11
  244. package/declaracoes/se.js +17 -17
  245. package/declaracoes/sustar.d.ts +6 -6
  246. package/declaracoes/sustar.js +13 -13
  247. package/declaracoes/tendo-como.d.ts +16 -16
  248. package/declaracoes/tendo-como.d.ts.map +1 -1
  249. package/declaracoes/tendo-como.js +21 -21
  250. package/declaracoes/tendo-como.js.map +1 -1
  251. package/declaracoes/tente.d.ts +14 -14
  252. package/declaracoes/tente.js +20 -20
  253. package/declaracoes/var-multiplo.d.ts +15 -15
  254. package/declaracoes/var-multiplo.js +20 -20
  255. package/declaracoes/var.d.ts +16 -16
  256. package/declaracoes/var.d.ts.map +1 -1
  257. package/declaracoes/var.js +21 -21
  258. package/declaracoes/var.js.map +1 -1
  259. package/depuracao/cyrb53.d.ts +9 -9
  260. package/depuracao/cyrb53.js +22 -22
  261. package/depuracao/cyrb53.js.map +1 -1
  262. package/depuracao/index.d.ts +2 -2
  263. package/depuracao/index.js +23 -23
  264. package/depuracao/ponto-parada.d.ts +4 -4
  265. package/depuracao/ponto-parada.js +2 -2
  266. package/espaco-variaveis.d.ts +19 -19
  267. package/espaco-variaveis.js +19 -19
  268. package/estruturas/chamavel.d.ts +7 -7
  269. package/estruturas/chamavel.d.ts.map +1 -1
  270. package/estruturas/chamavel.js +12 -12
  271. package/estruturas/chamavel.js.map +1 -1
  272. package/estruturas/classe-padrao.d.ts +31 -31
  273. package/estruturas/classe-padrao.d.ts.map +1 -1
  274. package/estruturas/classe-padrao.js +39 -39
  275. package/estruturas/delegua-funcao.d.ts +29 -29
  276. package/estruturas/delegua-funcao.d.ts.map +1 -1
  277. package/estruturas/delegua-funcao.js +140 -141
  278. package/estruturas/delegua-funcao.js.map +1 -1
  279. package/estruturas/descritor-tipo-classe.d.ts +37 -37
  280. package/estruturas/descritor-tipo-classe.js +79 -79
  281. package/estruturas/descritor-tipo-classe.js.map +1 -1
  282. package/estruturas/funcao-padrao.d.ts +23 -23
  283. package/estruturas/funcao-padrao.js +34 -34
  284. package/estruturas/index.d.ts +9 -9
  285. package/estruturas/index.js +25 -25
  286. package/estruturas/metodo-primitiva.d.ts +28 -28
  287. package/estruturas/metodo-primitiva.js +40 -40
  288. package/estruturas/modulo.d.ts +18 -18
  289. package/estruturas/modulo.js +24 -24
  290. package/estruturas/objeto-delegua-classe.d.ts +26 -26
  291. package/estruturas/objeto-delegua-classe.js +53 -53
  292. package/estruturas/objeto-delegua-classe.js.map +1 -1
  293. package/estruturas/objeto-padrao.d.ts +18 -18
  294. package/estruturas/objeto-padrao.js +32 -32
  295. package/estruturas/objeto-padrao.js.map +1 -1
  296. package/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
  297. package/excecoes/erro-em-tempo-de-execucao.js +13 -13
  298. package/excecoes/index.d.ts +1 -1
  299. package/excecoes/index.js +17 -17
  300. package/formatadores/formatador-delegua.d.ts +79 -79
  301. package/formatadores/formatador-delegua.d.ts.map +1 -1
  302. package/formatadores/formatador-delegua.js +676 -676
  303. package/formatadores/formatador-delegua.js.map +1 -1
  304. package/formatadores/index.d.ts +1 -1
  305. package/formatadores/index.js +17 -17
  306. package/geracao-identificadores/index.d.ts +1 -1
  307. package/geracao-identificadores/index.js +22 -23
  308. package/geracao-identificadores/index.js.map +1 -1
  309. package/index.d.ts +9 -9
  310. package/index.js +27 -27
  311. package/interfaces/analisador-semantico-interface.d.ts +6 -6
  312. package/interfaces/analisador-semantico-interface.js +2 -2
  313. package/interfaces/avaliador-sintatico-interface.d.ts +10 -55
  314. package/interfaces/avaliador-sintatico-interface.d.ts.map +1 -1
  315. package/interfaces/avaliador-sintatico-interface.js +2 -2
  316. package/interfaces/construtos/index.d.ts +4 -4
  317. package/interfaces/construtos/index.js +2 -2
  318. package/interfaces/erros/diagnostico-analisador-semantico.d.ts +14 -14
  319. package/interfaces/erros/diagnostico-analisador-semantico.js +10 -10
  320. package/interfaces/erros/diagnostico-analisador-semantico.js.map +1 -1
  321. package/interfaces/erros/erro-interpretador.d.ts +8 -8
  322. package/interfaces/erros/erro-interpretador.js +2 -2
  323. package/interfaces/erros/index.d.ts +1 -1
  324. package/interfaces/erros/index.js +17 -17
  325. package/interfaces/escopo-execucao.d.ts +12 -12
  326. package/interfaces/escopo-execucao.js +2 -2
  327. package/interfaces/formatador-comum-interface.d.ts +11 -11
  328. package/interfaces/formatador-comum-interface.js +2 -2
  329. package/interfaces/funcao-hipotetica-interface.d.ts +3 -3
  330. package/interfaces/funcao-hipotetica-interface.js +2 -2
  331. package/interfaces/index.d.ts +16 -16
  332. package/interfaces/index.js +32 -32
  333. package/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
  334. package/interfaces/interpretador-com-depuracao-interface.js +2 -2
  335. package/interfaces/interpretador-interface-potigol.d.ts +5 -5
  336. package/interfaces/interpretador-interface-potigol.js +2 -2
  337. package/interfaces/interpretador-interface.d.ts +20 -20
  338. package/interfaces/interpretador-interface.js +2 -2
  339. package/interfaces/lexador-interface.d.ts +23 -23
  340. package/interfaces/lexador-interface.js +2 -2
  341. package/interfaces/parametro-interface.d.ts +15 -15
  342. package/interfaces/parametro-interface.js +2 -2
  343. package/interfaces/pilha-escopos-execucao-interface.d.ts +26 -26
  344. package/interfaces/pilha-escopos-execucao-interface.js +2 -2
  345. package/interfaces/pilha-interface.d.ts +7 -7
  346. package/interfaces/pilha-interface.js +2 -2
  347. package/interfaces/resolvedor-interface.d.ts +41 -41
  348. package/interfaces/resolvedor-interface.js +2 -2
  349. package/interfaces/retornos/index.d.ts +4 -4
  350. package/interfaces/retornos/index.js +20 -20
  351. package/interfaces/retornos/retorno-analisador-semantico.d.ts +4 -4
  352. package/interfaces/retornos/retorno-analisador-semantico.js +2 -2
  353. package/interfaces/retornos/retorno-avaliador-sintatico.d.ts +5 -5
  354. package/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
  355. package/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
  356. package/interfaces/retornos/retorno-execucao-interface.js +2 -2
  357. package/interfaces/retornos/retorno-interpretador.d.ts +5 -5
  358. package/interfaces/retornos/retorno-interpretador.js +2 -2
  359. package/interfaces/retornos/retorno-lexador.d.ts +9 -9
  360. package/interfaces/retornos/retorno-lexador.js +2 -2
  361. package/interfaces/simbolo-interface.d.ts +7 -7
  362. package/interfaces/simbolo-interface.js +2 -2
  363. package/interfaces/tradutor-interface.d.ts +3 -3
  364. package/interfaces/tradutor-interface.js +2 -2
  365. package/interfaces/variavel-hipotetica-interface.d.ts +8 -8
  366. package/interfaces/variavel-hipotetica-interface.js +2 -2
  367. package/interfaces/variavel-interface.d.ts +8 -8
  368. package/interfaces/variavel-interface.d.ts.map +1 -1
  369. package/interfaces/variavel-interface.js +2 -2
  370. package/interfaces/visitante-comum-interface.d.ts +58 -58
  371. package/interfaces/visitante-comum-interface.js +2 -2
  372. package/interpretador/argumento-interface.d.ts +4 -4
  373. package/interpretador/argumento-interface.js +2 -2
  374. package/interpretador/comum.d.ts +2 -2
  375. package/interpretador/comum.d.ts.map +1 -1
  376. package/interpretador/comum.js +51 -52
  377. package/interpretador/comum.js.map +1 -1
  378. package/interpretador/dialetos/egua-classico/index.d.ts +1 -1
  379. package/interpretador/dialetos/egua-classico/index.js +17 -17
  380. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +119 -119
  381. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  382. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +815 -815
  383. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  384. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
  385. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
  386. package/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
  387. package/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
  388. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
  389. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
  390. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +106 -106
  391. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +441 -441
  392. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  393. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
  394. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
  395. package/interpretador/dialetos/index.d.ts +2 -2
  396. package/interpretador/dialetos/index.js +18 -18
  397. package/interpretador/dialetos/portugol-ipt/index.d.ts +1 -1
  398. package/interpretador/dialetos/portugol-ipt/index.js +17 -17
  399. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +133 -133
  400. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  401. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +501 -501
  402. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  403. package/interpretador/index.d.ts +3 -3
  404. package/interpretador/index.js +19 -19
  405. package/interpretador/inferenciador.d.ts +15 -15
  406. package/interpretador/inferenciador.d.ts.map +1 -1
  407. package/interpretador/inferenciador.js +80 -80
  408. package/interpretador/inferenciador.js.map +1 -1
  409. package/interpretador/interpretador-base.d.ts +268 -268
  410. package/interpretador/interpretador-base.d.ts.map +1 -1
  411. package/interpretador/interpretador-base.js +1396 -1399
  412. package/interpretador/interpretador-base.js.map +1 -1
  413. package/interpretador/interpretador-com-depuracao.d.ts +190 -190
  414. package/interpretador/interpretador-com-depuracao.d.ts.map +1 -1
  415. package/interpretador/interpretador-com-depuracao.js +570 -568
  416. package/interpretador/interpretador-com-depuracao.js.map +1 -1
  417. package/interpretador/pilha-escopos-execucao.d.ts +39 -39
  418. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  419. package/interpretador/pilha-escopos-execucao.js +243 -243
  420. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  421. package/lexador/dialetos/index.d.ts +4 -4
  422. package/lexador/dialetos/index.js +20 -20
  423. package/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
  424. package/lexador/dialetos/lexador-egua-classico.js +286 -286
  425. package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  426. package/lexador/dialetos/lexador-guarani.d.ts +10 -10
  427. package/lexador/dialetos/lexador-guarani.js +113 -113
  428. package/lexador/dialetos/lexador-guarani.js.map +1 -1
  429. package/lexador/dialetos/lexador-pitugues.d.ts +51 -51
  430. package/lexador/dialetos/lexador-pitugues.js +398 -398
  431. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  432. package/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
  433. package/lexador/dialetos/lexador-portugol-ipt.js +237 -237
  434. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  435. package/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +32 -32
  436. package/lexador/dialetos/palavras-reservadas/egua-classico.js +39 -39
  437. package/lexador/dialetos/palavras-reservadas/guarani.d.ts +3 -3
  438. package/lexador/dialetos/palavras-reservadas/guarani.js +10 -10
  439. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +13 -13
  440. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +20 -20
  441. package/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +1 -1
  442. package/lexador/dialetos/palavras-reservadas/rantiaquin.js +4 -4
  443. package/lexador/dialetos/pragma.d.ts +8 -8
  444. package/lexador/dialetos/pragma.js +2 -2
  445. package/lexador/erro-lexador.d.ts +5 -5
  446. package/lexador/erro-lexador.js +2 -2
  447. package/lexador/index.d.ts +4 -4
  448. package/lexador/index.js +20 -20
  449. package/lexador/lexador-base-linha-unica.d.ts +28 -28
  450. package/lexador/lexador-base-linha-unica.js +82 -82
  451. package/lexador/lexador-base-linha-unica.js.map +1 -1
  452. package/lexador/lexador-base.d.ts +41 -41
  453. package/lexador/lexador-base.js +112 -112
  454. package/lexador/lexador-base.js.map +1 -1
  455. package/lexador/lexador.d.ts +43 -43
  456. package/lexador/lexador.js +440 -440
  457. package/lexador/lexador.js.map +1 -1
  458. package/lexador/micro-lexador.d.ts +29 -29
  459. package/lexador/micro-lexador.js +207 -207
  460. package/lexador/micro-lexador.js.map +1 -1
  461. package/lexador/palavras-reservadas.d.ts +54 -54
  462. package/lexador/palavras-reservadas.js +61 -61
  463. package/lexador/simbolo.d.ts +10 -10
  464. package/lexador/simbolo.js +16 -16
  465. package/lexador/traducao/lexador-javascript.d.ts +28 -28
  466. package/lexador/traducao/lexador-javascript.js +58 -58
  467. package/package.json +13 -12
  468. package/quebras/index.d.ts +10 -10
  469. package/quebras/index.js +19 -19
  470. package/tipo-dados-elementar.d.ts +1 -1
  471. package/tipo-dados-elementar.js +2 -2
  472. package/tipos-de-dados/delegua.d.ts +18 -18
  473. package/tipos-de-dados/delegua.js +19 -19
  474. package/tipos-de-dados/listas-delegua.d.ts +6 -6
  475. package/tipos-de-dados/listas-delegua.js +7 -7
  476. package/tipos-de-dados/listas-primitivos.d.ts +5 -5
  477. package/tipos-de-dados/listas-primitivos.js +6 -6
  478. package/tipos-de-dados/primitivos.d.ts +16 -16
  479. package/tipos-de-dados/primitivos.js +17 -17
  480. package/tipos-de-simbolos/comum.d.ts +23 -23
  481. package/tipos-de-simbolos/comum.js +24 -24
  482. package/tipos-de-simbolos/delegua.d.ts +91 -91
  483. package/tipos-de-simbolos/delegua.js +92 -92
  484. package/tipos-de-simbolos/egua-classico.d.ts +75 -75
  485. package/tipos-de-simbolos/egua-classico.js +76 -76
  486. package/tipos-de-simbolos/guarani.d.ts +14 -14
  487. package/tipos-de-simbolos/guarani.js +15 -15
  488. package/tipos-de-simbolos/guarani.js.map +1 -1
  489. package/tipos-de-simbolos/microgramaticas/delegua.d.ts +46 -46
  490. package/tipos-de-simbolos/microgramaticas/delegua.js +47 -47
  491. package/tipos-de-simbolos/pitugues.d.ts +75 -75
  492. package/tipos-de-simbolos/pitugues.js +76 -76
  493. package/tipos-de-simbolos/portugol-ipt.d.ts +36 -36
  494. package/tipos-de-simbolos/portugol-ipt.js +37 -37
  495. package/tipos-de-simbolos/rantiaquin.d.ts +2 -2
  496. package/tipos-de-simbolos/rantiaquin.js +3 -3
  497. package/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
  498. package/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
  499. package/tradutores/dicionarios/index.d.ts +1 -1
  500. package/tradutores/dicionarios/index.js +17 -17
  501. package/tradutores/index.d.ts +6 -6
  502. package/tradutores/index.js +22 -22
  503. package/tradutores/python/python3-lexer.d.ts +152 -152
  504. package/tradutores/python/python3-lexer.js +1227 -1227
  505. package/tradutores/python/python3-lexer.js.map +1 -1
  506. package/tradutores/python/python3-listener.d.ts +964 -964
  507. package/tradutores/python/python3-listener.js +3 -3
  508. package/tradutores/python/python3-parser.d.ts +1342 -1342
  509. package/tradutores/python/python3-parser.js +11226 -11226
  510. package/tradutores/python/python3-parser.js.map +1 -1
  511. package/tradutores/python/python3-visitor.d.ts +619 -619
  512. package/tradutores/python/python3-visitor.js +3 -3
  513. package/tradutores/tradutor-assembly-x64.d.ts +19 -19
  514. package/tradutores/tradutor-assembly-x64.js +141 -141
  515. package/tradutores/tradutor-assembly-x64.js.map +1 -1
  516. package/tradutores/tradutor-assemblyscript.d.ts +91 -91
  517. package/tradutores/tradutor-assemblyscript.js +590 -590
  518. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  519. package/tradutores/tradutor-javascript.d.ts +95 -95
  520. package/tradutores/tradutor-javascript.js +577 -577
  521. package/tradutores/tradutor-javascript.js.map +1 -1
  522. package/tradutores/tradutor-portugol-ipt.d.ts +21 -21
  523. package/tradutores/tradutor-portugol-ipt.js +60 -60
  524. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  525. package/tradutores/tradutor-python.d.ts +65 -65
  526. package/tradutores/tradutor-python.js +461 -461
  527. package/tradutores/tradutor-python.js.map +1 -1
  528. package/tradutores/tradutor-reverso-javascript.d.ts +50 -50
  529. package/tradutores/tradutor-reverso-javascript.js +392 -392
  530. package/tradutores/tradutor-reverso-javascript.js.map +1 -1
  531. package/tradutores/tradutor-reverso-python.d.ts +32 -32
  532. package/tradutores/tradutor-reverso-python.js +71 -71
  533. package/tradutores/tradutor-reverso-python.js.map +1 -1
  534. package/umd/delegua.js +26204 -26346
@@ -1,399 +1,399 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LexadorPitugues = void 0;
7
- const browser_process_hrtime_1 = __importDefault(require("browser-process-hrtime"));
8
- const pitugues_1 = __importDefault(require("../../tipos-de-simbolos/pitugues"));
9
- const simbolo_1 = require("../simbolo");
10
- const palavras_reservadas_1 = require("../palavras-reservadas");
11
- /**
12
- * O Lexador é responsável por transformar o código em uma coleção de tokens de linguagem.
13
- * Cada token de linguagem é representado por um tipo, um lexema e informações da linha de código em que foi expresso.
14
- * Também é responsável por mapear as palavras reservadas da linguagem, que não podem ser usadas por outras
15
- * estruturas, tais como nomes de variáveis, funções, literais, classes e assim por diante.
16
- *
17
- * Este lexador é diferente dos demais, porque também produz uma estrutura de dados de pragmas, que explica,
18
- * por exemplo quantos espaços há na frente de cada linha. Assim como a linguagem Python, os blocos de
19
- * escopo são definidos pelo número de espaços à frente do código.
20
- */
21
- class LexadorPitugues {
22
- constructor(performance = false) {
23
- this.performance = performance;
24
- this.simbolos = [];
25
- this.erros = [];
26
- this.pragmas = {};
27
- this.inicioSimbolo = 0;
28
- this.atual = 0;
29
- this.linha = 0;
30
- }
31
- eDigito(caractere) {
32
- return caractere >= '0' && caractere <= '9';
33
- }
34
- eAlfabeto(caractere) {
35
- const acentuacoes = [
36
- 'á',
37
- 'Á',
38
- 'ã',
39
- 'Ã',
40
- 'â',
41
- 'Â',
42
- 'à',
43
- 'À',
44
- 'é',
45
- 'É',
46
- 'ê',
47
- 'Ê',
48
- 'í',
49
- 'Í',
50
- 'ó',
51
- 'Ó',
52
- 'õ',
53
- 'Õ',
54
- 'ô',
55
- 'Ô',
56
- 'ú',
57
- 'Ú',
58
- 'ç',
59
- 'Ç',
60
- '_',
61
- ];
62
- return ((caractere >= 'a' && caractere <= 'z') ||
63
- (caractere >= 'A' && caractere <= 'Z') ||
64
- acentuacoes.includes(caractere));
65
- }
66
- eAlfabetoOuDigito(caractere) {
67
- return this.eDigito(caractere) || this.eAlfabeto(caractere);
68
- }
69
- /**
70
- * Indica se o código está na última linha.
71
- * @returns Verdadeiro se contador de linhas está na última linha.
72
- * Falso caso contrário.
73
- */
74
- eUltimaLinha() {
75
- return this.linha >= this.codigo.length - 1;
76
- }
77
- eFinalDaLinha() {
78
- return this.atual >= this.codigo[this.linha].length;
79
- }
80
- eFinalDoCodigo() {
81
- if (this.linha > this.codigo.length - 1)
82
- return true;
83
- return this.linha == this.codigo.length - 1 && this.codigo[this.codigo.length - 1].length <= this.atual;
84
- }
85
- avancar() {
86
- this.atual += 1;
87
- if (this.eFinalDaLinha() && !this.eUltimaLinha()) {
88
- this.linha++;
89
- this.atual = 0;
90
- // this.logicaEmLinhaIniciada = false;
91
- this.analisarIndentacao();
92
- }
93
- }
94
- adicionarSimbolo(tipo, literal = null) {
95
- const texto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
96
- this.simbolos.push(new simbolo_1.Simbolo(tipo, texto, literal, this.linha + 1, this.hashArquivo));
97
- }
98
- simboloAtual() {
99
- if (this.eFinalDaLinha())
100
- return '\0';
101
- if (this.linha > this.codigo.length - 1)
102
- return '\0';
103
- return this.codigo[this.linha].charAt(this.atual);
104
- }
105
- proximoSimbolo() {
106
- if (this.atual + 1 >= this.codigo[this.linha].length)
107
- return '\0';
108
- return this.codigo[this.linha].charAt(this.atual + 1);
109
- }
110
- simboloAnterior() {
111
- return this.codigo[this.linha].charAt(this.atual - 1);
112
- }
113
- analisarTexto(delimitador = '"') {
114
- const linhaPrimeiroCaracter = this.linha;
115
- while (this.simboloAtual() !== delimitador && !this.eFinalDoCodigo()) {
116
- this.avancar();
117
- }
118
- if (this.eFinalDoCodigo()) {
119
- this.erros.push({
120
- linha: this.linha + 1,
121
- caractere: this.simboloAnterior(),
122
- mensagem: 'Texto não finalizado.',
123
- });
124
- return;
125
- }
126
- const textoCompleto = this.codigo[this.linha].substring(this.inicioSimbolo + 1, this.atual);
127
- this.simbolos.push(new simbolo_1.Simbolo(pitugues_1.default.TEXTO, textoCompleto, textoCompleto, linhaPrimeiroCaracter + 1, this.hashArquivo));
128
- }
129
- analisarNumero() {
130
- const linhaPrimeiroDigito = this.linha;
131
- while (this.eDigito(this.simboloAtual()) && this.linha === linhaPrimeiroDigito) {
132
- this.avancar();
133
- }
134
- if (this.simboloAtual() == '.' && this.eDigito(this.proximoSimbolo())) {
135
- this.avancar();
136
- while (this.eDigito(this.simboloAtual())) {
137
- this.avancar();
138
- }
139
- }
140
- let numeroCompleto;
141
- if (linhaPrimeiroDigito < this.linha) {
142
- const linhaNumero = this.codigo[linhaPrimeiroDigito];
143
- numeroCompleto = linhaNumero.substring(this.inicioSimbolo, linhaNumero.length);
144
- }
145
- else {
146
- numeroCompleto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
147
- }
148
- this.simbolos.push(new simbolo_1.Simbolo(pitugues_1.default.NUMERO, numeroCompleto, parseFloat(numeroCompleto), linhaPrimeiroDigito + 1, this.hashArquivo));
149
- }
150
- identificarPalavraChave() {
151
- const linhaPrimeiroCaracter = this.linha;
152
- while (this.eAlfabetoOuDigito(this.simboloAtual()) && this.linha === linhaPrimeiroCaracter) {
153
- this.avancar();
154
- }
155
- let textoPalavraChave;
156
- if (linhaPrimeiroCaracter < this.linha) {
157
- const linhaPalavraChave = this.codigo[linhaPrimeiroCaracter];
158
- textoPalavraChave = linhaPalavraChave.substring(this.inicioSimbolo, linhaPalavraChave.length);
159
- }
160
- else {
161
- textoPalavraChave = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
162
- }
163
- const tipo = textoPalavraChave in palavras_reservadas_1.palavrasReservadas
164
- ? palavras_reservadas_1.palavrasReservadas[textoPalavraChave]
165
- : pitugues_1.default.IDENTIFICADOR;
166
- this.simbolos.push(new simbolo_1.Simbolo(tipo, textoPalavraChave, null, linhaPrimeiroCaracter + 1, this.hashArquivo));
167
- }
168
- analisarIndentacao() {
169
- let espacos = 0;
170
- while (['\t', ' '].includes(this.simboloAtual()) && !this.eFinalDoCodigo()) {
171
- espacos++;
172
- this.avancar();
173
- }
174
- this.pragmas[this.linha + 1] = {
175
- linha: this.linha + 1,
176
- espacosIndentacao: espacos,
177
- };
178
- }
179
- avancarParaProximaLinha() {
180
- this.linha++;
181
- this.atual = 0;
182
- this.analisarIndentacao();
183
- }
184
- analisarToken() {
185
- const caractere = this.simboloAtual();
186
- switch (caractere) {
187
- case ' ':
188
- case '\t':
189
- this.avancar();
190
- break;
191
- case '\r':
192
- case '\n':
193
- case '\0':
194
- case ';':
195
- this.avancar();
196
- break;
197
- case '=':
198
- this.avancar();
199
- if (this.simboloAtual() === '=') {
200
- this.adicionarSimbolo(pitugues_1.default.IGUAL_IGUAL);
201
- this.avancar();
202
- }
203
- else {
204
- this.adicionarSimbolo(pitugues_1.default.IGUAL);
205
- }
206
- break;
207
- case '#':
208
- this.avancarParaProximaLinha();
209
- break;
210
- case '[':
211
- this.adicionarSimbolo(pitugues_1.default.COLCHETE_ESQUERDO);
212
- this.avancar();
213
- break;
214
- case ']':
215
- this.adicionarSimbolo(pitugues_1.default.COLCHETE_DIREITO);
216
- this.avancar();
217
- break;
218
- case '(':
219
- this.adicionarSimbolo(pitugues_1.default.PARENTESE_ESQUERDO);
220
- this.avancar();
221
- break;
222
- case ')':
223
- this.adicionarSimbolo(pitugues_1.default.PARENTESE_DIREITO);
224
- this.avancar();
225
- break;
226
- case '{':
227
- this.adicionarSimbolo(pitugues_1.default.CHAVE_ESQUERDA);
228
- this.avancar();
229
- break;
230
- case '}':
231
- this.adicionarSimbolo(pitugues_1.default.CHAVE_DIREITA);
232
- this.avancar();
233
- break;
234
- case ',':
235
- this.adicionarSimbolo(pitugues_1.default.VIRGULA);
236
- this.avancar();
237
- break;
238
- case '.':
239
- this.adicionarSimbolo(pitugues_1.default.PONTO);
240
- this.avancar();
241
- break;
242
- case '-':
243
- this.avancar();
244
- if (this.simboloAtual() === '=') {
245
- this.adicionarSimbolo(pitugues_1.default.MENOS_IGUAL);
246
- this.avancar();
247
- }
248
- else {
249
- this.adicionarSimbolo(pitugues_1.default.SUBTRACAO);
250
- }
251
- break;
252
- case '+':
253
- this.avancar();
254
- if (this.simboloAtual() === '=') {
255
- this.adicionarSimbolo(pitugues_1.default.MAIS_IGUAL);
256
- this.avancar();
257
- }
258
- else {
259
- this.adicionarSimbolo(pitugues_1.default.ADICAO);
260
- }
261
- break;
262
- case '/':
263
- this.avancar();
264
- switch (this.simboloAtual()) {
265
- case '/':
266
- this.adicionarSimbolo(pitugues_1.default.DIVISAO_INTEIRA);
267
- this.avancar();
268
- break;
269
- default:
270
- this.adicionarSimbolo(pitugues_1.default.DIVISAO);
271
- break;
272
- }
273
- break;
274
- case ':':
275
- this.adicionarSimbolo(pitugues_1.default.DOIS_PONTOS);
276
- this.avancar();
277
- break;
278
- case '%':
279
- this.adicionarSimbolo(pitugues_1.default.MODULO);
280
- this.avancar();
281
- break;
282
- case '*':
283
- this.inicioSimbolo = this.atual;
284
- this.avancar();
285
- if (this.simboloAtual() === '*') {
286
- this.avancar();
287
- this.adicionarSimbolo(pitugues_1.default.EXPONENCIACAO);
288
- }
289
- else {
290
- this.adicionarSimbolo(pitugues_1.default.MULTIPLICACAO);
291
- }
292
- break;
293
- case '!':
294
- this.avancar();
295
- if (this.simboloAtual() === '=') {
296
- this.adicionarSimbolo(pitugues_1.default.DIFERENTE);
297
- this.avancar();
298
- }
299
- else {
300
- this.adicionarSimbolo(pitugues_1.default.NEGACAO);
301
- }
302
- case '&':
303
- this.adicionarSimbolo(pitugues_1.default.BIT_AND);
304
- this.avancar();
305
- break;
306
- case '~':
307
- this.adicionarSimbolo(pitugues_1.default.BIT_NOT);
308
- this.avancar();
309
- break;
310
- case '|':
311
- this.adicionarSimbolo(pitugues_1.default.BIT_OR);
312
- this.avancar();
313
- break;
314
- case '^':
315
- this.adicionarSimbolo(pitugues_1.default.BIT_XOR);
316
- this.avancar();
317
- break;
318
- case '<':
319
- this.avancar();
320
- if (this.simboloAtual() === '=') {
321
- this.adicionarSimbolo(pitugues_1.default.MENOR_IGUAL);
322
- this.avancar();
323
- }
324
- else if (this.simboloAtual() === '<') {
325
- this.adicionarSimbolo(pitugues_1.default.MENOR_MENOR);
326
- this.avancar();
327
- }
328
- else {
329
- this.adicionarSimbolo(pitugues_1.default.MENOR);
330
- }
331
- break;
332
- case '>':
333
- this.avancar();
334
- if (this.simboloAtual() === '=') {
335
- this.adicionarSimbolo(pitugues_1.default.MAIOR_IGUAL);
336
- this.avancar();
337
- }
338
- else if (this.simboloAtual() === '>') {
339
- this.adicionarSimbolo(pitugues_1.default.MAIOR_MAIOR);
340
- this.avancar();
341
- }
342
- else {
343
- this.adicionarSimbolo(pitugues_1.default.MAIOR);
344
- }
345
- break;
346
- case '"':
347
- this.avancar();
348
- this.analisarTexto('"');
349
- this.avancar();
350
- break;
351
- case "'":
352
- this.avancar();
353
- this.analisarTexto("'");
354
- this.avancar();
355
- break;
356
- default:
357
- if (this.eDigito(caractere))
358
- this.analisarNumero();
359
- else if (this.eAlfabeto(caractere))
360
- this.identificarPalavraChave();
361
- else {
362
- this.erros.push({
363
- linha: this.linha + 1,
364
- caractere: caractere,
365
- mensagem: 'Caractere inesperado.',
366
- });
367
- this.avancar();
368
- }
369
- }
370
- }
371
- mapear(codigo, hashArquivo) {
372
- const inicioMapeamento = (0, browser_process_hrtime_1.default)();
373
- this.simbolos = [];
374
- this.erros = [];
375
- this.pragmas = {};
376
- this.inicioSimbolo = 0;
377
- this.atual = 0;
378
- this.linha = 0;
379
- this.codigo = codigo || [''];
380
- this.hashArquivo = hashArquivo;
381
- // Análise de indentação da primeira linha.
382
- this.analisarIndentacao();
383
- while (!this.eFinalDoCodigo()) {
384
- this.inicioSimbolo = this.atual;
385
- this.analisarToken();
386
- }
387
- if (this.performance) {
388
- const deltaMapeamento = (0, browser_process_hrtime_1.default)(inicioMapeamento);
389
- console.log(`[Lexador] Tempo para mapeamento: ${deltaMapeamento[0] * 1e9 + deltaMapeamento[1]}ns`);
390
- }
391
- return {
392
- simbolos: this.simbolos,
393
- erros: this.erros,
394
- pragmas: this.pragmas,
395
- };
396
- }
397
- }
398
- exports.LexadorPitugues = LexadorPitugues;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LexadorPitugues = void 0;
7
+ const browser_process_hrtime_1 = __importDefault(require("browser-process-hrtime"));
8
+ const pitugues_1 = __importDefault(require("../../tipos-de-simbolos/pitugues"));
9
+ const simbolo_1 = require("../simbolo");
10
+ const palavras_reservadas_1 = require("../palavras-reservadas");
11
+ /**
12
+ * O Lexador é responsável por transformar o código em uma coleção de tokens de linguagem.
13
+ * Cada token de linguagem é representado por um tipo, um lexema e informações da linha de código em que foi expresso.
14
+ * Também é responsável por mapear as palavras reservadas da linguagem, que não podem ser usadas por outras
15
+ * estruturas, tais como nomes de variáveis, funções, literais, classes e assim por diante.
16
+ *
17
+ * Este lexador é diferente dos demais, porque também produz uma estrutura de dados de pragmas, que explica,
18
+ * por exemplo quantos espaços há na frente de cada linha. Assim como a linguagem Python, os blocos de
19
+ * escopo são definidos pelo número de espaços à frente do código.
20
+ */
21
+ class LexadorPitugues {
22
+ constructor(performance = false) {
23
+ this.performance = performance;
24
+ this.simbolos = [];
25
+ this.erros = [];
26
+ this.pragmas = {};
27
+ this.inicioSimbolo = 0;
28
+ this.atual = 0;
29
+ this.linha = 0;
30
+ }
31
+ eDigito(caractere) {
32
+ return caractere >= '0' && caractere <= '9';
33
+ }
34
+ eAlfabeto(caractere) {
35
+ const acentuacoes = [
36
+ 'á',
37
+ 'Á',
38
+ 'ã',
39
+ 'Ã',
40
+ 'â',
41
+ 'Â',
42
+ 'à',
43
+ 'À',
44
+ 'é',
45
+ 'É',
46
+ 'ê',
47
+ 'Ê',
48
+ 'í',
49
+ 'Í',
50
+ 'ó',
51
+ 'Ó',
52
+ 'õ',
53
+ 'Õ',
54
+ 'ô',
55
+ 'Ô',
56
+ 'ú',
57
+ 'Ú',
58
+ 'ç',
59
+ 'Ç',
60
+ '_',
61
+ ];
62
+ return ((caractere >= 'a' && caractere <= 'z') ||
63
+ (caractere >= 'A' && caractere <= 'Z') ||
64
+ acentuacoes.includes(caractere));
65
+ }
66
+ eAlfabetoOuDigito(caractere) {
67
+ return this.eDigito(caractere) || this.eAlfabeto(caractere);
68
+ }
69
+ /**
70
+ * Indica se o código está na última linha.
71
+ * @returns Verdadeiro se contador de linhas está na última linha.
72
+ * Falso caso contrário.
73
+ */
74
+ eUltimaLinha() {
75
+ return this.linha >= this.codigo.length - 1;
76
+ }
77
+ eFinalDaLinha() {
78
+ return this.atual >= this.codigo[this.linha].length;
79
+ }
80
+ eFinalDoCodigo() {
81
+ if (this.linha > this.codigo.length - 1)
82
+ return true;
83
+ return this.linha == this.codigo.length - 1 && this.codigo[this.codigo.length - 1].length <= this.atual;
84
+ }
85
+ avancar() {
86
+ this.atual += 1;
87
+ if (this.eFinalDaLinha() && !this.eUltimaLinha()) {
88
+ this.linha++;
89
+ this.atual = 0;
90
+ // this.logicaEmLinhaIniciada = false;
91
+ this.analisarIndentacao();
92
+ }
93
+ }
94
+ adicionarSimbolo(tipo, literal = null) {
95
+ const texto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
96
+ this.simbolos.push(new simbolo_1.Simbolo(tipo, texto, literal, this.linha + 1, this.hashArquivo));
97
+ }
98
+ simboloAtual() {
99
+ if (this.eFinalDaLinha())
100
+ return '\0';
101
+ if (this.linha > this.codigo.length - 1)
102
+ return '\0';
103
+ return this.codigo[this.linha].charAt(this.atual);
104
+ }
105
+ proximoSimbolo() {
106
+ if (this.atual + 1 >= this.codigo[this.linha].length)
107
+ return '\0';
108
+ return this.codigo[this.linha].charAt(this.atual + 1);
109
+ }
110
+ simboloAnterior() {
111
+ return this.codigo[this.linha].charAt(this.atual - 1);
112
+ }
113
+ analisarTexto(delimitador = '"') {
114
+ const linhaPrimeiroCaracter = this.linha;
115
+ while (this.simboloAtual() !== delimitador && !this.eFinalDoCodigo()) {
116
+ this.avancar();
117
+ }
118
+ if (this.eFinalDoCodigo()) {
119
+ this.erros.push({
120
+ linha: this.linha + 1,
121
+ caractere: this.simboloAnterior(),
122
+ mensagem: 'Texto não finalizado.',
123
+ });
124
+ return;
125
+ }
126
+ const textoCompleto = this.codigo[this.linha].substring(this.inicioSimbolo + 1, this.atual);
127
+ this.simbolos.push(new simbolo_1.Simbolo(pitugues_1.default.TEXTO, textoCompleto, textoCompleto, linhaPrimeiroCaracter + 1, this.hashArquivo));
128
+ }
129
+ analisarNumero() {
130
+ const linhaPrimeiroDigito = this.linha;
131
+ while (this.eDigito(this.simboloAtual()) && this.linha === linhaPrimeiroDigito) {
132
+ this.avancar();
133
+ }
134
+ if (this.simboloAtual() == '.' && this.eDigito(this.proximoSimbolo())) {
135
+ this.avancar();
136
+ while (this.eDigito(this.simboloAtual())) {
137
+ this.avancar();
138
+ }
139
+ }
140
+ let numeroCompleto;
141
+ if (linhaPrimeiroDigito < this.linha) {
142
+ const linhaNumero = this.codigo[linhaPrimeiroDigito];
143
+ numeroCompleto = linhaNumero.substring(this.inicioSimbolo, linhaNumero.length);
144
+ }
145
+ else {
146
+ numeroCompleto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
147
+ }
148
+ this.simbolos.push(new simbolo_1.Simbolo(pitugues_1.default.NUMERO, numeroCompleto, parseFloat(numeroCompleto), linhaPrimeiroDigito + 1, this.hashArquivo));
149
+ }
150
+ identificarPalavraChave() {
151
+ const linhaPrimeiroCaracter = this.linha;
152
+ while (this.eAlfabetoOuDigito(this.simboloAtual()) && this.linha === linhaPrimeiroCaracter) {
153
+ this.avancar();
154
+ }
155
+ let textoPalavraChave;
156
+ if (linhaPrimeiroCaracter < this.linha) {
157
+ const linhaPalavraChave = this.codigo[linhaPrimeiroCaracter];
158
+ textoPalavraChave = linhaPalavraChave.substring(this.inicioSimbolo, linhaPalavraChave.length);
159
+ }
160
+ else {
161
+ textoPalavraChave = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
162
+ }
163
+ const tipo = textoPalavraChave in palavras_reservadas_1.palavrasReservadas
164
+ ? palavras_reservadas_1.palavrasReservadas[textoPalavraChave]
165
+ : pitugues_1.default.IDENTIFICADOR;
166
+ this.simbolos.push(new simbolo_1.Simbolo(tipo, textoPalavraChave, null, linhaPrimeiroCaracter + 1, this.hashArquivo));
167
+ }
168
+ analisarIndentacao() {
169
+ let espacos = 0;
170
+ while (['\t', ' '].includes(this.simboloAtual()) && !this.eFinalDoCodigo()) {
171
+ espacos++;
172
+ this.avancar();
173
+ }
174
+ this.pragmas[this.linha + 1] = {
175
+ linha: this.linha + 1,
176
+ espacosIndentacao: espacos,
177
+ };
178
+ }
179
+ avancarParaProximaLinha() {
180
+ this.linha++;
181
+ this.atual = 0;
182
+ this.analisarIndentacao();
183
+ }
184
+ analisarToken() {
185
+ const caractere = this.simboloAtual();
186
+ switch (caractere) {
187
+ case ' ':
188
+ case '\t':
189
+ this.avancar();
190
+ break;
191
+ case '\r':
192
+ case '\n':
193
+ case '\0':
194
+ case ';':
195
+ this.avancar();
196
+ break;
197
+ case '=':
198
+ this.avancar();
199
+ if (this.simboloAtual() === '=') {
200
+ this.adicionarSimbolo(pitugues_1.default.IGUAL_IGUAL);
201
+ this.avancar();
202
+ }
203
+ else {
204
+ this.adicionarSimbolo(pitugues_1.default.IGUAL);
205
+ }
206
+ break;
207
+ case '#':
208
+ this.avancarParaProximaLinha();
209
+ break;
210
+ case '[':
211
+ this.adicionarSimbolo(pitugues_1.default.COLCHETE_ESQUERDO);
212
+ this.avancar();
213
+ break;
214
+ case ']':
215
+ this.adicionarSimbolo(pitugues_1.default.COLCHETE_DIREITO);
216
+ this.avancar();
217
+ break;
218
+ case '(':
219
+ this.adicionarSimbolo(pitugues_1.default.PARENTESE_ESQUERDO);
220
+ this.avancar();
221
+ break;
222
+ case ')':
223
+ this.adicionarSimbolo(pitugues_1.default.PARENTESE_DIREITO);
224
+ this.avancar();
225
+ break;
226
+ case '{':
227
+ this.adicionarSimbolo(pitugues_1.default.CHAVE_ESQUERDA);
228
+ this.avancar();
229
+ break;
230
+ case '}':
231
+ this.adicionarSimbolo(pitugues_1.default.CHAVE_DIREITA);
232
+ this.avancar();
233
+ break;
234
+ case ',':
235
+ this.adicionarSimbolo(pitugues_1.default.VIRGULA);
236
+ this.avancar();
237
+ break;
238
+ case '.':
239
+ this.adicionarSimbolo(pitugues_1.default.PONTO);
240
+ this.avancar();
241
+ break;
242
+ case '-':
243
+ this.avancar();
244
+ if (this.simboloAtual() === '=') {
245
+ this.adicionarSimbolo(pitugues_1.default.MENOS_IGUAL);
246
+ this.avancar();
247
+ }
248
+ else {
249
+ this.adicionarSimbolo(pitugues_1.default.SUBTRACAO);
250
+ }
251
+ break;
252
+ case '+':
253
+ this.avancar();
254
+ if (this.simboloAtual() === '=') {
255
+ this.adicionarSimbolo(pitugues_1.default.MAIS_IGUAL);
256
+ this.avancar();
257
+ }
258
+ else {
259
+ this.adicionarSimbolo(pitugues_1.default.ADICAO);
260
+ }
261
+ break;
262
+ case '/':
263
+ this.avancar();
264
+ switch (this.simboloAtual()) {
265
+ case '/':
266
+ this.adicionarSimbolo(pitugues_1.default.DIVISAO_INTEIRA);
267
+ this.avancar();
268
+ break;
269
+ default:
270
+ this.adicionarSimbolo(pitugues_1.default.DIVISAO);
271
+ break;
272
+ }
273
+ break;
274
+ case ':':
275
+ this.adicionarSimbolo(pitugues_1.default.DOIS_PONTOS);
276
+ this.avancar();
277
+ break;
278
+ case '%':
279
+ this.adicionarSimbolo(pitugues_1.default.MODULO);
280
+ this.avancar();
281
+ break;
282
+ case '*':
283
+ this.inicioSimbolo = this.atual;
284
+ this.avancar();
285
+ if (this.simboloAtual() === '*') {
286
+ this.avancar();
287
+ this.adicionarSimbolo(pitugues_1.default.EXPONENCIACAO);
288
+ }
289
+ else {
290
+ this.adicionarSimbolo(pitugues_1.default.MULTIPLICACAO);
291
+ }
292
+ break;
293
+ case '!':
294
+ this.avancar();
295
+ if (this.simboloAtual() === '=') {
296
+ this.adicionarSimbolo(pitugues_1.default.DIFERENTE);
297
+ this.avancar();
298
+ }
299
+ else {
300
+ this.adicionarSimbolo(pitugues_1.default.NEGACAO);
301
+ }
302
+ case '&':
303
+ this.adicionarSimbolo(pitugues_1.default.BIT_AND);
304
+ this.avancar();
305
+ break;
306
+ case '~':
307
+ this.adicionarSimbolo(pitugues_1.default.BIT_NOT);
308
+ this.avancar();
309
+ break;
310
+ case '|':
311
+ this.adicionarSimbolo(pitugues_1.default.BIT_OR);
312
+ this.avancar();
313
+ break;
314
+ case '^':
315
+ this.adicionarSimbolo(pitugues_1.default.BIT_XOR);
316
+ this.avancar();
317
+ break;
318
+ case '<':
319
+ this.avancar();
320
+ if (this.simboloAtual() === '=') {
321
+ this.adicionarSimbolo(pitugues_1.default.MENOR_IGUAL);
322
+ this.avancar();
323
+ }
324
+ else if (this.simboloAtual() === '<') {
325
+ this.adicionarSimbolo(pitugues_1.default.MENOR_MENOR);
326
+ this.avancar();
327
+ }
328
+ else {
329
+ this.adicionarSimbolo(pitugues_1.default.MENOR);
330
+ }
331
+ break;
332
+ case '>':
333
+ this.avancar();
334
+ if (this.simboloAtual() === '=') {
335
+ this.adicionarSimbolo(pitugues_1.default.MAIOR_IGUAL);
336
+ this.avancar();
337
+ }
338
+ else if (this.simboloAtual() === '>') {
339
+ this.adicionarSimbolo(pitugues_1.default.MAIOR_MAIOR);
340
+ this.avancar();
341
+ }
342
+ else {
343
+ this.adicionarSimbolo(pitugues_1.default.MAIOR);
344
+ }
345
+ break;
346
+ case '"':
347
+ this.avancar();
348
+ this.analisarTexto('"');
349
+ this.avancar();
350
+ break;
351
+ case "'":
352
+ this.avancar();
353
+ this.analisarTexto("'");
354
+ this.avancar();
355
+ break;
356
+ default:
357
+ if (this.eDigito(caractere))
358
+ this.analisarNumero();
359
+ else if (this.eAlfabeto(caractere))
360
+ this.identificarPalavraChave();
361
+ else {
362
+ this.erros.push({
363
+ linha: this.linha + 1,
364
+ caractere: caractere,
365
+ mensagem: 'Caractere inesperado.',
366
+ });
367
+ this.avancar();
368
+ }
369
+ }
370
+ }
371
+ mapear(codigo, hashArquivo) {
372
+ const inicioMapeamento = (0, browser_process_hrtime_1.default)();
373
+ this.simbolos = [];
374
+ this.erros = [];
375
+ this.pragmas = {};
376
+ this.inicioSimbolo = 0;
377
+ this.atual = 0;
378
+ this.linha = 0;
379
+ this.codigo = codigo || [''];
380
+ this.hashArquivo = hashArquivo;
381
+ // Análise de indentação da primeira linha.
382
+ this.analisarIndentacao();
383
+ while (!this.eFinalDoCodigo()) {
384
+ this.inicioSimbolo = this.atual;
385
+ this.analisarToken();
386
+ }
387
+ if (this.performance) {
388
+ const deltaMapeamento = (0, browser_process_hrtime_1.default)(inicioMapeamento);
389
+ console.log(`[Lexador] Tempo para mapeamento: ${deltaMapeamento[0] * 1e9 + deltaMapeamento[1]}ns`);
390
+ }
391
+ return {
392
+ simbolos: this.simbolos,
393
+ erros: this.erros,
394
+ pragmas: this.pragmas,
395
+ };
396
+ }
397
+ }
398
+ exports.LexadorPitugues = LexadorPitugues;
399
399
  //# sourceMappingURL=lexador-pitugues.js.map