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

16
ฉันควรชี้ให้เห็นข้อผิดพลาดที่เกี่ยวข้องกับการสะกด / ไวยากรณ์ในรหัสของใครบางคนหรือไม่ [ปิด]
ในขณะที่ตรวจสอบรหัสของเพื่อนร่วมงานฉันพบข้อผิดพลาดการสะกดคำบางอย่างในชื่อฟังก์ชันและข้อผิดพลาดทางไวยากรณ์เช่น 'doesUserHasPermission ()' แทน 'doesUserHavePermission ()' ในชื่อฟังก์ชันและตัวแปร ฉันควรจะชี้สิ่งเหล่านี้ให้เขาหรือฉันเป็นคนหยาบคายเกินไปโดยสังเกตเห็นสิ่งเหล่านี้หรือไม่?

10
มันคุ้มค่าหรือที่จะทำ แต่เพียงผู้เดียวเพื่อแก้ไขความผิดพลาดที่ไม่สำคัญ?
หากฉันเจอคำผิดที่ไม่สำคัญในรหัส (พูดคำว่า apostrophe ที่ผิดพลาดในคำสั่งพิมพ์ (ข้อผิดพลาด)) มันคุ้มค่าที่จะให้คำมั่นที่จะแก้ไขข้อผิดพลาดนั้นหรือควรปล่อยไว้ตามลำพัง? โดยเฉพาะฉันอยากรู้อยากเห็นเกี่ยวกับการชั่งน้ำหนักการบันทึกการกระทำต่อค่าของการแก้ไขความผิดพลาดที่ไม่สำคัญเหล่านี้ ฉันกำลังมุ่งมั่นที่จะแก้ไขปัญหาเหล่านั้น ฉันเป็นคนคล่องแคล่ว

5
“ ไม่มีบริบท” หมายถึงอะไรในคำว่า "ไวยากรณ์ที่ไม่มีบริบท"
ด้วยจำนวนเนื้อหาที่พยายามอธิบายว่าไวยากรณ์ที่ปราศจากบริบท (CFG) คืออะไรฉันพบว่ามันน่าประหลาดใจที่น้อยมาก (ในตัวอย่างของฉันน้อยกว่า 1 ใน 20) ให้คำอธิบายว่าทำไมไวยากรณ์ดังกล่าวเรียกว่า "บริบท - ฟรี". และในใจของฉันไม่มีใครประสบความสำเร็จในการทำเช่นนั้น คำถามของฉันคือทำไมไวยากรณ์ที่ไม่มีบริบทเรียกว่าไม่มีบริบท "บริบท" คืออะไร? ฉันมีสัญชาตญาณว่าบริบทอาจเป็นภาษาอื่น ๆ ที่อยู่รอบ ๆ โครงสร้างที่วิเคราะห์อยู่ในปัจจุบัน แต่ดูเหมือนจะไม่เป็นเช่นนั้น ใครช่วยอธิบายได้อย่างแม่นยำ?

