Browse Source

Descrição da ASA. Utilizando loader para compilar a gramática lexer novamente

Lucas de Souza 6 years ago
parent
commit
ba48135a21
6 changed files with 78 additions and 623 deletions
  1. 2 2
      grammar/pt-br/ivprog.g4
  2. 0 152
      grammar/pt-br/ivprog.interp
  3. 0 388
      grammar/pt-br/ivprog.js
  4. 0 75
      grammar/pt-br/ivprog.tokens
  5. 49 1
      js/asa/ASA.js
  6. 27 5
      js/main.js

+ 2 - 2
grammar/pt-br/ivprog.g4

@@ -57,12 +57,12 @@ CADEIA        : '"' ( SEQ_ESC | ~('\\'|'"') )* '"'  ;
 
 CARACTER        :   '\'' ( SEQ_ESC | ~('\''|'\\') ) '\''  ;
 
-ESPACO        : ( ' ' | '\t' | '\r' | '\n') -> channel(HIDDEN)  ;
+ESPACO        : ( ' ' | '\t' | '\r' | '\n') -> skip  ;
 
 
 fragment DIGIT_HEX    :   ('0'..'9'|'a'..'f'|'A'..'F')  ;
 
-fragment SEQ_ESC      :  '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')  |   ESC_UNICODE  |   ESC_OCTAL   ;
+fragment SEQ_ESC      :  '\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')  |   ESC_UNICODE  |   ESC_OCTAL   ;
 
 fragment ESC_OCTAL    : '\\' ('0'..'3') ('0'..'7') ('0'..'7')  |   '\\' ('0'..'7') ('0'..'7')    |   '\\' ('0'..'7')    ;
 

File diff suppressed because it is too large
+ 0 - 152
grammar/pt-br/ivprog.interp


+ 0 - 388
grammar/pt-br/ivprog.js

