PRIMER COMMIT

This commit is contained in:
2026-05-07 18:01:06 -06:00
commit 3fc7562e98
15 changed files with 7903 additions and 0 deletions

406
zaplangLexer.g4 Normal file
View File

@@ -0,0 +1,406 @@
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)
;