Come le altre risposte hanno detto, non si può creare un nuovo operatore - almeno, non senza alterare il lexer e parser sono integrati nel compilatore. Fondamentalmente, il compilatore è costruito per riconoscere che un singolo personaggio come <
o ?
, o una coppia come >>
o <=
, è un operatore e lo tratta in modo speciale; sa che i<5
è un'espressione piuttosto che un nome di variabile, ad esempio. Riconoscere un operatore come operatore è un processo separato dal decidere cosa fa realmente l'operatore, ed è molto più strettamente integrato nel compilatore - che è il motivo per cui è possibile personalizzare quest'ultimo ma non il primo.
Per le lingue che dispongono di un compilatore open source (come GCC), è possibile, in teoria, modificare il compilatore per riconoscere un nuovo operatore. Ma non sarebbe particolarmente facile, e inoltre, tutti avrebbero bisogno del tuo compilatore personalizzato per usare il tuo codice.
fonte
2009-06-24 18:47:53
nessun linguaggio hanno questa capacità ... – AminM
@JesonPark - Non è vero. F # ha come altri hanno sottolineato, e [C++ ha anche.] (Http: // StackOverflow.it/questions/1515399/can-you-make-custom-operators-in-c) [CoffeeScript] (http://coffeescript.org/) offre diversi nuovi operatori come zucchero sintattico per gli idiomi di JavaScript ed è così personalizzabile che tu potrebbe descriverlo come consentire operatori personalizzati. L'ultimo è un po 'complicato, visto che tecnicamente state estendendo la lingua. –
@JustinMorgan: come menzionato nell'articolo CodeProject _ "C++ supporta l'overloading dell'operatore, ma non è consentito creare i propri operatori" _ questa è l'emulazione !! – AminM