Apa kebalikan dari 'parse'? [Tutup]


147

Saya memiliki fungsi, parseQuery, yang mem-parsing query SQL ke representasi abstrak dari query itu.

Saya akan menulis sebuah fungsi yang mengambil representasi abstrak dari sebuah query dan mengembalikan sebuah string query SQL.

Apa yang harus saya sebut fungsi kedua?


Meregang? Kelas JSON menggunakan terminologi ini. JSON.parse dan sebaliknya JSON.stringify ?
Layu

Jawaban:


200

Saya pikir kata kerja yang Anda inginkan adalah 'menulis'.



16
Maksud saya, kembali setahun kemudian saya bahkan akan menjawab 'berkumpul' sebagai lawan yang lebih baik, atau 'membangun' sebagai nama fungsi yang lebih baik.
Joel Coehoorn

3
Oh wow, saya tidak memeriksa tanggal ini ... SANGAT necromancy pertanyaan!
Daniel Schaffer

err .. kenapa tidak ToString ()? Tampaknya menjadi standar yang ditetapkan oleh orang-orang seperti Int32, dll
Joseph Kingry

1
membuat komentar saya sebelumnya sebelum melihat bahwa pertanyaannya adalah bahasa-agnostik. ToString () tampaknya menjadi standar yang diterima oleh .NET
Joseph Kingry


32

Dalam terminologi kompiler, kebalikannya adalah "unparse". Secara khusus, parsing mengubah aliran token menjadi pohon sintaksis abstrak, sementara parsing mengubah pohon sintaksis abstrak menjadi aliran token.


4
Seperti untuk uncrash mobil ...
Walter Tross

31

Menyusun? Saat mem-parsing kueri Anda memecahnya menjadi bagian-bagian penyusunnya (token, dll.), Kebalikannya akan menyusun bagian-bagian menjadi kueri string.


21

Untuk melengkapi penamaan yang ada, composeQuery terlihat terbaik.

Tetapi dalam kasus umum, kebalikan dari parse adalah ǝsɹɐd


8
Saya pikir itu kebalikannya, kebalikannya adalah esrap
agusgambina

@agusgambina: sebenarnya, ini masuk akal ... Pikirkan tentang Bourne shell: if ... fi case ... esac
shrike

20

Saya akan menggunakan salah satu dari ini:

  • ToString ()
  • ToSQL ()
  • Memberikan()

17

Saya pikir "cerita bersambung" mungkin kata yang Anda inginkan. Ini berarti menghasilkan representasi data tekstual yang dapat diekspor (dan diimpor) dari program.


1
Serialize bisa dengan mudah berarti representasi biner.
Ben Hoffstein

1
Benar. Parsimg adalah semua tentang memudar dalam data eksternal, dan serialisasi adalah tentang menghasilkan data untuk penggunaan eksternal. Format yang dihasilkan tidak harus berupa teks, tetapi sering kali harus.
Kyle Cronin

Tampaknya keyboard iPod saya menjadi lebih baik dari saya. Itu seharusnya "parsing" dan "membaca".
Kyle Cronin




10

Saya akan menyebutnya constructQuery.


Kedengarannya hampir sempurna. Itulah yang akan terjadi. Dia akan mengumpulkan data yang bisa "dimasukkan ke dalam kata-kata". Dia akan "membangun" kueri.
Tgwizman

10

menghasilkan atau memancarkan, mungkin.


1
Saya setuju. rfc7159 (JSON), di bagian 9 dan 10 mendefinisikan "Parser" dan "Generator" sebagai lawan.
mydoghasworms

10

Hanya untuk menambahkan beberapa hal.

Tentunya parse adalah kata dua arah.

Anda bisa menguraikan abstrak ke dalam kueri.

Anda dapat menguraikan kueri menjadi abstrak.

Pertanyaannya seharusnya, apa yang Anda beri nama bagian terakhir dari metode ini, dan karena dalam hal ini Anda mengurai abstrak untuk membuat kueri yang Anda sebut dengan itu parseAbstract.

Untuk menjawab pertanyaan, penguraian tidak memiliki kebalikan.



8

