ตรงกันข้ามกับ 'แยกวิเคราะห์' คืออะไร? [ปิด]


147

ฉันมีฟังก์ชั่น parseQuery ที่แยกวิเคราะห์แบบสอบถาม SQL เป็นตัวแทนนามธรรมของแบบสอบถามนั้น

ฉันกำลังจะเขียนฟังก์ชั่นที่นำเสนอนามธรรมของแบบสอบถามและส่งกลับสตริงแบบสอบถาม SQL

ฉันควรเรียกฟังก์ชันที่สองว่าอะไร


stringify? คลาส JSON ใช้คำศัพท์นี้ JSON.parseและตรงข้ามJSON.stringify ?
Wilt

คำตอบ:


200

ฉันคิดว่าคำกริยาที่คุณต้องการคือ 'เขียน'



16
ฉันหมายถึงการกลับมาอีกหนึ่งปีต่อมาฉันก็จะตอบ 'รวมตัว' ในทางตรงกันข้ามที่ดีกว่าหรือ 'สร้าง' เป็นชื่อฟังก์ชันที่ดีกว่า
Joel Coehoorn

3
โอ้ว้าวฉันไม่ได้ตรวจสอบวันที่นี้ ... ดังนั้นคำถามเกี่ยวกับเวทมนตร์!
Daniel Schaffer

เอ่อ .. ทำไมไม่ ToString ()? น่าจะเป็นชุดมาตรฐานโดยชอบของ Int32 ฯลฯ
โจเซฟ Kingry

1
ทำให้ความคิดเห็นก่อนหน้าของฉันก่อนที่จะเห็นว่าคำถามนี้เป็นผู้ไม่เชื่อเรื่องภาษา ToString () น่าจะเป็นมาตรฐานที่ยอมรับโดย. NET
Joseph Kingry

79

ตรงกันข้ามของการแยกวิเคราะห์เป็นอนุกรม


1
นี่อาจเป็นคำตอบที่มีประโยชน์ที่สุดจากมุมมองของฉัน
JosephDoggie

8
สิ่งที่เกี่ยวกับ 'deserialize'
Den

32

ในคำศัพท์คอมไพเลอร์ตรงกันข้ามคือ "unparse" โดยเฉพาะการแยกวิเคราะห์เปลี่ยนโทเค็นสตรีมเป็นต้นไม้ไวยากรณ์นามธรรมในขณะที่การแยกวิเคราะห์เปลี่ยนต้นไม้ไวยากรณ์นามธรรมเป็นสตรีมของโทเค็น


4
ชอบที่จะล้างรถ ...
Walter Tross

31

เขียน? เมื่อแยกเคียวรีที่คุณแบ่งออกเป็นส่วนที่เป็นส่วนประกอบ (โทเค็น ฯลฯ ) การย้อนกลับจะเป็นการเขียนส่วนต่างๆลงในเคียวรีสตริง


21

เพื่อเสริมการตั้งชื่อที่มีอยู่composeQueryดูดีที่สุด

แต่ในกรณีทั่วไปตรงกันข้ามของการแยกวิเคราะห์คือǝsɹɐd


8
ฉันคิดว่านั่นคือสิ่งที่ตรงกันข้ามสิ่งที่ตรงกันข้ามคือ esrap
agusgambina

@agusgambina: อันที่จริงแล้วมันสมเหตุสมผล ... ลองนึกถึง Bourne shell: ถ้า ... fi case ... esac
shrike


17

ฉันคิดว่า "เป็นอันดับ" อาจเป็นคำที่คุณต้องการ มันหมายถึงการสร้างการแสดงข้อความของข้อมูลที่สามารถส่งออก (และนำเข้า) จากโปรแกรม


1
ทำให้เป็นอันดับอาจหมายถึงการเป็นตัวแทนไบนารีได้อย่างง่ายดาย
Ben Hoffstein

1
จริง Parsimg นั้นเกี่ยวกับการซีดจางของข้อมูลภายนอกและการทำให้เป็นอนุกรมนั้นเกี่ยวกับการผลิตข้อมูลสำหรับการใช้งานภายนอก รูปแบบที่ผลิตไม่จำเป็นต้องเป็นข้อความ แต่มักจะเป็น
Kyle Cronin

เห็นได้ชัดว่าคีย์บอร์ดของ iPod ของฉันเริ่มดีขึ้นแล้ว ที่ควรจะเป็น "การแยกวิเคราะห์" และ "การอ่าน"
Kyle Cronin

15

คำตรงข้ามของ 'วิเคราะห์' คือ 'สังเคราะห์'


4
สังเคราะห์. ทางเลือกที่ดี.
MikeJ



10

ฉันจะเรียกมันว่าสร้างแบบสอบถาม


ฟังดูเกือบจะสมบูรณ์แบบแล้ว นั่นคือสิ่งที่จะเกิดขึ้น เขาจะรวบรวมข้อมูลที่สามารถ "ใส่คำ" เขาจะ "สร้าง" แบบสอบถาม
Tgwizman

10

สร้างหรือปล่อยอาจเป็นไปได้


1
ฉันเห็นด้วย. rfc7159 (JSON) ในส่วนที่ 9 และ 10 กำหนด "Parser" และ "Generator" เป็นสิ่งที่ตรงกันข้าม
mydoghasworms

10

เพียงเพิ่มบางสิ่ง

การแยกคำแน่นอนเป็นคำสองทาง

คุณสามารถแยกบทคัดย่อเป็นแบบสอบถาม

คุณสามารถแยกแบบสอบถามเป็นนามธรรม

