feat(charka): EVALUATE TRUE y rangos WHEN ... THRU
Completa el EVALUATE con sus dos formas que faltaban. - IR: la rama WhenBranch pasa de values: Vec<Operand> a tests: Vec<WhenTest>, donde WhenTest es Value (igualdad), Range (WHEN lo THRU hi) o Cond (EVALUATE TRUE WHEN cond). - Parser: detecta EVALUATE TRUE y entonces cada WHEN parsea una condición; en modo valor reconoce WHEN lo THRU hi. - Codegen y shadow: una prueba Range se traduce a lo <= s <= hi; una Cond, a la condición directa. - Corpus: programa nuevo 14-clasifica (clasifica notas con rangos THRU y un EVALUATE TRUE). Verificado: intérprete sombra y crate compilado dan la misma salida. Tests: charka-ir 27, charka-codegen 21, charka-shadow 19. fmt + clippy limpios. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
* corpus charka — nivel 6: EVALUATE TRUE y rangos WHEN ... THRU
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CLASIFICA.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-NOTA PIC 9(3) VALUE 0.
|
||||
01 WS-I PIC 9(2) VALUE 0.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 5
|
||||
COMPUTE WS-NOTA = WS-I * 18
|
||||
EVALUATE WS-NOTA
|
||||
WHEN 0 THRU 59
|
||||
DISPLAY 'REPROBADO'
|
||||
WHEN 60 THRU 89
|
||||
DISPLAY 'APROBADO'
|
||||
WHEN OTHER
|
||||
DISPLAY 'EXCELENTE'
|
||||
END-EVALUATE
|
||||
END-PERFORM.
|
||||
PERFORM EVAL-TRUE.
|
||||
STOP RUN.
|
||||
EVAL-TRUE.
|
||||
EVALUATE TRUE
|
||||
WHEN WS-NOTA > 100
|
||||
DISPLAY 'ULTIMA NOTA ALTA'
|
||||
WHEN OTHER
|
||||
DISPLAY 'ULTIMA NOTA NO ALTA'
|
||||
END-EVALUATE.
|
||||
Reference in New Issue
Block a user