AppleScript त्रुटि को कैसे डीबग करें: "अपेक्षित" *) "लेकिन स्क्रिप्ट का अंत मिला।"


4

मैं अपने AppleScript कोड में निम्नलिखित त्रुटि को ठीक करने के लिए पागल हो रहा हूं:

यहां छवि विवरण दर्ज करें

इस त्रुटि का मतलब यह है कि मैंने कोड में कहीं एक टिप्पणी खोली है, (*लेकिन मैं इसे बंद करना भूल गया हूं *)

कोड में 4000 से अधिक लाइनें और सैकड़ों टिप्पणियां हैं। मैंने इस गुम हुए नज़दीकियों को खोजने के लिए घंटों तक कोड को देखा है, लेकिन मुझे नहीं मिला।

क्या कोई विधि या अनुप्रयोग है जो मुझे उस कोड की सटीक रेखा के बारे में सूचित कर सकता है जो त्रुटि के लिए जिम्मेदार है?


1
यह भी त्रुटि देगा यदि आपके पास (* * * ब्लॉक के रूप में एक टिप्पणी के रूप में एक लाइन है - और एक लाइन ब्रेक द्वारा अलग नहीं किया गया है।
टेटसुजिन

टेटसुजिन ने जो कहा, उसे स्पष्ट करने के लिए, आप बंद लाइन के रूप में एक ही लाइन पर --end-of-line टिप्पणी नहीं कर सकते हैं ) टिप्पणी ब्लॉक करें और यदि यह आपकी त्रुटि का कारण है तो आप AppleScript कोड को कॉपी और पेस्ट करके पा सकते हैं एक टेक्स्ट एडिटर जो grepनियमित अभिव्यक्ति का समर्थन करता है और फिर इस स्ट्रिंग .*--.*\*\)को RegEx के रूप में खोजता है। मैं इस तरह के संचालन के लिए TextWrangler का उपयोग करता हूं ।
user3439894

AppleScript लैंग्वेज गाइड देखें - आप टिप्पणियों का उपयोग कैसे कर सकते हैं इसका एक उदाहरण के लिए टिप्पणियाँ।
user3439894

@ user3439894 मैंने TextWrangler डाउनलोड किया और अपने AppleScript कोड को TextWrangler में कॉपी किया। तो, मुझे cmd + F को हिट करना चाहिए, फिर उस स्ट्रिंग को पेस्ट करें जो आपने "फाइंड" फ़ील्ड में दी थी, फिर "ग्रेप" के लिए चेकबॉक्स पर क्लिक करें, और अंत में "फाइंड" बटन पर क्लिक करें। मुझे यकीन नहीं है कि आप "के रूप में RegEx" से क्या मतलब है क्या मुझे याद आ रही है कि वहाँ कुछ है? मैं पूछता हूं क्योंकि मैंने एक ही लाइन पर एक बंद लाइन के रूप में एक -एंड-ऑफ-लाइन टिप्पणी जोड़ी) * ब्लॉक टिप्पणी, लेकिन "ढूंढें" फ़ंक्शन अभी भी कोई उदाहरण नहीं मिलता है।
रुबिक का गोला

मुझे परिभाषित RegEx को खोजने में कोई समस्या नहीं है, जो नियमित अभिव्यक्ति के लिए खड़ा है , जब यह मौजूद है। OS X / mac OS और TextWrangler का आप किस संस्करण का उपयोग कर रहे हैं?
user3439894

जवाबों:


1

टेक्स्ट एडिटर एटम के लिए AppleScript के लिए एक सिंटैक्स हाइलाइटिंग पैकेज है । यह स्क्रिप्ट संपादक के साथ प्रदान की गई तुलना में बेहतर काम करता है, क्योंकि यह बहुस्तरीय टिप्पणियों की सही पहचान करेगा, भले ही स्क्रिप्ट स्वयं संकलन न करे:

यहां छवि विवरण दर्ज करें

वहां से, लापता की पहचान करना आसान होना चाहिए *)


नमस्ते, मैंने एटम डाउनलोड कर लिया है और मैंने भाषा-एपलीस्क्रिप्ट पैकेज स्थापित कर लिया है, लेकिन मुझे समझ नहीं आ रहा है कि वास्तव में पैकेज कैसे चलाया जाए?
रुबिक का गोला

मेरे लिए, यह स्वचालित रूप से लागू होता है जब मैंने एक मौजूदा AppleScript दस्तावेज़ खोला।
Glorfindel

मैंने एक मौजूदा AppleScript दस्तावेज़ खोला, और यह अब मेरे लिए काम करता है। लेकिन यह विधि कैसे लापता *)किसी भी आसान खोजने की प्रक्रिया बनाती है? यह ऐसा नहीं है कि यह मुझे बताता है कि किस लाइन में त्रुटि है, सही है?
रूबिक का गोला

नहीं, आपको अभी भी दस्तावेज़ के माध्यम से स्वयं जाना है, लेकिन सिंटैक्स हाइलाइटिंग वास्तव में गलती को समझने में आपकी सहायता करेगा।
Glorfindel

