Erlang 21

epp_dodger




erlang

epp_dodger

मॉड्यूल

epp_dodger

मॉड्यूल सारांश

epp_dodger - एरलैंग प्रीप्रोसेसर को बायपास करता है।

विवरण

epp_dodger - epp_dodger प्रीप्रोसेसर को बायपास करता है।

यह मॉड्यूल टोकन और पूर्वप्रक्रमक निर्देश और मैक्रो अनुप्रयोगों के विस्तार के बिना ज्यादातर एर्लांग स्रोत कोड को पार्स करता है, जब तक कि ये वाक्य-रचना "अच्छी तरह से व्यवहार किए गए" हैं। क्योंकि erl_parse मॉड्यूल के सामान्य पार्स ट्री इन चीजों का प्रतिनिधित्व नहीं कर सकते हैं (सामान्य तौर पर, पार्सर को देखने से पहले वे erl_parse प्रीप्रोसेसर epp(3) द्वारा विस्तारित होते हैं), erl_syntax मॉड्यूल का उपयोग करके एक विस्तारित सिंटैक्स ट्री बनाया जाता है।

जानकारी का प्रकार

errorinfo () = {ErrorLine :: पूर्णांक (), मॉड्यूल :: परमाणु (), वर्णनात्मक :: शब्द ()}

यह एक तथाकथित एरलंग I / O ErrorInfo संरचना है; विवरण के लिए io(3) मॉड्यूल देखें।

निर्यात

parse (देव :: IODevice) -> {ठीक है, प्रपत्र} | {त्रुटि, errorinfo ()}

parse(IODevice, 1) समतुल्य parse(IODevice, 1)

parse (देव :: IODevice, L :: StartLine) -> {ठीक है, प्रपत्र} | {त्रुटि, errorinfo ()}

प्रकार

parse(IODevice, StartLine, []) बराबर parse(IODevice, StartLine, [])

यह भी देखें: parse/1

parse (देव :: IODevice, L0 :: StartLine, विकल्प) -> {ठीक है, प्रपत्र} | {त्रुटि, errorinfo ()}

प्रकार

आई / ओ स्ट्रीम से प्रोग्राम टेक्स्ट को पढ़ता है और परस करता है। अक्षर IODevice से अंत-फ़ाइल तक पढ़े जाते हैं; इसके अलावा, यह व्यवहार parse_file/2 लिए समान है। StartLine एक प्रारंभिक पंक्ति संख्या है, जो एक सकारात्मक पूर्णांक होनी चाहिए।

यह भी देखें: parse/2 , parse_file/2 , parse_form/2 , quick_parse/3

parse_file (फ़ाइल) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

parse_file/2 बराबर।

parse_file (फ़ाइल, विकल्प) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

एक फ़ाइल पढ़ता है और पार्स करता है। यदि सफल, {ok, Forms} लौटा दिया जाता है, जहां Forms सार सार पेड़ों की एक सूची है जो फ़ाइल के "प्रोग्राम रूपों" का प्रतिनिधित्व करता है (cf. erl_syntax:is_form/1 )। अन्यथा, {error, errorinfo()} को लौटा दिया जाता है, आमतौर पर यदि फ़ाइल नहीं खोली जा सकती। ध्यान दें कि पार्स त्रुटियां फॉर्म की लौटी हुई सूची में त्रुटि मार्कर के रूप में दिखाई देती हैं; वे इस फ़ंक्शन को विफल करने या {error, errorinfo()} वापस करने का कारण नहीं बनते हैं।

विकल्प:

{no_fail, boolean()}

यदि true , तो यह किसी भी प्रकार के प्रोग्राम फॉर्म को रिप्लेस करता है जो टाइप text नोड्स के साथ पार्स नहीं किया जा सकता है ( erl_syntax:text/1 ), पार्स त्रुटि की रिपोर्ट करने के बजाय फॉर्म के कच्चे टोकन अनुक्रम का प्रतिनिधित्व करता है। डिफ़ॉल्ट मान false

{clever, boolean()}

यदि यह true , तो यह कुछ मामलों में फिट होने पर epp_dodger स्रोत कोड को ठीक करने का प्रयास करता है, जहां पार्सिंग अन्यथा विफल होगा। वर्तमान में, यह स्ट्रिंग शाब्दिक और मैक्रोज़ के बीच ++ -ऑपरेटर सम्मिलित करता है, जहां यह दिखता है कि संघनन का इरादा था। डिफ़ॉल्ट मान false

