Perchè DrRacket IDE considera alcuni identificatori come "simboli" e alcuni come "parole chiave"? Qual è la differenza?

5

Perché l'IDE DrRacket (tipo di schema) evidenzia alcuni degli identificatori come "parole chiave" (ad esempio define , lambda , send* ) e gli altri come "simboli" (identificatori definiti dall'utente, + , - , abs , send , send+ , ecc.)?

Sono particolarmente confuso dalla differenza tra send* e send+ . Per riferimento, ecco gli inizi delle loro definizioni:

(define-syntax (send* stx) ...

(define-syntax (send+ stx) ...

(È possibile che io non usi i termini "identificatore", "simbolo" e "parola chiave" completamente correttamente, ma questo è il modo in cui alcuni di essi sembrano essere usati nelle preferenze di DrRacket.)

A meno che non si tratti di un bug, deve essere spiegato dalla lingua "semantica", quindi ho deciso di chiedere qui.

    
posta Alexey 31.12.2013 - 11:07
fonte

1 risposta

3

DrRacket mantiene un elenco di parole chiave che comprende per l'indentazione automatica, che puoi trovare nelle Preferenze (sotto Editing- > Indenting). Se un identificatore è elencato come parola chiave per il rientro, DrRacket lo evidenzierà anche in modo diverso se lo schema di colore scelto differenzia le parole chiave dagli identificatori semplici.

Gli identificatori come + non sono evidenziati perché sono solo nomi di funzioni, non "forme speciali" come if e cond . D'altra parte, send+ non è evidenziato solo perché le parole chiave DrRacket predefinite non contengono tutti i moduli sintattici forniti da Racket.

    
risposta data 06.01.2014 - 12:37
fonte

Leggi altre domande sui tag