lexer grammar zaplangLexer; Bul : 'bul' ; Func : 'func' ; Fin //break : 'fin' ; Caso : 'caso' ; Carac : 'carac' ; Pordef //default : 'pordef' ; Hacer : 'hacer' ; Doble : 'doble' ; Sino : 'sino' ; Enum : 'enum' ; Falso : 'falso' ; Flot : 'flot' ; Por : 'por' ; Si : 'si' ; Ent : 'Ent' ; //Nulptr // : 'nullptr' // ; Retornar : 'retornar' ; ConFirma : 'cf' ; Estruct : 'estruct' ; Interrup : 'interrup' ; Verdadero : 'verdadero' ; SinFirma : 'sf' ; Vacio : 'vacio' ; Mientras // While : 'mientras' ; ParenIzq : '(' ; ParenDer : ')' ; CorcheteIzq : '[' ; CorcheteDer : ']' ; LlaveIzq : '{' ; LlaveDer : '}' ; MenorQue : '<' ; MenorOIgualQue : '<=' ; MayorQue : '>' ; MayorOIgualQue : '>=' ; Mas : '+' ; MasMas : '++' ; Menos : '-' ; MenosMenos : '--' ; Estrella : '*' ; Div : '/' ; Mod : '%' ; Y : '&' ; O : '|' ; DesplazIzq : '<<' ; DesplazDer : '>>' ; Xor : '^' ; Complemento : '~' ; YY : '&&' ; OO : '||' ; Not : '!' ; Pregunta : '?' ; DosPuntos : ':' ; PuntoYComa : ';' ; Coma : ',' ; Asignar : '=' ; // Operadores de asignación compuesta EstrellaAsignacion : '*=' ; DivAsignacion : '/=' ; ModAsignacion : '%=' ; MasAsignacion : '+=' ; MenosAsignacion : '-=' ; YAsignacion : '&=' ; OAsignacion : '|=' ; DesplazIzqAsignacion : '<<=' ; DesplazDerAsignacion : '>>=' ; XorAsignacion : '^=' ; Igual : '==' ; Diferente : '!=' ; Flecha : '->' ; Punto : '.' ; Identificador : IdentificadorSindigito (IdentificadorSindigito | Digito)* ; fragment IdentificadorSindigito : Nodigito ; fragment Nodigito : [a-zA-Z_] ; fragment Digito : [0-9] ; ConstanteEntera : ConstanteDecimal | ConstanteOctal | HexaConstanteDecimal ; fragment ConstanteDecimal : DigitoNoCero Digito* ; fragment ConstanteOctal : '0' DigitoOctal* ; fragment HexaConstanteDecimal : PrefijoHexadecimal DigitoHexadecimal+ ; fragment PrefijoHexadecimal : '0' [xX] ; fragment DigitoNoCero : [1-9] ; fragment DigitoOctal : [0-7] ; fragment DigitoHexadecimal : [0-9a-fA-F] ; fragment SufijoEntero : [uUlL]+ ; ConstanteFlotante : (Digito+ '.' Digito* | Digito* '.' Digito+) ([eE] [+-]? Digito+)? [fFdD]? | Digito+ [eE] [+-]? Digito+ [fFdD]? ; ConstanteCaracteres : '\'' CCharSequence '\'' ; fragment CCharSequence : CChar+ ; fragment CChar : ~['\\\r\n] | SecuenciaEscape ; fragment SecuenciaEscape : SecuenciaEscapeSimple | SecuenciaEscapeOctal | SecuenciaEscapeHexadecimal ; fragment SecuenciaEscapeSimple : '\\' ['"?abfnrtv\\] ; fragment SecuenciaEscapeOctal : '\\' DigitoOctal DigitoOctal? DigitoOctal? ; fragment SecuenciaEscapeHexadecimal : '\\x' DigitoHexadecimal+ ; CadenaLiteral : '"' SSecuenciaCaracteres? '"' ; fragment SSecuenciaCaracteres : SCaracter+ ; fragment SCaracter : ~["\\\r\n] | SecuenciaEscape | '\\\n' | '\\\r\n' ; Whitespace : [ \t]+ -> channel(HIDDEN) ; Newline : ('\r' '\n'? | '\n') -> channel(HIDDEN) ; BlockComment : '/*' .*? '*/' -> channel(HIDDEN) ; LineComment : '//' ~[\r\n]* -> channel(HIDDEN) ; LineCommentHash : '#' ~[\r\n]* -> channel(HIDDEN) ;