คำถามติดแท็ก parsing

การวิเคราะห์ (ยกเลิก) ข้อมูลที่มีโครงสร้างเพื่อแปลงเป็นรูปแบบที่มีโครงสร้างและเป็นมาตรฐาน

5
การรับข้อมูลจากหน้าเว็บด้วยวิธีที่มั่นคงและมีประสิทธิภาพ
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่าการใช้ regex เพื่อแยก HTML ของเว็บไซต์เพื่อรับข้อมูลที่คุณต้องการไม่ใช่วิธีการที่ดีที่สุด ดังนั้นคำถามของฉันง่าย: อะไรคือสิ่งที่ดีที่สุด / มีประสิทธิภาพมากที่สุดและเป็นวิธีที่มีเสถียรภาพโดยทั่วไปในการรับข้อมูลนี้ ฉันควรทราบว่า: ไม่มี API ไม่มีแหล่งข้อมูลอื่นที่ฉันสามารถรับข้อมูลได้ (ไม่มีฐานข้อมูลฟีดและอื่น ๆ ) ไม่สามารถเข้าถึงไฟล์ต้นฉบับได้ (ข้อมูลจากเว็บไซต์สาธารณะ) สมมติว่าข้อมูลเป็นข้อความปกติแสดงในตารางในหน้า html ตอนนี้ฉันใช้ python สำหรับโปรเจคของฉัน แต่ภาษา / การแก้ปัญหา / เคล็ดลับก็ดี เป็นคำถามด้าน: คุณจะไปเกี่ยวกับมันอย่างไรเมื่อหน้าเว็บถูกสร้างโดย Ajax สาย? แก้ไข: ในกรณีของการแยกวิเคราะห์ HTML ฉันรู้ว่าไม่มีวิธีที่มั่นคงในการรับข้อมูล ทันทีที่มีการเปลี่ยนแปลงหน้าตัวแยกวิเคราะห์ของคุณจะทำเพื่อ สิ่งที่ฉันหมายถึงด้วยความเสถียรในกรณีนี้คือ: วิธีที่มีประสิทธิภาพในการแยกวิเคราะห์หน้าเว็บที่ส่งผลลัพธ์เดียวกันให้ฉันเสมอ (สำหรับชุดข้อมูลชุดเดียวกันอย่างชัดเจน) โดยที่หน้าไม่เปลี่ยนแปลง
11 data  parsing 

7
เทคนิคการแยกวิเคราะห์ XML
ฉันพบว่า XML ค่อนข้างยุ่งยากในการประมวลผลเสมอ ฉันไม่ได้พูดเกี่ยวกับการใช้งานตัวแยกวิเคราะห์ XML: ฉันกำลังพูดถึงการใช้ตัวแยกวิเคราะห์ที่ใช้กระแสอยู่เช่น SAX parser ซึ่งประมวลผลโหนด XML โดยโหนด ใช่มันง่ายมากที่จะเรียนรู้ API ต่างๆสำหรับ parsers เหล่านี้ แต่เมื่อใดก็ตามที่ฉันดูโค้ดที่ประมวลผล XML ฉันมักจะพบว่ามันค่อนข้างซับซ้อน ปัญหาที่สำคัญดูเหมือนว่าเอกสาร XML จะถูกแยกออกเป็นส่วน ๆ อย่างมีเหตุผลและแต่ละประเภทข้อมูลและคุณลักษณะมักจะแยกออกจากข้อมูลจริงบางครั้งโดยการซ้อนหลายระดับ ดังนั้นเมื่อประมวลผลโหนดเฉพาะใด ๆ เป็นรายบุคคลจำเป็นต้องมีสถานะพิเศษจำนวนมากเพื่อกำหนดว่าเราอยู่ที่ไหนและต้องทำอะไรต่อไป ตัวอย่างเช่นให้ข้อมูลโค้ดจากเอกสาร XML ทั่วไป: <book> <title>Blah blah</title> <author>Blah blah</author> <price>15 USD</price> </book> ... ฉันจะทราบได้อย่างไรเมื่อพบโหนดข้อความที่มีชื่อหนังสือ สมมติว่าเรามีตัวแยกวิเคราะห์ XML ง่ายซึ่งทำหน้าที่เหมือน iterator ให้เราโหนดถัดไปในเอกสาร XML XMLParser.getNextNode()โทรทุกครั้งที่เรา ฉันพบว่าตัวเองเขียนโค้ดอย่างหลีกเลี่ยงไม่ได้: boolean insideBookNode …