7
เหตุใดสมาชิกข้อมูลแบบคงที่จึงต้องกำหนดนอกคลาสแยกต่างหากใน C ++ (ไม่เหมือนกับ Java)
class A { static int foo () {} // ok static int x; // <--- needed to be defined separately in .cpp file }; ฉันไม่เห็นความต้องการในการA::xกำหนดแยกต่างหากในไฟล์. cpp (หรือไฟล์เดียวกันสำหรับแม่แบบ) ทำไมไม่สามารถA::xประกาศและกำหนดในเวลาเดียวกันได้? มันถูกห้ามด้วยเหตุผลทางประวัติศาสตร์หรือไม่? คำถามหลักของฉันคือมันจะส่งผลกระทบต่อฟังก์ชั่นใด ๆ หากstaticข้อมูลสมาชิกถูกประกาศ / กำหนดในเวลาเดียวกัน (เช่นเดียวกับJava )?

12
เหตุใดภาษาการเขียนโปรแกรมส่วนใหญ่จึงมีคำหลักหรือไวยากรณ์พิเศษสำหรับการประกาศฟังก์ชั่น [ปิด]
ภาษาโปรแกรมส่วนใหญ่ (ทั้งภาษาแบบไดนามิกและแบบคงที่) มีคำหลักพิเศษและ / หรือไวยากรณ์ที่มีลักษณะแตกต่างจากการประกาศตัวแปรสำหรับฟังก์ชั่นการประกาศ ฉันเห็นฟังก์ชั่นเช่นเดียวกับการประกาศเอนทิตีที่มีชื่ออื่น: ตัวอย่างเช่นใน Python: x = 2 y = addOne(x) def addOne(number): return number + 1 ทำไมจะไม่ล่ะ: x = 2 y = addOne(x) addOne = (number) => return number + 1 ในทำนองเดียวกันในภาษาเช่น Java: int x = 2; int y = addOne(x); int addOne(int x) { return …

9
คุณคิดอย่างไรกับ Periods / Full Stops ในคอมเม้นท์โค้ด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเห็นสิ่งนี้ถามใน SO Tavernดังนั้นฉันจึงโพสต์คำถามที่นี่ ฉันคิดว่ามันเป็นคำถามที่น่าสนใจ (แน่นอนว่ามันไม่ได้อยู่ในนั้น แต่ฉันคิดว่ามันโอเคที่นี่) คุณเพิ่มจุด (หรือตามที่ OP เขียนว่า "full stop") ในความคิดเห็นเกี่ยวกับโค้ดของคุณหรือไม่ เพื่อให้มันเกี่ยวข้องทำไม ?

4
ฉันจะแยกคำออกจากประโยคและกำหนดว่าแต่ละส่วนของคำพูดคืออะไร? [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเขียนสิ่งที่ต้องใช้ประโยคและระบุแต่ละคำที่มันมีและกำหนดว่าส่วนใดของคำพูดแต่ละคำคืออะไร ตัวอย่างเช่น สวัสดีชาวโลกฉันเป็นประโยคหนึ่ง จะกลับมานี้ verb noun, pronoun verb adjective noun ในอุดมคติแล้วฉันต้องการที่จะก้าวไปอีกขั้นหนึ่งและรับประโยคและโดยทางโปรแกรมแล้วเข้าใจว่าสิ่งที่พยายามตีความและอาจทำบางสิ่งเกี่ยวกับมัน ดังนั้นคำถามของฉันคือมีคนได้ยินบางสิ่งเช่นนี้หรือไม่?

6
กำลังพูดว่า "JSON Object" ซ้ำซ้อนหรือไม่
หาก JSON ย่อมาจากสัญกรณ์วัตถุ JavaScript แล้วเมื่อคุณพูดว่าวัตถุ JSON คุณไม่ได้พูดว่า "วัตถุจาวาสคริปต์วัตถุสัญลักษณ์" หรือไม่? จะพูดว่า "สตริง JSON" ถูกต้องหรือไม่ หรือว่าจะพูดให้ถูกต้องมากขึ้น (เช่นเดียวกับใน "บริการทั้งสองนี้ส่งต่อ JSON ระหว่างกัน")

3
การเขียนโปรแกรมเชิงวัตถุ: ทำไมต้อง“ มุ่งเน้น”
ฉันผ่านหลักสูตรการเขียนโปรแกรมเกมมาตลอด นี่ไม่ใช่ระดับวิทยาศาสตร์คอมพิวเตอร์ดังนั้นทฤษฎีจำนวนมากจึงหลีกเลี่ยงการสร้างพอร์ตโฟลิโอที่ใช้งานได้จริงและสิ่งที่ฉันเห็นว่าเป็นการเรียนรู้ของ JIT ซึ่งเห็นได้ชัดว่ามีความสำคัญมากกว่าในอุตสาหกรรมเกม หัวข้อแรกคือ "ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ" วลีนั้นไม่ได้รบกวนฉันจนกว่าฉันจะได้เรียนรู้เกี่ยวกับกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกัน (ฉันได้รับรายการนี้จากhttps://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ): ความจำเป็น การทำงาน ขั้นตอน โครงสร้าง เหตุการณ์ที่ขับเคลื่อนด้วย เชิงวัตถุ ที่เปิดเผย ออ-Based ฉันเข้าใจว่านี่ไม่ใช่รายการที่ละเอียดถี่ถ้วนและแนวคิดเหล่านี้ทั้งหมดไม่เท่ากันและส่วนใหญ่ไม่ได้ จำกัด เฉพาะ แต่ฉันไม่เข้าใจว่าทำไมพวกเขาส่วนใหญ่จึงได้คำเพียงคำเดียว การทำงาน; ที่เปิดเผย - แต่เมื่อเราพูดถึงการเขียนโปรแกรมกับวัตถุเราต้องชี้แจงว่าเรามุ่งเน้นไปที่วัตถุเหล่านั้น เราใช้วัตถุไม่ได้เหรอ? เราไม่สามารถมีสิ่งของได้หรือ ทำไมพวกเขาต้องปรับทิศทางเราในฐานะดาวนำทางของเรา? ดูที่นี่ ( https://en.wikipedia.org/wiki/Object-oriented_programming ) ไม่มีการใช้คำว่า "เชิง" ที่ระบุเป็นคำของตนเอง อธิบายเฉพาะ "วัตถุ" นอกจากนี้ฉันสามารถดูเหตุผลเชิงปฏิบัติว่าทำไมจึงใช้ Event-Driven เพราะการเขียนโปรแกรมกิจกรรมเป็นสิ่งที่คุณทำเมื่อคุณกำลังประชุมอยู่และโปรแกรม Automata ทำให้ดูเหมือนว่าคุณกำลังตั้งสายการผลิตหุ่นยนต์ ดังนั้นช่วยให้มีคำที่ชัดเจนเพิ่มเติมที่นั่น อะไรทำให้การเขียนโปรแกรมวัตถุเป็นวลีไม่เพียงพอที่จะอธิบายสิ่งที่เราทำเมื่อเราใช้วัตถุในการเขียนโปรแกรมของเรา เห็นได้ชัดจากน้ำเสียงของฉันฉันไม่ชอบคำว่า "เชิง" เกินไป มันทำให้ฉันนึกถึงเวลาของฉันในฐานะนักข่าวศาลฟังทนายหลังจากที่ทนายความใช้วลี "ที่เกี่ยวข้องกับ" เป็นเห็บวาจา …

3
ความแตกต่างระหว่างไวยากรณ์และไวยากรณ์คืออะไร?
ฉันเข้าใจความแตกต่างระหว่างไวยากรณ์และความหมาย - ไวยากรณ์ : วิธีรวมสัญลักษณ์ต่างๆเพื่อสร้างนิพจน์หรือคำสั่งที่ถูกต้อง ซีแมนทิกส์ : ความหมายของสัญลักษณ์เหล่านั้นที่มีการแสดงออก แต่ไวยากรณ์คืออะไร ตัวอย่างเช่น: บางครั้งฉันได้ยินคนพูดว่าโครงสร้างบางอย่างนั้น "ไม่ถูกต้องตามหลักไวยากรณ์ แต่ syntactically มันถูกต้อง" มันหมายความว่าอะไร?

1
ขั้นตอนที่ตามมาเมื่อเขียน lexer เป็นไปตามไวยากรณ์คืออะไร?
ในขณะที่อ่านคำตอบสำหรับคำถามที่ชี้แจงเกี่ยวกับแกรมมาร์, Lexers และ Parsersคำตอบดังกล่าวระบุว่า: [... ] ไวยากรณ์ BNF มีกฎทั้งหมดที่คุณต้องการสำหรับการวิเคราะห์คำและการแยกวิเคราะห์ สิ่งนี้เกิดขึ้นกับฉันค่อนข้างแปลกเพราะจนถึงตอนนี้ฉันมักจะคิดเสมอว่า lexer นั้นไม่ได้ยึดหลักไวยากรณ์เลยในขณะที่ parser มีพื้นฐานมาจากหนึ่ง ฉันมาถึงข้อสรุปนี้หลังจากอ่านโพสต์บล็อกจำนวนมากเกี่ยวกับการเขียน lexers และไม่มีใครเคยใช้1 EBNF / BNF เป็นพื้นฐานสำหรับการออกแบบ หาก lexers รวมถึง parsers อิงตามไวยากรณ์ EBNF / BNF แล้วจะมีวิธีการสร้าง lexer โดยใช้วิธีนั้นอย่างไร นั่นคือฉันจะสร้าง lexer โดยใช้ไวยากรณ์ EBNF / BNF ที่กำหนดได้อย่างไร ฉันเคยเห็นโพสต์มากมายที่เกี่ยวข้องกับการเขียนโปรแกรมแยกวิเคราะห์โดยใช้ EBNF / BNF เป็นแนวทางหรือพิมพ์เขียว แต่ฉันเจอมาไม่ถึงตอนนี้ที่แสดงเทียบเท่ากับการออกแบบเล็ก ตัวอย่างเช่นใช้ไวยากรณ์ต่อไปนี้: input = digit| string …

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

2
ประสิทธิภาพหน่วยความจำของ Haskell - วิธีไหนดีกว่ากัน?
เรากำลังใช้ไลบรารีการบีบอัดเมทริกซ์โดยยึดตามไวยากรณ์ไวยากรณ์สองมิติที่ได้รับการแก้ไข ตอนนี้เรามีสองวิธีสำหรับประเภทข้อมูลของเรา - วิธีใดจะดีกว่าในกรณีที่ใช้หน่วยความจำ (เราต้องการบีบอัดบางอย่าง;)) ไวยากรณ์ประกอบด้วย NonTerminals ที่มี 4 โปรดักชั่นหรือเทอร์มินัลทางด้านขวามือ เราจะต้องใช้ชื่อของโปรดักชั่นเพื่อการตรวจสอบความเท่าเทียมกันและการย่อเล็กสุดไวยากรณ์ ครั้งแรก: -- | Type synonym for non-terminal symbols type NonTerminal = String -- | Data type for the right hand side of a production data RightHandSide = DownStep NonTerminal NonTerminal NonTerminal NonTerminal | Terminal Int -- | Data type …

2
เหตุใดความยืดหยุ่นของ Forth จึงทำให้ไวยากรณ์ไม่เหมาะสม
ฉันเพิ่งทำภารกิจการเขียนภาษาโปรแกรมสแต็ก ก่อนที่ฉันจะเริ่มออกแบบภาษาของฉัน แต่ฉันคิดว่ามันเป็นความคิดที่ดีที่จะอ่านและทดลองใช้ภาษาที่มีอยู่เดิม นี่นำฉันมาที่หัวข้อของโพสต์นี้ ฉันอ่านบทความวิกิพีเดียใน Forthซึ่งเป็นภาษาที่ใช้สแต็กซึ่งใช้การแสดงออกสไตล์ postfix ในบทความฉันเห็นข้อความต่อไปนี้: ความยืดหยุ่นของ Forth ทำให้ไวยากรณ์ BNF คงที่ไม่เหมาะสมและไม่มีคอมไพเลอร์เสาหิน การขยายคอมไพเลอร์เพียงต้องการเขียนคำใหม่แทนที่จะแก้ไขไวยากรณ์และเปลี่ยนการใช้งานพื้นฐาน จากความเข้าใจของฉันในศัพท์แสง Forth คำว่า "คำว่า" ดูเหมือนจะตรงกันกับ "subroutine" ด้วยสิ่งนี้ข้อความข้างต้นดูเหมือนแปลก ทำไมความสามารถในการสร้างฟังก์ชั่นใหม่ใน Forth จึงทำให้ไวยากรณ์เป็นทางการสำหรับ Forth ไม่เหมาะสม? ทำไมคุณต้องเขียนไวยากรณ์ใหม่สำหรับแต่ละรูทีนย่อยใหม่ที่คุณกำหนด การเขียนคำศัพท์ใหม่ในสภาพแวดล้อมประกอบด้วยการขยายคอมไพเลอร์อย่างไร ข้อความข้างต้นดูเหมือนจะคล้ายกับว่าไวยากรณ์อย่างเป็นทางการไม่เหมาะสมสำหรับ Python เพราะคุณสามารถกำหนดฟังก์ชั่นใหม่ได้ ในความเป็นจริงฉันตัดสินใจที่จะพยายามเขียนไวยากรณ์สไตล์ BNF สำหรับชุดย่อยง่ายๆของ Forth ด้านล่าง: program ::= stmt+ stmt ::= func | expr func ::= ':' expr+ ';' expr …

3
มันสมเหตุสมผลไหมที่จะใช้“ ys” แทน“ ies” ในตัวระบุเพื่อความสะดวกในการค้นหาและแทนที่ฟังก์ชั่น? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว แม้ว่าจะไม่ถูกต้องตามหลักไวยากรณ์เมื่อเขียนตัวระบุสำหรับฟังก์ชั่นตัวแปร ฯลฯ มันเหมาะสมหรือไม่ที่จะต่อท้าย "s" กับคำพหูพจน์ที่ลงท้ายด้วย Y เหตุผลของฉันสำหรับเรื่องนี้ก็คือถ้าคุณต้องการค้นหาและแทนที่ตัวอย่างเช่นการแทนที่ "บริษัท " ด้วย "ผู้ขาย" "บริษัท " จะจับคู่ทั้งแบบเอกพจน์และพหูพจน์ (" บริษัทและ" บริษัท ") ในขณะที่ หากมีการสะกดคำพหูพจน์อย่างถูกต้องคุณจะต้องทำการค้นหาสองครั้งแยกกัน
9 grammar 

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