Jakie jest przeciwieństwo „parsowania”? [Zamknięte]

147

Mam funkcję parseQuery, która analizuje zapytanie SQL w abstrakcyjną reprezentację tego zapytania.

Mam zamiar napisać funkcję, która pobiera abstrakcyjną reprezentację zapytania i zwraca ciąg zapytania SQL.

Jak nazwać drugą funkcję?

Simon
źródło
Stringify? Klasa JSON używa tej terminologii. JSON.parse i przeciwnie JSON.stringify ?
Wilt

Odpowiedzi:

200

Myślę, że żądany czasownik to „komponować”.

Joel Coehoorn
źródło
3
@Joel: twitter.com/shanselman/status/5024768993
Daniel Schaffer
16
To znaczy, wracając rok później, odpowiadałbym nawet „assemble” jako lepsze przeciwieństwo lub „build” jako lepszą nazwę funkcji.
Joel Coehoorn
3
Och, nie sprawdziłem dat tego ... WIĘC pytanie o nekromancję!
Daniel Schaffer
err .. dlaczego nie ToString ()? Wydaje się, że jest to standard wyznaczony przez Int32, itp.
Joseph Kingry
1
napisałem mój poprzedni komentarz, zanim zobaczyłem, że pytanie było niezależne od języka. ToString () wydaje się być standardem akceptowanym przez .NET
Joseph Kingry
79

Przeciwieństwem parsowania jest serializacja

Yuval Adam
źródło
1
Z mojej perspektywy może to być najbardziej przydatna odpowiedź.
JosephDoggie,
8
A co z „deserializacją”?
Den
32

W terminologii kompilatora przeciwieństwem jest „nieporównywalny”. W szczególności analizowanie zamienia strumień tokenów w abstrakcyjne drzewa składni, podczas gdy cofanie analizy przekształca abstrakcyjne drzewa składniowe w strumień tokenów.

Barry Kelly
źródło
4
Lubię rozbić samochód ...
Walter Tross,
31

Komponować? Podczas analizowania zapytania dzieli się je na części składowe (tokeny itp.). Odwrotną czynnością byłoby komponowanie tych części w zapytanie łańcuchowe.

Michael Brown
źródło
21

Aby uzupełnić istniejące nazewnictwo, composeQuery wygląda najlepiej.

Ale w ogólnym przypadku przeciwieństwem parsowania jest ǝsɹɐd

danja
źródło
8
Myślę, że to odwrotność, odwrotnie byłoby esrap
agusgambina
@agusgambina: właściwie, to ma sens ... Pomyśl o powłoce Bourne'a: ​​jeśli ... fi case ... esac
shrike
20

Użyłbym jednego z tych:

  • ToString ()
  • ToSQL ()
  • Renderowanie()
Sklivvz
źródło
17

Myślę, że „serializacja” to prawdopodobnie słowo, którego potrzebujesz. Oznacza to tworzenie tekstowej reprezentacji danych, które można eksportować (i importować) z programu.

Kyle Cronin
źródło
1
Serializacja może równie łatwo oznaczać reprezentację binarną.
Ben Hoffstein,
1
Prawdziwe. Parsimg polega na zanikaniu danych zewnętrznych, a serializacja polega na tworzeniu danych do użytku zewnętrznego. Utworzony format nie musi być tekstem, ale często jest.
Kyle Cronin,
Najwyraźniej klawiatura mojego iPoda jest coraz lepsza. To ma być „analizowanie” i „czytanie”.
Kyle Cronin,
15

Antonimem „analizować” jest „syntetyzować”.

Mike F.
źródło
4
syntetyzować. dobry wybór.
MikeJ
12

Zdecydowanie renderuj.

David Mitchell
źródło
10

Nazwałbym to constructQuery.

Sek
źródło
Brzmi prawie idealnie. Tak by się działo. Zbierałby dane, które można „ubrać w słowa”. „Konstruował” zapytanie.
Tgwizman
10

być może generują lub emitują.

DGentry
źródło
1
Zgadzam się. rfc7159 (JSON), w sekcjach 9 i 10 definiują „Parser” i „Generator” jako przeciwieństwa.
mydoghasworms
10

Po prostu dodam trochę rzeczy.

Z pewnością parsowanie jest słowem dwukierunkowym.

Możesz przetworzyć streszczenie w zapytanie.

Zapytanie można przetworzyć w streszczenie.

Pytanie powinno brzmieć, jak nazwiesz drugą część metody, a ponieważ w tym przypadku analizujesz streszczenie, aby utworzyć zapytanie, które nazwałbyś parseAbstract .

Aby odpowiedzieć na to pytanie, analizowanie nie ma odwrotności.

Henry B.
źródło
9

GenerujQuery, prawdopodobnie? createQuery?

Dre
źródło
8

Wybieraj

  • Generować
  • Wysypisko
  • Serializuj
  • Wydzielać

