406 lines
3.8 KiB
ANTLR
406 lines
3.8 KiB
ANTLR
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)
|
|
; |