अंग्रेज़ीफ्रेंचस्पेनिश

Ad


ऑनवर्क्स फ़ेविकॉन

फाइलचेक-3.6 - क्लाउड में ऑनलाइन

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स फ्री होस्टिंग प्रदाता में फाइलचेक-3.6 चलाएं।

यह कमांड फाइलचेक-3.6 है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


फाइलचेक - लचीला पैटर्न मिलान फ़ाइल सत्यापनकर्ता

SYNOPSIS


फाइल की जांच मिलान-फ़ाइलनाम [--चेक-उपसर्ग=XXX] [--सख्त-व्हाइटस्पेस]

वर्णन


फाइल की जांच दो फ़ाइलें पढ़ता है (एक मानक इनपुट से, और एक कमांड लाइन पर निर्दिष्ट)
और दूसरे को सत्यापित करने के लिए एक का उपयोग करता है। यह व्यवहार टेस्टसूट के लिए विशेष रूप से उपयोगी है,
जो यह सत्यापित करना चाहता है कि किसी टूल का आउटपुट (उदा LLC) में अपेक्षित शामिल है
जानकारी (उदाहरण के लिए, esp से एक movsd या जो भी दिलचस्प हो)। यह समान है
उपयोग करने के लिए ग्रेप, लेकिन इसे एक फ़ाइल में कई अलग-अलग इनपुट के मिलान के लिए अनुकूलित किया गया है
विशिष्ट क्रम.

RSI मिलान-फ़ाइलनाम फ़ाइल उस फ़ाइल को निर्दिष्ट करती है जिसमें मिलान करने के लिए पैटर्न शामिल हैं। फ़ाइल
सत्यापित करने के लिए मानक इनपुट से पढ़ा जाता है जब तक कि --इनपुट फ़ाइल विकल्प का प्रयोग किया जाता है।

विकल्प


-मदद कमांड लाइन विकल्पों का सारांश प्रिंट करें।

--चेक-उपसर्ग उपसर्ग
FileCheck की सामग्री खोजता है मिलान-फ़ाइलनाम मिलान करने के लिए पैटर्न के लिए. द्वारा
डिफ़ॉल्ट, ये पैटर्न "के साथ उपसर्ग किए गए हैंचेक:"। यदि आप एक का उपयोग करना चाहते हैं
अलग-अलग उपसर्ग (उदाहरण के लिए क्योंकि एक ही इनपुट फ़ाइल कई अलग-अलग जाँच कर रही है
उपकरण या विकल्प), द --चेक-उपसर्ग तर्क आपको एक या अधिक निर्दिष्ट करने की अनुमति देता है
मिलान करने के लिए उपसर्ग. एकाधिक उपसर्ग परीक्षणों के लिए उपयोगी होते हैं जो बदल सकते हैं
अलग-अलग रन विकल्प, लेकिन अधिकांश लाइनें समान रहती हैं।

--इनपुट फ़ाइल फ़ाइल का नाम
जाँचने के लिए फ़ाइल (stdin पर डिफ़ॉल्ट)।

--सख्त-व्हाइटस्पेस
डिफ़ॉल्ट रूप से, फ़ाइलचेक इनपुट क्षैतिज व्हाइटस्पेस (रिक्त स्थान और टैब) को कैनोनिकलाइज़ करता है
जिसके कारण यह इन अंतरों को अनदेखा कर देता है (एक स्थान एक टैब से मेल खाएगा)।
--सख्त-व्हाइटस्पेस तर्क इस व्यवहार को अक्षम कर देता है. अंत-पंक्ति अनुक्रम हैं
UNIX-शैली में विहित \n सभी मोड में.

--निहित-जाँच-नहीं जाँच-पैटर्न
सकारात्मक जांच के बीच निर्दिष्ट पैटर्न के लिए अंतर्निहित नकारात्मक जांच जोड़ता है।
यह विकल्प बिना किसी सामग्री के कठोर परीक्षण लिखने की अनुमति देता है चेक-नहींs.

उदाहरण के लिए, "--निहित-जाँच-नहीं चेतावनी:"नैदानिक ​​​​परीक्षण करते समय उपयोगी हो सकता है
ऐसे टूल से संदेश जिनमें इसके समान कोई विकल्प नहीं है बजना -सत्यापित. इसके साथ
विकल्प फ़ाइलचेक यह सत्यापित करेगा कि इनपुट में ऐसी चेतावनियाँ नहीं हैं जिन्हें कवर नहीं किया गया है
कोई चेक: पैटर्न।