Każdy z nich ma nieco inne konotacje.

Mike Graham
źródło
7

komponuj, konstruuj, generuj, renderuj, kondensuj, redukuj, toSQL, toString w zależności od charakteru klasy i powiązanych z nią operatorów

MikeJ
źródło
6

Tradycyjny kompilator składa się z dwóch części: parsera i generatora kodu.

Możesz więc nazwać to „Generuj”. Oczywiście jest tu trochę inaczej, ponieważ kompilator nie pisze kodu źródłowego. (chyba że jest to prekompilator).

Walter Mitty
źródło
5

Prawdopodobnie Format (). lub ToSQL () w Twojej instancji?

Omar Kooheji
źródło
5

unParse ()? Żartuję, poszedłbym z toQueryString ()

Ben Hoffstein
źródło
4

spłaszczyć?

Przeanalizowany obiekt zapytania prawdopodobnie reprezentuje hierarchię warunków, którą „spłaszczasz” z powrotem do jednowymiarowego ciągu.

Ale biorąc pod uwagę, że przechodzisz od obiektu do łańcucha, naprawdę użyj po prostu toString lub toSQL () lub czegoś w tym rodzaju. Poza tym, jeśli dobrze ją zaprojektowałeś i używasz odpowiedniej aplikacji, możesz zmienić jej nazwę później i po prostu wstawiać rzeczy w komentarzach na temat tego, co robi.

Josh
źródło
4

Powiedziałbym serializować i deserializować, zamiast analizować i ...

Christophe Herreman
źródło
4

Wybrałbym ToString (), ponieważ zwykle można je zagnieżdżać łańcuchowo (przeciwne funkcje, które pozwalają przejść z klasy 1 do klasy 2 i odwrotnie)

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

Serialize () wygląda na dobry wybór, ale ma już przeciwieństwo w Deserialize ().

W twoim konkretnym scenariuszu, jak wskazali inni, ToSql () jest kolejnym dobrym wyborem.

Filini
źródło
4

Użyłbym renderowania

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

Co to jest IMHO, przeciwieństwo parsowania ()

> c = parse(b)

{ 'html': {
    'head': {
        'title': 'My Page'
    }
    'body': {
        'h1': 'Hello World',
        'p': 'This is a Paragraph'
    }
}
Herman Junge
źródło
3

+1 dla Generate, ale skup się na tym, co generujesz, tj. GenerateSQL ()

Tom Lahti
źródło
3

Głosowałem za `` komponuj '', ale jeśli ci się to nie podoba, sugeruję również `` buduj ''

Chłopak
źródło
3

A co z asSQL () lub jeszcze bardziej z asQuery ()?

Müge
źródło
3

INHO Serialize, synthesize to dobre opcje. Ponadto, tak jak nazwałeś parseQuery, pójdę z codeQuery

mbmihura
źródło
3

Zwykle używam „parsowania” jako metody konwersji i dlatego nie mogę znaleźć przeciwnego słowa dla „konwersji”. (nie można „dekonwertować” czegoś, ponieważ „niekonwertowanie” jest rodzajem konwersji).

myśląc w ten sposób, najlepszym rozwiązaniem (dla mnie) jest posiadanie dwóch metod „parsowania”, które otrzymują różne argumenty. Przykład (Java):

public class FooBarParser{

    public Foo parse(Bar bar);
    public Bar parse(Foo foo); 
}
David Paulo
źródło
2

deparse

Deparse jest do analizy, jak:

  • decompile to kompilacja
  • dekomponować to komponować
  • deserializacja to serializacja
  • degroovy jest za fajne :);)

Parsowanie / deparowanie nie jest zmianą struktury, ale konwersją. Precyzyjna konwersja między równoważnym tekstem i abstrakcyjnym drzewem składni, zachowując wszystkie relacje i strukturę.

„Komponuj” oznacza zmianę struktury, więc nie jest do końca poprawne. Sugeruje połączenie z oddzielnych niezależnych części (zwykle po raz pierwszy). Tak jak „dekompozycja” sugeruje podział na niezależne części. Zmieniają formę, a nie tylko format.

Szybki program wyszukiwania to termin używany w:

Glen Best
źródło
Szybkie wyszukiwanie w Kodzie Github ujawnia, że ​​termin „deparse” nie ma powszechnego zastosowania, zobacz github.com/search?q=deparse - myślę o „deparse” jako o terminie z ekosystemu R. - Dla mnie generowanie jest przeciwieństwem parsowania. Podczas analizowania mamy zdanie i gramatykę jako dane wejściowe i chcemy wiedzieć, jaka jest struktura składniowa i / lub reprezentacja semantyczna zdania. W generowaniu mamy reprezentację semantyczną i gramatykę jako dane wejściowe i chcemy znaleźć zdania, które odpowiadają reprezentacji semantycznej.
Jens A. Koch