Quel est le contraire de «parse»? [fermé]

147

J'ai une fonction, parseQuery, qui analyse une requête SQL en une représentation abstraite de cette requête.

Je suis sur le point d'écrire une fonction qui prend une représentation abstraite d'une requête et renvoie une chaîne de requête SQL.

Comment dois-je appeler la deuxième fonction?

Simon
la source
Stringify? La classe JSON utilise cette terminologie. JSON.parse et pour le JSON.stringify opposé ?
Wilt

Réponses:

200

Je pense que le verbe que vous voulez est «composer».

Joël Coehoorn
la source
3
@Joel: twitter.com/shanselman/status/5024768993
Daniel Schaffer
16
Je veux dire, en revenant un an plus tard, je répondrais même «assembler» comme un meilleur contraire, ou «construire» comme un meilleur nom de fonction.
Joel Coehoorn
3
Oh wow, je n'ai pas vérifié les dates à ce sujet ... Alors question nécromancie!
Daniel Schaffer
err .. pourquoi pas ToString ()? Semble être la norme établie par les goûts de Int32, etc.
Joseph Kingry
1
fait mon commentaire précédent avant de voir que la question était indépendante de la langue. ToString () semble être la norme acceptée par .NET
Joseph Kingry
79

Le contraire de l' analyse est sérialiser

Yuval Adam
la source
1
C'est peut-être la réponse la plus utile de mon point de vue.
JosephDoggie
8
Qu'en est-il de la «désérialisation»?
Den
32

Dans la terminologie du compilateur, le contraire est "unparse". Plus précisément, l'analyse transforme un flux de jetons en arbres de syntaxe abstraites, tandis que l'annulation de l'analyse transforme les arbres de syntaxe abstraites en un flux de jetons.

Barry Kelly
la source
4
Comme pour décrocher une voiture ...
Walter Tross
31

Composer? Lors de l'analyse d'une requête, vous la divisez en ses parties constituantes (jetons, etc.), l'inverse serait de composer les parties en une requête de chaîne.

Michael Brown
la source
21

Pour compléter votre dénomination existante, composeQuery est plus esthétique .

Mais dans le cas général, l'opposé de l'analyse est ǝsɹɐd

danja
la source
8
Je pense que c'est l'inverse, le contraire serait esrap
agusgambina
@agusgambina: en fait, cela a du sens ... Pensez à Bourne shell: if ... fi case ... esac
shrike
20

J'utiliserais l'un de ceux-ci:

  • ToString ()
  • ToSQL ()
  • Rendre()
Sklivvz
la source
17

Je pense que "sérialiser" est probablement le mot que vous voulez. Cela signifie produire une représentation textuelle des données qui peuvent être exportées (et importées) à partir du programme.

Kyle Cronin
la source
1
Sérialiser peut tout aussi bien signifier une représentation binaire.
Ben Hoffstein le
1
Vrai. Parsimg consiste à atténuer les données externes, et la sérialisation consiste à produire des données à des fins externes. Le format produit n'est pas obligatoirement du texte, mais l'est souvent.
Kyle Cronin le
Apparemment, le clavier de mon iPod prend le dessus sur moi. C'est censé être «analyser» et «lire».
Kyle Cronin le
15

L'antonyme de «analyser» est «synthétiser».

Mike F
la source
4
synthétiser. bon choix.
MikeJ
12

Certainement Render.

David Mitchell
la source
10

Je l'appellerais constructQuery.

Seconde
la source
Cela semble presque parfait. C'est ce qui se passerait. Il rassemblerait des données qui pourraient être "mises en mots". Il "construirait" une requête.
Tgwizman
10

générer ou émettre, éventuellement.

DGentry
la source
1
Je suis d'accord. rfc7159 (JSON), dans les sections 9 et 10 définissent «Parser» et «Generator» comme des opposés.
mydoghasworms
10

Juste pour ajouter quelques trucs.

Parse est sûrement un mot bidirectionnel.

Vous pouvez analyser un résumé dans une requête.

Vous pouvez analyser une requête en un résumé.

La question devrait être, comment nommez-vous la dernière partie de la méthode, et parce que dans ce cas, vous analysez un résumé pour créer une requête que vous appelleriez parseAbstract.

Pour répondre à la question, l'analyse n'a pas de contraire.

Henry B
la source
9

generateQuery, peut-être? createQuery?

Dre
la source
8

Faites votre choix

  • produire
  • Déverser
  • Sérialiser
  • Émettre

