si avrebbe bisogno di un database di parole chiave con le caratteristiche di quelle parole chiave (definizione, strutture di controllo, ecc.), nonché un elenco di operatori, caratteri speciali che verrebbero utilizzati nella struttura linguistica (ad esempio (}
, *
, ||
) e un elenco di modelli di espressioni regolari
La soluzione migliore, per ridurre le iterazioni, sarebbe la ricerca su parole chiave/operatori/caratteri. Usando una formula spaziale/frequenza, avviare solo un t testo che può essere essere una lingua, in base al valore della formula restituita. Poi si parte per identificare quale lingua è e dove finisce.
Poiché molte lingue hanno un codice simile, potrebbe essere difficile. Quale lingua è la seguente?
for(i=0;i<10;i++){
// for loop
}
Senza il commento potrebbero essere molti diversi tipi di lingue. Con il commento, potresti almeno buttare fuori Perl, poiché usa il carattere di commento #
, ma potrebbe comunque essere JavaScript, C/C++, ecc.
Fondamentalmente, dovrai fare molte ricerche ricorsive per identificare il codice corretto, il che significa che se vuoi qualcosa di veloce, avrai bisogno di un mostro di un computer o di un cluster di computer. Inoltre, la formula di ricerca e la formula di identificazione dovranno essere ben rifinite, per ogni lingua.
L'identificazione del codice senza chiamate di libreria appropriate o include può essere impossibile, a meno che non sia elencato che potrebbe appartenere a molte lingue, per cui è necessaria una libreria di sintassi.
Quanto affidabile si desidera che questo sia (quanti falsi positivi o falsi negativi si desidera consentire)? Vuoi davvero sapere * se * c'è qualche codice sorgente da qualche parte nel tuo testo, o vuoi individuarlo e delinearlo dal resto del testo? –
Non penso che ci sia un modo magico per farlo, poiché il codice è intercalato con "testo normale", e probabilmente quasi impossibile essere al 100% giusto. (Ma mai dire mai). –
Ovviamente ci sarà un falso positivo. È impossibile evitarlo. Sì, voglio solo sapere se c'è qualche codice sorgente da qualche parte nel mio testo. Non ho bisogno di localizzarlo. Sapere è abbastanza per il mio caso. – Kerem