यह भी देखें: parse/2 , quick_parse_file/1 , erl_syntax:is_form/1

parse_form (देव :: IODevice, L0 :: StartLine) -> {ठीक है, फ़ॉर्म, लाइननो} | {ईओएफ, लाइननो} | {एरर, एररइन्फो (), लाइननो}

प्रकार

parse_form(IODevice, StartLine, []) बराबर।

इसे भी देखें: quick_parse_form/2

parse_form (देव :: IODevice, L0 :: StartLine, विकल्प) -> {ठीक है, प्रपत्र, पंक्तिबद्ध} | {ईओएफ, लाइननो} | {एरर, एररइन्फो (), लाइननो}

प्रकार

एक I / O स्ट्रीम से एकल प्रोग्राम फॉर्म पढ़ता है और परसेंट करता है। IODevice से IODevice तब तक पढ़ा IODevice जब तक कि एक अंत-रूप मार्कर नहीं मिल जाता है (एक अवधि वर्ण IODevice द्वारा पीछा किया जाता है), या अंत-फ़ाइल तक; इसके अलावा, यह व्यवहार parse/3 समान है, सिवाय इसके कि रिटर्न वैल्यू में अंतिम लाइन नंबर भी दिया गया है जो कि StartLine प्रारंभिक लाइन नंबर है, और यह {eof, LineNo} वापस आ सकता है।

यह भी देखें: parse/3 , parse_form/2 , quick_parse_form/3

quick_parse (देव :: IODevice) -> {ठीक है, प्रपत्र} | {त्रुटि, errorinfo ()}

quick_parse(IODevice, 1) बराबर।

quick_parse (देव :: IODevice, L :: StartLine) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

quick_parse/3 बराबर।

इसे भी देखें: quick_parse/1

quick_parse (देव :: IODevice, L0 :: StartLine, विकल्प) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

parse/3 समान, लेकिन कोड का अधिक त्वरित और गंदा प्रसंस्करण करता है। विवरण के लिए quick_parse_file/2 देखें।

यह भी देखें: parse/3 , quick_parse/2 , quick_parse_file/2 , quick_parse_form/2

quick_parse_file (फ़ाइल) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

quick_parse_file/2 बराबर।

quick_parse_file (फ़ाइल, विकल्प) -> {ठीक है, फ़ॉर्म} | {त्रुटि, errorinfo ()}

प्रकार

parse_file/2 समान, लेकिन कोड का अधिक त्वरित और गंदा प्रसंस्करण करता है। मैक्रो परिभाषाएँ और अन्य प्रीप्रोसेसर निर्देश को छोड़ दिया जाता है, और सभी मैक्रो कॉल को परमाणुओं से बदल दिया जाता है। यह तब उपयोगी होता है जब केवल कोड की मुख्य संरचना रुचि की हो, न कि विवरण की। इसके अलावा, त्वरित-पार्स विधि आमतौर पर सामान्य, अधिक सटीक पार्सिंग की तुलना में अधिक अजीब मामलों को संभाल सकती है।

विकल्प: parse_file/2 देखें। ध्यान दें कि quick_parse_file/2 , विकल्प no_fail डिफ़ॉल्ट रूप से true है।

यह भी देखें: parse_file/2 , quick_parse/2

quick_parse_form (देव :: IODevice, L0 :: StartLine) -> {ठीक है, प्रपत्र, पंक्तिबद्ध} | {ईओएफ, लाइननो} | {एरर, एररइन्फो (), लाइननो}

प्रकार

quick_parse_form/3 बराबर।

यह भी देखें: parse_form/2

quick_parse_form (देव :: IODevice, L0 :: StartLine, विकल्प) -> {ठीक है, फ़ॉर्म, लाइननो} | {ईओएफ, लाइननो} | {एरर, एररइन्फो (), लाइननो}

प्रकार

parse_form/3 समान, लेकिन कोड का अधिक त्वरित और गंदा प्रसंस्करण करता है। विवरण के लिए quick_parse_file/2 देखें।

यह भी देखें: parse/3 , parse_form/3 , quick_parse_form/2

tokens_to_string (टोकन :: [शब्द ()]) -> स्ट्रिंग ()

दिए गए टोकन अनुक्रम के अनुरूप स्ट्रिंग उत्पन्न करता है। फिर से उसी टोकन सूची को प्राप्त करने के लिए स्ट्रिंग को फिर से टोकन दिया जा सकता है।

रिचर्ड कार्लसन [email protected]