2
อัลกอริทึมสำหรับการจัดทำโค้ด SQL
ฉันต้องการเครื่องมือ (สำหรับใช้ในบ้าน) ที่จะฟอร์แมตโค้ด SQL (SQL Server / MySQL) มีเครื่องมือของบุคคลที่สามที่หลากหลายและเว็บไซต์ออนไลน์ที่ทำ แต่ไม่ว่าฉันต้องการมันอย่างแน่นอน ดังนั้นฉันต้องการเขียนเครื่องมือของตัวเองที่จะตอบสนองความต้องการของฉัน คำถามแรกมีมาตรฐานหรืออนุสัญญาว่าควรจัดรูปแบบรหัส SQL อย่างไร (เครื่องมือที่ฉันลองฟอร์แมตมันแตกต่างกัน) คำถามที่สองฉันจะเข้าใกล้ภารกิจนี้ได้อย่างไร ในตอนแรกควรแปลงแบบสอบถาม SQL เป็นโครงสร้างข้อมูลบางอย่างเช่นต้นไม้หรือไม่

1
เหตุใด GCC จึงเปลี่ยนจากวัวกระทิงเป็นตัวแยกวิเคราะห์แบบสืบซ้ำสำหรับ C ++ และ C
มีการเปลี่ยนแปลงภาษาที่ต้องใช้หรือมีเหตุผลบางอย่างที่ทำไมกระทิงจึงไม่เหมาะสมหรือเหมาะสมที่สุด? ฉันเห็นวิกิพีเดียว่าพวกเขาเปลี่ยนไปอ้างอิงถึงบันทึกย่อประจำรุ่นGCC 3.4และGCC 4.1 สถานะรีลีสโน้ตเหล่านี้: ตัวแยกวิเคราะห์ C ++ purser แบบเขียนซ้ำด้วยมือได้แทนที่ตัวแยกวิเคราะห์ C ++ ที่ได้จาก YACC จาก GCC รุ่นก่อนหน้า parser ใหม่มีโครงสร้างพื้นฐานที่พัฒนาขึ้นอย่างมากซึ่งจำเป็นสำหรับการแยกวิเคราะห์ซอร์สโค้ด C ++ ที่ดีขึ้นการจัดการส่วนขยายและการแยกที่สะอาด (ถ้าเป็นไปได้) ระหว่างการวิเคราะห์ซีแมนทิกส์ที่เหมาะสมและการแยกวิเคราะห์ parser ใหม่แก้ไขข้อบกพร่องมากมายที่พบใน parser เก่า และ: ตัวแยกวิเคราะห์ C และ Objective-C แบบเก่าของ Bison ถูกแทนที่ด้วยตัวแยกวิเคราะห์แบบเรียกซ้ำแบบสืบพันธุ์แบบเขียนด้วยมือที่เร็วขึ้น สิ่งที่ฉันอยากรู้คือปัญหาที่แท้จริงของพวกเขาคืออะไรและทำไมจึงเป็นไปไม่ได้ / วิธีแก้ปัญหาโดยใช้วัวกระทิง
10 c++  c  parsing  compiler 

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

