Qual è l'opposto di 'parse'? [chiuso]


147

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?


Stringa i? La classe JSON utilizza questa terminologia. JSON.parse e per l'opposto JSON.stringify ?
Wilt,

Risposte:


200

Penso che il verbo che vuoi sia "componi".



16
Voglio dire, tornando un anno dopo risponderei anche "assemblare" come un opposto migliore, o "costruire" come un nome di funzione migliore.
Joel Coehoorn,

3
Oh caspita, non ho controllato le date su questo ... Quindi domanda negromanzia!
Daniel Schaffer,

err .. perché non ToString ()? Sembra essere lo standard stabilito da artisti del calibro di Int32, ecc.
Joseph Kingry,

1
fatto il mio commento precedente prima di vedere che la domanda era indipendente dalla lingua. ToString () sembra essere lo standard accettato da .NET
Joseph Kingry,


32

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.


4
Mi piace rompere un'auto ...
Walter Tross,

31

Comporre? Quando si analizza una query, la si suddivide nelle sue parti costituenti (token, ecc.), Il contrario comporterebbe la composizione delle parti in una query di stringa.


21

A complemento della denominazione esistente, composeQuery sembra la migliore.

Ma nel caso generale, l'opposto di parse è ɹɐsɹɐd


8
Penso che sia il contrario, il contrario sarebbe esrap
Agusgambina,

@agusgambina: in realtà, questo ha senso ... Pensa alla shell Bourne: se ... caso fi ... esac
shrike,

20

Vorrei usare uno di questi:

  • Accordare()
  • ToSQL ()
  • Render ()

17

Penso che "serializzare" sia probabilmente la parola che vuoi. Significa produrre una rappresentazione testuale di dati che possono essere esportati (e importati) dal programma.


1
Serializzare può significare altrettanto facilmente una rappresentazione binaria.
Ben Hoffstein,

1
Vero. Parsimg si basa esclusivamente sullo sbiadimento dei dati esterni e la serializzazione riguarda la produzione di dati per usi esterni. Il formato prodotto non deve essere testo, ma spesso lo è.
Kyle Cronin,

Apparentemente la tastiera del mio iPod ha la meglio su di me. Dovrebbe essere "analisi" e "lettura".
Kyle Cronin,




10

Lo chiamerei constructQuery.


Sembra quasi perfetto. Questo è ciò che accadrebbe. Raccoglierebbe dati che potrebbero essere "messi in parole". Vorrebbe "costruire" una query.
Tgwizman,

10

generare o emettere, possibilmente.


1
Sono d'accordo. rfc7159 (JSON), nelle sezioni 9 e 10 definiscono "Parser" e "Generatore" come opposti.
mydoghasworms,

10

Solo per aggiungere alcune cose.

Sicuramente analizzare è una parola a doppio senso.

È possibile analizzare un abstract in una query.

È possibile 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, la chiameresti parseAbstract .

Per rispondere alla domanda, l'analisi non ha alcun contrario.



8

Fai la tua scelta

  • creare
  • cumulo di rifiuti
  • Serialize
  • Emettere

Ognuno di essi ha connotazioni leggermente diverse.



7

comporre, costruire, generare, rendere, condensare, ridurre, toSQL, toString a seconda della natura della classe e dei relativi operatori


6

Un compilatore tradizionale ha due parti: un parser e un generatore di codice.

Quindi potresti chiamarlo "Genera". Ovviamente, qui è un po 'diverso perché il compilatore non sta scrivendo il codice sorgente. (a meno che non sia un precompilatore).




4

appiattire?

L'oggetto query analizzato rappresenta forse una gerarchia di condizioni, che si sta "appiattendo" nuovamente in una stringa 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 usando l'app giusta, puoi rinominarla in un secondo momento e semplicemente inserire elementi nei commenti su ciò che fa.



4

Vorrei scegliere ToString (), poiché di solito è possibile eseguirne il nesting 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.


4

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, il contrario di parse ()

> c = parse(b)

{ 'html': {
    'head': {
        'title': 'My Page'
    }
    'body': {
        'h1': 'Hello World',
        'p': 'This is a Paragraph'
    }
}

3

+1 per Genera, ma controlla ciò che stai generando, ovvero GenerateSQL ()


3

Ho votato per "comporre" ma se non ti piace suggerirei anche "build"



3

INHO Serializza, sintetizza sono buone opzioni. Inoltre, come hai chiamato parseQuery, andrò con codeQuery


3

Di solito uso "analisi" 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 stesso).

pensando in questo modo, la soluzione migliore (per me) è avere due metodi di "analisi" che ricevono argomenti diversi. Esempio (Java):

public class FooBarParser{

    public Foo parse(Bar bar);
    public Bar parse(Foo foo); 
}

2

Deparse

Deparse deve analizzare, come:

  • decompilare è compilare
  • decomporre è comporre
  • deserializzare è serializzare
  • degroovy è groovy :);)

L'analisi / deparsing non è un cambiamento di struttura, ma una conversione. Conversione precisa tra testo equivalente e formati dell'albero di sintassi astratto, mantenendo tutte le relazioni e la struttura.

"Componi" significa cambiamento di struttura, quindi non è del tutto corretto. Suggerisce la combinazione da parti indipendenti separate (di solito per la prima volta). Proprio come "decomporre" suggerisce la divisione in parti indipendenti. Cambiano forma, non solo formato.

Una rapida ricerca mostra il termine utilizzato in:


Una rapida ricerca del codice Github rivela che il termine "deparse" non ha un uso diffuso, vedi github.com/search?q=deparse - Penso a "deparse" come un termine dell'ecosistema R. - Per me sta generando l'opposto dell'analisi. In analisi , abbiamo una frase e una grammatica come input e vogliamo sapere quale sia la struttura sintattica e / o la rappresentazione semantica della frase è. Nella generazione , abbiamo una rappresentazione semantica e una grammatica come input e vogliamo trovare frasi corrispondenti alla rappresentazione semantica.
Jens A. Koch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.