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?


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



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


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.


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.


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


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


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.


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




10

Je l'appellerais constructQuery.


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.


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.



8

Faites votre choix

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

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



7

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


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




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.



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.


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

3

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


3

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



3

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


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); 
}

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:


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.