3
การเขียนคอมไพเลอร์คอมไพเลอร์ - ความเข้าใจด้านการใช้งานและคุณสมบัติ
นี่เป็นส่วนหนึ่งของชุดคำถามที่มุ่งเน้นไปที่โครงการน้องกับโครงการ Abstraction ซึ่งมีจุดมุ่งหมายเพื่อสรุปแนวคิดที่ใช้ในการออกแบบภาษาในรูปแบบของกรอบ โปรเจ็กต์น้องสาวเรียกว่า OILexer ซึ่งมีวัตถุประสงค์เพื่อสร้างตัวแยกวิเคราะห์จากไฟล์ไวยากรณ์โดยไม่ต้องใช้การฉีดโค๊ดในการจับคู่ บางหน้าอื่น ๆ ที่เกี่ยวข้องกับคำถามเหล่านี้เกี่ยวข้องกับการพิมพ์โครงสร้างสามารถดูได้ที่นี่และความสะดวกในการใช้งานที่พบที่นี่ เมตาหัวข้อที่เกี่ยวข้องกับสอบถามรายละเอียดเพิ่มเติมเกี่ยวกับกรอบและสถานที่ที่เหมาะสมในการโพสต์สามารถพบได้ที่นี่ ฉันมาถึงจุดที่ฉันจะเริ่มแยกต้นไม้แยกออกจากไวยากรณ์ที่กำหนดตามด้วย Recursive Descent parser ซึ่งใช้ DFA เพื่อแยกแยะเส้นทางข้างหน้า (คล้ายกับ ANTLR 4's LL (*)) ดังนั้นฉันจึง คิดว่าฉันจะเปิดมันเพื่อรับข้อมูลเชิงลึก ในคอมไพเลอร์ตัวแยกวิเคราะห์คุณลักษณะชนิดใดที่เหมาะที่สุด? จนถึงตอนนี้เป็นภาพรวมคร่าวๆของสิ่งที่นำไปใช้: แม่แบบ ดูการคาดการณ์ล่วงหน้ารู้ว่าอะไรถูกต้อง ณ จุดที่กำหนด Rule 'Deliteralization' ใช้ตัวอักษรในกฎและแก้ไขโทเค็นที่มา Automata ของ Nondeterministic Automata ที่กำหนด เครื่องสถานะศัพท์ง่ายสำหรับการรับรู้โทเค็น วิธีอัตโนมัติของ Token: สแกน - มีประโยชน์สำหรับความคิดเห็น: ความคิดเห็น: = "/ *" สแกน ("* …

2
การแยกภาษาเพื่อค้นหาคำสำคัญ
ฉันกำลังมองหาข้อมูลและทฤษฎีเกี่ยวกับวิธีการเข้าถึงหัวข้อคำศัพท์ สมมติว่าฉันมีชุดของสตริงซึ่งอาจเป็นเพียงประโยคเดียวหรือหลายประโยค ฉันต้องการแยกสตริงเหล่านี้และตัดคำที่สำคัญที่สุดออกมาด้วยคะแนนที่แสดงว่าคำนั้นมีความสำคัญอย่างไร ลองดูตัวอย่างเล็ก ๆ น้อย ๆ ของสิ่งที่ฉันหมายถึง ตัวอย่าง # 1: "ฉันต้องการ Keurig จริงๆ แต่ฉันไม่สามารถซื้อได้!" นี่เป็นตัวอย่างพื้นฐานมากเพียงหนึ่งประโยค ในฐานะมนุษย์ฉันเห็นได้อย่างง่ายดายว่า "Keurig" เป็นคำที่สำคัญที่สุดที่นี่ นอกจากนี้ "จ่าย" ก็มีความสำคัญเช่นกันแม้ว่าจะไม่ชัดเจนว่าเป็นจุดเริ่มต้นของประโยค คำว่า "ฉัน" ปรากฏขึ้นสองครั้ง แต่มันก็ไม่สำคัญเลยเพราะมันไม่ได้บอกข้อมูลใด ๆ แก่เรา ฉันอาจคาดหวังว่าจะได้เห็นคำพูด / คะแนนแบบนี้: "Keurig" => 0.9 "afford" => 0.4 "want" => 0.2 "really" => 0.1 etc... ตัวอย่างที่ 2: "แค่หนึ่งในวิธีการว่ายน้ำที่ดีที่สุดในชีวิตของฉันฉันหวังว่าฉันจะสามารถรักษาเวลาของฉันให้แข่งขันได้ถ้าฉันจำได้ว่าต้องใช้นาฬิกาที่ไม่กันน้ำ" ตัวอย่างนี้มีหลายประโยคดังนั้นจะมีคำที่สำคัญมากกว่านี้ตลอด โดยไม่ต้องทำซ้ำแบบฝึกหัดจากตัวอย่างที่ 1 …

3
กรณีการใช้งานจริงของการใช้ไวยากรณ์ Chomsky Type-I (ไวต่อบริบท) คืออะไร
ฉันมีความสนุกสนานเมื่อเร็ว ๆ นี้สำรวจการพัฒนาของ parsers ภาษาในบริบทของวิธีที่พวกเขาเหมาะสมกับลำดับชั้น Chomsky ตัวอย่างของไวยากรณ์ที่ไวต่อบริบทคืออะไรในโลกแห่งความจริง (เช่นไม่ใช่ทางทฤษฎี)

4
ฉันจะใช้แอปพลิเคชันประมวลผลคำสั่งได้อย่างไร
ฉันต้องการสร้างแอปพลิเคชันที่เรียบง่ายและพิสูจน์ความคิดรวบยอด (REPL) ที่ใช้ตัวเลขแล้วประมวลผลคำสั่งกับหมายเลขนั้น ตัวอย่าง: ฉันเริ่มต้นด้วย 1 จากนั้นฉันเขียน " add 2" มันให้ฉัน 3. จากนั้นฉันเขียน " multiply 7" มันให้ 21 ฉันแล้วฉันต้องการทราบว่ามันเป็นนายกฉันเขียน " is prime" (ในจำนวนปัจจุบัน - 21) มันทำให้ฉันเป็นเท็จ " is odd" จะให้ฉันจริง และอื่น ๆ ตอนนี้สำหรับแอ็พพลิเคชันแบบง่ายที่มีคำสั่งไม่กี่อย่างแม้แต่แบบธรรมดาswitchก็สามารถทำได้เพื่อประมวลผลคำสั่ง แต่ถ้าฉันต้องการความสามารถในการขยายฉันจะต้องใช้ฟังก์ชันนี้อย่างไร ฉันใช้รูปแบบคำสั่งหรือไม่ ฉันจะสร้าง parser / interpreter ง่าย ๆ สำหรับภาษาได้หรือไม่? ถ้าฉันต้องการคำสั่งที่ซับซ้อนมากขึ้นเช่น " multiply 5 until >200" สิ่งที่จะเป็นวิธีที่ง่ายในการขยาย (เพิ่มคำสั่งใหม่) …

6
วิธีที่ดีที่สุดในการแยกวิเคราะห์ไฟล์
ฉันพยายามที่จะหาทางออกที่ดีสำหรับการทำ parser ให้บางส่วนของรูปแบบไฟล์ที่มีชื่อเสียงออกมีเช่น: EDIFACTและTRADACOMS หากคุณไม่คุ้นเคยกับมาตรฐานเหล่านี้ลองดูตัวอย่างนี้จาก Wikipedia: ดูตัวอย่างข้อความ EDIFACT ด้านล่างที่ใช้เพื่อตอบคำขอความพร้อมใช้งานของผลิตภัณฑ์: - UNA:+.? ' UNB+IATB:1+6XPPC+LHPPC+940101:0950+1' UNH+1+PAORES:93:1:IA' MSG+1:45' IFT+3+XYZCOMPANY AVAILABILITY' ERC+A7V:1:AMD' IFT+3+NO MORE FLIGHTS' ODI' TVL+240493:1000::1220+FRA+JFK+DL+400+C' PDI++C:3+Y::3+F::1' APD+714C:0:::6++++++6X' TVL+240493:1740::2030+JFK+MIA+DL+081+C' PDI++C:4' APD+EM2:0:130::6+++++++DA' UNT+13+1' UNZ+1+1' เซ็กเมนต์ UNA เป็นทางเลือก หากมีจะระบุอักขระพิเศษที่จะใช้ในการตีความส่วนที่เหลือของข้อความ มีหกตัวอักษรตาม UNA ในลำดับนี้: องค์ประกอบตัวแยกองค์ประกอบข้อมูล (: ในตัวอย่างนี้) ตัวแยกองค์ประกอบข้อมูล (+ ในตัวอย่างนี้) การแจ้งเตือนทศนิยม (. ในตัวอย่างนี้) ตัวละครที่วางจำหน่าย (ในตัวอย่างนี้) สงวนต้องเป็นพื้นที่ ตัวยุติเซ็กเมนต์ …

1
อะไรที่ทำให้การแยกวิเคราะห์ง่ายกว่าสิ่งอื่น
ฉันเพิ่งอ่านหน้า Wikipedia สำหรับWebAssemblyและมันบอกว่า: " WebAssembly คือ ... ออกแบบให้แยกได้เร็วกว่า JavaScript " ซึ่งทำให้ฉันคิดว่าอะไรจะทำให้ภาษาหรือรูปแบบข้อมูลเร็วขึ้นในการแยกวิเคราะห์กว่าอื่น ๆ และขั้นตอนวิธีการแยกวิเคราะห์คืออะไร ใช้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.