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


Stringify? Klasa JSON używa tej terminologii. JSON.parse i przeciwnie JSON.stringify ?
Wilt

Odpowiedzi:


200

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



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


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.


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.


21

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

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


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


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.


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,




10

Nazwałbym to constructQuery.


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


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.



8

Wybieraj

  • Generować
  • Wysypisko
  • Serializuj
  • Wydzielać

Każdy z nich ma nieco inne konotacje.



7

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


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




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.



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.


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


3

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



3

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


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

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:


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.