-संस्करण
इस कार्यक्रम की संस्करण संख्या दिखाएं।

बाहर निकलें स्थिति


If फाइल की जांच सत्यापित करता है कि फ़ाइल अपेक्षित सामग्री से मेल खाती है, यह 0 के साथ बाहर निकलती है।
अन्यथा, यदि नहीं, या यदि कोई त्रुटि होती है, तो यह गैर-शून्य मान के साथ बाहर निकल जाएगा।

ट्यूटोरियल


फाइलचेक का उपयोग आम तौर पर एलएलवीएम रिग्रेशन परीक्षणों से किया जाता है, जिसे आरयूएन लाइन पर लागू किया जाता है
कसौटी। RUN लाइन से FileCheck का उपयोग करने का एक सरल उदाहरण इस तरह दिखता है:

; चलाएँ: llvm-as <%s | एलएलसी -मार्च=x86-64 | फ़ाइलचेक %s

यह सिंटैक्स वर्तमान फ़ाइल को पाइप करने के लिए कहता है ("%s") में llvm-के रूप में, उसमें पाइप डालें LLC, तो
के आउटपुट को पाइप करें LLC में फाइल की जांच. इसका मतलब यह है कि फाइलचेक इसका सत्यापन करेगा
निर्दिष्ट फ़ाइल नाम तर्क के विरुद्ध मानक इनपुट (एलएलसी आउटपुट) (मूल)। ।NS
फ़ाइल द्वारा निर्दिष्ट "%s")। यह कैसे काम करता है यह देखने के लिए, आइए बाकी हिस्सों को देखें ।NS पट्टिका
(RUN लाइन के बाद):

शून्य को परिभाषित करें @sub1(i32* %p, i32 %v) {
प्रवेश:
; जांचें: उप1:
; जांचें: सब्ल
%0 = टेल कॉल i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p, i32 %v)
पुनः शून्य
}

शून्य को परिभाषित करें @inc4(i64* %p) {
प्रवेश:
; जाँच करें: inc4:
; जाँच करें: incq
%0 = टेल कॉल i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
पुनः शून्य
}

यहां आप कुछ देख सकते हैं"चेक:"टिप्पणियों में निर्दिष्ट पंक्तियाँ। अब आप देख सकते हैं कि फ़ाइल कैसी है
में पाइप किया जाता है llvm-के रूप में, तो LLC, और मशीन कोड आउटपुट वह है जिसे हम सत्यापित कर रहे हैं।
फ़ाइलचेक यह सत्यापित करने के लिए मशीन कोड आउटपुट की जाँच करता है कि यह "से मेल खाता है"चेक:"पंक्तियाँ
उल्लिखित करना।

" का वाक्यविन्यासचेक:"लाइनें बहुत सरल हैं: वे निश्चित स्ट्रिंग हैं जो अवश्य होनी चाहिए
आदेश देना। फ़ाइलचेक डिफ़ॉल्ट रूप से क्षैतिज रिक्त स्थान अंतरों को अनदेखा कर देता है (उदाहरण के लिए एक स्थान है
एक टैब से मिलान करने की अनुमति है) लेकिन अन्यथा, "की सामग्रीचेक:"लाइन आवश्यक है
परीक्षण फ़ाइल में किसी चीज़ का बिल्कुल मिलान करें।

FileCheck (grep की तुलना में) के बारे में एक अच्छी बात यह है कि यह परीक्षण मामलों को मर्ज करने की अनुमति देता है
तार्किक समूहों में एक साथ। उदाहरण के लिए, क्योंकि उपरोक्त परीक्षण इसकी जाँच कर रहा है
"उप1:"और"inc4:"लेबल, यह तब तक मेल नहीं खाएगा जब तक कि कोई न हो"सब्ल"उनके बीच में
लेबल. यदि यह फ़ाइल में कहीं और मौजूद है, तो इसकी गणना नहीं की जाएगी: "ग्रेप सब्ल"
मेल खाता है अगर "सब्ल"फ़ाइल में कहीं भी मौजूद है।

RSI फाइल की जांच -चेक-उपसर्ग विकल्प
फ़ाइलचेक -चेक-उपसर्ग विकल्प एकाधिक परीक्षण कॉन्फ़िगरेशन को संचालित करने की अनुमति देता है
एक ।NS फ़ाइल। यह कई परिस्थितियों में उपयोगी है, उदाहरण के लिए, अलग-अलग परीक्षण करना
वास्तुशिल्प वेरिएंट के साथ LLC. यहाँ एक सरल उदाहरण है:

; चलाएँ: llvm-as <%s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
; भागो: | फ़ाइलचेक %s -चेक-उपसर्ग=X32
; चलाएँ: llvm-as <%s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
; भागो: | फ़ाइलचेक %s -चेक-उपसर्ग=X64

परिभाषित करें <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) संज्ञा {
%tmp1 = सम्मिलित तत्व <4 x i32>; %tmp, i32 %s, i32 1
ret <4 x i32> %tmp1
; X32: पिन्सर्ड_1:
; X32: पिन्सर्ड $1, 4(%esp), %xmm0

; X64: पिन्सर्ड_1:
; X64: पिन्सर्ड $1, %edi, %xmm0
}

इस मामले में, हम परीक्षण कर रहे हैं कि हमें 32-बिट और दोनों के साथ अपेक्षित कोड जनरेशन मिले
64-बिट कोड जनरेशन।

RSI चेक-अगला: निदेश
कभी-कभी आप पंक्तियों का मिलान करना चाहते हैं और यह सत्यापित करना चाहते हैं कि मिलान बिल्कुल सही तरीके से होता है
लगातार पंक्तियाँ जिनके बीच में कोई अन्य रेखा नहीं है। इस मामले में, आप "का उपयोग कर सकते हैंचेक:"
और "चेक-अगला:"इसे निर्दिष्ट करने के निर्देश। यदि आपने एक कस्टम चेक उपसर्ग निर्दिष्ट किया है,
महज प्रयोग करें "-अगला:"। उदाहरण के लिए, ऐसा कुछ काम करता है जैसा आप अपेक्षा करते हैं:

शून्य को परिभाषित करें @t2(<2 x डबल>* %r, <2 x डबल>* %A, डबल %B) {
%tmp3 = लोड <2 x डबल>* %A, संरेखित 16
%tmp7 = इन्सर्टलेमेंट <2 x डबल> अनडिफ़, डबल %B, i32 0
%tmp9 = शफ़लवेक्टर <2 x डबल> %tmp3,
<2 x डबल> %tmp7,
<2 x i32> < i32 0, i32 2 >
स्टोर <2 x डबल> %tmp9, <2 x डबल>* %r, संरेखित 16
पुनः शून्य

; जाँच करें: t2:
; जांचें: movl 8(%esp), %eax
; चेक-अगला: movapd (%eax), %xmm0
; चेक-अगला: movhpd 12(%esp), %xmm0
; चेक-अगला: movl 4(%esp), %eax
; चेक-अगला: movapd %xmm0, (%eax)
; चेक-अगला: सेवानिवृत्त
}

"चेक-अगला:"निर्देश इनपुट को अस्वीकार करते हैं जब तक कि इसके बीच बिल्कुल एक नई लाइन न हो
और पिछला निर्देश। ए "चेक-अगला:"किसी फ़ाइल में पहला निर्देश नहीं हो सकता।

RSI चेक-नहीं: निदेश
"चेक-नहीं:"निर्देश का उपयोग यह सत्यापित करने के लिए किया जाता है कि दो के बीच कोई स्ट्रिंग नहीं आती है
मैच (या पहले मैच से पहले, या आखिरी मैच के बाद)। उदाहरण के लिए, उसे सत्यापित करने के लिए
परिवर्तन द्वारा एक भार हटा दिया जाता है, इस तरह के परीक्षण का उपयोग किया जा सकता है:

i8 को परिभाषित करें @coerce_offset0(i32 %V, i32* %P) {
स्टोर i32 %V, i32* %P

%P2 = बिटकास्ट i32* %P से i8*
%P3 = getelementptr i8* %P2, i32 2

%A = लोड i8* %P3
रेट i8 %A
; जांचें: @coerce_offset0
; चेक-नहीं: लोड करें
; जांचें: ret i8
}

RSI चेक-डैग: निदेश
यदि उन स्ट्रिंग्स का मिलान करना आवश्यक है जो कड़ाई से अनुक्रमिक क्रम में नहीं आती हैं,
"चेक-डैग:"उन्हें दो मैचों के बीच (या पहले मैच से पहले) सत्यापित करने के लिए इस्तेमाल किया जा सकता है
या आखिरी मैच के बाद)। उदाहरण के लिए, क्लैंग उल्टे क्रम में व्यवहार्य ग्लोबल्स उत्सर्जित करता है। का उपयोग करते हुए
चेक-डैग:, हम चेक को प्राकृतिक क्रम में रख सकते हैं:

// चलाएँ: %clang_cc1 %s -emit-llvm -o - | फ़ाइलचेक %s

संरचना फू {आभासी शून्य विधि(); };
फू एफ; // vtable उत्सर्जित करें
// चेक-डीएजी: @_ZTV3Foo =

स्ट्रक्चर बार {वर्चुअल शून्य विधि(); };
बार बी;
// चेक-डीएजी: @_ZTV3Bar =

चेक-नहीं: निर्देशों को मिश्रित किया जा सकता है चेक-डैग: बीच में स्ट्रिंग्स को बाहर करने के निर्देश
आसपास का चेक-डैग: निर्देश परिणामस्वरूप, आस-पास चेक-डैग: निर्देशों
पुन: व्यवस्थित नहीं किया जा सकता, यानी सभी घटनाएं मेल खाती हैं चेक-डैग: से पहले चेक-नहीं: मना है
मेल खाने वाली घटनाओं से पीछे रह जाना चेक-डैग: बाद चेक-नहीं:। उदाहरण के लिए,

; चेक-डैग: पहले
; चेक-नहीं: नहीं
; चेक-डेग: बाद में

यह केस इनपुट स्ट्रिंग्स को अस्वीकार कर देगा इससे पहले के बाद होता है बाद.

कैप्चर किए गए चर के साथ, चेक-डैग: DAG के वैध टोपोलॉजिकल ऑर्डरों का मिलान करने में सक्षम है
एक चर की परिभाषा से लेकर उसके उपयोग तक किनारों के साथ। यह उपयोगी है, उदाहरण के लिए, जब आपका
परीक्षण मामलों को निर्देश अनुसूचक से विभिन्न आउटपुट अनुक्रमों से मेल खाने की आवश्यकता है। के लिए
उदाहरण,

; चेक-डीएजी: [[REG1:r[0-9]+]], r1, r2 जोड़ें
; चेक-डीएजी: [[REG2:r[0-9]+]], r3, r4 जोड़ें
; जांचें: mul r5, [[REG1]], [[REG2]]

इस मामले में, उस दो का कोई भी आदेश जोड़ना निर्देशों की अनुमति होगी.

यदि आप परिभाषित कर रहे हैं और उसी में वेरिएबल का उपयोग करना चेक-डैग: ब्लॉक करें, ध्यान रखें कि
परिभाषा नियम मेल खा सकता है बाद इसके प्रयोग।

तो, उदाहरण के लिए, नीचे दिया गया कोड पास हो जाएगा:

; चेक-डीएजी: vmov.32 [[REG2:d[0-9]+]][0]
; चेक-डीएजी: vmov.32 [[आरईजी2]][1]
vmov.32 d0 [1]
vmov.32 d0 [0]

जबकि यह अन्य कोड, नहीं होगा:

; चेक-डीएजी: vmov.32 [[REG2:d[0-9]+]][0]
; चेक-डीएजी: vmov.32 [[आरईजी2]][1]
vmov.32 d1 [1]
vmov.32 d0 [0]

हालाँकि यह बहुत उपयोगी हो सकता है, यह खतरनाक भी है, क्योंकि रजिस्टर के मामले में
अनुक्रम, आपके पास एक मजबूत क्रम होना चाहिए (लिखने से पहले पढ़ें, उपयोग से पहले कॉपी करें, आदि)। यदि
आपका परीक्षण जिस परिभाषा की तलाश कर रहा है वह मेल नहीं खाती (कंपाइलर में एक बग के कारण)।
उपयोग से दूर मेल खा सकता है, और वास्तविक बग को दूर कर सकता है।

उन मामलों में, आदेश को लागू करने के लिए, डीएजी-ब्लॉकों के बीच एक गैर-डीएजी निर्देश का उपयोग करें।

RSI चेक-लेबल: निदेश
कभी-कभी एक फ़ाइल में एकाधिक परीक्षण तार्किक ब्लॉकों में विभाजित होते हैं, एक या अधिक
चेक: बाद के ब्लॉक में पंक्तियों के मिलान से निर्देश अनजाने में सफल हो सकते हैं। जबकि एक
त्रुटि आमतौर पर अंततः उत्पन्न होगी, त्रुटि उत्पन्न करने वाले के रूप में चिह्नित किया गया चेक नहीं हो सकता है
वास्तव में समस्या के वास्तविक स्रोत से कोई संबंध रखता है।

