'Ayrıştırma'nın tersi nedir? [kapalı]


147

Bir SQL sorgusu, bu sorgunun soyut bir gösterimine ayrıştırır bir işlevi, parseQuery var.

Ben bir sorgu soyut bir temsil alır ve bir SQL sorgu dizesi döndüren bir işlev yazmak üzereyim.

İkinci fonksiyona ne demeliyim?


Stringify? JSON sınıfı bu terminolojiyi kullanır. JSON.parse ve karşı JSON.stringify için ?
Wilt

Yanıtlar:


200

Bence istediğiniz fiil 'oluşturmak'.



16
Yani, bir yıl sonra geri dönersek, 'daha iyi bir zıt olarak' topla 'ya da daha iyi bir işlev adı olarak' inşa 'yanıtını verirdim.
Joel Coehoorn

3
Oh vay, bu tarihleri ​​kontrol etmedim ... SO soru büyücülük!
Daniel Schaffer

err .. neden ToString ()? Int32, vb. Tarafından belirlenen standart gibi görünüyor
Joseph Kingry

1
Sorunun dile agnostik olduğunu görmeden önce önceki yorumumu yaptım. ToString (), .NET tarafından kabul edilen standart gibi görünüyor
Joseph Kingry


32

Derleyici terminolojisinde bunun tersi "ayrıktır". Özellikle ayrıştırma, bir belirteç akışını soyut sözdizimi ağaçlarına dönüştürürken ayrıştırılması soyut sözdizimi ağaçlarını bir belirteç akışına dönüştürür.


4
Bir arabayı çözmek gibi ...
Walter Tross


21

Mevcut adınızı tamamlamak için composeQuery en iyi şekilde görünür.

Ancak genel durumda, ayrışmanın tersi ǝsɹɐd


8
Bence bu ters, esrap olurdu
agusgambina

@agusgambina: aslında, bu mantıklı ... Bourne kabuğu hakkında düşünün: if ... fi case ... esac
shrike

20

Bunlardan birini kullanırdım:

  • .ToString ()
  • ToSQL ()
  • () Oluşturulma

17

"Serileştirmek" muhtemelen istediğiniz kelimedir. Programdan dışa aktarılabilen (ve içe aktarılabilen) verilerin metinsel bir temsilini oluşturmak anlamına gelir.


1
Serialize etmek de kolayca ikili sunum anlamına gelebilir.
Ben Hoffstein

1
Doğru. Parsimg tamamen harici verilerde solma ile ilgilidir ve serileştirme tamamen harici kullanımlar için veri üretmekle ilgilidir. Üretilen biçimin metin olması gerekmez, ancak çoğu zaman gereklidir.
Kyle Cronin

Görünüşe göre iPod'umun klavyesi beni daha iyi hale getiriyor. Bunun "ayrıştırma" ve "okuma" olması gerekiyordu.
Kyle Cronin




10

Ben buildtQuery derdim.


Kulağa mükemmel geliyor. Olan şey budur. "Kelimelere dökülebilecek" veriler toplayacaktır. Bir sorgu "derleyecekti".
Tgwizman

10

üretmek veya yaymak, muhtemelen.


1
Katılıyorum. rfc7159 (JSON), bölüm 9 ve 10'da "Ayrıştırıcı" ve "Üretici" yi karşıt olarak tanımlar.
mydoghasworms

10

Sadece bir şeyler eklemek için.

Kesinlikle ayrıştırma iki yönlü bir kelimedir.

Bir özeti sorguya ayrıştırabilirsiniz.

Bir sorguyu soyut olarak ayrıştırabilirsiniz.

Soru şu olmalıdır, yöntemin ikinci kısmını ne olarak adlandırırsınız ve bu örnekte, bir sorgu yapmak için bir özeti ayrıştırdığınız için onu çağırırsınız parseAbstract.

Soruyu cevaplamak için, ayrıştırmanın zıttı yoktur.



8

İstediğini al

  • üretmek
  • çöplük
  • serialize
  • Emit

