\ ========================================
\ char - Solo in MODALITÀ INTERPRETATIVA
\ ========================================
\ Esempi fuori dalle definizioni:
char A . \ Stampa: 65
char X emit \ Stampa: X
char * emit \ Stampa: *
\ ========================================
\ [char] - Solo DENTRO LE DEFINIZIONI
\ ========================================
\ Esempi dentro le definizioni:
: stampa-A [char] A emit ;
stampa-A \ Stampa: A
: stampa-B [char] B emit ;
stampa-B \ Stampa: B
: stampa-X [char] X emit ;
stampa-X \ Stampa: X
\ Confronto caratteri
: e-una-A? ( c -- flag )
[char] A = ;
65 e-una-A? . \ Stampa: -1 (vero)
\ Spazio
: e-uno-spazio? ( c -- flag )
[char] = ; \ Nota: spazio dopo [char]
32 e-uno-spazio? . \ Stampa: -1
\ Menu
: processa-scelta ( c -- )
dup
[char] Q
= if .
" Uscita" drop
exit then
dup
[char] S
= if .
" Salva" drop
exit then
drop ." Non valida" ;
\ Chiamata in modalità interpretativa:
char Q processa-scelta \ Stampa: Uscita
\ Delimitatori
: delimitatori
[char] , emit space
[char] ; emit space
[char] : emit ;
delimitatori \ Stampa: , ; :
\ Simboli
: stampa-simboli
[char] * emit space
[char] + emit ;
stampa-simboli \ Stampa: * +
\ Definizione con [char]
: controlla-virgola ( c -- flag )
[char] , = ;
\ Uso in modalità interpretativa con char
char , controlla-virgola . \ Stampa: -1 (vero)
char ; controlla-virgola . \ Stampa: 0 (falso)
\ Altro esempio
: emetti-asterisco
[char] * emit ;
emetti-asterisco \ Stampa: *