इन मामलों में बेहतर त्रुटि संदेश उत्पन्न करने के लिए, "चेक-लेबल:"निर्देश कर सकते हैं
इस्तेमाल किया गया। इसका इलाज सामान्य की तरह ही किया जाता है जांच निर्देश सिवाय इसके कि FileCheck बनाता है
एक अतिरिक्त धारणा यह है कि निर्देश से मेल खाने वाली रेखा का मिलान भी नहीं किया जा सकता है
कोई अन्य चेक मौजूद है मिलान-फ़ाइलनाम; इसका उद्देश्य लाइनों के लिए उपयोग करना है
जिसमें लेबल या अन्य विशिष्ट पहचानकर्ता हों। संकल्पनात्मक रूप से, की उपस्थिति चेक-लेबल
इनपुट स्ट्रीम को अलग-अलग ब्लॉकों में विभाजित करता है, जिनमें से प्रत्येक को स्वतंत्र रूप से संसाधित किया जाता है,
ए को रोकना चेक: एक ब्लॉक में निर्देश दूसरे ब्लॉक में एक लाइन से मेल खाता है। उदाहरण के लिए,

परिभाषित करें %struct.C* @C_ctor_base(%struct.C* %this, i32 %x) {
प्रवेश:
; चेक-लेबल: C_ctor_base:
; जांचें: mov [[SAVETHIS:r[0-9]+]], r0
; जांचें: बीएल ए_क्टर_बेस
; जांचें: mov r0, [[SAVETHIS]]
%0 = बिटकास्ट %struct.C* %this से %struct.A*
%कॉल = टेल कॉल %struct.A* @A_ctor_base(%struct.A* %0)
%1 = बिटकास्ट %struct.C* %this से %struct.B*
%call2 = टेल कॉल %struct.B* @B_ctor_base(%struct.B* %1, i32 %x)
ret %struct.C* %this
}

