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

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

5
สามารถกำหนดรูปแบบ csv โดย regex ได้หรือไม่?
เพื่อนร่วมงานและฉันเพิ่งจะถกเถียงกันว่า regex บริสุทธิ์นั้นมีความสามารถในการห่อหุ้มรูปแบบ csv อย่างเต็มที่หรือไม่ซึ่งมันสามารถแยกวิเคราะห์ไฟล์ทั้งหมดด้วย escape char ที่ระบุไว้, ถ่าน char และถ่านคั่น regex ไม่จำเป็นต้องสามารถเปลี่ยน chars เหล่านี้หลังจากการสร้าง แต่จะต้องไม่ล้มเหลวในกรณี edge อื่น ๆ ฉันได้แย้งว่านี่เป็นไปไม่ได้สำหรับแค่ tokenizer regex เดียวที่อาจทำสิ่งนี้เป็นรูปแบบ PCRE ที่ซับซ้อนมากซึ่งเคลื่อนไปไกลกว่าเพียงแค่โทเค็น ฉันกำลังมองหาบางอย่างตามแนวของ: ... รูปแบบ csv เป็นบริบทไวยากรณ์ฟรีและเป็นไปไม่ได้ที่จะแยกวิเคราะห์ด้วย regex เพียงอย่างเดียว ... หรือฉันผิด เป็นไปได้หรือไม่ที่จะแยก csv ด้วย POSIX regex? ตัวอย่างเช่นถ้าทั้ง char char และ quote char อยู่"ดังนั้นทั้งสองบรรทัดนี้จะเป็น csv ที่ถูกต้อง: """this is …

5
การแยกวิเคราะห์และการแยก lexing ผ่านการฝึกฝนที่ดีกับตัวแยกวิเคราะห์ parser หรือไม่?
เมื่อฉันเริ่มใช้ตัวแยกวิเคราะห์ parser ปฏิกิริยาแรกของฉันคือความรู้สึกของการปลดปล่อยจากสิ่งที่รู้สึกเหมือนความแตกต่างเทียมระหว่างการแยกและ lexing ทันใดนั้นทุกอย่างก็แค่การแยกวิเคราะห์! อย่างไรก็ตามฉันเพิ่งเจอโพสต์นี้ใน codereview.stackexchange แสดงให้เห็นว่ามีคนเรียกคืนความแตกต่างนี้ ตอนแรกฉันคิดว่านี่เป็นสิ่งที่โง่มาก ๆ แต่แล้วความจริงที่ว่ามีฟังก์ชั่นใน Parsec เพื่อสนับสนุนพฤติกรรมนี้ทำให้ฉันตั้งคำถามกับตัวเอง อะไรคือข้อดี / ข้อเสียของการแยกวิเคราะห์กระแสข้อมูลที่มีอยู่แล้วในตัวแยกวิเคราะห์

2
คอมไพเลอร์ใช้ประโยชน์จากมัลติเธรดเพื่อการรวบรวมที่เร็วขึ้นหรือไม่?
ถ้าฉันจำหลักสูตรคอมไพเลอร์ของฉันได้อย่างถูกต้องคอมไพเลอร์ทั่วไปมีโครงร่างที่เรียบง่ายดังต่อไปนี้: ตัววิเคราะห์คำจะสแกน (หรือเรียกใช้ฟังก์ชั่นการสแกนบางอย่าง) โค้ดต้นฉบับแบบตัวอักษรต่ออักขระ สตริงของอักขระอินพุตถูกตรวจสอบกับพจนานุกรมของ lexemes เพื่อความถูกต้อง หาก lexeme นั้นถูกต้องมันจะถูกจัดประเภทเป็นโทเค็นที่สอดคล้องกับมัน parser ตรวจสอบความถูกต้องของการรวมกันของโทเค็น; token โดยโทเค็น มันเป็นไปได้ในทางทฤษฎีหรือไม่ที่จะแบ่งซอร์สโค้ดออกเป็นควอเตอร์ คอมไพเลอร์มีตัวที่ใช้มัลติเธรดหรือไม่?