Ambil pilihanmu

  • Menghasilkan
  • Membuang
  • Serialkan
  • Memancarkan

Mereka masing-masing memiliki konotasi yang sedikit berbeda.



7

menyusun, membuat, membuat, menyajikan, menyingkat, mengurangi, toSQL, toString tergantung pada sifat kelas dan operator terkait


6

Kompiler tradisional memiliki dua bagian: parser dan generator kode.

Jadi Anda bisa menyebutnya "Hasilkan". Tentu saja, ini sedikit berbeda di sini karena kompiler tidak menulis kode sumber. (kecuali itu adalah precompiler).




4

meratakan?

Objek kueri yang diuraikan mungkin mewakili hierarki kondisi, yang Anda "ratakan" menjadi string 1 dimensi.

Tetapi mengingat bahwa Anda beralih dari objek ke string, gunakan saja toString atau toSQL () atau sesuatu seperti itu. Selain itu, jika Anda mendesainnya dengan baik dan menggunakan aplikasi yang tepat, Anda dapat mengganti nama nanti dan menempelkannya di komentar tentang apa yang dilakukannya.



4

Saya akan memilih ToString (), karena Anda biasanya dapat membuat sarang rantai (fungsi berlawanan, yang memungkinkan Anda beralih dari Class1 ke Class2 dan sebaliknya)

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

Serialize () sepertinya pilihan yang bagus, tetapi sudah ada kebalikannya di Deserialize ().

Dalam skenario spesifik Anda, seperti yang ditunjukkan lainnya, ToSql () adalah pilihan lain yang baik.


4

Saya akan menggunakan render

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

Yang merupakan IMHO, kebalikan dari parse ()

> c = parse(b)

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

3

+1 untuk Generate, tetapi tempelkan pada apa yang Anda hasilkan, yaitu GenerateSQL ()


3

Saya memilih 'menulis' tetapi jika Anda tidak suka saya juga akan menyarankan 'membangun'


3

Bagaimana dengan asSQL () atau bahkan lebih asQuery ()?


3

INHO Serialize, synthesize adalah pilihan yang bagus. Juga, seperti yang Anda beri nama parseQuery, saya akan pergi dengan codeQuery


3

Saya biasanya menggunakan "parse" sebagai metode konversi dan, oleh karena itu, saya tidak dapat menemukan kata yang berlawanan untuk "convert". (Anda tidak dapat "membatalkan" sesuatu, karena "membatalkan konversi" adalah jenis konversi itu sendiri).

berpikir seperti ini, solusi terbaik (bagi saya) adalah memiliki dua metode "parse" yang menerima argumen yang berbeda. Contoh (Jawa):

public class FooBarParser{

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

2

kasar

Deparse adalah untuk menguraikan, seperti:

  • dekompilasi adalah mengkompilasi
  • membusuk adalah untuk menulis
  • deserialize adalah serialisasi
  • degroovy adalah ke groovy :);)

Parsing / deparsing bukan perubahan struktur, tetapi konversi. Konversi yang tepat antara teks setara dan format pohon-sintaksis abstrak, mempertahankan semua hubungan & struktur.

"Menulis" berarti perubahan struktur, jadi tidak tepat. Ini menyarankan menggabungkan dari bagian-bagian independen yang terpisah (biasanya untuk pertama kalinya). Sama seperti "membusuk" menyarankan pemisahan menjadi bagian-bagian independen. Mereka mengubah bentuk, bukan hanya format.

Acara pencarian cepat adalah istilah yang digunakan dalam:


Pencarian Kode Github cepat mengungkapkan bahwa istilah "deparse" tidak memiliki penggunaan luas, lihat github.com/search?q=deparse - Saya menganggap "deparse" sebagai istilah dari ekosistem R. - Bagi saya kebalikan dari parsing adalah menghasilkan. Dalam parsing , kita memiliki kalimat dan tata bahasa sebagai input dan ingin tahu apa struktur sintaksis dan / atau representasi semantik dari kalimat itu. Dalam generasi , kami memiliki representasi semantik dan tata bahasa sebagai masukan dan ingin menemukan kalimat yang sesuai dengan representasi semantik.
Jens A. Koch
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.