วิธีแก้ไขข้อผิดพลาด AppleScript:“ คาดว่า“ *)” แต่พบจุดสิ้นสุดของสคริปต์”


4

ฉันกำลังพยายามแก้ไขข้อผิดพลาดต่อไปนี้ในรหัส AppleScript ของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งที่ผิดพลาดนี้หมายความว่าฉันได้เปิดแสดงความคิดเห็นในบางส่วนของรหัสที่มีแต่ฉันได้ลืมที่จะปิดมันด้วย(**)

รหัสมีมากกว่า 4,000 บรรทัดและหลายร้อยความคิดเห็น ฉันลองดูรหัสเป็นเวลาหลายชั่วโมงเพื่อหาการปิดที่ขาดหายไป แต่ฉันหามันไม่เจอ

มีวิธีการหรือแอปพลิเคชันบางอย่างที่สามารถแจ้งให้ฉันทราบถึงบรรทัดที่แน่นอนของรหัสที่รับผิดชอบต่อข้อผิดพลาดหรือไม่?


1
มันจะให้ข้อผิดพลาดนั้นถ้าคุณมี - บรรทัดเป็นความคิดเห็นภายในบล็อก (* *) & ไม่คั่นด้วยตัวแบ่งบรรทัด
เท็ตสึจิ

เพื่อชี้แจงสิ่งที่เท็ตซึจินพูดคุณไม่สามารถมีความคิดเห็น --end-of-lineในบรรทัดเดียวกับความคิดเห็นที่ปิด *)และหากนี่เป็นสาเหตุของข้อผิดพลาดของคุณคุณสามารถค้นหาได้โดยการคัดลอกและวางรหัส AppleScript ลงใน เครื่องมือแก้ไขข้อความที่รองรับgrepการแสดงออกปกติจากนั้นค้นหาสตริงนี้.*--.*\*\)เป็น RegEx ฉันใช้TextWranglerสำหรับการดำเนินการเช่นนี้
user3439894

ดูคู่มือภาษา AppleScript - ความคิดเห็นสำหรับตัวอย่างของวิธีการใช้ความคิดเห็น
user3439894

@ user3439894 ฉันดาวน์โหลด TextWrangler และคัดลอกรหัส AppleScript ของฉันลงใน TextWrangler ดังนั้นฉันควรกด cmd + F แล้ววางสตริงที่คุณให้ไว้ในช่อง "ค้นหา" จากนั้นคลิกช่องทำเครื่องหมายสำหรับ "Grep" และสุดท้ายคลิกปุ่ม "ค้นหา" ฉันไม่แน่ใจว่าคุณหมายถึง"ในฐานะ RegEx" มีบางอย่างที่ฉันขาดหายไปหรือไม่? ฉันถามเพราะฉันเพิ่งเพิ่มความคิดเห็น --end-of-line ในบรรทัดเดียวกันกับความคิดเห็นแบบปิด *) แต่ฟังก์ชั่น "Find" ยังไม่พบอินสแตนซ์ใด ๆ
ทรงกลมของรูบิ

ฉันไม่มีปัญหาในการค้นหา RegEx ที่กำหนดซึ่งย่อมาจากRegular Expressionเมื่อมีอยู่ คุณใช้ OS X / mac OS และ TextWrangler เวอร์ชันใดอยู่
user3439894

คำตอบ:


1

มีความเป็นไวยากรณ์แพคเกจไฮไลต์สำหรับ AppleScriptสำหรับแก้ไขข้อความAtom มันทำงานได้ดีกว่าที่มีให้กับ Script Editor เนื่องจากจะสามารถระบุความคิดเห็นหลายบรรทัดได้อย่างถูกต้องแม้ว่าสคริปต์จะไม่ได้รวบรวม:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นควรระบุความผิดพลาด*)ได้ง่าย


สวัสดีฉันดาวน์โหลด Atom แล้วและฉันได้ติดตั้งแพคเกจภาษา - แอปพลิเคชัน แต่ฉันไม่เข้าใจวิธีเรียกใช้แพคเกจจริงหรือ
ทรงกลมของรูบิ

สำหรับฉันมันจะใช้โดยอัตโนมัติเมื่อฉันเปิดเอกสาร AppleScript ที่มีอยู่
Glorfindel

ฉันเปิดเอกสาร AppleScript ที่มีอยู่และใช้งานได้สำหรับฉันตอนนี้ แต่วิธีนี้ทำให้กระบวนการค้นหาสิ่งที่ขาดหายไป*)ง่ายขึ้นได้อย่างไร มันไม่เหมือนที่บอกสายที่มีข้อผิดพลาดใช่ไหม?
ทรงกลมของรูบิ