परिभाषित करें %struct.D* @D_ctor_base(%struct.D* %this, i32 %x) {
प्रवेश:
; चेक-लेबल: D_ctor_base:

का उपयोग चेक-लेबल: इस मामले में निर्देश यह सुनिश्चित करते हैं कि तीन चेक: निर्देशों
केवल के मुख्य भाग के अनुरूप पंक्तियाँ ही स्वीकार करें @C_ctor_base फ़ंक्शन, भले ही
पैटर्न फ़ाइल में बाद में पाई गई रेखाओं से मेल खाते हैं। इसके अलावा, अगर इन तीनों में से एक चेक:
निर्देश विफल हो जाते हैं, फ़ाइलचेक एकाधिक को अनुमति देते हुए, अगले ब्लॉक पर जारी रखकर पुनर्प्राप्त हो जाएगा
एक ही आह्वान में परीक्षण विफलताओं का पता लगाया जाना।

इसकी कोई आवश्यकता नहीं है चेक-लेबल: निर्देशों में ऐसे तार होते हैं जो इसके अनुरूप होते हैं
किसी स्रोत या आउटपुट भाषा में वास्तविक वाक्यात्मक लेबल: उन्हें बस विशिष्ट रूप से मेल खाना चाहिए
सत्यापित की जा रही फ़ाइल में एकल पंक्ति।

चेक-लेबल: निर्देशों में परिवर्तनीय परिभाषाएँ या उपयोग नहीं हो सकते।

फाइल की जांच पैटर्न मिलान वाक्य - विन्यास
"चेक:"और"चेक-नहीं:"दोनों निर्देश मिलान के लिए एक पैटर्न लेते हैं। अधिकांश उपयोगों के लिए
फ़ाइलचेक, निश्चित स्ट्रिंग मिलान बिल्कुल पर्याप्त है। कुछ चीज़ों के लिए, और भी बहुत कुछ
मिलान का लचीला स्वरूप वांछित है। इसका समर्थन करने के लिए, FileCheck आपको निर्दिष्ट करने की अनुमति देता है
मिलान स्ट्रिंग में नियमित अभिव्यक्ति, डबल ब्रेसिज़ से घिरा हुआ: {{yourregex}}.
चूँकि हम जो कुछ भी करते हैं उसमें से अधिकांश के लिए हम निश्चित स्ट्रिंग मिलान का उपयोग करना चाहते हैं, FileCheck के पास है
नियमित स्ट्रिंग मिलान के साथ मिश्रण और मिलान का समर्थन करने के लिए डिज़ाइन किया गया है
भाव. यह आपको इस तरह की चीज़ें लिखने की अनुमति देता है:

; जांचें: movhpd {{[0-9]+}}(%esp), {{%xmm[0-7]}}

इस मामले में, ईएसपी रजिस्टर से किसी भी ऑफसेट की अनुमति दी जाएगी, और किसी भी एक्सएमएम रजिस्टर की अनुमति होगी
अनुमति पाना।

क्योंकि रेगुलर एक्सप्रेशन डबल ब्रेसिज़ से घिरे होते हैं, वे दृष्टिगत रूप से अलग होते हैं,
और आपको सी की तरह डबल ब्रेसिज़ के भीतर एस्केप कैरेक्टर का उपयोग करने की आवश्यकता नहीं है।
दुर्लभ मामले में जब आप इनपुट से स्पष्ट रूप से डबल ब्रेसिज़ का मिलान करना चाहते हैं, तो आप ऐसा कर सकते हैं
कुछ बदसूरत जैसे उपयोग करें {{[{][{]}} आपके पैटर्न के रूप में.

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

; जांचें: परीक्षण5:
; जांचें: notw [[रजिस्टर:%[az]+]]
; जांचें: और डब्ल्यू {{.*}}[[रजिस्टर]]

पहली चेक लाइन रेगेक्स से मेल खाती है %[az]+ और इसे वेरिएबल में कैप्चर करता है पंजीकृत.
दूसरी पंक्ति सत्यापित करती है कि जो कुछ भी अंदर है पंजीकृत फ़ाइल में बाद में a के बाद होता है
"और डब्ल्यू". फाइल की जांच परिवर्तनशील सन्दर्भ हमेशा इसमें समाहित रहते हैं [[ ]] जोड़े, और उनके
रेगेक्स के साथ नाम बनाए जा सकते हैं [a-zA-Z][a-zA-Z0-9]*. यदि कोई कोलन नाम का अनुसरण करता है,
तो यह चर की एक परिभाषा है; अन्यथा, यह एक उपयोग है.

फाइल की जांच वेरिएबल्स को कई बार परिभाषित किया जा सकता है, और उपयोगों को हमेशा नवीनतम मान मिलता है।
वेरिएबल्स का उपयोग बाद में उसी लाइन पर भी किया जा सकता है जिस पर उन्हें परिभाषित किया गया था। उदाहरण के लिए:

; जांचें: op [[REG:r[0-9]+]], [[REG]]

यदि आप का ऑपरेंड चाहते हैं तो यह उपयोगी हो सकता है op एक ही रजिस्टर होने के लिए, और परवाह नहीं है
वास्तव में यह कौन सा रजिस्टर है।

फाइल की जांच एक्सप्रेशंस
कभी-कभी आउटपुट को सत्यापित करने की आवश्यकता होती है जो मिलान फ़ाइल की पंक्ति संख्याओं को संदर्भित करता है,
उदाहरण के लिए कंपाइलर डायग्नोस्टिक्स का परीक्षण करते समय। यह मैच की एक निश्चित नाजुकता का परिचय देता है
फ़ाइल संरचना, जैसे "चेक:"लाइनों में एक ही फ़ाइल में पूर्ण लाइन संख्याएँ होती हैं, जो
जब भी पाठ जोड़ने या हटाने के कारण पंक्ति संख्या बदलती है तो उसे अद्यतन करना पड़ता है।

इस मामले का समर्थन करने के लिए, FileCheck का उपयोग करने की अनुमति देता है [[@रेखा]], [[@LINE+ ]],
[[@रेखा- ]] पैटर्न में अभिव्यक्तियाँ. ये अभिव्यक्तियाँ अनेक तक विस्तृत हैं
रेखा जहां एक पैटर्न स्थित है (वैकल्पिक पूर्णांक ऑफसेट के साथ)।

इस तरह मिलान पैटर्न को प्रासंगिक परीक्षण लाइनों के पास रखा जा सकता है और सापेक्ष रेखा शामिल की जा सकती है
संख्या संदर्भ, उदाहरण के लिए:

// जांचें: test.cpp:[[@LINE+4]]:6: त्रुटि: अपेक्षित ';' शीर्ष स्तर के घोषणाकर्ता के बाद
// चेक-अगला: {{^int a}}
// चेक-अगला: {{^ \^}}
// चेक-अगला: {{^ ;}}
इंट ए

onworks.net सेवाओं का उपयोग करके FileCheck-3.6 का ऑनलाइन उपयोग करें


फ्री सर्वर और वर्कस्टेशन

विंडोज और लाइनेक्स एप डाउनलोड करें

लिनक्स कमांड

Ad