Ils ont chacun des connotations légèrement différentes.

Mike Graham
la source
7

composer, construire, générer, rendre, condenser, réduire, toSQL, toString selon la nature de la classe et ses opérateurs associés

MikeJ
la source
6

Un compilateur traditionnel comprend deux parties: un analyseur et un générateur de code.

Vous pouvez donc l'appeler "Générer". Bien sûr, c'est un peu différent ici car le compilateur n'écrit pas de code source. (sauf si c'est un précompilateur).

Walter Mitty
la source
5

Eventuellement Format (). ou ToSQL () dans votre instance?

Omar Kooheji
la source
5

unParse ()? Je plaisante, j'irais avec toQueryString ()

Ben Hoffstein
la source
4

aplatir?

L'objet de requête analysé représente peut-être une hiérarchie de conditions, que vous «aplatissez» en une chaîne unidimensionnelle.

Mais étant donné que vous passez d'un objet à une chaîne, utilisez simplement toString ou toSQL () ou quelque chose comme ça. De plus, si vous l'avez bien conçue et que vous utilisez la bonne application, vous pouvez la renommer plus tard et simplement coller des éléments dans les commentaires sur ce qu'elle fait.

Josh
la source
4

Je dirais sérialiser et désérialiser, au lieu d'analyser et ...

Christophe Herreman
la source
4

Je préférerais ToString (), car vous pouvez généralement les imbriquer en chaîne (fonctions opposées, qui vous permettent de passer de Class1 à Class2 et vice-versa)

DateTime.Parse( DateTime.Parse( myDate.ToString() ).ToString() );

Serialize () semble être un bon choix, mais il a déjà un contraire dans Deserialize ().

Dans votre scénario spécifique, comme d'autres l'ont souligné, ToSql () est un autre bon choix.

Filini
la source
4

J'utiliserais le rendu

> 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>

Quel est IMHO, le contraire de parse ()

> c = parse(b)

{ 'html': {
    'head': {
        'title': 'My Page'
    }
    'body': {
        'h1': 'Hello World',
        'p': 'This is a Paragraph'
    }
}
Herman Junge
la source
3

+1 pour Generate, mais attachez-vous à ce que vous générez, c'est-à-dire GenerateSQL ()

Tom Lahti
la source
3

J'ai voté pour 'composer' mais si vous n'aimez pas cela, je suggérerais également 'construire'

Gars
la source
3

Qu'en est-il asSQL () ou encore plus asQuery ()?

Müge
la source
3

INHO Serialize, synthétiser sont de bonnes options. De plus, comme vous l'avez nommé parseQuery, j'irai avec codeQuery

mbmihura
la source
3

J'utilise généralement "parse" comme méthode de conversion et, par conséquent, je ne trouve pas de mot opposé pour "convertir". (vous ne pouvez pas "déconvertir" quelque chose, car "unconvert" est un type de conversion en soi).

en pensant de cette façon, la meilleure solution (pour moi) est d'avoir deux méthodes "parse" qui reçoivent des arguments différents. Exemple (Java):

public class FooBarParser{

    public Foo parse(Bar bar);
    public Bar parse(Foo foo); 
}
David Paulo
la source
2

déparer

Deparse consiste à analyser, comme:

  • décompiler c'est compiler
  • décomposer c'est composer
  • désérialiser c'est sérialiser
  • degroovy est trop groovy :);)

L'analyse / déparsage n'est pas un changement de structure, mais une conversion. Conversion précise entre le texte équivalent et les formats d'arbre de syntaxe abstraite, en maintenant toutes les relations et la structure.

"Composer" signifie un changement de structure, ce n'est donc pas tout à fait correct. Il suggère de combiner des parties indépendantes séparées (généralement pour la première fois). Tout comme "décomposer" suggère la division en parties indépendantes. Ils changent de forme, pas seulement de format.

Une recherche rapide montre le terme utilisé dans:

Glen Best
la source
Une recherche rapide dans le code Github révèle que le terme «deparse» n'a pas d'utilisation répandue, voir github.com/search?q=deparse - Je pense que «deparse» est un terme de l'écosystème R. - Pour moi, c'est l'opposé de l'analyse qui génère. Dans l' analyse syntaxique , nous avons une phrase et une grammaire en entrée et nous voulons savoir quelle est la structure syntaxique et / ou la représentation sémantique de la phrase. En génération , nous avons une représentation sémantique et une grammaire en entrée et nous voulons trouver des phrases qui correspondent à la représentation sémantique.
Jens A. Koch