ไม่ได้คุณยังต้องผ่านเอกสารด้วยตัวเอง แต่การเน้นไวยากรณ์จะช่วยให้คุณเห็นข้อผิดพลาดจริงๆ
Glorfindel

1

ปรับปรุง:

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

ความคิดเห็นต่อไปนี้เป็นสาเหตุของข้อผิดพลาด:

    (*  
        "This is the text that I want to display            
    *)

คุณไม่สามารถใส่เครื่องหมายอัญประกาศคู่ในความคิดเห็น AppleScript ได้อย่างชัดเจน กล่าวคือถ้าคุณเปิดใบเสนอราคาคุณต้องปิดใบเสนอราคา

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

นอกจากนี้ความต้องการนี้ไม่ได้กล่าวถึงในคู่มือภาษา AppleScript - ความคิดเห็น

หากคุณสงสัยฉันเพิ่งทดสอบและคุณได้รับอนุญาตให้ใส่เครื่องหมายคำพูดเดี่ยวในความคิดเห็นโดยไม่ต้องปิดมัน ตัวอย่างเช่น,

(* 'This is the text that I want to display *)

ผลิตไม่มีข้อผิดพลาด


อย่างไรก็ตามเพื่อตอบคำถามเดิมของฉัน:

มีวิธีการหรือแอปพลิเคชันบางอย่างที่สามารถแจ้งให้ฉันทราบถึงบรรทัดที่แน่นอนของรหัสที่รับผิดชอบต่อข้อผิดพลาดหรือไม่?

ฉันจัดการวิธีคิดแบบแก้ปัญหาด้วยวิธี Heuristically มันเป็นพื้นฐานบ้าและไปหลายคนอาจจะเห็นได้ชัด *)แต่มันไม่เคยเกิดขึ้นกับผมขณะที่ผมกำลังอ่านบรรทัดหลังจากบรรทัดสำหรับชั่วโมงที่กำลังมองหาที่ขาดหายไป

ใช้วิธีการต่อไปนี้ฉันพบบรรทัดของรหัสที่รับผิดชอบในข้อผิดพลาดภายใน 5 นาที :

  1. สร้างไฟล์ AppleScript ใหม่ที่ว่างเปล่า

  2. คัดลอกครึ่งหนึ่งของรหัสของคุณไปยังไฟล์ใหม่

    1. หากรหัสนี้ก่อให้เกิดข้อผิดพลาดให้ลบครึ่งหนึ่งของรหัสนี้ รวบรวมรหัส

      1. หากรหัสนี้ยังคงมีข้อผิดพลาดให้ลบครึ่งหนึ่งของรหัสนี้ รวบรวมรหัส

      2. หากรหัสนี้ไม่ก่อให้เกิดข้อผิดพลาดอีกต่อไปให้กดปุ่มเลิกทำและลบอีกครึ่งหนึ่งของรหัส รวบรวมรหัส

    2. หากรหัสนี้ไม่ได้เกิดข้อผิดพลาดให้กดปุ่มเลิกทำ คราวนี้ให้คัดลอกอีกครึ่งหนึ่งของรหัสต้นฉบับ (กล่าวคือคัดลอกอีกครึ่งหนึ่งที่คุณไม่ได้คัดลอกในครั้งแรก)

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


1
ในที่สุดคุณก็ทำในสิ่งที่ฉันอยากจะทำเมื่อมีการอัปโหลดรหัสของคุณ ฉันคิดเกี่ยวกับการบอกคุณเกี่ยวกับวิธีการแก้ไขปัญหาการแบ่งครึ่งโดยทั่วไปรู้จักวิธีแบ่งและพิชิต แต่ฉันสามารถพบสาเหตุของข้อความแสดงข้อผิดพลาดได้เร็วขึ้นจากนั้นอธิบายว่าจะทำอย่างไร :)
user3439894

อ่า ขอบคุณที่แบ่งปันคำนี้ คุณช่วยเสนอทฤษฎี / การเก็งกำไรได้ไหมว่าทำไมภาษา AppleScript จึงไม่ทำงานหากลืมที่จะปิดเครื่องหมายอัญประกาศคู่ภายในความคิดเห็น? เพราะต้องการเครื่องหมายอัญประกาศคู่ปิดในความคิดเห็นดูเหมือนไร้สาระสำหรับฉัน
ทรงกลมของรูบิ

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