ivprog.g4 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. lexer grammar ivprog;
  2. PR_PROGRAMA : 'programa' ;
  3. PR_REAL : 'real' ;
  4. PR_VAZIO : 'vazio' ;
  5. PR_LOGICO : 'logico' ;
  6. PR_CADEIA : 'cadeia' ;
  7. PR_INTEIRO : 'inteiro' ;
  8. PR_CARACTER : 'caracter' ;
  9. PR_ESCOLHA : 'escolha' ;
  10. PR_CASO : 'caso' ;
  11. PR_CONTRARIO : 'contrario' ;
  12. PR_CONST : 'const' ;
  13. PR_FUNCAO : 'funcao' ;
  14. PR_RETORNE : 'retorne' ;
  15. PR_PARA : 'para' ;
  16. PR_PARE : 'pare' ;
  17. PR_FACA : 'faca' ;
  18. PR_ENQUANTO : 'enquanto' ;
  19. PR_SE : 'se' ;
  20. PR_SENAO : 'senao' ;
  21. GAMBIARRA : '.' |'á'| 'à'| 'ã'|'â'|'é'|'ê'|'í'|'ó'|'ô'|'õ'|'ú'|'ü'|'ç'|'Ä'|'À'|'Ã'|'Â'|'É'|'Ê'|'Ë'|'Ó'|'Ô'|'Õ'|'Ú'|'Ü'|'Ç'|'#'|'$'|'"'|'§'|'?'|'¹'|'²'|'³'|'£'|'¢'|'¬'|'ª'|'º'|'~'|'\''|'`'|'\\'|'@';
  22. fragment PR_FALSO : 'falso' ;
  23. fragment PR_VERDADEIRO : 'verdadeiro' ;
  24. ABRE_PAR: '(';
  25. FECHA_PAR: ')';
  26. ABRE_COL: '[';
  27. FECHA_COL: ']';
  28. ABRE_CHA: '{';
  29. FECHA_CHA: '}';
  30. VIRGULA: ',';
  31. PONTO_VIRGULA: ';';
  32. ATRIBUICAO: '=';
  33. OPERADOR_ARITMETICO: ('+'|'-'|'*'|'/'|'%');
  34. OPERADOR_E: 'E';
  35. OPERADOR_OU: 'OU';
  36. OPERADOR_RELACIONAL: ('>='|'=='|'<='|'>'|'<');
  37. DPONTOS: ':';
  38. OPERADOR_NAO : 'nao' ;
  39. LOGICO : PR_VERDADEIRO | PR_FALSO ;
  40. ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
  41. // ID_BIBLIOTECA : ID '.' ID;
  42. INTEIRO : '0'..'9'+ | ('0x'|'0X')(DIGIT_HEX)+ | ('0b'|'0B')('0'|'1')+;
  43. REAL : ('0'..'9')+ '.' ('0'..'9')+ ;
  44. CADEIA : '"' ( SEQ_ESC | ~('\\'|'"') )* '"' ;
  45. CARACTER : '\'' ( SEQ_ESC | ~('\''|'\\') ) '\'' ;
  46. ESPACO : ( ' ' | '\t' | '\r' | '\n') -> channel(HIDDEN) ;
  47. fragment DIGIT_HEX : ('0'..'9'|'a'..'f'|'A'..'F') ;
  48. fragment SEQ_ESC : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') | ESC_UNICODE | ESC_OCTAL ;
  49. fragment ESC_OCTAL : '\\' ('0'..'3') ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ;
  50. fragment ESC_UNICODE : '\\' 'u' DIGIT_HEX DIGIT_HEX DIGIT_HEX DIGIT_HEX ;
  51. COMENTARIO :
  52. ('//' ~('\n'|'\r')* '\r'? '\n' |
  53. '/*' .*? '*/') -> channel(HIDDEN)
  54. ;