Basic Programming Grammar
Basic Programming Grammar
// Parser Rules
program
: statement+ EOF
;
statement
: variableDeclaration
| assignment
| ifStatement
| whileStatement
| printStatement
| readStatement // Nueva regla para lectura
| block
;
variableDeclaration
: TYPE IDENTIFIER ('=' expression)? ';'
;
assignment
: IDENTIFIER '=' expression ';'
;
ifStatement
: 'if' '(' condition ')' block ('else' block)?
;
whileStatement
: 'while' '(' condition ')' block
;
printStatement
: 'print' expression ';'
;
readStatement
: 'read' '(' TYPE ')' IDENTIFIER ';' // Nueva regla para lectura con tipo
;
block
: '{' statement* '}'
;
condition
: expression comparison expression
;
expression
: term (('+' | '-') term)*
;
term
: factor (('*' | '/') factor)*
;
factor
: NUMBER
| IDENTIFIER
| '(' expression ')'
| readExpression // Nueva regla para usar read en expresiones
;
readExpression
: 'read' '(' TYPE ')'
;
comparison
: '=='
| '!='
| '<'
| '>'
| '<='
| '>='
;
// Lexer Rules
TYPE: 'int' | 'float' | 'string';
IDENTIFIER: [a-zA-Z][a-zA-Z0-9]*;
NUMBER: [0-9]+ ('.' [0-9]+)?;
WS: [ \t\r\n]+ -> skip;
COMMENT: '//' ~[\r\n]* -> skip;