1

अपडेट करें:

(*बिना किसी कारण के मुझे एक उदाहरण नहीं मिल सकता है इसका कारण यह है कि वास्तव में*) हर उदाहरण के अनुरूप है । यह भ्रामक त्रुटि संदेश के बावजूद त्रुटि का कारण नहीं था, जिसने दावा किया कि यह था।(* *)

निम्न टिप्पणी त्रुटि के लिए जिम्मेदार थी:

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

आप जाहिरा तौर पर AppleScript टिप्पणी में एक विषम संख्या में दोहरे उद्धरण चिह्न नहीं डाल सकते। यह कहना है, यदि आप एक उद्धरण खोलते हैं, तो आपको उद्धरण बंद करना होगा।

मुझे नहीं पता कि यह क्यों है। यह एक टिप्पणी है , पीट के लिए। यदि मैं टिप्पणी में दोहरा उद्धरण चिह्न बंद करना भूल जाता हूं तो AppleScript की देखभाल क्यों करता है ?

साथ ही, AppleScript Language Guide - टिप्पणियां में इस आवश्यकता का उल्लेख नहीं किया गया है ।

यदि आप उत्सुक हैं, तो मैंने अभी इसका परीक्षण किया है, और आपको इसे बंद किए बिना एक टिप्पणी में एक ही उद्धरण चिह्न लगाने की अनुमति है। उदाहरण के लिए,

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

कोई त्रुटि नहीं पैदा करता है।


वैसे भी, मेरे मूल प्रश्न का उत्तर देने के लिए:

क्या कोई विधि या अनुप्रयोग है जो मुझे उस कोड की सटीक रेखा के बारे में सूचित कर सकता है जो त्रुटि के लिए जिम्मेदार है?

मैं एक तरीके के बारे में सोचने में कामयाब रहा। यह पागल बुनियादी है, और कई लोगों के लिए यह शायद स्पष्ट है, लेकिन यह मेरे लिए कभी नहीं हुआ क्योंकि मैं घंटों तक लाइन के बाद लाइन पढ़ रहा था, लापता की तलाश कर रहा था *)

निम्नलिखित विधि का उपयोग करते हुए, मुझे 5 मिनट के भीतर त्रुटि के लिए जिम्मेदार कोड की सटीक रेखा मिली :

  1. एक नया, रिक्त AppleScript फ़ाइल बनाएँ।

  2. अपने आधे कोड को नई फ़ाइल में कॉपी करें।

    1. यदि यह कोड एक त्रुटि उत्पन्न करता है, तो इस कोड का एक आधा हटा दें। कोड संकलित करें।

      1. यदि यह कोड अभी भी एक त्रुटि उत्पन्न करता है, तो इस कोड का एक आधा हटा दें। कोड संकलित करें।

      2. यदि यह कोड अब कोई त्रुटि उत्पन्न नहीं करता है, तो पूर्ववत करें बटन को हिट करें और कोड के अन्य आधे को हटा दें। कोड संकलित करें।

    2. यदि यह कोड त्रुटि उत्पन्न नहीं करता है, तो पूर्ववत् बटन दबाएं। इस बार, मूल कोड के दूसरे आधे भाग को कॉपी करें (यानी, उस आधे को कॉपी करें जिसे आपने पहली बार कॉपी नहीं किया था)।

तुम्हें नया तरीका मिल गया है। आप मूल रूप से कोड को रोक रहे हैं (परीक्षण और त्रुटि के द्वारा) जब तक आप त्रुटि को कोड की एक पंक्ति में अलग नहीं कर सकते। इस पद्धति के लिए एक तकनीकी शब्द होना चाहिए, लेकिन मुझे यह शब्द नहीं पता है।


1
आपने अंततः वही किया जो मैंने किया होगा, आपके द्वारा अपलोड किया गया कोड। मैंने आपको समस्या निवारण की हाफ-स्प्लिट विधि के बारे में बताने के बारे में सोचा , जिसे आमतौर पर विभाजन और विजय दृष्टिकोण के रूप में जाना जाता था, लेकिन मुझे त्रुटि संदेश का कारण तेजी से मिल सकता था, फिर समझाता हूं कि क्या करना है। :)
user3439894

बहुत सुंदर। कार्यकाल साझा करने के लिए धन्यवाद। क्या आप किसी भी सिद्धांत / अटकलें की पेशकश कर सकते हैं कि क्यों AppleScript भाषा नहीं बनाई गई थी अगर कोई टिप्पणी के भीतर एक दोहरे उद्धरण चिह्न को बंद करना भूल जाता है? क्योंकि एक टिप्पणी में एक बंद दोहरे उद्धरण चिह्न की आवश्यकता मेरे लिए निरर्थक लगती है।
रुबिक का गोला

1
आपको उस बारे में Apple होना चाहिए। स्क्रिप्ट एडिटर अन्य भाषाओं द्वारा उपयोग किए गए आईडीई की तुलना में कुछ हद तक लंगड़ा है।
user3439894
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.