Her birinin biraz farklı çağrışımları var.



7

sınıfın yapısına ve ilgili işleçlerine bağlı olarak, derleme, oluşturma, oluşturma, oluşturma, yoğunlaştırma, azaltma, toSQL, toString


6

Geleneksel bir derleyicinin iki bölümü vardır: ayrıştırıcı ve kod üreticisi.

Yani buna "Üret" diyebilirsiniz. Tabii ki burada biraz farklı çünkü derleyici kaynak kodu yazmıyor. (bir ön derleyici olmadığı sürece).




4

düzleştirmek?

Ayrıştırılmış sorgu nesnesi, belki de 1 boyutlu bir dizeye "düzleştirdiğiniz" bir koşul hiyerarşisini temsil eder.

Ancak nesneden dizeye gittiğiniz göz önüne alındığında, gerçekten sadece toString veya toSQL () veya bunun gibi bir şey kullanın. Ayrıca, iyi tasarladıysanız ve doğru uygulamayı kullanıyorsanız, daha sonra yeniden adlandırabilir ve sadece ne yaptığına dair yorumlara bir şeyler yapıştırabilirsiniz.



4

ToString () için giderim, çünkü onları genellikle zincirle iç içe geçirebilirsiniz (ters işlevler, Class1'den Class2'ye geçmenizi sağlar ve tersi)

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

Serialize () iyi bir seçim gibi görünüyor, ancak Deserialize () 'de zaten tam tersi.

Özel senaryoda, belirtildiği gibi, ToSql () iyi bir seçimdir.


4

Render kullanırdım

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

Hangi IMHO, ayrıştırmanın () tersi

> c = parse(b)

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

3

Generate için +1, ancak oluşturduğunuz öğeye yapıştırın, yani GenerateSQL ()


3

'Oluştur' için oy kullandım ama eğer beğenmezsen 'inşa et'



3

INHO Serialize, sentez iyi seçeneklerdir. Ayrıca, parseQuery adlı, codeQuery ile gideceğim


3

Ben genellikle bir dönüştürme yöntemi olarak "ayrıştırma" kullanın ve bu nedenle, ben "convert" için zıt bir kelime bulamıyorum. ("dönüştürülemez" dönüşümün kendisinin bir türü olduğu için bir şeyi "dönüştüremezsiniz").

bu şekilde düşünerek, (benim için) en iyi çözüm, farklı argümanlar alan iki “ayrıştırma” yöntemine sahip olmaktır. Örnek (Java):

public class FooBarParser{

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

2

deparse

Deparse şu şekilde ayrıştırmaktır:

  • derleme derlemektir
  • ayrıştırmak
  • serileştirmek serileştirmektir
  • degroovy harika olduğunu :);)

Ayrıştırma / ayrılma yapı değişikliği değil dönüşümdür. Tüm ilişkileri ve yapıyı koruyarak, eşdeğer metin ve soyut sözdizimi ağacı biçimleri arasında hassas dönüşüm.

"Oluştur" yapının değişmesi anlamına gelir, bu yüzden tam olarak doğru değildir. Ayrı bağımsız parçalardan (genellikle ilk kez) birleştirmeyi önerir. Tıpkı "ayrışmanın" bağımsız parçalara bölünmesini önerdiği gibi. Sadece biçimi değil, formu da değiştirirler.

Hızlı bir arama şovu terimin içinde kullanıldığı anlamına gelir:


Hızlı bir Github Kod arama terimi "deparse", hiçbir yaygın kullanım alanı bkz ortaya koymaktadır github.com/search?q=deparse - Ben R ekosistem bir terim olarak "deparse" düşünüyorum. - Benim için ayrışmanın tersi üretiliyor. In ayrıştırma , bir cümle ve girdi olarak bir gramere sahip ve sözdizimsel yapı ve / veya cümlenin semantik temsilidir ne olduğunu bilmek istiyorum. Gelen nesil , bir semantik temsilini ve girdi olarak bir gramere sahip ve uygun semantik temsil cümleler bulmak istiyoruz.
Jens
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.