@@ -1,388 +0,0 @@
-// Generated from grammar/pt-br/ivprog.g4 by ANTLR 4.7.1
-// jshint ignore: start
-var antlr4 = require('antlr4/index');
-
-
-var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
-    "\u0002-\u01a2\b\u0001\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004",
-    "\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t",
-    "\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004",
-    "\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010",
-    "\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013",
-    "\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017",
-    "\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a",
-    "\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e",
-    "\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#",
-    "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004",
-    "*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004",
-    "1\t1\u00042\t2\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003",
-    "\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003",
-    "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003",
-    "\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003",
-    "\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0006\u0003",
-    "\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
-    "\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003",
-    "\u0007\u0003\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
-    "\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003",
-    "\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003",
-    "\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003",
-    "\u000b\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003",
-    "\f\u0003\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003",
-    "\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003",
-    "\u000e\u0003\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003",
-    "\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003",
-    "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0012\u0003",
-    "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003",
-    "\u0012\u0003\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003",
-    "\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003",
-    "\u0015\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003",
-    "\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003",
-    "\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003",
-    "\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0003",
-    "\u001b\u0003\u001b\u0003\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003",
-    "\u001e\u0003\u001e\u0003\u001f\u0003\u001f\u0003 \u0003 \u0003!\u0003",
-    "!\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003$\u0003$\u0003$\u0003$\u0003",
-    "$\u0003$\u0003$\u0005$\u0119\n$\u0003%\u0003%\u0003&\u0003&\u0003&\u0003",
-    "&\u0003\'\u0003\'\u0005\'\u0123\n\'\u0003(\u0003(\u0007(\u0127\n(\f",
-    "(\u000e(\u012a\u000b(\u0003)\u0006)\u012d\n)\r)\u000e)\u012e\u0003)",
-    "\u0003)\u0003)\u0003)\u0005)\u0135\n)\u0003)\u0006)\u0138\n)\r)\u000e",
-    ")\u0139\u0003)\u0003)\u0003)\u0003)\u0005)\u0140\n)\u0003)\u0006)\u0143",
-    "\n)\r)\u000e)\u0144\u0005)\u0147\n)\u0003*\u0006*\u014a\n*\r*\u000e",
-    "*\u014b\u0003*\u0003*\u0006*\u0150\n*\r*\u000e*\u0151\u0003+\u0003+",
-    "\u0003+\u0007+\u0157\n+\f+\u000e+\u015a\u000b+\u0003+\u0003+\u0003,",
-    "\u0003,\u0003,\u0005,\u0161\n,\u0003,\u0003,\u0003-\u0003-\u0003-\u0003",
-    "-\u0003.\u0003.\u0003/\u0003/\u0003/\u0003/\u0005/\u016f\n/\u0003/\u0003",
-    "/\u0005/\u0173\n/\u00030\u00030\u00030\u00030\u00030\u00030\u00030\u0003",
-    "0\u00030\u00050\u017e\n0\u00031\u00031\u00031\u00031\u00031\u00031\u0003",
-    "1\u00032\u00032\u00032\u00032\u00072\u018b\n2\f2\u000e2\u018e\u000b",
-    "2\u00032\u00052\u0191\n2\u00032\u00032\u00032\u00032\u00032\u00072\u0198",
-    "\n2\f2\u000e2\u019b\u000b2\u00032\u00032\u00052\u019f\n2\u00032\u0003",
-    "2\u0003\u0199\u00023\u0003\u0003\u0005\u0004\u0007\u0005\t\u0006\u000b",
-    "\u0007\r\b\u000f\t\u0011\n\u0013\u000b\u0015\f\u0017\r\u0019\u000e\u001b",
-    "\u000f\u001d\u0010\u001f\u0011!\u0012#\u0013%\u0014\'\u0015)\u0016+",
-    "\u0002-\u0002/\u00171\u00183\u00195\u001a7\u001b9\u001c;\u001d=\u001e",
-    "?\u001fA C!E\"G#I$K%M&O\'Q(S)U*W+Y,[\u0002]\u0002_\u0002a\u0002c-\u0003",
-    "\u0002\r\u001d\u0002$&))00AB^^bb\u0080\u0080\u00a4\u00a5\u00a9\u00a9",
-    "\u00ac\u00ac\u00ae\u00ae\u00b4\u00b5\u00bb\u00bc\u00c2\u00c2\u00c4\u00c6",
-    "\u00c9\u00c9\u00cb\u00cd\u00d5\u00d7\u00dc\u00dc\u00de\u00de\u00e2\u00e5",
-    "\u00e9\u00e9\u00eb\u00ec\u00ef\u00ef\u00f5\u00f7\u00fc\u00fc\u00fe\u00fe",
-    "\u0006\u0002\'\',-//11\u0004\u0002>>@@\u0005\u0002C\\aac|\u0006\u0002",
-    "2;C\\aac|\u0004\u0002$$^^\u0004\u0002))^^\u0005\u0002\u000b\f\u000f",
-    "\u000f\"\"\u0005\u00022;CHch\u0007\u0002ddhhppttvv\u0004\u0002\f\f\u000f",
-    "\u000f\u0002\u01b6\u0002\u0003\u0003\u0002\u0002\u0002\u0002\u0005\u0003",
-    "\u0002\u0002\u0002\u0002\u0007\u0003\u0002\u0002\u0002\u0002\t\u0003",
-    "\u0002\u0002\u0002\u0002\u000b\u0003\u0002\u0002\u0002\u0002\r\u0003",
-    "\u0002\u0002\u0002\u0002\u000f\u0003\u0002\u0002\u0002\u0002\u0011\u0003",
-    "\u0002\u0002\u0002\u0002\u0013\u0003\u0002\u0002\u0002\u0002\u0015\u0003",
-    "\u0002\u0002\u0002\u0002\u0017\u0003\u0002\u0002\u0002\u0002\u0019\u0003",
-    "\u0002\u0002\u0002\u0002\u001b\u0003\u0002\u0002\u0002\u0002\u001d\u0003",
-    "\u0002\u0002\u0002\u0002\u001f\u0003\u0002\u0002\u0002\u0002!\u0003",
-    "\u0002\u0002\u0002\u0002#\u0003\u0002\u0002\u0002\u0002%\u0003\u0002",
-    "\u0002\u0002\u0002\'\u0003\u0002\u0002\u0002\u0002)\u0003\u0002\u0002",
-    "\u0002\u0002/\u0003\u0002\u0002\u0002\u00021\u0003\u0002\u0002\u0002",
-    "\u00023\u0003\u0002\u0002\u0002\u00025\u0003\u0002\u0002\u0002\u0002",
-    "7\u0003\u0002\u0002\u0002\u00029\u0003\u0002\u0002\u0002\u0002;\u0003",
-    "\u0002\u0002\u0002\u0002=\u0003\u0002\u0002\u0002\u0002?\u0003\u0002",
-    "\u0002\u0002\u0002A\u0003\u0002\u0002\u0002\u0002C\u0003\u0002\u0002",
-    "\u0002\u0002E\u0003\u0002\u0002\u0002\u0002G\u0003\u0002\u0002\u0002",
-    "\u0002I\u0003\u0002\u0002\u0002\u0002K\u0003\u0002\u0002\u0002\u0002",
-    "M\u0003\u0002\u0002\u0002\u0002O\u0003\u0002\u0002\u0002\u0002Q\u0003",
-    "\u0002\u0002\u0002\u0002S\u0003\u0002\u0002\u0002\u0002U\u0003\u0002",
-    "\u0002\u0002\u0002W\u0003\u0002\u0002\u0002\u0002Y\u0003\u0002\u0002",
-    "\u0002\u0002c\u0003\u0002\u0002\u0002\u0003e\u0003\u0002\u0002\u0002",
-    "\u0005n\u0003\u0002\u0002\u0002\u0007s\u0003\u0002\u0002\u0002\ty\u0003",
-    "\u0002\u0002\u0002\u000b\u0080\u0003\u0002\u0002\u0002\r\u0087\u0003",
-    "\u0002\u0002\u0002\u000f\u008f\u0003\u0002\u0002\u0002\u0011\u0098\u0003",
-    "\u0002\u0002\u0002\u0013\u00a0\u0003\u0002\u0002\u0002\u0015\u00a5\u0003",
-    "\u0002\u0002\u0002\u0017\u00af\u0003\u0002\u0002\u0002\u0019\u00b5\u0003",
-    "\u0002\u0002\u0002\u001b\u00bc\u0003\u0002\u0002\u0002\u001d\u00c4\u0003",
-    "\u0002\u0002\u0002\u001f\u00c9\u0003\u0002\u0002\u0002!\u00ce\u0003",
-    "\u0002\u0002\u0002#\u00d3\u0003\u0002\u0002\u0002%\u00dc\u0003\u0002",
-    "\u0002\u0002\'\u00df\u0003\u0002\u0002\u0002)\u00e5\u0003\u0002\u0002",
-    "\u0002+\u00e7\u0003\u0002\u0002\u0002-\u00ed\u0003\u0002\u0002\u0002",
-    "/\u00f8\u0003\u0002\u0002\u00021\u00fa\u0003\u0002\u0002\u00023\u00fc",
-    "\u0003\u0002\u0002\u00025\u00fe\u0003\u0002\u0002\u00027\u0100\u0003",
-    "\u0002\u0002\u00029\u0102\u0003\u0002\u0002\u0002;\u0104\u0003\u0002",
-    "\u0002\u0002=\u0106\u0003\u0002\u0002\u0002?\u0108\u0003\u0002\u0002",
-    "\u0002A\u010a\u0003\u0002\u0002\u0002C\u010c\u0003\u0002\u0002\u0002",
-    "E\u010e\u0003\u0002\u0002\u0002G\u0118\u0003\u0002\u0002\u0002I\u011a",
-    "\u0003\u0002\u0002\u0002K\u011c\u0003\u0002\u0002\u0002M\u0122\u0003",
-    "\u0002\u0002\u0002O\u0124\u0003\u0002\u0002\u0002Q\u0146\u0003\u0002",
-    "\u0002\u0002S\u0149\u0003\u0002\u0002\u0002U\u0153\u0003\u0002\u0002",
-    "\u0002W\u015d\u0003\u0002\u0002\u0002Y\u0164\u0003\u0002\u0002\u0002",
-    "[\u0168\u0003\u0002\u0002\u0002]\u0172\u0003\u0002\u0002\u0002_\u017d",
-    "\u0003\u0002\u0002\u0002a\u017f\u0003\u0002\u0002\u0002c\u019e\u0003",
-    "\u0002\u0002\u0002ef\u0007r\u0002\u0002fg\u0007t\u0002\u0002gh\u0007",
-    "q\u0002\u0002hi\u0007i\u0002\u0002ij\u0007t\u0002\u0002jk\u0007c\u0002",
-    "\u0002kl\u0007o\u0002\u0002lm\u0007c\u0002\u0002m\u0004\u0003\u0002",
-    "\u0002\u0002no\u0007t\u0002\u0002op\u0007g\u0002\u0002pq\u0007c\u0002",
-    "\u0002qr\u0007n\u0002\u0002r\u0006\u0003\u0002\u0002\u0002st\u0007x",
-    "\u0002\u0002tu\u0007c\u0002\u0002uv\u0007|\u0002\u0002vw\u0007k\u0002",
-    "\u0002wx\u0007q\u0002\u0002x\b\u0003\u0002\u0002\u0002yz\u0007n\u0002",
-    "\u0002z{\u0007q\u0002\u0002{|\u0007i\u0002\u0002|}\u0007k\u0002\u0002",
-    "}~\u0007e\u0002\u0002~\u007f\u0007q\u0002\u0002\u007f\n\u0003\u0002",
-    "\u0002\u0002\u0080\u0081\u0007e\u0002\u0002\u0081\u0082\u0007c\u0002",
-    "\u0002\u0082\u0083\u0007f\u0002\u0002\u0083\u0084\u0007g\u0002\u0002",
-    "\u0084\u0085\u0007k\u0002\u0002\u0085\u0086\u0007c\u0002\u0002\u0086",
-    "\f\u0003\u0002\u0002\u0002\u0087\u0088\u0007k\u0002\u0002\u0088\u0089",
-    "\u0007p\u0002\u0002\u0089\u008a\u0007v\u0002\u0002\u008a\u008b\u0007",
-    "g\u0002\u0002\u008b\u008c\u0007k\u0002\u0002\u008c\u008d\u0007t\u0002",
-    "\u0002\u008d\u008e\u0007q\u0002\u0002\u008e\u000e\u0003\u0002\u0002",
-    "\u0002\u008f\u0090\u0007e\u0002\u0002\u0090\u0091\u0007c\u0002\u0002",
-    "\u0091\u0092\u0007t\u0002\u0002\u0092\u0093\u0007c\u0002\u0002\u0093",
-    "\u0094\u0007e\u0002\u0002\u0094\u0095\u0007v\u0002\u0002\u0095\u0096",
-    "\u0007g\u0002\u0002\u0096\u0097\u0007t\u0002\u0002\u0097\u0010\u0003",
-    "\u0002\u0002\u0002\u0098\u0099\u0007g\u0002\u0002\u0099\u009a\u0007",
-    "u\u0002\u0002\u009a\u009b\u0007e\u0002\u0002\u009b\u009c\u0007q\u0002",
-    "\u0002\u009c\u009d\u0007n\u0002\u0002\u009d\u009e\u0007j\u0002\u0002",
-    "\u009e\u009f\u0007c\u0002\u0002\u009f\u0012\u0003\u0002\u0002\u0002",
-    "\u00a0\u00a1\u0007e\u0002\u0002\u00a1\u00a2\u0007c\u0002\u0002\u00a2",
-    "\u00a3\u0007u\u0002\u0002\u00a3\u00a4\u0007q\u0002\u0002\u00a4\u0014",
-    "\u0003\u0002\u0002\u0002\u00a5\u00a6\u0007e\u0002\u0002\u00a6\u00a7",
-    "\u0007q\u0002\u0002\u00a7\u00a8\u0007p\u0002\u0002\u00a8\u00a9\u0007",
-    "v\u0002\u0002\u00a9\u00aa\u0007t\u0002\u0002\u00aa\u00ab\u0007c\u0002",
-    "\u0002\u00ab\u00ac\u0007t\u0002\u0002\u00ac\u00ad\u0007k\u0002\u0002",
-    "\u00ad\u00ae\u0007q\u0002\u0002\u00ae\u0016\u0003\u0002\u0002\u0002",
-    "\u00af\u00b0\u0007e\u0002\u0002\u00b0\u00b1\u0007q\u0002\u0002\u00b1",
-    "\u00b2\u0007p\u0002\u0002\u00b2\u00b3\u0007u\u0002\u0002\u00b3\u00b4",
-    "\u0007v\u0002\u0002\u00b4\u0018\u0003\u0002\u0002\u0002\u00b5\u00b6",
-    "\u0007h\u0002\u0002\u00b6\u00b7\u0007w\u0002\u0002\u00b7\u00b8\u0007",
-    "p\u0002\u0002\u00b8\u00b9\u0007e\u0002\u0002\u00b9\u00ba\u0007c\u0002",
-    "\u0002\u00ba\u00bb\u0007q\u0002\u0002\u00bb\u001a\u0003\u0002\u0002",
-    "\u0002\u00bc\u00bd\u0007t\u0002\u0002\u00bd\u00be\u0007g\u0002\u0002",
-    "\u00be\u00bf\u0007v\u0002\u0002\u00bf\u00c0\u0007q\u0002\u0002\u00c0",
-    "\u00c1\u0007t\u0002\u0002\u00c1\u00c2\u0007p\u0002\u0002\u00c2\u00c3",
-    "\u0007g\u0002\u0002\u00c3\u001c\u0003\u0002\u0002\u0002\u00c4\u00c5",
-    "\u0007r\u0002\u0002\u00c5\u00c6\u0007c\u0002\u0002\u00c6\u00c7\u0007",
-    "t\u0002\u0002\u00c7\u00c8\u0007c\u0002\u0002\u00c8\u001e\u0003\u0002",
-    "\u0002\u0002\u00c9\u00ca\u0007r\u0002\u0002\u00ca\u00cb\u0007c\u0002",
-    "\u0002\u00cb\u00cc\u0007t\u0002\u0002\u00cc\u00cd\u0007g\u0002\u0002",
-    "\u00cd \u0003\u0002\u0002\u0002\u00ce\u00cf\u0007h\u0002\u0002\u00cf",
-    "\u00d0\u0007c\u0002\u0002\u00d0\u00d1\u0007e\u0002\u0002\u00d1\u00d2",
-    "\u0007c\u0002\u0002\u00d2\"\u0003\u0002\u0002\u0002\u00d3\u00d4\u0007",
-    "g\u0002\u0002\u00d4\u00d5\u0007p\u0002\u0002\u00d5\u00d6\u0007s\u0002",
-    "\u0002\u00d6\u00d7\u0007w\u0002\u0002\u00d7\u00d8\u0007c\u0002\u0002",
-    "\u00d8\u00d9\u0007p\u0002\u0002\u00d9\u00da\u0007v\u0002\u0002\u00da",
-    "\u00db\u0007q\u0002\u0002\u00db$\u0003\u0002\u0002\u0002\u00dc\u00dd",
-    "\u0007u\u0002\u0002\u00dd\u00de\u0007g\u0002\u0002\u00de&\u0003\u0002",
-    "\u0002\u0002\u00df\u00e0\u0007u\u0002\u0002\u00e0\u00e1\u0007g\u0002",
-    "\u0002\u00e1\u00e2\u0007p\u0002\u0002\u00e2\u00e3\u0007c\u0002\u0002",
-    "\u00e3\u00e4\u0007q\u0002\u0002\u00e4(\u0003\u0002\u0002\u0002\u00e5",
-    "\u00e6\t\u0002\u0002\u0002\u00e6*\u0003\u0002\u0002\u0002\u00e7\u00e8",
-    "\u0007h\u0002\u0002\u00e8\u00e9\u0007c\u0002\u0002\u00e9\u00ea\u0007",
-    "n\u0002\u0002\u00ea\u00eb\u0007u\u0002\u0002\u00eb\u00ec\u0007q\u0002",
-    "\u0002\u00ec,\u0003\u0002\u0002\u0002\u00ed\u00ee\u0007x\u0002\u0002",
-    "\u00ee\u00ef\u0007g\u0002\u0002\u00ef\u00f0\u0007t\u0002\u0002\u00f0",
-    "\u00f1\u0007f\u0002\u0002\u00f1\u00f2\u0007c\u0002\u0002\u00f2\u00f3",
-    "\u0007f\u0002\u0002\u00f3\u00f4\u0007g\u0002\u0002\u00f4\u00f5\u0007",
-    "k\u0002\u0002\u00f5\u00f6\u0007t\u0002\u0002\u00f6\u00f7\u0007q\u0002",
-    "\u0002\u00f7.\u0003\u0002\u0002\u0002\u00f8\u00f9\u0007*\u0002\u0002",
-    "\u00f90\u0003\u0002\u0002\u0002\u00fa\u00fb\u0007+\u0002\u0002\u00fb",
-    "2\u0003\u0002\u0002\u0002\u00fc\u00fd\u0007]\u0002\u0002\u00fd4\u0003",
-    "\u0002\u0002\u0002\u00fe\u00ff\u0007_\u0002\u0002\u00ff6\u0003\u0002",
-    "\u0002\u0002\u0100\u0101\u0007}\u0002\u0002\u01018\u0003\u0002\u0002",
-    "\u0002\u0102\u0103\u0007\u007f\u0002\u0002\u0103:\u0003\u0002\u0002",
-    "\u0002\u0104\u0105\u0007.\u0002\u0002\u0105<\u0003\u0002\u0002\u0002",
-    "\u0106\u0107\u0007=\u0002\u0002\u0107>\u0003\u0002\u0002\u0002\u0108",
-    "\u0109\u0007?\u0002\u0002\u0109@\u0003\u0002\u0002\u0002\u010a\u010b",
-    "\t\u0003\u0002\u0002\u010bB\u0003\u0002\u0002\u0002\u010c\u010d\u0007",
-    "G\u0002\u0002\u010dD\u0003\u0002\u0002\u0002\u010e\u010f\u0007Q\u0002",
-    "\u0002\u010f\u0110\u0007W\u0002\u0002\u0110F\u0003\u0002\u0002\u0002",
-    "\u0111\u0112\u0007@\u0002\u0002\u0112\u0119\u0007?\u0002\u0002\u0113",
-    "\u0114\u0007?\u0002\u0002\u0114\u0119\u0007?\u0002\u0002\u0115\u0116",
-    "\u0007>\u0002\u0002\u0116\u0119\u0007?\u0002\u0002\u0117\u0119\t\u0004",
-    "\u0002\u0002\u0118\u0111\u0003\u0002\u0002\u0002\u0118\u0113\u0003\u0002",
-    "\u0002\u0002\u0118\u0115\u0003\u0002\u0002\u0002\u0118\u0117\u0003\u0002",
-    "\u0002\u0002\u0119H\u0003\u0002\u0002\u0002\u011a\u011b\u0007<\u0002",
-    "\u0002\u011bJ\u0003\u0002\u0002\u0002\u011c\u011d\u0007p\u0002\u0002",
-    "\u011d\u011e\u0007c\u0002\u0002\u011e\u011f\u0007q\u0002\u0002\u011f",
-    "L\u0003\u0002\u0002\u0002\u0120\u0123\u0005-\u0017\u0002\u0121\u0123",
-    "\u0005+\u0016\u0002\u0122\u0120\u0003\u0002\u0002\u0002\u0122\u0121",
-    "\u0003\u0002\u0002\u0002\u0123N\u0003\u0002\u0002\u0002\u0124\u0128",
-    "\t\u0005\u0002\u0002\u0125\u0127\t\u0006\u0002\u0002\u0126\u0125\u0003",
-    "\u0002\u0002\u0002\u0127\u012a\u0003\u0002\u0002\u0002\u0128\u0126\u0003",
-    "\u0002\u0002\u0002\u0128\u0129\u0003\u0002\u0002\u0002\u0129P\u0003",
-    "\u0002\u0002\u0002\u012a\u0128\u0003\u0002\u0002\u0002\u012b\u012d\u0004",
-    "2;\u0002\u012c\u012b\u0003\u0002\u0002\u0002\u012d\u012e\u0003\u0002",
-    "\u0002\u0002\u012e\u012c\u0003\u0002\u0002\u0002\u012e\u012f\u0003\u0002",
-    "\u0002\u0002\u012f\u0147\u0003\u0002\u0002\u0002\u0130\u0131\u00072",
-    "\u0002\u0002\u0131\u0135\u0007z\u0002\u0002\u0132\u0133\u00072\u0002",
-    "\u0002\u0133\u0135\u0007Z\u0002\u0002\u0134\u0130\u0003\u0002\u0002",
-    "\u0002\u0134\u0132\u0003\u0002\u0002\u0002\u0135\u0137\u0003\u0002\u0002",
-    "\u0002\u0136\u0138\u0005[.\u0002\u0137\u0136\u0003\u0002\u0002\u0002",
-    "\u0138\u0139\u0003\u0002\u0002\u0002\u0139\u0137\u0003\u0002\u0002\u0002",
-    "\u0139\u013a\u0003\u0002\u0002\u0002\u013a\u0147\u0003\u0002\u0002\u0002",
-    "\u013b\u013c\u00072\u0002\u0002\u013c\u0140\u0007d\u0002\u0002\u013d",
-    "\u013e\u00072\u0002\u0002\u013e\u0140\u0007D\u0002\u0002\u013f\u013b",
-    "\u0003\u0002\u0002\u0002\u013f\u013d\u0003\u0002\u0002\u0002\u0140\u0142",
-    "\u0003\u0002\u0002\u0002\u0141\u0143\u000423\u0002\u0142\u0141\u0003",
-    "\u0002\u0002\u0002\u0143\u0144\u0003\u0002\u0002\u0002\u0144\u0142\u0003",
-    "\u0002\u0002\u0002\u0144\u0145\u0003\u0002\u0002\u0002\u0145\u0147\u0003",
-    "\u0002\u0002\u0002\u0146\u012c\u0003\u0002\u0002\u0002\u0146\u0134\u0003",
-    "\u0002\u0002\u0002\u0146\u013f\u0003\u0002\u0002\u0002\u0147R\u0003",
-    "\u0002\u0002\u0002\u0148\u014a\u00042;\u0002\u0149\u0148\u0003\u0002",
-    "\u0002\u0002\u014a\u014b\u0003\u0002\u0002\u0002\u014b\u0149\u0003\u0002",
-    "\u0002\u0002\u014b\u014c\u0003\u0002\u0002\u0002\u014c\u014d\u0003\u0002",
-    "\u0002\u0002\u014d\u014f\u00070\u0002\u0002\u014e\u0150\u00042;\u0002",
-    "\u014f\u014e\u0003\u0002\u0002\u0002\u0150\u0151\u0003\u0002\u0002\u0002",
-    "\u0151\u014f\u0003\u0002\u0002\u0002\u0151\u0152\u0003\u0002\u0002\u0002",
-    "\u0152T\u0003\u0002\u0002\u0002\u0153\u0158\u0007$\u0002\u0002\u0154",
-    "\u0157\u0005]/\u0002\u0155\u0157\n\u0007\u0002\u0002\u0156\u0154\u0003",
-    "\u0002\u0002\u0002\u0156\u0155\u0003\u0002\u0002\u0002\u0157\u015a\u0003",
-    "\u0002\u0002\u0002\u0158\u0156\u0003\u0002\u0002\u0002\u0158\u0159\u0003",
-    "\u0002\u0002\u0002\u0159\u015b\u0003\u0002\u0002\u0002\u015a\u0158\u0003",
-    "\u0002\u0002\u0002\u015b\u015c\u0007$\u0002\u0002\u015cV\u0003\u0002",
-    "\u0002\u0002\u015d\u0160\u0007)\u0002\u0002\u015e\u0161\u0005]/\u0002",
-    "\u015f\u0161\n\b\u0002\u0002\u0160\u015e\u0003\u0002\u0002\u0002\u0160",
-    "\u015f\u0003\u0002\u0002\u0002\u0161\u0162\u0003\u0002\u0002\u0002\u0162",
-    "\u0163\u0007)\u0002\u0002\u0163X\u0003\u0002\u0002\u0002\u0164\u0165",
-    "\t\t\u0002\u0002\u0165\u0166\u0003\u0002\u0002\u0002\u0166\u0167\b-",
-    "\u0002\u0002\u0167Z\u0003\u0002\u0002\u0002\u0168\u0169\t\n\u0002\u0002",
-    "\u0169\\\u0003\u0002\u0002\u0002\u016a\u016e\u0007^\u0002\u0002\u016b",
-    "\u016f\t\u000b\u0002\u0002\u016c\u016f\u0003\u0002\u0002\u0002\u016d",
-    "\u016f\t\b\u0002\u0002\u016e\u016b\u0003\u0002\u0002\u0002\u016e\u016c",
-    "\u0003\u0002\u0002\u0002\u016e\u016d\u0003\u0002\u0002\u0002\u016f\u0173",
-    "\u0003\u0002\u0002\u0002\u0170\u0173\u0005a1\u0002\u0171\u0173\u0005",
-    "_0\u0002\u0172\u016a\u0003\u0002\u0002\u0002\u0172\u0170\u0003\u0002",
-    "\u0002\u0002\u0172\u0171\u0003\u0002\u0002\u0002\u0173^\u0003\u0002",
-    "\u0002\u0002\u0174\u0175\u0007^\u0002\u0002\u0175\u0176\u000425\u0002",
-    "\u0176\u0177\u000429\u0002\u0177\u017e\u000429\u0002\u0178\u0179\u0007",
-    "^\u0002\u0002\u0179\u017a\u000429\u0002\u017a\u017e\u000429\u0002\u017b",
-    "\u017c\u0007^\u0002\u0002\u017c\u017e\u000429\u0002\u017d\u0174\u0003",
-    "\u0002\u0002\u0002\u017d\u0178\u0003\u0002\u0002\u0002\u017d\u017b\u0003",
-    "\u0002\u0002\u0002\u017e`\u0003\u0002\u0002\u0002\u017f\u0180\u0007",
-    "^\u0002\u0002\u0180\u0181\u0007w\u0002\u0002\u0181\u0182\u0005[.\u0002",
-    "\u0182\u0183\u0005[.\u0002\u0183\u0184\u0005[.\u0002\u0184\u0185\u0005",
-    "[.\u0002\u0185b\u0003\u0002\u0002\u0002\u0186\u0187\u00071\u0002\u0002",
-    "\u0187\u0188\u00071\u0002\u0002\u0188\u018c\u0003\u0002\u0002\u0002",
-    "\u0189\u018b\n\f\u0002\u0002\u018a\u0189\u0003\u0002\u0002\u0002\u018b",
-    "\u018e\u0003\u0002\u0002\u0002\u018c\u018a\u0003\u0002\u0002\u0002\u018c",
-    "\u018d\u0003\u0002\u0002\u0002\u018d\u0190\u0003\u0002\u0002\u0002\u018e",
-    "\u018c\u0003\u0002\u0002\u0002\u018f\u0191\u0007\u000f\u0002\u0002\u0190",
-    "\u018f\u0003\u0002\u0002\u0002\u0190\u0191\u0003\u0002\u0002\u0002\u0191",
-    "\u0192\u0003\u0002\u0002\u0002\u0192\u019f\u0007\f\u0002\u0002\u0193",
-    "\u0194\u00071\u0002\u0002\u0194\u0195\u0007,\u0002\u0002\u0195\u0199",
-    "\u0003\u0002\u0002\u0002\u0196\u0198\u000b\u0002\u0002\u0002\u0197\u0196",
-    "\u0003\u0002\u0002\u0002\u0198\u019b\u0003\u0002\u0002\u0002\u0199\u019a",
-    "\u0003\u0002\u0002\u0002\u0199\u0197\u0003\u0002\u0002\u0002\u019a\u019c",
-    "\u0003\u0002\u0002\u0002\u019b\u0199\u0003\u0002\u0002\u0002\u019c\u019d",
-    "\u0007,\u0002\u0002\u019d\u019f\u00071\u0002\u0002\u019e\u0186\u0003",
-    "\u0002\u0002\u0002\u019e\u0193\u0003\u0002\u0002\u0002\u019f\u01a0\u0003",
-    "\u0002\u0002\u0002\u01a0\u01a1\b2\u0002\u0002\u01a1d\u0003\u0002\u0002",
-    "\u0002\u0018\u0002\u0118\u0122\u0128\u012e\u0134\u0139\u013f\u0144\u0146",
-    "\u014b\u0151\u0156\u0158\u0160\u016e\u0172\u017d\u018c\u0190\u0199\u019e",
-    "\u0003\u0002\u0003\u0002"].join("");
-
-
-var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
-
-var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });
-
-function ivprog(input) {
-	antlr4.Lexer.call(this, input);
-    this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());
-    return this;
-}
-
-ivprog.prototype = Object.create(antlr4.Lexer.prototype);
-ivprog.prototype.constructor = ivprog;
-
-Object.defineProperty(ivprog.prototype, "atn", {
-        get : function() {
-                return atn;
-        }
-});
-
-ivprog.EOF = antlr4.Token.EOF;
-ivprog.PR_PROGRAMA = 1;
-ivprog.PR_REAL = 2;
-ivprog.PR_VAZIO = 3;
-ivprog.PR_LOGICO = 4;
-ivprog.PR_CADEIA = 5;
-ivprog.PR_INTEIRO = 6;
-ivprog.PR_CARACTER = 7;
-ivprog.PR_ESCOLHA = 8;
-ivprog.PR_CASO = 9;
-ivprog.PR_CONTRARIO = 10;
-ivprog.PR_CONST = 11;
-ivprog.PR_FUNCAO = 12;
-ivprog.PR_RETORNE = 13;
-ivprog.PR_PARA = 14;
-ivprog.PR_PARE = 15;
-ivprog.PR_FACA = 16;
-ivprog.PR_ENQUANTO = 17;
-ivprog.PR_SE = 18;
-ivprog.PR_SENAO = 19;
-ivprog.GAMBIARRA = 20;
-ivprog.ABRE_PAR = 21;
-ivprog.FECHA_PAR = 22;
-ivprog.ABRE_COL = 23;
-ivprog.FECHA_COL = 24;
-ivprog.ABRE_CHA = 25;
-ivprog.FECHA_CHA = 26;
-ivprog.VIRGULA = 27;
-ivprog.PONTO_VIRGULA = 28;
-ivprog.ATRIBUICAO = 29;
-ivprog.OPERADOR_ARITMETICO = 30;
-ivprog.OPERADOR_E = 31;
-ivprog.OPERADOR_OU = 32;
-ivprog.OPERADOR_RELACIONAL = 33;
-ivprog.DPONTOS = 34;
-ivprog.OPERADOR_NAO = 35;
-ivprog.LOGICO = 36;
-ivprog.ID = 37;
-ivprog.INTEIRO = 38;
-ivprog.REAL = 39;
-ivprog.CADEIA = 40;
-ivprog.CARACTER = 41;
-ivprog.ESPACO = 42;
-ivprog.COMENTARIO = 43;
-
-ivprog.prototype.channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ];
-
-ivprog.prototype.modeNames = [ "DEFAULT_MODE" ];
-
-ivprog.prototype.literalNames = [ null, "'programa'", "'real'", "'vazio'", 
-                                  "'logico'", "'cadeia'", "'inteiro'", "'caracter'", 
-                                  "'escolha'", "'caso'", "'contrario'", 
-                                  "'const'", "'funcao'", "'retorne'", "'para'", 
-                                  "'pare'", "'faca'", "'enquanto'", "'se'", 
-                                  "'senao'", null, "'('", "')'", "'['", 
-                                  "']'", "'{'", "'}'", "','", "';'", "'='", 
-                                  null, "'E'", "'OU'", null, "':'", "'nao'" ];
-
-ivprog.prototype.symbolicNames = [ null, "PR_PROGRAMA", "PR_REAL", "PR_VAZIO", 
-                                   "PR_LOGICO", "PR_CADEIA", "PR_INTEIRO", 
-                                   "PR_CARACTER", "PR_ESCOLHA", "PR_CASO", 
-                                   "PR_CONTRARIO", "PR_CONST", "PR_FUNCAO", 
-                                   "PR_RETORNE", "PR_PARA", "PR_PARE", "PR_FACA", 
-                                   "PR_ENQUANTO", "PR_SE", "PR_SENAO", "GAMBIARRA", 
-                                   "ABRE_PAR", "FECHA_PAR", "ABRE_COL", 
-                                   "FECHA_COL", "ABRE_CHA", "FECHA_CHA", 
-                                   "VIRGULA", "PONTO_VIRGULA", "ATRIBUICAO", 
-                                   "OPERADOR_ARITMETICO", "OPERADOR_E", 
-                                   "OPERADOR_OU", "OPERADOR_RELACIONAL", 
-                                   "DPONTOS", "OPERADOR_NAO", "LOGICO", 
-                                   "ID", "INTEIRO", "REAL", "CADEIA", "CARACTER", 
-                                   "ESPACO", "COMENTARIO" ];
-
-ivprog.prototype.ruleNames = [ "PR_PROGRAMA", "PR_REAL", "PR_VAZIO", "PR_LOGICO", 
-                               "PR_CADEIA", "PR_INTEIRO", "PR_CARACTER", 
-                               "PR_ESCOLHA", "PR_CASO", "PR_CONTRARIO", 
-                               "PR_CONST", "PR_FUNCAO", "PR_RETORNE", "PR_PARA", 
-                               "PR_PARE", "PR_FACA", "PR_ENQUANTO", "PR_SE", 
-                               "PR_SENAO", "GAMBIARRA", "PR_FALSO", "PR_VERDADEIRO", 
-                               "ABRE_PAR", "FECHA_PAR", "ABRE_COL", "FECHA_COL", 
-                               "ABRE_CHA", "FECHA_CHA", "VIRGULA", "PONTO_VIRGULA", 
-                               "ATRIBUICAO", "OPERADOR_ARITMETICO", "OPERADOR_E", 
-                               "OPERADOR_OU", "OPERADOR_RELACIONAL", "DPONTOS", 
-                               "OPERADOR_NAO", "LOGICO", "ID", "INTEIRO", 
-                               "REAL", "CADEIA", "CARACTER", "ESPACO", "DIGIT_HEX", 
-                               "SEQ_ESC", "ESC_OCTAL", "ESC_UNICODE", "COMENTARIO" ];
-
-ivprog.prototype.grammarFileName = "ivprog.g4";
-
-
-
-exports.ivprog = ivprog;
-

