ทฤษฎีภาษาเกี่ยวข้องกับทฤษฎีการคำนวณ ซึ่งเป็นด้านปรัชญามากกว่าของวิทยาการคอมพิวเตอร์เกี่ยวกับการตัดสินใจว่าโปรแกรมใดเป็นไปได้หรือจะเป็นไปได้ที่จะเขียนและปัญหาประเภทใดที่ไม่สามารถเขียนอัลกอริทึมเพื่อแก้ไขได้
นิพจน์ทั่วไปเป็นวิธีการอธิบายภาษาปกติ ภาษาปกติคือภาษาที่สามารถตัดสินใจได้โดยออโตเมตัน จำกัด ที่กำหนด
คุณควรอ่านบทความเกี่ยวกับ Finite State Machines: http://en.wikipedia.org/wiki/Finite_state_machine
และภาษาทั่วไป:
http://en.wikipedia.org/wiki/Regular_language
ภาษาปกติทั้งหมดเป็นภาษาฟรีตามบริบท แต่มีภาษาฟรีตามบริบทที่ไม่ปกติ Context Free Language คือชุดของสตริงทั้งหมดที่ยอมรับโดย Context Free Grammer หรือ Pushdown Automata ซึ่งเป็น Finite State Machine ที่มีสแต็กเดียว: http://en.wikipedia.org/wiki/Pushdown_automaton#PDA_and_Context-free_Languages
มีภาษาที่ซับซ้อนมากขึ้นซึ่งต้องใช้ Turing Machine (โปรแกรมที่เป็นไปได้ใด ๆ ที่คุณสามารถเขียนบนคอมพิวเตอร์ของคุณได้) เพื่อตัดสินใจว่าสตริงนั้นเป็นภาษาหรือไม่
ทฤษฎีภาษายังเกี่ยวข้องกับปัญหา P เทียบกับ NP และสิ่งที่น่าสนใจอื่น ๆ
หนังสือเรียนรู้เบื้องต้นเกี่ยวกับวิทยาการคอมพิวเตอร์ปีที่สามของฉันค่อนข้างดีในการอธิบายสิ่งนี้: บทนำสู่ทฤษฎีการคำนวณ โดย Michael Sipser แต่ฉันต้องเสียเงิน 160 เหรียญเพื่อซื้อใหม่และมันก็ไม่ใหญ่มาก บางทีคุณอาจหาสำเนาที่ใช้แล้วหรือหาสำเนาที่ห้องสมุดหรือบางอย่างที่อาจช่วยคุณได้
แก้ไข:
ข้อ จำกัด ของนิพจน์ทั่วไปและชั้นเรียนภาษาที่สูงขึ้นได้รับการวิจัยเป็นจำนวนมากในช่วง 50 ปีที่ผ่านมา คุณอาจสนใจคำขยายการปั๊มสำหรับภาษาทั่วไป เป็นวิธีการพิสูจน์ว่าภาษาบางภาษาไม่ปกติ:
http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages
หากภาษาไม่ปกติอาจเป็นแบบ Context Free ซึ่งหมายความว่าสามารถอธิบายได้โดย Context Free Grammer หรืออาจอยู่ในชั้นเรียนภาษาที่สูงขึ้นคุณสามารถพิสูจน์ได้ว่าไม่ใช่ Context Free โดยการปั๊ม lemma สำหรับ Context Free ภาษาที่คล้ายกับภาษาสำหรับนิพจน์ทั่วไป
ภาษาอาจไม่สามารถระบุได้ซึ่งหมายความว่าแม้แต่เครื่องทัวริง (อาจตั้งโปรแกรมให้คอมพิวเตอร์ของคุณทำงานได้) ก็ไม่สามารถตั้งโปรแกรมเพื่อตัดสินใจว่าควรยอมรับสตริงเป็นภาษาหรือปฏิเสธ
ฉันคิดว่าส่วนที่คุณสนใจมากที่สุดคือ Finite State Machines (ทั้งกำหนดและกำหนด) เพื่อดูว่าภาษาใดที่นิพจน์ทั่วไปสามารถตัดสินใจได้และคำขยายการปั๊มเพื่อพิสูจน์ว่าภาษาใดไม่ปกติ
โดยทั่วไปภาษาจะไม่ปกติหากต้องการหน่วยความจำหรือความสามารถในการนับ ภาษาของวงเล็บที่ตรงกันจะไม่ปกติเช่นเครื่องต้องจำไว้ว่าเปิดวงเล็บไว้หรือไม่เพื่อให้ทราบว่าต้องปิดหรือไม่
ภาษาของสตริงทั้งหมดที่ใช้ตัวอักษร a และ b ที่มี b อย่างน้อยสามตัวเป็นภาษาปกติ: ba ba ba
ภาษาของสตริงทั้งหมดที่ใช้ตัวอักษร a และ b ที่มี b มากกว่า a ไม่ใช่ภาษาปกติ
นอกจากนี้คุณไม่ควรให้ภาษา จำกัด ทั้งหมดเป็นภาษาปกติตัวอย่างเช่น:
ภาษาของสตริงทั้งหมดที่มีความยาวน้อยกว่า 50 อักขระโดยใช้ตัวอักษร a และ b ที่มี b มากกว่า a เป็นปกติเนื่องจากเป็นภาษาที่ จำกัด เรารู้ว่าสามารถอธิบายได้ว่าเป็น (b | abb | bab | bba | aabbb | ababb | .. ) ฯลฯ จนกว่าจะมีการระบุชุดค่าผสมที่เป็นไปได้ทั้งหมด
Automata Theorem