Was ist das Gegenteil von "Parsen"? [geschlossen]


147

Ich habe eine Funktion, parseQuery, die eine SQL-Abfrage in eine abstrakte Darstellung dieser Abfrage analysiert.

Ich bin dabei, eine Funktion zu schreiben, die eine abstrakte Darstellung einer Abfrage verwendet und eine SQL-Abfragezeichenfolge zurückgibt.

Wie soll ich die zweite Funktion nennen?


Stringifizieren? Die JSON-Klasse verwendet diese Terminologie. JSON.parse und für das Gegenteil JSON.stringify ?
Wilt

Antworten:


200

Ich denke, das Verb, das Sie wollen, ist "komponieren".



16
Ich meine, wenn ich ein Jahr später zurückkomme, würde ich sogar "Assemble" als besseres Gegenteil oder "Build" als besseren Funktionsnamen beantworten.
Joel Coehoorn

3
Oh wow, ich habe die Daten dazu nicht überprüft ... SO frage Nekromantie!
Daniel Schaffer

äh .. warum nicht ToString ()? Scheint der Standard zu sein, der von Leuten wie Int32 usw. festgelegt wurde
Joseph Kingry

1
machte meinen vorherigen Kommentar, bevor ich sah, dass die Frage sprachunabhängig war. ToString () scheint der von .NET akzeptierte Standard zu sein
Joseph Kingry

79

Das Gegenteil von Parse ist Serialize


1
Dies ist aus meiner Sicht möglicherweise die nützlichste Antwort.
Joseph

8
Was ist mit "deserialisieren"?
Den

32

In der Compiler-Terminologie ist das Gegenteil "unparse". Insbesondere verwandelt das Parsen einen Stream von Token in abstrakte Syntaxbäume, während das Parsen abstrakte Syntaxbäume in einen Stream von Token verwandelt.


4
Wie ein Auto ausbrechen ...
Walter Tross

31

Komponieren? Wenn Sie eine Abfrage analysieren, teilen Sie sie in ihre Bestandteile (Token usw.) auf. In umgekehrter Reihenfolge werden die Teile zu einer Zeichenfolgenabfrage zusammengefasst.


21

Um Ihre bestehende Benennung zu ergänzen, sieht composeQuery am besten aus.

Im allgemeinen Fall ist das Gegenteil von parse jedoch ǝsɹɐd


8
Ich denke, das ist das Gegenteil, das Gegenteil wäre esrap
agusgambina

@agusgambina: Eigentlich macht das Sinn ... Denken Sie an Bourne Shell: wenn ... fi Fall ... esac
Shrike

20

Ich würde eines davon verwenden:

  • ToString ()
  • ToSQL ()
  • Machen()

17

Ich denke, "serialisieren" ist wahrscheinlich das Wort, das Sie wollen. Es bedeutet, eine Textdarstellung von Daten zu erstellen, die aus dem Programm exportiert (und importiert) werden können.


1
Serialisieren kann genauso gut eine binäre Darstellung bedeuten.
Ben Hoffstein

1
Wahr. Bei Parsimg dreht sich alles um das Einblenden externer Daten, und bei der Serialisierung geht es darum, Daten für externe Zwecke zu erstellen. Das erzeugte Format muss kein Text sein, ist es aber häufig.
Kyle Cronin

Anscheinend wird die Tastatur meines iPod besser als ich. Das soll "Parsen" und "Lesen" sein.
Kyle Cronin




10

Ich würde es constructQuery nennen.


Das klingt fast perfekt. Das würde passieren. Er würde Daten sammeln, die "in Worte gefasst" werden könnten. Er würde eine Abfrage "konstruieren".
Tgwizman

10

möglicherweise erzeugen oder emittieren.


1
Genau. rfc7159 (JSON) definiert in den Abschnitten 9 und 10 "Parser" und "Generator" als Gegensätze.
Mydoghaswürmer

10

Nur um ein paar Sachen hinzuzufügen.

Parse ist sicherlich ein Zwei-Wege-Wort.

Sie können eine Zusammenfassung in eine Abfrage analysieren.

Sie können eine Abfrage in ein Abstract analysieren.

Die Frage sollte sein, wie nennen Sie den letzten Teil der Methode, und weil Sie in diesem Fall eine Zusammenfassung analysieren, um eine Abfrage zu erstellen, die Sie aufrufen würden parseAbstract.

