Veri Türleri
KLIPLERI bilgi temsil için sekiz temel veri türleri sağlar. Bu türfloat, integer, symbol, string, externaladdress, factaddress, instancename ve instanceaddress. Sayısal bilgi mantarlar ve tamsayılar ile temsil edilebilir. Sembolik bilgi semboller ve dizeleri ile temsil edilebilir.Bir sayı sadece basamak (09), bir ondalık nokta (.), bir işaret (+ veya), ve isteğe bağlı olarak, bir (e) üstel gösterim için oluşur karşılık gelen işareti ile. Bir dizi ya da bir kayan nokta olarak depolanır ya da bir tam sayıdır. Sadece rakam ardından isteğe bağlı bir işaret oluşan herhangi bir sayı bir tamsayı olarak saklanır (C uzun tamsayı olarak KLIPLERI tarafından dahili olarak temsil). Diğer tüm numaralar şamandıra olarak saklanır s (C doubleprecision float olarak KLIPLERI tarafından dahili olarak temsil). Önemli basamak sayısı Makine uygulanmasına bağlı olacaktır. Roundoff hataları da yeniden makine uygulama bağlı olarak meydana gelebilir. Birbirine floatingpoint değerleri karşılaştırarak veya floatingpoint değerlerine tamsayı karşılaştırırken herhangi bir bilgisayar dili olduğu gibi, dikkat edilmelidir. Tamsayıların bazı örnekleri
237 15 +12 -32
Bir kısmı yüzer örnekleridir 237e3 15.09 12,0-32.3e-7
Özellikle, tamsayılar aşağıdaki biçimi kullanın:tamsayı :: = [+ | -] P <sene> + P <sene> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9Kayan noktalı sayılar aşağıdaki biçimi kullanın:
<float> :: = tamsayı <exponent> | tamsayı. [Üs] . <unsigned integer> [üs] tamsayı. <unsigned integer> [üs] <unsigned-integer> :: = P <sene> + <exponent> :: = E | E tamsayı
Tam bir sayı biçimini takip etmez karakter dizisi bir sembol (bir sonraki paragrafa bakın) olarak kabul edilir.Bir sembol KLIPLERI herhangi bir yazdırılabilir ASCII karakter ile başlar ve sıfır veya daha fazla yazdırılabilir ASCII karakterleri izler herhangi bir karakter dizisidir. Sınırlayıcı bulunduğunda, sembol sonlandırılır. Aşağıdaki karakterler sınırlayıcı olarak hareket s: Herhangi bir yazdırılamayan ASCII karakter (boşluk dahil olmak üzere s, sekme s, satırbaşı s, ve satır besleme s), bir çift tırnak , Parenthes açılış ve kapanış ES I ( î ve ì) î, bir ve işareti ì & î, bir dikey çubuk ì | daha î, daha az ì < î, ve bir tilde ì ~ î. Bir noktalı virgül ì; î bir KLIPLERI Yorum başlar (Bölüm 2.3.3) ve aynı zamanda bir sınırlayıcı olarak görür. Sınırlayıcı bir sembol ilk karakteri olabilir ì <ì karakter dışında semboller dahil olmayabilir. Buna ek olarak, bir sembol ì ya başlamayan olabilir? î karakter veya ì $? karakter î dizisi (bir sembol bu karakterler içeriyor olsa da). Bu karakterler değişken için ayrılmıştır s (bu bölümde daha sonra tartışılmıştır olan). KLIPLERI küçük harfe duyarlıdır (Yani büyük harf sadece büyük harflerle eşleşir). Sayı sembollerin özel bir durum (onlar bir sembol tanımı tatmin yani, ama farklı bir veri türü olarak kabul edilir) olduğunu unutmayın. Semboller bazı basit örnekler
foo Merhaba B76-HI bad_value 127A 456-93-039 @ + = -% 2eachBir dize bir çift tırnak ile başlar karakter bir dizi (") Ve sıfır veya daha fazla yazdırılabilir karakter izler. Bir dize çift tırnak ile sona erer. Çift tırnak bir ters eğik çizgi koyarak bir dize içinde gömülü olabilir (\) Karakteri önünde. Ters eğik çizgi dize iki ardışık ters eğik çizgi karakterleri koyarak gömülü olabilir. Bazı örnekler
"Foo" "a ve b" "1 numarası" "bir \" alıntı "
Unutmayın ìabcd "sembolü abcd ile aynı değildir. Her ikisi de aynı karakterler, ancak farklı tiptir. Aynı örnek adı için de geçerlidir dize [abcd].Bir externaladdress Bir dış veri yapısının adresi bir fonksiyonu (C gibi bir dilde yazılmış tarafından döndürülen veya Ada gibi ) Bu KLIPLERI ile entegre edilmiştir. Bu veri türü sadece bir fonksiyonu (yani değeri yazarak bir externaladdress belirtmek mümkün değildir) arayarak oluşturulabilir. KLIPLERI temel sürümü (ki hiçbir kullanıcı tanımlı dış işlev vardır içinde s), bu veri türü oluşturmak için mümkün değildir. Externaladdresses İleri Programlama Kılavuzu daha da ayrıntılı olarak ele alınmıştır . CLIPS içinde, bir externaladdress bir basılı temsilidir
<Pointer-XXXXXX>
XXXXXX externaladdress olduğu.Bir gerçeği ya positionally başvurulan (sıralı gerçekler) veya adı (nonordered veya şablon gerçekler) tarafından olan atomik değerler listesidir. Bilgiler indeksi veya adres tarafından verilir; bölüm 2.4.1 Daha fazla bilgi verir. Bir factaddress bir basılı formatta olduğu:
<Fact-XXX>
XXX factindex olduğu.Bir örneği bir amacıdır Bu sınıfın bir örnekleme veya spesifik bir örneğidir . KLIPLERI nesneler şamandıra olduğu tanımlanır s, tam sayı s simgesi s, dize s, multifield değeri s, externaladdress es, factaddress es veya kullanıcı tanımlı sınıfın örneklerini. Bir sınıf defclass kullanılarak oluşturulur inşa. Bir kullanıcı tanımlı sınıfın bir örneğini makeinstance oluşturulur.fonksiyonu, ve böyle bir durumda adres tarafından eşsiz bir şekilde ifade edilebilir. Bir modül (bölüm 10.5.1 bakınız) kapsamında, bir örnek de benzersiz adıyla sevk edilebilir. Bu tanımların tüm bölümleri 2.4.2, 2.5.2.3, 2.6 ve 9 daha ayrıntılı olarak ele alınacaktır. Bir örnekadı Sol ve sağ parantez içinde bir sembol parça ile oluşturulur. Bu nedenle, saf semboller ayraç olmayabilir. CLIPS Odaklı Dil (SOĞUK Nesne ise ) Belirli bir KLIPLERI yapılandırma dahil değildir, parantez semboller sarılı olabilir. InstanceNames bazı örnekler şunlardır:
[Pompalamak-1] [foo] [+ + +] [123-890]
Onlar sadece kapalı sembolü bir örnekadı olduğunu gösterir; parantez örneğinin adını bir parçası değildir unutmayın. Bir instanceaddress sadece instanceaddress adında bir işlevin dönüş değeri bağlanarak ya da bir kural Sol bir model nesne eşleştirme örneğine bir değişken bağlanarak elde edilebilir (yani, bu değeri yazarak bir instanceaddress belirtmek mümkün değildir). Bir Bir kullanıcı tanımlı sınıfın bir örneği ya adı veya adresi ile olabilir; hızı kritik olduğu instanceaddresses kullanılmalıdır. CLIPS içinde, bir instanceaddress bir basılı temsilidir <Instance-XXX>
XXX örneğinin adıdır.CLIPS olarak, (ilkel veri türlerinden biri) bir değeri olan bir yer tutucu bir alan olarak adlandırılır . Ilkel veri türleri singlefield değeri olarak adlandırılır s. Sabit bir nonvarying tek bir alan değerini doğrudan karakter bir dizi (ki bu externaladdress gelir olarak ifade edilir es, factaddress es ve instanceaddress sadece işlev çağrıları ve değişken bağları) ile elde edilebilir, çünkü es sabitler olarak ifade edilemez. Bir multifield değer sıfır ya da daha fazla tek alan değerleri arasında bir dizidir. KLIPLERI tarafından görüntülenen zaman, multifield değerleri parantez içine alınır. Toplu olarak, tek ve multifield değerleri değeri olarak adlandırılır s. Multifield değerlerin bazı örnekler şunlardır
(A) (1 bar foo) () (x 3.0 "kırmızı" 567)
Multifield değeri (a) tek bir alan değeri ile aynı olmadığını unutmayın. Multifield değerleri kuralları için patternmatching sürecinde deffunction, nesne messageHandler, veya yöntem, ya da bağlayıcı değişkenler joker argümanlar kullanarak, multifield değerler döndüren işlevler arayarak ya da oluşturulur. KLİPLER, bir değişken değerleri saklamak için kullanılan sembolik bir yerdir. Değişkenler KLİPSİ yapıları (örneğin defrule, deffunction, defmethod ve defmessagehandler gibi) ve bunların kullanımı, bu yapıların her açıklayan bölümlerde detaylı olarak anlatılmıştır birçok kişi tarafından kullanılmaktadır.