Qual è l'opposto di 'parse'? [chiuso]
-
02-07-2019 - |
Domanda
Ho una funzione, parseQuery, che analizza una query SQL in una rappresentazione astratta di quella query.
Sto per scrivere una funzione che accetta una rappresentazione astratta di una query e restituisce una stringa di query SQL.
Come dovrei chiamare la seconda funzione?
Soluzione
Penso che il verbo che vuoi sia 'componi'.
Altri suggerimenti
Il contrario di analisi è serializza
Nella terminologia del compilatore, l'opposto è "unparse". In particolare, l'analisi trasforma un flusso di token in alberi di sintassi astratti, mentre la non analisi trasforma alberi di sintassi astratti in un flusso di token.
Componi? Quando analizzi una query la spezzi nelle sue parti costitutive (token, ecc.), Il contrario comporterebbe la composizione delle parti in una query di stringa.
Per integrare la denominazione esistente, composeQuery sembra migliore.
Ma nel caso generale, l'opposto di parse è ǝsɹɐd
Vorrei usare uno di questi:
- ToString ()
- ToSQL ()
- Render ()
Penso che " serializzare " è probabilmente la parola che vuoi. Significa produrre una rappresentazione testuale di dati che possono essere esportati (e importati) dal programma.
L'antimo di 'analizza' è 'sintetizza'.
ToQueryString ()
Sicuramente rendering.
Lo chiamerei constructQuery.
genera o emette, possibilmente.
Solo per aggiungere alcune cose.
Sicuramente analizzare è una parola a due vie.
Puoi analizzare un abstract in una query.
Puoi analizzare una query in un abstract.
La domanda dovrebbe essere: come si chiama l'ultima parte del metodo, e poiché in questo caso stai analizzando un abstract per creare una query, lo chiameresti parseAbstract
.
Per rispondere alla domanda, l'analisi non ha alcun contrario.
generateQuery, forse? createQuery?
Scegli
- Genera
- Dump
- Serialize
- Emit
Ognuno di essi ha connotazioni leggermente diverse.
Forse prettyPrintQuery ?
componi, costruisci, genera, rendi, condensa, riduci, toSQL, toString a seconda della natura della classe e dei relativi operatori
Un compilatore tradizionale ha due parti: un parser e un generatore di codice.
Quindi puoi chiamarlo " Genera " ;. Certo, qui è un po 'diverso perché il compilatore non sta scrivendo il codice sorgente. (a meno che non sia un precompilatore).
Possibilmente Format (). o ToSQL () nella tua istanza?
deanalisi ()? Sto solo scherzando, andrei con toQueryString ()
appiattirsi?
L'oggetto query analizzato forse rappresenta una gerarchia di condizioni, che stai "appiattendo" di nuovo in una stringa di 1 dimensione.
Ma dato che stai passando da oggetto a stringa, usa semplicemente toString o toSQL () o qualcosa del genere. Inoltre, se l'hai progettata bene e stai utilizzando l'app giusta, puoi rinominarla in un secondo momento e semplicemente inserire elementi nei commenti su ciò che fa.
Direi serializzare e deserializzare, invece di analizzare e ...
Vorrei scegliere ToString (), poiché di solito è possibile nidificarli a catena (funzioni opposte, che consentono di passare da Class1 a Class2 e viceversa)
DateTime.Parse( DateTime.Parse( myDate.ToString() ).ToString() );
Serialize () sembra una buona scelta, ma ha già un contrario in Deserialize ().
Nel tuo scenario specifico, come altri hanno sottolineato, ToSql () è un'altra buona scelta.
Userei render
> a = 'html': { 'head': {'title': 'My Page'}, 'body': { 'h1': 'Hello World', 'p': 'This is a Paragraph' } }
> b = render(a)
> console.log(b)
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1>Hello World</h1>
<p>This is a Paragraph</p>
</body>
</html>
Che è IMHO, l'opposto di parse ()
> c = parse(b)
{ 'html': {
'head': {
'title': 'My Page'
}
'body': {
'h1': 'Hello World',
'p': 'This is a Paragraph'
}
}
+1 per Genera, ma controlla ciò che stai generando, ovvero GenerateSQL ()
Ho votato per "comporre" ma se non ti piace suggerirei anche "build"
Che dire di asSQL () o ancora di più asQuery ()?
INHO Serializza, sintetizza sono buone opzioni. Inoltre, come hai chiamato parseQuery, andrò con codeQuery
Di solito utilizzo " parse " come metodo di conversione e, pertanto, non riesco a trovare una parola opposta per "convertire". (non puoi "deconvertire" qualcosa, in quanto "non convertito" è un tipo di conversione).
pensando in questo modo, la soluzione migliore (per me) è avere due "analisi" metodi che ricevono argomenti diversi. Esempio (Java):
public class FooBarParser{
public Foo parse(Bar bar);
public Bar parse(Foo foo);
}
Deparse
Deparse deve analizzare, come:
- decompilare è compilare
- decomporre è comporre
- deserializzare è serializzare
- degroovy è groovy :);)
L'analisi / deparsing non è un cambio di struttura, ma una conversione. Conversione precisa tra testo equivalente e formati dell'albero di sintassi astratto, mantenendo tutte le relazioni e amp; struttura.
" Compose " significa cambiamento di struttura, quindi non è del tutto giusto. Suggerisce la combinazione da parti indipendenti separate (di solito per la prima volta). Proprio come "scomponi" suggerisce di suddividere in parti indipendenti. Cambiano forma, non solo formato.
Una rapida ricerca mostra il termine utilizzato in:
- Perl: http://perldoc.perl.org/B/Deparse.html
- R: http: //www.hep. by / GNU / r-patched / r-lang / R-lang_98.html
- Lisp comune: http://www.clisp.org/impnotes /dffi.html#c-type-parse
- PostgreSQL: http://doxygen.postgresql.org/deparse_8c.html
- Eclipse: http://www.eclipse.org/forums/index .php / t / 201883 /
- Unix Korn Shell: http://www.sourcecodebrowser.com/ksh/ 93tplus-p / deparse_8c.html