Um die Frage zu beantworten, hat das Parsen kein Gegenteil.


9

generierenQuery, möglicherweise? createQuery?


8

Treffen Sie Ihre Wahl

  • Generieren
  • Dump
  • Serialisieren
  • Emittieren

Sie haben jeweils leicht unterschiedliche Konnotationen.



7

komponieren, konstruieren, generieren, rendern, verdichten, reduzieren, toSQL, toString abhängig von der Art der Klasse und den zugehörigen Operatoren


6

Ein traditioneller Compiler besteht aus zwei Teilen: einem Parser und einem Codegenerator.

Man könnte es also "Generieren" nennen. Natürlich ist es hier etwas anders, weil der Compiler keinen Quellcode schreibt. (es sei denn, es ist ein Precompiler).




4

ebnen?

Das analysierte Abfrageobjekt stellt möglicherweise eine Bedingungshierarchie dar, die Sie zurück in eine eindimensionale Zeichenfolge "reduzieren".

Aber wenn Sie von Objekt zu Zeichenfolge wechseln, verwenden Sie einfach toString oder toSQL () oder ähnliches. Wenn Sie es gut gestaltet haben und die richtige App verwenden, können Sie es später umbenennen und einfach in die Kommentare einfügen, was es tut.



4

Ich würde mich für ToString () entscheiden, da Sie sie normalerweise kettenverschachteln können (entgegengesetzte Funktionen, mit denen Sie von Klasse1 zu Klasse2 und umgekehrt wechseln können).

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

Serialize () sieht nach einer guten Wahl aus, hat aber in Deserialize () bereits ein Gegenteil.

Wie bereits erwähnt, ist ToSql () in Ihrem speziellen Szenario eine weitere gute Wahl.


4

Ich würde rendern verwenden

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

Welches ist IMHO, das Gegenteil von parse ()

> c = parse(b)

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

3

+1 für Generieren, aber wenden Sie an, was Sie generieren, dh GenerateSQL ()


3

Ich habe für "Komponieren" gestimmt, aber wenn Ihnen das nicht gefällt, würde ich auch "Bauen" vorschlagen.



3

INHO Serialisieren, synthetisieren sind gute Optionen. Wie Sie parseQuery genannt haben, werde ich auch mit codeQuery gehen


3

Normalerweise verwende ich "parse" als Konvertierungsmethode und daher kann ich kein entgegengesetztes Wort für "convert" finden. (Sie können etwas nicht "dekonvertieren", da "nicht konvertieren" eine Art der Konvertierung selbst ist).

Wenn ich so denke, ist die beste Lösung (für mich), zwei "Analysemethoden" zu haben, die unterschiedliche Argumente erhalten. Beispiel (Java):

public class FooBarParser{

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

2

deparse

Deparse ist zu analysieren, als:

  • dekompilieren ist kompilieren
  • zerlegen heißt komponieren
  • Deserialisieren ist zu serialisieren
  • degroovy ist zu groovig :);)

Parsing / Deparsing ist keine Änderung der Struktur, sondern eine Konvertierung. Präzise Konvertierung zwischen äquivalentem Text und abstrakten Syntaxbaumformaten unter Beibehaltung aller Beziehungen und Strukturen.

"Verfassen" bedeutet eine Änderung der Struktur, ist also nicht ganz richtig. Es wird vorgeschlagen, (normalerweise zum ersten Mal) aus separaten unabhängigen Teilen zu kombinieren. Genau wie "Zerlegen" die Aufteilung in unabhängige Teile vorschlägt. Sie ändern die Form, nicht nur das Format.

In einer Schnellsuche wird der Begriff verwendet in:


Eine schnelle Suche nach Github-Code zeigt, dass der Begriff "deparse" nicht weit verbreitet ist. Siehe github.com/search?q=deparse - Ich denke, "deparse" ist ein Begriff aus dem R-Ökosystem. - Für mich erzeugt das Gegenteil von Parsen. Beim Parsen haben wir einen Satz und eine Grammatik als Eingabe und möchten wissen, wie die syntaktische Struktur und / oder die semantische Darstellung des Satzes ist. In der Generation haben wir eine semantische Darstellung und eine Grammatik als Eingabe und möchten Sätze finden, die der semantischen Darstellung entsprechen.
Jens A. Koch
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.