3
การแยกวิเคราะห์ไฟล์ทั่วไปใน Java โดยใช้รูปแบบกลยุทธ์
ฉันกำลังทำงานกับผลิตภัณฑ์ที่ความรับผิดชอบของหนึ่งในโมดูลคือการแยกวิเคราะห์ไฟล์ XML และถ่ายโอนเนื้อหาที่ต้องการในฐานข้อมูล แม้ว่าความต้องการในปัจจุบันจะเป็นเพียงการแยกวิเคราะห์ไฟล์ XML แต่ฉันต้องการออกแบบโมดูลการแยกวิเคราะห์ในแบบที่ฉันสามารถรองรับไฟล์ประเภทใดก็ได้ในอนาคต เหตุผลสำหรับวิธีนี้คือเรากำลังสร้างผลิตภัณฑ์นี้สำหรับลูกค้าเฉพาะ แต่วางแผนที่จะขายให้กับลูกค้ารายอื่นในอนาคตอันใกล้ ระบบทั้งหมดในระบบนิเวศสำหรับลูกค้าปัจจุบันผลิตและใช้ไฟล์ XML แต่นี่อาจไม่เป็นกรณีสำหรับลูกค้ารายอื่น ฉันพยายามทำอะไรจนถึงตอนนี้? (ปัจจุบัน) ฉันมีการออกแบบต่อไปนี้ในใจซึ่งขึ้นอยู่กับรูปแบบกลยุทธ์ ฉันได้เขียนรหัสลงในคราสอย่างรวดเร็วเพื่อถ่ายทอดการออกแบบของฉันดังนั้นมันจะดีมากหากแง่มุมอื่น ๆ เช่นวิธีการที่เหมาะสมในการจัดการข้อยกเว้นถูกละเว้นในตอนนี้ Parser:อินเตอร์เฟสกลยุทธ์ที่แสดงเมธอดการวิเคราะห์ public interface Parser<T> { public T parse(String inputFile); } * เหตุผลในการใช้พารามิเตอร์ทั่วไปคืออนุญาตประเภทการส่งคืนใด ๆ รวมถึงความปลอดภัยของประเภทในเวลารวบรวม ProductDataXmlParserคลาสที่เป็นรูปธรรมสำหรับการวิเคราะห์ไฟล์ product.xml ที่มีข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ (ใช้ XMLBeans) public class ProductDataXmlParser implements Parser<ProductDataTYPE> { public ProductDataTYPE parse(String inputFile) { ProductDataTYPE productDataDoc = …
14 java  design  parsing  xml 

5
มากับโทเค็นสำหรับ lexer
ฉันกำลังเขียนโปรแกรมแยกวิเคราะห์สำหรับภาษามาร์กอัปที่ฉันสร้างขึ้น (เขียนด้วยภาษาไพ ธ อน แต่นั่นไม่เกี่ยวข้องกับคำถามนี้จริง ๆ แล้วถ้านี่เป็นความคิดที่ไม่ดีฉันชอบคำแนะนำสำหรับเส้นทางที่ดีกว่า) . ฉันกำลังอ่านเกี่ยวกับตัวแยกวิเคราะห์ที่นี่: http://www.ferg.org/parsing/index.htmlและฉันกำลังพยายามเขียน lexer ซึ่งถ้าหากฉันเข้าใจถูกต้องให้แบ่งเนื้อหาออกเป็นโทเค็น สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือสิ่งที่ฉันควรใช้โทเค็นประเภทใดหรือวิธีการสร้างพวกเขา ตัวอย่างเช่นประเภทโทเค็นในตัวอย่างที่ฉันเชื่อมโยงคือ: STRING IDENTIFIER จำนวน ช่องว่าง แสดงความคิดเห็น EOF สัญลักษณ์จำนวนมากเช่น {และ (นับเป็นประเภทโทเค็นของตัวเอง ปัญหาที่ฉันมีอยู่ก็คือโทเค็นประเภททั่วไปนั้นดูจะเป็นเรื่องที่ฉันไม่ชอบ ตัวอย่างเช่นเหตุใด STRING ถึงมีประเภทโทเค็นแยกต่างหากกับ IDENTIFIER สตริงสามารถแสดงเป็น STRING_START + (IDENTIFIER | WHITESPACE) + STRING_START สิ่งนี้อาจเกี่ยวข้องกับภาษาของฉันด้วย ยกตัวอย่างเช่นการประกาศตัวแปรถูกเขียนเป็นและนำไปใช้กับ{var-name var value} {var-name}ดูเหมือนว่า'{'และ'}'ควรจะราชสกุลของตัวเอง แต่มี var_name และ VAR_VALUE ประเภทโทเค็นมีสิทธิ์หรือจะเหล่านี้ทั้งสองตกอยู่ภายใต้การ IDENTIFIER? มีอะไรเพิ่มเติมคือ VAR_VALUE สามารถมีช่องว่างได้จริง …
14 python  parsing  lexer 

2
ตัวอย่างที่ง่ายที่สุดในการอธิบายความแตกต่างระหว่าง Parse Trees กับ Abstract Syntax Trees คืออะไร
เพื่อความเข้าใจของฉัน parser สร้างต้นไม้แยกวิเคราะห์แล้วทิ้งหลังจากนั้น อย่างไรก็ตามมันยังสามารถโผล่ออกมาจากต้นไม้ไวยากรณ์นามธรรมซึ่งคอมไพเลอร์ควรจะใช้ ฉันอยู่ภายใต้ความประทับใจที่ทั้งต้นไม้แยกและต้นไม้ไวยากรณ์ที่สร้างขึ้นภายใต้ขั้นตอนการแยก ถ้าอย่างนั้นใครจะอธิบายได้ว่าทำไมสิ่งเหล่านี้ถึงแตกต่างกัน
14 parsing  trees 

5
หน่วยทดสอบสำหรับ csv parser
ฉันควรใช้การทดสอบใดในการทดสอบตัวแยกวิเคราะห์ csv ฉันมีตัวแยกวิเคราะห์ csv อย่างง่ายใน C # และฉันต้องการให้แน่ใจว่าฉันมีการทดสอบหน่วยครอบคลุมทุกกรณีขอบ (และผิดปกติ) ทั่วไป ฉันควรใช้การทดสอบประเภทใดเพื่อระบุปัญหาที่อาจเกิดขึ้นและคดีเขตแดน
14 testing  parsing 

2
การแยกวิเคราะห์ที่ไม่สแกนเนอร์เกี่ยวข้องกับ“ ปัญหาอื่น ๆ ที่น่าวิตก”
ฉันไม่เข้าใจประโยคนี้จากบทความ Wikipedia เกี่ยวกับปัญหา Dangling Else : [ปัญหา Dangling Else] เป็นปัญหาที่เกิดขึ้นบ่อยครั้งในการสร้างคอมไพเลอร์โดยเฉพาะการแยกวิเคราะห์ที่ไม่มีสแกนเนอร์ บางคนสามารถอธิบายให้ฉันฟังได้ว่าเทคนิคการแยกวิเคราะห์แบบสแกนเนอร์ไร้สาระอาจทำให้ปัญหานี้รุนแรงขึ้นได้อย่างไร สำหรับฉันแล้วดูเหมือนว่าปัญหาเกิดขึ้นกับไวยากรณ์ - เนื่องจากมันคลุมเครือ - ไม่ใช่ด้วยเทคนิคการแยกวิเคราะห์ ฉันกำลังคิดถึงอะไร

5
ฉันจะจัดการเผยแพร่ซอร์สโค้ดโอเพนซอร์สได้ดีที่สุดจากรหัสการวิจัยที่เป็นความลับของ บริษัท ของฉันอย่างไร
บริษัท ของฉัน (เรียกพวกเขาว่า Acme Technology) มีห้องสมุดประมาณหนึ่งพันไฟล์ต้นฉบับซึ่งเดิมมาจากกลุ่มการวิจัยของ Acme Labs ซึ่งได้รับการบ่มเพาะในกลุ่มพัฒนาสองสามปีที่ผ่านมาและได้มอบให้กับลูกค้าภายใต้ ไม่เปิดเผย. แอคพร้อมที่จะเปิดตัวโค้ด 75% ให้กับชุมชนโอเพนซอร์ส อีก 25% จะเปิดตัวในภายหลัง แต่สำหรับตอนนี้ยังไม่พร้อมสำหรับการใช้งานของลูกค้าหรือมีรหัสที่เกี่ยวข้องกับนวัตกรรมในอนาคตที่พวกเขาต้องการให้พ้นจากคู่แข่ง ปัจจุบันรหัสนี้ได้รับการจัดรูปแบบด้วย #ifdefs ที่อนุญาตให้ใช้รหัสฐานเดียวกันเพื่อทำงานกับแพลตฟอร์มการผลิตล่วงหน้าที่จะมีให้สำหรับนักวิจัยมหาวิทยาลัยและลูกค้าเชิงพาณิชย์ในวงกว้างมากขึ้นเมื่อมันเปิดแหล่งที่มาขณะที่ในเวลาเดียวกัน พร้อมสำหรับการทดลองและการสร้างต้นแบบและการทดสอบความเข้ากันได้กับแพลตฟอร์มในอนาคต การรักษาฐานรหัสเดียวถือเป็นสิ่งจำเป็นสำหรับเศรษฐศาสตร์ (และความมีสติ) ของกลุ่มของฉันซึ่งจะมีช่วงเวลาที่ยากลำบากในการรักษาสำเนาสองชุดในแบบคู่ขนาน ไฟล์ในฐานปัจจุบันของเรามีลักษณะดังนี้: > // Copyright 2012 (C) Acme Technology, All Rights Reserved. > // Very large, often varied and restrictive copyright license in English and French, > …

6
รูปแบบไฟล์กำหนดค่าที่มนุษย์อ่านง่ายที่สุดคืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ไฟล์การกำหนดค่าปัจจุบันเป็นดังนี้: mainwindow.title = 'test' mainwindow.position.x = 100 mainwindow.position.y = 200 mainwindow.button.label = 'apply' mainwindow.button.size.x = 100 mainwindow.button.size.y = 30 logger.datarate = 100 logger.enable = True logger.filename = './test.log' นี่คือการอ่านด้วยหลามในพจนานุกรมที่ซ้อนกัน: { 'mainwindow':{ 'button':{ 'label': {'value':'apply'}, ... }, 'logger':{ datarate: {'value': 100}, enable: {'value': True}, …

2
มีการแยกวิเคราะห์ข้อมูลภาษาธรรมชาติที่คงอยู่
ฉันเพิ่งเริ่มทดลองใช้การประมวลผลภาษาธรรมชาติ (NLP) โดยใช้CoreNLP ของ Stanfordและฉันสงสัยว่าวิธีมาตรฐานในการจัดเก็บ NLP แยกวิเคราะห์ข้อมูลสำหรับแอปพลิเคชันการทำเหมืองข้อความคืออะไร วิธีหนึ่งที่ฉันคิดว่าน่าสนใจก็คือเก็บเด็กไว้ในรายการ adjacency และใช้ประโยชน์จากแบบสอบถามแบบเรียกซ้ำ (Postgres สนับสนุนสิ่งนี้และฉันคิดว่ามันใช้ได้ดีจริงๆ) แต่ฉันคิดว่าอาจมีวิธีมาตรฐานหลายวิธีในการทำเช่นนี้ขึ้นอยู่กับประเภทของการวิเคราะห์ที่ได้รับการรับรองจากคนที่ทำงานในสาขานี้มาหลายปี ดังนั้นกลยุทธ์การติดตามาตรฐานสำหรับข้อมูลที่แยกวิเคราะห์ NLP คืออะไรและมีการใช้งานอย่างไร

3
ฉันจะระบุไวยากรณ์สำหรับ parser ได้อย่างไร
ฉันได้เขียนโปรแกรมมาหลายปีแล้ว แต่สิ่งหนึ่งที่ฉันต้องใช้เวลานานมากคือการระบุไวยกรณ์สำหรับโปรแกรมแยกวิเคราะห์และแม้จะใช้ความพยายามมากเกินไปฉันก็ไม่แน่ใจว่าไวยากรณ์ที่ฉันใช้มานั้นดีมาก ( โดยการวัดที่เหมาะสมของ "ดี") ฉันไม่คาดหวังว่าจะมีอัลกอริทึมสำหรับกระบวนการระบุไวยากรณ์โดยอัตโนมัติ แต่ฉันหวังว่าจะมีวิธีการจัดโครงสร้างปัญหาที่กำจัดการคาดเดาและการลองผิดลองถูกของวิธีการปัจจุบันของฉัน ความคิดแรกของฉันคืออ่าน parsers และฉันทำสิ่งนี้ไปแล้ว แต่ทุกอย่างที่ฉันอ่านในเรื่องนี้ต้องใช้ไวยากรณ์ตามที่กำหนด ปัญหาของการแปลไวยากรณ์นี้เป็น parser ฉันสนใจปัญหานี้มาก่อน: วิธีการระบุไวยากรณ์ตั้งแต่แรก ฉันสนใจหลักในปัญหาของการระบุไวยากรณ์ที่เป็นตัวแทนของตัวอย่างที่เป็นรูปธรรม (บวกและลบ) อย่างเป็นทางการ ซึ่งแตกต่างจากปัญหาของการออกแบบใหม่ไวยากรณ์ ขอบคุณ Macneil ที่ชี้ให้เห็นความแตกต่างนี้ ฉันไม่เคยซาบซึ้งถึงความแตกต่างระหว่างไวยากรณ์และไวยากรณ์ แต่ตอนนี้ฉันเริ่มเห็นแล้วฉันสามารถเพิ่มความชัดเจนในการชี้แจงครั้งแรกโดยบอกว่าฉันสนใจในปัญหาการระบุไวยากรณ์ที่จะบังคับใช้ ไวยากรณ์ที่กำหนดไว้ล่วงหน้า: มันเกิดขึ้นอย่างนั้นในกรณีของฉันพื้นฐานสำหรับไวยากรณ์นี้มักจะเป็นชุดของตัวอย่างบวกและลบ มีการระบุไวยกรณ์สำหรับ parser อย่างไร มีหนังสือหรือเอกสารอ้างอิงนั่นคือมาตรฐาน de-facto สำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ เกี่ยวกับการระบุไวยากรณ์สำหรับโปรแกรมวิเคราะห์คำหรือไม่? เมื่ออ่านเกี่ยวกับไวยากรณ์ parser ฉันควรเน้นเรื่องใด

2
ในแง่ของคนธรรมดาเรียกซ้ำคืออะไร?
ตามหน้าหนึ่งใน code.google.com มีการกำหนด "การเรียกซ้ำแบบด้านซ้าย" ดังนี้: การเรียกซ้ำทางซ้ายเพียงอ้างถึงการเรียกซ้ำที่ไม่ได้กำหนดว่าเมื่อมันสร้างรูปแบบประโยคที่มีตัวมันเองสำเนาใหม่ของตัวเองจะปรากฏขึ้นที่ด้านซ้ายของกฎการผลิต Wikipediaมีคำจำกัดความที่แตกต่างกันสองแบบ: ในแง่ของไวยากรณ์ที่ไม่ใช้บริบทเทอร์มินัล r จะไม่เกิดซ้ำถ้าสัญลักษณ์ซ้ายสุดในโปรดักชั่นใด ๆ ของ r (ทางเลือก ') ไม่ว่าจะในทันที คำจำกัดความ (ทางอ้อม / ซ่อนซ้ายซ้ำ) เขียนซ้ำเพื่อ r อีกครั้ง "ไวยากรณ์ซ้ำซากถ้าเราสามารถหาเทอร์มินัล A บางอันซึ่งในที่สุดจะได้รับแบบฟอร์มประโยคด้วยตัวมันเองเป็นสัญลักษณ์ซ้าย" ฉันเพิ่งจะเริ่มต้นด้วยการสร้างภาษาที่นี่และฉันทำมันในเวลาว่าง อย่างไรก็ตามเมื่อมาถึงการเลือกตัวแยกวิเคราะห์ภาษาไม่ว่าตัวแยกวิเคราะห์นี้จะสนับสนุนตัวแยกวิเคราะห์ซ้ำหรือไม่หรือตัวแยกวิเคราะห์นั้นเป็นปัญหาที่เกิดขึ้นทันทีด้านหน้าและกึ่งกลาง การค้นหาคำเช่น "รูปแบบประโยค" นำไปสู่รายการศัพท์แสงต่อไปเท่านั้น แต่ความแตกต่างของการเรียกซ้ำแบบ "ซ้าย" เกือบจะต้องเป็นสิ่งที่ง่ายมาก กรุณาแปล

3
ปัญหาใดที่มักเกิดขึ้นเมื่อทำงานกับข้อความ HL7
ฉันกำลังทดสอบผลิตภัณฑ์สำหรับธุรกิจด้านการดูแลสุขภาพและเรากำลังทำงานกับข้อความ HL7 ฉันเห็นผู้คนส่งเสียงพึมพัมคำถามอื่นเกี่ยวกับปัญหาของ HL7 แต่ไม่ได้กล่าวถึงเฉพาะ ใครสามารถให้แนวคิดบางอย่างเกี่ยวกับปัญหาหรือประเภทของปัญหาที่เราควรมองหาเป็นพิเศษ เรากำลังใช้ห้องสมุดที่ใช้งานได้ดีสำหรับการวิเคราะห์คำ หากข้อมูลเฉพาะเกี่ยวกับสิ่งเหล่านี้หรือสิ่งที่เรากำลังทำอยู่จะเป็นประโยชน์โปรดแจ้งให้เราทราบในความคิดเห็นและฉันจะเพิ่มคำถามหากฉันทำได้
12 testing  parsing  hl7 

2
ภาษาที่มีตัวดำเนินการไบนารีสองตัวที่มีความสำคัญเหมือนกันเชื่อมโยงซ้ายและเชื่อมโยงขวา
มีการเขียนโปรแกรมใด ๆ (หรือสคริปต์) ภาษา (หรือบางภาษาเฉพาะโดเมน) มีสองผู้ประกอบการไบนารีoplและoprของเดียวกันความสำคัญกับoplการถูกทิ้ง-เชื่อมโยงและoprเป็นขวาเชื่อมโยง? (ฉันไม่สามารถหาตัวอย่างได้ แต่ฉันพยายามที่จะเขียนโค้ดตัวแยกวิเคราะห์ทั่วไปพอที่จะจัดการกับกรณีแปลก ๆ นั้น) จะแยกนิพจน์ของรูปแบบx opl y opr zหรือx opr y opl zได้อย่างไร และโดยทั่วไปกับตัวถูกดำเนินการมากขึ้น?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.