+ 0 - 75
grammar/pt-br/ivprog.tokens

@@ -1,75 +0,0 @@
-PR_PROGRAMA=1
-PR_REAL=2
-PR_VAZIO=3
-PR_LOGICO=4
-PR_CADEIA=5
-PR_INTEIRO=6
-PR_CARACTER=7
-PR_ESCOLHA=8
-PR_CASO=9
-PR_CONTRARIO=10
-PR_CONST=11
-PR_FUNCAO=12
-PR_RETORNE=13
-PR_PARA=14
-PR_PARE=15
-PR_FACA=16
-PR_ENQUANTO=17
-PR_SE=18
-PR_SENAO=19
-GAMBIARRA=20
-ABRE_PAR=21
-FECHA_PAR=22
-ABRE_COL=23
-FECHA_COL=24
-ABRE_CHA=25
-FECHA_CHA=26
-VIRGULA=27
-PONTO_VIRGULA=28
-ATRIBUICAO=29
-OPERADOR_ARITMETICO=30
-OPERADOR_E=31
-OPERADOR_OU=32
-OPERADOR_RELACIONAL=33
-DPONTOS=34
-OPERADOR_NAO=35
-LOGICO=36
-ID=37
-INTEIRO=38
-REAL=39
-CADEIA=40
-CARACTER=41
-ESPACO=42
-COMENTARIO=43
-'programa'=1
-'real'=2
-'vazio'=3
-'logico'=4
-'cadeia'=5
-'inteiro'=6
-'caracter'=7
-'escolha'=8
-'caso'=9
-'contrario'=10
-'const'=11
-'funcao'=12
-'retorne'=13
-'para'=14
-'pare'=15
-'faca'=16
-'enquanto'=17
-'se'=18
-'senao'=19
-'('=21
-')'=22
-'['=23
-']'=24
-'{'=25
-'}'=26
-','=27
-';'=28
-'='=29
-'E'=31
-'OU'=32
-':'=34
-'nao'=35