คำถามควรเป็นสิ่งที่คุณตั้งชื่อส่วนหลังของวิธีการและเพราะในกรณีนี้คุณจะแยกบทคัดย่อเพื่อทำแบบสอบถามที่คุณเรียกว่า parseAbstractคำถามที่ควรจะทำในสิ่งที่คุณชื่อส่วนหลังของวิธีการและเนื่องจากในกรณีนี้คุณกำลังแยกนามธรรมที่จะทำให้แบบสอบถามที่คุณต้องการเรียกมันว่า

ในการตอบคำถามการวิเคราะห์คำไม่ตรงข้าม





7

เขียน, สร้าง, สร้าง, แสดงผล, บีบอัด, ลด, toSQL, toString ขึ้นอยู่กับลักษณะของคลาสและตัวดำเนินการที่เกี่ยวข้อง


6

คอมไพเลอร์แบบดั้งเดิมมีสองส่วนคือตัวแยกวิเคราะห์และตัวสร้างโค้ด

ดังนั้นคุณสามารถเรียกมันว่า "สร้าง" แน่นอนมันแตกต่างกันเล็กน้อยที่นี่เพราะคอมไพเลอร์ไม่ได้เขียนซอร์สโค้ด (เว้นแต่จะเป็น precompiler)




4

เรียบ?

วัตถุแบบสอบถามแยกวิเคราะห์อาจหมายถึงลำดับชั้นของเงื่อนไขซึ่งคุณ "แบน" กลับเข้าไปในสตริง 1 มิติ

แต่เนื่องจากคุณไปจากอ็อบเจกต์ถึงสตริงคุณก็แค่ใช้ toString หรือ toSQL () หรืออะไรทำนองนั้น นอกจากนี้หากคุณออกแบบมาอย่างดีและใช้แอพที่ถูกต้องคุณสามารถเปลี่ยนชื่อได้ในภายหลัง



4

ฉันจะไปหา ToString () เนื่องจากคุณมักจะทำรังต่อพวกมัน (ฟังก์ชั่นตรงข้ามที่ให้คุณผ่านจาก Class1 ไปที่ Class2 และในทางกลับกัน)

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

ทำให้เป็นอันดับ () ดูเหมือนเป็นตัวเลือกที่ดี แต่มีอยู่ตรงกันข้ามใน Deserialize ()

ในสถานการณ์เฉพาะของคุณดังที่คนอื่น ๆ ชี้ให้เห็น ToSql () เป็นอีกทางเลือกที่ดี


4

ฉันจะใช้เรนเดอร์

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

ซึ่งเป็น IMHO ตรงข้ามกับการแยกวิเคราะห์ ()

> c = parse(b)

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




3

INHO เรียงลำดับสังเคราะห์เป็นตัวเลือกที่ดี นอกจากนี้เมื่อคุณตั้งชื่อ parseQuery ฉันจะไปกับ codeQuery


3

ฉันมักจะใช้ "แจง" เป็นวิธีการแปลงดังนั้นฉันไม่สามารถหาคำตรงกันข้ามสำหรับ "แปลง" (คุณไม่สามารถ "แยกแยะ" บางสิ่งเนื่องจาก "unconvert" เป็นประเภทการแปลงเอง)

การคิดแบบนี้ทางออกที่ดีที่สุด (สำหรับฉัน) คือการมีวิธี "แยกวิเคราะห์" สองวิธีที่ได้รับการขัดแย้งที่แตกต่างกัน ตัวอย่าง (Java):

public class FooBarParser{

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

2

deparse

การแยกวิเคราะห์คือ:

  • decompile คือการคอมไพล์
  • ย่อยสลายคือการเขียน
  • deserialize คือทำให้เป็นอันดับ
  • degroovy คือการ groovy :);)

การแยกวิเคราะห์ / แยกส่วนไม่ได้เปลี่ยนโครงสร้าง แต่เป็นการแปลง การแปลงที่แม่นยำระหว่างข้อความที่เทียบเท่าและรูปแบบ abstract-syntax-tree รักษาความสัมพันธ์และโครงสร้างทั้งหมด

"เขียน" หมายถึงการเปลี่ยนแปลงโครงสร้างดังนั้นจึงไม่ถูกต้องนัก มันแสดงให้เห็นการรวมกันจากชิ้นส่วนอิสระแยกต่างหาก (มักเป็นครั้งแรก) เช่นเดียวกับ "สลายตัว" แนะนำให้แยกออกเป็นส่วนอิสระ พวกเขาเปลี่ยนรูปแบบไม่ใช่เพียงแค่จัดรูปแบบ

การค้นหาอย่างรวดเร็วแสดงคำที่ใช้ภายใน:


การค้นหารหัส Github อย่างรวดเร็วแสดงให้เห็นว่าคำว่า "deparse" ไม่มีการใช้อย่างแพร่หลายโปรดดูgithub.com/search?q=deparse - ฉันคิดว่า "deparse" เป็นคำจากระบบนิเวศ R - สำหรับฉันตรงกันข้ามกับการแยกวิเคราะห์กำลังสร้าง ในการแยกวิเคราะห์เรามีประโยคและไวยากรณ์เป็นอินพุตและต้องการทราบว่าโครงสร้างประโยคและ / หรือการเป็นตัวแทนความหมายของประโยคคืออะไร ในรุ่นเรามีการแสดงความหมายและไวยากรณ์เป็นอินพุตและต้องการค้นหาประโยคที่สอดคล้องกับการแสดงความหมาย
Jens A. Koch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.