+ 49 - 1
js/asa/ASA.js

@@ -3,4 +3,52 @@ export class ASA {
   constructor() {
     this.nos = [];
   }
-}
+}
+
+/*
+  Raiz(ASA)
+    |
+    |
+  DeclaraçõesGlobais + Funções
+
+  DeclaracaoGlobal
+    |
+    |
+  const? TIPO ID (= EAnd)?
+
+  Função
+    |
+    |
+  Declaracao => TIPO ID (= EAnd)?
+  Attribuição => ID = EAnd
+  IF, WHILE, SWITCH, FuncCall, RETURN
+
+  EAnd
+    |
+    |
+  EOR ( 'and' EAnd)?
+
+  EOR   => ENot ('or' EAnd)?
+
+  ENot  => 'not'? ER
+
+  ER    => E ((>=, <=, ==, >, <) E)?
+
+  E     => factor ((+, -) E)?
+
+  factor=> term ((*, /, %) factor)?
+
+  term  => literal || arrayAccess || FuncCall || ID || '('EAnd')'
+
+  arrayAccess
+    |
+    |
+  ID'['E']'('['E']')*
+
+  FuncCall
+    |
+    |
+  ID'('p.a')'
+
+  p.a => E (, p.a)?
+**/

+ 27 - 5
js/main.js

@@ -1,10 +1,32 @@
 import { InputStream, CommonTokenStream } from 'antlr4/index';
-import { pt_br } from '../grammar/';
+import Parsers from '../grammar/';
 
+const ivprogParser = Parsers['pt_br'];
 
-const input = "casa = 35;"; // Load string content
-const lexer = new pt_br(new InputStream(input));
+const input = `programa {
+  const real PI = 0x25ff
+  funcao inteiro casa(inteiro a, inteiro[][] b) {
+    cadeia s = "teste"
+    escreva(s)
+    se (a <= 5) {
+      a = 10;
+    } senao se (a > 5 E a < 10) {
+      a = 15
+    } senao {
+      a = 20
+    }
+  }
+}`;
+const lexer = new ivprogParser(new InputStream(input));
 const parser = new CommonTokenStream(lexer);
-console.log(parser.getTokens(0, 3, null));
-//const result = vist.visit(parser.programa());
+parser.fill();
+let i = 1;
+let token = null;
+while((token = parser.LT(i)).type !== ivprogParser.EOF) {
+  console.log(`${token.type}-${token.text}`);
+  console.log('\n')
+  i++;
+}
+
+