Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen re2c komutudur.
Program:
ADI
re2c - normal ifadeleri C/C++ koduna dönüştürün
SİNOPSİS
re2c [SEÇENEKLER] DOSYA
TANIM
re2c C/C++ için bir sözlük üreticisidir. İçinde düzenli ifade özelliklerini bulur
C/C++ yorumlar ve bunları sabit kodlanmış bir DFA ile değiştirir. Kullanıcı bazı tedarik etmelidir
oluşturulan DFA'yı kontrol etmek ve özelleştirmek için arayüz kodu.
SEÇENEKLER
-? -h --yardım et
Kısa bir yardım çağırın.
-b --bit-vektörler
ima -s. Daha iyi kodu koaksiyel hale getirmek için bit vektörlerini de kullanın.
derleyici. Birkaç anahtar kelimeden daha fazlasını içeren spesifikasyonlar için en kullanışlıdır (örn.
çoğu programlama dili).
-c --koşullar
(f)lex benzeri koşul desteğini desteklemek için kullanılır.
-d --debug-çıktı
Geçerli konum ve içinde bulunduğu konum hakkında bilgi dökümü yapan bir ayrıştırıcı oluşturur.
ayrıştırıcının girişi ayrıştırırken olduğunu belirtin. Bu, ayrıştırıcı sorunlarında hata ayıklamak için kullanışlıdır
ve devletler. Bu anahtarı kullanırsanız, bir makro tanımlamanız gerekir. YYDEBUĞ ki
iki parametreli bir işlev gibi çağrılır: geçersiz YYDEBUĞ (int durum, tank akım).
İlk parametre durumu alır veya -1 ve ikinci parametre
geçerli imleçte giriş yapın.
-D --emit-nokta
Graphviz nokta verilerini yayar. Daha sonra örneğin ile işlenebilir nokta -Tpng giriş.dot >
çıktı.png. Lütfen birçok duruma sahip tarayıcıların nokta kilitleyebileceğini unutmayın.
-e --ecb
EBCDIC'yi destekleyen bir ayrıştırıcı oluşturun. Oluşturulan kod herhangi bir işlemle başa çıkabilir.
0xFF'ye kadar karakter. bu modda re2c giriş karakter boyutunun 1 olduğunu varsayar
bayt. Bu anahtar ile uyumlu değil -w, -x, -u ve -8.
-f --depolanabilir-durum
Depolanabilir durum desteğine sahip bir tarayıcı oluşturun.
-F --flex-sözdizimi
Esnek sözdizimi için kısmi destek. Bu bayrak aktif olduğunda, daha sonra adlandırılmış tanımlar
küme parantezleri ile çevrilmeli ve eşittir işareti olmadan tanımlanmalıdır ve
noktalı kolon sonlandırılıyor. Bunun yerine adlar, doğrudan çift tırnaklı dizeler olarak kabul edilir.
-g --bilgisayarlı-goto'lar
GCC'nin hesaplanmış goto özelliğini kullanan bir tarayıcı oluşturun. Yani re2c
bir karar belirli bir karmaşıklığa sahip olduğunda atlama tabloları oluşturur (örn.
koşullar aksi takdirde gerekliyse). Bu yalnızca GCC ile kullanılabilir ve
başka bir derleyici ile derlenemeyen çıktı. Bunun ima ettiğini unutmayın -b
ve karmaşıklık eşiğinin yerinde yapılandırma kullanılarak yapılandırılabileceğini
cgoto:eşik.
-i --no-debug-bilgisi
çıktı verme #hat bilgi. Bu, bir CMS aracını kullanmak istediğinizde kullanışlıdır.
the re2c kullanıcılarınızın sahip olmasını istemiyorsanız, isteyebileceğiniz çıktı re2c
kaynağınızdan inşa ederken kendilerini
-o ÇIKTI --çıktı=ÇIKTI
belirtmek ÇIKTI dosyası.
-r --tekrar kullanılabilir
ile tarayıcı tanımlarının yeniden kullanılmasına izin verir. /*!kullanım:re2c */ sonra /*!kurallar:re2c */. içinde
bu mod hayır /*!re2c */ blok ve tam olarak bir /*!kurallar:re2c */ mevcut olmalıdır.
Kurallar kaydediliyor ve herkes tarafından kullanılıyor. /*!kullanım:re2c */ takip eden blok.
Bu bloklar, özellikle yerinde konfigürasyonlar içerebilir. re2c:bayraklar:e,
re2c:bayraklar:w, re2c:bayraklar:x, re2c:bayraklar:u ve re2c:işaretler:8. bu şekilde mümkün
farklı karakter türleri için aynı tarayıcıyı birden çok kez oluşturmak, farklı
girdi mekanizmaları veya farklı çıktı mekanizmaları. NS /*!kullanım:re2c */ bloklar olabilir
içindeki kurallar kümesine eklenecek ek kuralları da içerir.
/*!kurallar:re2c */.
-s --iç içe-if'ler
Bazı anahtarlar için iç içe if'ler oluşturun. Birçok derleyicinin oluşturmak için bu yardıma ihtiyacı vardır.
daha iyi kod
-t ÜSTBİLGİ --type-header=BAŞLIK
Hat için bir ÜSTBİLGİ (f)lex benzeri koşul desteği türlerini içeren dosya.
Bu yalnızca şu durumlarda etkinleştirilebilir: -c kullanılıyor.
-u --unicode
UTF-32'yi destekleyen bir ayrıştırıcı oluşturun. Oluşturulan kod, herhangi bir geçerli kodla başa çıkabilir.
0x10FFFF'ye kadar Unicode karakter. bu modda re2c giriş karakterini varsayar
boyut 4 bayttır. Bu anahtar ile uyumlu değil -e, -w, -x ve -8. Bu ima eder
-s.
-v --versiyon
Sürüm bilgilerini göster.
-V -- vernum
Sürümü XXYYZZ sayısı olarak gösterin.
-w --geniş-karakterler
UCS-2'yi destekleyen bir ayrıştırıcı oluşturun. Oluşturulan kod, herhangi bir geçerli kodla başa çıkabilir.
0xFFFF'ye kadar Unicode karakter. bu modda re2c giriş karakterini varsayar
boyut 2 bayttır. Bu anahtar ile uyumlu değil -e, -x, -u ve -8. Bu ima eder
-s.
-x --utf-16
UTF-16'yi destekleyen bir ayrıştırıcı oluşturun. Oluşturulan kod, herhangi bir geçerli kodla başa çıkabilir.
0x10FFFF'ye kadar Unicode karakter. bu modda re2c giriş karakterini varsayar
boyut 2 bayttır. Bu anahtar ile uyumlu değil -e, -w, -u ve -8. Bu ima eder
-s.
-8 --utf-8
UTF-8'yi destekleyen bir ayrıştırıcı oluşturun. Oluşturulan kod, herhangi bir geçerli kodla başa çıkabilir.
0x10FFFF'ye kadar Unicode karakter. bu modda re2c giriş karakterini varsayar
boyut 1 bayttır. Bu anahtar ile uyumlu değil -e, -w, -x ve -u.
--büyük/küçük harfe duyarsız
Tüm dizeler büyük/küçük harfe duyarlı değildir, bu nedenle tüm "-ifadeleri aynı şekilde ele alınır
'-ifadeleri vardır.
--büyük harfle ters çevrilmiş
Tek ve çift tırnaklı dizelerin anlamını tersine çevirin. Bu anahtar ile tek
tırnak işaretleri büyük/küçük harf duyarlıdır ve çift tırnaklar büyük/küçük harf duyarlı değildir.
--no-jenerasyon-tarihi
Oluşturulan dosyadaki tarih çıktısını gizleyin.
--no-jenerasyon-tarihi
Oluşturulan dosyadaki sürüm çıktısını gizleyin.
--kodlama-politikası POLİTİKA
Nasıl olduğunu belirtin re2c Unicode vekillerini tedavi etmelidir. POLİTİKA aşağıdakilerden biri olabilir:
başarısız (vekil ile karşılaşıldığında hatalı olarak iptal edilir), vekil (sessizce yerine
0xFFFD hata kodu noktasına sahip vekil), aldırmamak (vekillere normal kod olarak davranın
puan). Varsayılan olarak re2c vekilleri yok sayar (geriye dönük uyumluluk için). tek kod
standart, bağımsız vekillerin geçersiz kod noktaları olduğunu söylüyor, ancak farklı
kütüphaneler ve programlar onlara farklı davranır.
--giriş GİRİŞ
re2c giriş API'sini belirtin. GİRİŞ aşağıdakilerden biri olabilir: varsayılan, görenek.
-S --iskelet
re2c tarafından oluşturulan kodu C/C++ kaynağına gömmek yerine, bir
aynı DFA için bağımsız program. Doğruluk için en yararlı ve
performans testi.
--boş-sınıf POLİTİKA
Kullanıcı boş karakter sınıfı girerse ne yapmalı. POLİTİKA şunlardan biri olabilir
Aşağıdaki: kibrit boş (boş girişi eşleştir: oldukça mantıksız, ancak bu
geriye dönük uyumluluk nedeniyle varsayılan), eşleşme yok (hiçbirinde eşleşme başarısız
giriş), hata (Derleme Hatası). oluşturmanın çeşitli yolları olduğunu unutmayın.
boş sınıf, örneğin: [], [^\x00-\xFF], [\x00-\xFF][\x00-\xFF].
--dfa-minimizasyonu <masa | kara>
DFA'yı en aza indirmek için re2c tarafından kullanılan dahili algoritma (varsayılan olarak moore). Her iki tablo
doldurma ve Moore'un algoritmaları aynı DFA üretmelidir (durumlara kadar
yeniden etiketleme). Tablo doldurma algoritması çok daha basit ve daha yavaştır; olarak hizmet eder
referans uygulaması.
-1 --tek geçiş
Kullanımdan kaldırıldı ve hiçbir şey yapmıyor (şimdi tek geçiş varsayılan olarak).
-W Tüm uyarıları açın.
-Whata
Uyarıları hatalara dönüştürün. Bu seçeneğin hiçbirini açmadığını unutmayın.
uyarılar, yalnızca o ana kadar açılmış veya açılacak olan uyarıları etkiler.
daha sonra açıldı.
-W
Bireysel aç uyarı.
-hayır-
Kişiyi kapat uyarı.
-Whata-
Bireysel aç uyarı ve hata olarak ele alın (bu, -W).
-Wno-hatası-
Bu özel muameleyi yapmayın uyarı hata olarak. Bu uyarıyı kapatmaz
kendisi.
-Wdurum-sipariş
Oluşturulan program koşul numaralandırma hakkında örtük varsayımlarda bulunursa uyar.
İkisinden birini kullanmalı -T, --type-başlık Seçenek veya /*!türler:re2c*/ direktif
Koşul adlarının sayılarla eşlenmesini oluşturun ve otomatik oluşturulmuş koşulu kullanın
isimler.
-Wempty-karakter sınıfı
Normal ifade boş karakter sınıfı içeriyorsa uyar. Rasyonel açıdan
boş karakter sınıfını eşleştirmeye çalışmanın bir anlamı yok: her zaman
hata. Ancak, geriye dönük uyumluluk nedenleriyle re2c boş karaktere izin verir
sınıf ve onu boş dize olarak ele alır. Kullanmak --boş-sınıf varsayılanı değiştirme seçeneği
davranışı.
-Wmatch-boş-dize
Bir kuraldaki normal ifade null olabilirse uyar (boş dizeyle eşleşir). DFA ise
bir döngüde çalışır ve boş eşleşme kasıtsızdır (gelişmiş değilde giriş konumu
manuel olarak), lexer sonsuz döngüde takılabilir.
-Swapped-aralığı
Menzil alt sınırı üst sınırdan büyükse uyar. Varsayılan re2c davranış
sessizce takas aralığı sınırları.
-Wundefined-kontrol-akış
Bazı girdi dizeleri lexer'da tanımsız kontrol akışına neden olursa uyar (hatalı
desenler bildirilir). Bu en tehlikeli ve yaygın hatadır. Olabilir
varsayılan kural eklenerek kolayca düzeltildi * (bu kural en düşük önceliğe sahiptir, eşleşir
herhangi bir kod birimi ve tam olarak bir kod birimi tüketir).
-Wuseless-kaçış
Olmaması gereken bir sembol kaçarsa uyar. Varsayılan olarak re2c sessizce yok sayar
kaçış, ancak bu aynı zamanda bir yazım hatası veya kaçış dizisindeki bir hatayı da gösterebilir.
ARA KOD
Kullanıcı, arayüz kodunu C/C++ kodu (makrolar, işlevler,
değişkenler vb.) veya şeklinde YERİNDE KONFİGÜRASYONLARI. Hangi semboller tanımlanmalıdır
ve isteğe bağlı olan belirli bir kullanım durumuna bağlıdır.
YYCONDTİPİ
In -c kullanabileceğiniz mod -t olarak kullanılan numaralandırmayı içeren bir dosya oluşturmak için
koşullar. Değerlerin her biri, bir kural kümesinin koşulunu ifade eder.
YYCTXİŞARETİ
türün l değeri YYCTİPİ *. Oluşturulan kod, takip eden bağlam geri izlemesini kaydeder
bilgi YYCTXİŞARETİ. Kullanıcının bu makroyu yalnızca bir tarayıcı varsa tanımlaması gerekir.
belirtim, bir veya daha fazla düzenli ifadesinde takip eden bağlamı kullanır.
YYCTİPİ
Bir giriş sembolünü (kod birimi) tutmak için kullanılan tip. Genellikle tank or imzasız tank için
ASCII, EBCDIC ve UTF-8, imzasız kısa UTF-16 veya UCS-2 için ve imzasız int için
UTF-32.
YYCURSOR
türün l değeri YYCTİPİ * bu, geçerli giriş sembolüne işaret eder. oluşturulan
kod ilerlemeleri YYCURSOR semboller eşleştirildiği için. Girişte, YYCURSOR varsayılır
geçerli belirtecin ilk karakterine gelin. Çıkışta, YYCURSOR işaret edecek
aşağıdaki belirtecin ilk karakteri.
YYDEBUĞ (durum, akım)
Bu, yalnızca aşağıdaki durumlarda gereklidir: -d bayrak belirlendi. Birinin kolayca hata ayıklamasını sağlar
her durum için kullanıcı tanımlı bir işlev çağırarak oluşturulan ayrıştırıcı. İşlev
aşağıdaki imzaya sahip olmalıdır: geçersiz YYDEBUĞ (int durum, tank akım).
ilk parametre durumu veya -1'i alır ve ikinci parametre durumu alır
geçerli imleçte giriş yapın.
YYFILL (N)
Oluşturulan kod "çağrılar"" YYFILL (N) tamponun (yeniden) doldurulması gerektiğinde: en azından
n ek karakterler sağlanmalıdır. YYFILL (N) ayarlamalı YYCURSOR,
YILDIRIM, YYMARKER ve YYCTXİŞARETİ ihyaç olduğu gibi. Tipik programlama için unutmayın
dil n en uzun anahtar kelimenin uzunluğu artı bir olacaktır. Kullanıcı yerleştirebilir
formun bir yorumu /*!maks:re2c*/ eklemek YYMAXFILL olarak ayarlanmış tanım
maksimum uzunluk değeri.
YYGETKOŞUL ()
Bu tanımlama, tarayıcı kodunu girmeden önceki durumu almak için kullanılır.
kullanma -c değiştirmek. Değer, numaralandırmadan bir değerle başlatılmalıdır
YYCONDTİPİ yazın.
YYGETSTATE ()
Kullanıcının bu makroyu yalnızca aşağıdaki durumlarda tanımlaması gerekir: -f bayrak belirlendi. Şöyle
durumda, oluşturulan kod "çağrılar" YYGETSTATE () tarayıcının en başında
Kaydedilmiş durumu elde etmek için. YYGETSTATE () imzalı bir tamsayı döndürmelidir. NS
değer, tarayıcının ilk kez girildiğini gösteren -1 olmalıdır,
veya daha önce tarafından kaydedilen bir değer YYSETSTATE (S). İkinci durumda, tarayıcı
operasyonları en son nerede kaldıktan hemen sonra devam ettirin YYFILL (N) aradı.
YILDIRIM
tip ifadesi YYCTİPİ * arabelleğin sonunu işaretleyen YILIMI[-1] olduğunu
arabellekteki son karakter). Oluşturulan kod tekrar tekrar karşılaştırır YYCURSOR için
YILDIRIM tamponun ne zaman (yeniden) doldurulması gerektiğini belirlemek için.
YYMARKER
türün l değeri YYCTİPİ *. Oluşturulan kod, geri izleme bilgilerini şuraya kaydeder:
YYMARKER. Bazı kolay tarayıcılar bunu kullanmayabilir.
YYMAXFILL
Bu, tarafından otomatik olarak tanımlanacaktır. /*!maks:re2c*/ Yukarıda açıklandığı gibi bloklar.
YYSETDURUM (C)
Bu tanımlama, geçiş kurallarında koşulu ayarlamak için kullanılır. Bu sadece varlık
ne zaman kullanılır -c aktif ve geçiş kuralları kullanılıyor.
YYSETSTATE (S)
Kullanıcının bu makroyu yalnızca aşağıdaki durumlarda tanımlaması gerekir: -f bayrak belirlendi. Şöyle
durumda, oluşturulan kod "çağrılar" YYSETSTATE aramadan hemen önce YYFILL (N).
parametresi YYSETSTATE belirli bir öğeyi benzersiz olarak tanımlayan işaretli bir tamsayıdır.
örneği YYFILL (N) bu çağrılmak üzere. Kullanıcı kaydetmek isterse
tarayıcının durumu ve YYFILL (N) arayan kişiye geri dönün, tek yapması gereken
bu benzersiz tanımlayıcıyı bir değişkende saklayın. Daha sonra, tarayıcı çağrıldığında
yine arayacak YYGETSTATE () ve kaldığı yerden yürütmeye devam edin. NS
oluşturulan kod her ikisini de içerecektir YYSETSTATE (S) ve YYGETSTATE bile YYFILL (N)
devre dışı bırakılıyor.
SÖZDİZİMİ
Kod re2c bir dizi oluşur KURALLAR, İSİMLİ TANIMLAR ve YERİNDE KONFİGÜRASYONLARI.
KURALLAR
Kurallar bir normal ifadeden oluşur (bkz. DÜZENLİ İFADE) bir blok ile birlikte
İlişkili normal ifade eşleştirildiğinde yürütülecek C/C++ kodu. Sen
kodu bir açılış kaşlı ayracı veya dizi ile başlatabilir :=. kod ne zaman
o zaman kıvırcık parantez ile re2c ayraç derinliğini sayar ve kod aramayı durdurur
otomatik olarak. Aksi takdirde kaşlı ayraçlara izin verilmez ve re2c şurada kod aramayı durdurur:
boşluk ile başlamayan ilk satır. İki veya daha fazla kural çakışırsa,
birinci kural tercih edilir.
Düzenli ifade { C / C ++ kod }
Düzenli ifade := C / C ++ kod
Özel bir kural vardır: varsayılan kural *
* { C / C ++ kod }
* := C / C ++ kod
Varsayılan kuralı unutmayın * -den farklı [^]: varsayılan kural en düşük önceliğe sahiptir, eşleşir
herhangi bir kod birimi (geçerli veya geçersiz) ve her zaman bir karakter tüketir; süre [^]
herhangi bir geçerli kod noktasıyla (kod birimiyle değil) eşleşir ve birden çok kod birimi tüketebilir. Aslında,
değişken uzunluklu kodlama kullanıldığında, * geçersiz girişi eşleştirmenin tek olası yolu
karakter (bkz. KODLAMALAR Ayrıntılı bilgi için).
If -c etkinse, her normal ifadeden önce virgülle ayrılmış bir liste gelir
durum adları. Normal adlandırma kurallarının yanı sıra iki özel durum vardır: <*> (bu tür kurallar
tüm koşullarla birleştirilir) ve <> (böyle bir kuralın ilişkili bir düzenli
ifadesi, kodu tüm eylemlerle birleştirilir). Boş olmayan kurallar daha fazla belirtebilir
yeni durum. Bu durumda re2c değiştirmek için gerekli kodu üretecektir.
durum otomatik olarak. Kurallar kullanabilir :=> otomatik olarak kod oluşturmak için bir kısayol olarak
bu yalnızca yeni koşul durumunu ayarlamakla kalmaz, aynı zamanda yeni koşulla yürütmeye devam eder.
durum. Başlangıç arasında kod bulunan bir döngüde kısayol kuralı kullanılmamalıdır.
döngünün ve re2c sürece engelle re2c:koşul:git değiştirildi devam etmek. kod ise
tüm kurallardan önce gerekli (basit atlamalar olmasa da) kullanarak doso yapabilirsiniz.
sözde kurallar.
Düzenli ifade { C / C ++ kod }
Düzenli ifade := C / C ++ kod
* { C / C ++ kod }
* := C / C ++ kod
Düzenli ifade => koşul { C / C ++ kod }
Düzenli ifade => koşul := C / C ++ kod
* => koşul { C / C ++ kod }
* => koşul := C / C ++ kod
Düzenli ifade :=> koşul
<*> Düzenli ifade { C / C ++ kod }
<*> Düzenli ifade := C / C ++ kod
<*> * { C / C ++ kod }
<*> * := C / C ++ kod
<*> Düzenli ifade => koşul { C / C ++ kod }
<*> Düzenli ifade => koşul := C / C ++ kod
<*> * => koşul { C / C ++ kod }
<*> * => koşul := C / C ++ kod
<*> Düzenli ifade :=> koşul
<> { C / C ++ kod }
<> := C / C ++ kod
<> => koşul { C / C ++ kod }
<> => koşul := C / C ++ kod
<> :=> koşul
<> :=> koşul
<! durum listesi> { C / C ++ kod }
<! durum listesi> := C / C ++ kod
{ C / C ++ kod }
:= C / C ++ kod
İSİMLİ TANIMLAR
Adlandırılmış tanımlar şu şekildedir:
isim = Düzenli ifade;
If -F etkinse, adlandırılmış tanımlar da şu şekildedir:
isim { Düzenli ifade }
YERİNDE KONFİGÜRASYONLARI
re2c: ön ek = yc;
Koşul etiketleri için kullanılan öneki belirlemeye izin verir. işte bu metin
oluşturulan çıktı dosyasındaki herhangi bir koşul etiketinin başına eklenir.
re2c: yoğunlaşma öneki = yc;
Koşul değerleri için kullanılan öneki belirlemeye izin verir. işte bu metin
oluşturulan çıktı dosyasındaki herhangi bir koşul numaralandırma değerine eklenir.
re2c:koşul:bölücü = /* *********************************** */ ;
Koşul blokları için ayırıcının özelleştirilmesine izin verir. Kullanabilirsiniz @@ koymak
koşulun adını kullanın veya yer tutucuyu kullanarak özelleştirin re2c: koşul: bölücü @ koşul.
re2c: koşul: bölücü @ koşul = @@;
içindeki koşul adıyla değiştirilecek yer tutucuyu belirtir.
re2c:koşul:bölücü.
re2c:koşul:git = Goto @@; ;
Birinin, birlikte kullanılan koşul goto deyimlerini özelleştirmesine izin verir. :=> stil kuralları.
Sen kullanabilirsiniz @@ koşulun adını koymak veya yer tutucuyu kullanarak
re2c:koşul:goto@koşul. Bunu şu şekilde de değiştirebilirsiniz: devam;, hangi size izin verecek
döngü başlangıcı ve re2c arasındaki herhangi bir kod dahil olmak üzere bir sonraki döngü döngüsüne devam etmek için
engellemek.
re2c:koşul:goto@koşul = @@;
içindeki durum etiketiyle değiştirilecek yer tutucuyu belirtir.
re2c:koşul:git.
re2c: girinti: üst = 0;
Kullanılacak minimum girinti sayısını belirtir. Sayısal bir değer gerektirir
sıfırdan büyük veya sıfıra eşittir.
re2c:indent:dize = \t ;
Girinti için kullanılacak dizeyi belirtir. içermesi gereken bir dize gerektirir
harici araçlar için buna ihtiyacınız olmadıkça yalnızca boşluk. Belirtmenin en kolay yolu
boşluklar, bunları tek veya çift tırnak içine almaktır. eğer hiçbir şey istemiyorsan
girintiyi basitçe "" olarak ayarlayabilirsiniz.
re2c:yych:dönüşüm = 0;
Bu ayar sıfır olmadığında, re2c otomatik olarak dönüşüm kodu oluşturur
yych okunduğunda. Bu durumda tip kullanılarak tanımlanmalıdır.
re2c:tanımla:YYCTYPE.
re2c:yych:yayın = 1;
Nesil yych bunu 0'a ayarlayarak bastırılabilir.
re2c:yybm:hex = 0;
Sıfıra ayarlanırsa ondalık tablo kullanılıyordur, aksi takdirde onaltılık tablo kullanılır
oluşturuldu.
re2c:yydoldur:etkinleştir = 1;
oluşumunu bastırmak için bunu sıfıra ayarlayın. YYFILL (N). Bunu kullanırken emin olun
oluşturulan tarayıcının girişin arkasını okumadığını doğrulayın. Buna izin vermek
davranış, programlarınıza ciddi güvenlik sorunları getirebilir.
re2c:yydoldurma:kontrol = 1;
Bu, kullanılarak ön koşulun çıktısını bastırmak için 0 olarak ayarlanabilir. YYCURSOR ve
YILDIRIM ne zaman işe yarar YILDIRIM + YYMAXFILL her zaman erişilebilir.
re2c:tanımla:YYDOLDUR = YYFILL ;
için ikame YYFILL. Varsayılan olarak unutmayın re2c parantez içinde argüman üretir ve
noktalı virgül sonra YYFILL. Yapman gerekiyorsa YYFILL keyfi bir ifade yerine
bir aramadan daha, ayarla re2c:tanımla:YYFILL:çıplak sıfır olmayana ve kullan
re2c:tanımla:YYFILL@len içindeki resmi parametreyi belirtmek için YYFILL vücut.
re2c:tanımla:YYFILL@len = @@ ;
Bu metnin herhangi bir oluşumu YYFILL gerçek ile değiştirilecek
argüman.
re2c:yydoldurma:parametre = 1;
sonra parantez içindeki argümanı kontrol eder YYFILL. Sıfır ise, agrument atlanır. Eğer
sıfırdan farklı, argüman üretilmedikçe re2c:tanımla:YYFILL:çıplak sıfırdan farklı olarak ayarlanır.
re2c:tanımla:YYFILL:çıplak = 0;
Argümanı parantez ve noktalı virgülden sonra kontrol eder YYFILL. Sıfır ise, hem agrument hem de
noktalı virgül atlanır. Sıfır değilse, argüman oluşturulur
re2c:yydoldurma:parametre sıfıra ayarlanır ve koşulsuz olarak noktalı virgül oluşturulur.
re2c:başlangıç etiketi = 0;
Sıfır olmayan bir tam sayıya ayarlanırsa sonraki tarayıcı bloklarının başlangıç etiketi
tarayıcının kendisi tarafından kullanılmasa bile oluşturulabilir. Aksi halde normal yy0 sevmek
başlangıç etiketi yalnızca gerekirse oluşturulur. Bir metin değerine ayarlanırsa bir etiket
normal başlangıç etiketinin olup olmadığına bakılmaksızın bu metin oluşturulacaktır.
kullanılıp kullanılmadığı. Bu ayar, bir başlangıç etiketi oluşturulduktan sonra 0'a sıfırlanıyor.
oluşturuldu.
re2c:etiket ön eki = yy ;
Numaralandırılmış etiketlerin ön ekini değiştirmeye izin verir. Varsayılan yy olabilir ve
geçerli bir etiket olan herhangi bir dize ayarlayın.
re2c:durum:iptal = 0;
Sıfır olmadığında ve değiştirildiğinde -f o zaman aktif YYGETSTATE blok içerecektir
iptal edilen varsayılan durum ve başlatma için bir -1 durumu kullanılır.
re2c:durum:sonraki etiket = 0;
ne zaman kullanılır -f olup olmadığını kontrol etmek için aktiftir. YYGETSTATE bloğun ardından bir
yySonraki: etiket satırı. Kullanmak yerine yySonraki genellikle yapılandırmayı da kullanabilirsiniz
başlangıç etiketi belirli bir başlangıç etiketini veya varsayılanı zorlamak için yy0 başlangıç etiketi olarak
Özel bir etiket kullanmak yerine, genellikle ayrı etiketler kullanmak daha iyidir. YYGETSTATE
yerleştirerek gerçek tarayıcı kodundan bir kod /*!getstate:re2c*/ yorum Yap.
re2c:cgoto:eşik = 9;
Ne zaman -g etkindir bu değer, tetikleyen karmaşıklık eşiğini belirtir
iç içe if'leri ve karar bit alanlarını kullanmak yerine atlama tablolarının oluşturulması. NS
eşik, her durumda ihtiyaç duyulan if-s'nin hesaplanmış bir tahminiyle karşılaştırılır.
kullanılan bitmap eşiği 2'ye böler.
re2c:yych:dönüşüm = 0;
Giriş, imzalı karakterler kullandığında ve -s or -b anahtarlar yürürlüktedir re2c
birinin otomatik olarak imzasız karakter türüne dönüştürülmesine izin verir, bu da daha sonra
dahili tek karakteri için gereklidir. Bu ayar sıfır veya boş olduğunda
dize dönüştürme devre dışı bırakılır. Sıfır olmayan bir sayı kullanarak dönüşüm alınır
itibaren YYCTİPİ. Bu, bir yerinde yapılandırma tarafından verilirse, bu değer
kullanılmış. Aksi takdirde olacak (YYCTİP) ve bu yapılandırmadaki değişiklikler hayır
daha uzun mümkün. Bu ayar bir dize olduğunda, parantezler belirtilmelidir. Şimdi
girişinizin bir olduğunu varsayarsak tank * arabellek ve yukarıda belirtilen anahtarları kullanıyorsunuz
ayarlayabilirsin YYCTİPİ için imzasız tank ve bu ayar 1 veya (imzasız
karakter).
re2c:tanımla:YYCONDTYPE = YYCONDTİPİ ;
ile durum desteği için kullanılan numaralandırma -c modu.
re2c:tanımla:YYCTXMARKER = YYCTXİŞARETİ ;
Birinin tanımın üzerine yazmasına izin verir YYCTXİŞARETİ ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:tanımla:YYCTYPE = YYCTİPİ ;
Birinin tanımın üzerine yazmasına izin verir YYCTİPİ ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:tanımla:YYCURSOR = YYCURSOR ;
Birinin tanımın üzerine yazmasına izin verir YYCURSOR ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:tanımla:YYDEBUG = YYDEBUĞ ;
Birinin tanımın üzerine yazmasına izin verir YYDEBUĞ ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:define:YYGETKOŞULU = YYGETKOŞUL ;
için ikame YYGETKOŞUL. Varsayılan olarak unutmayın re2c sonra parantez oluşturur
YYGETKOŞUL. Ayarlamak re2c:define:YYGETCONDITION:çıplak parantezleri atlamak için sıfırdan farklı.
re2c:define:YYGETCONDITION:çıplak = 0;
Parantezleri sonra kontrol eder YYGETKOŞUL. Sıfırsa, parantezler atlanır. Sıfır değilse,
parantezler oluşturulur.
re2c:tanımla:YYSETKOŞUL = YYSETDURUM ;
için ikame YYSETDURUM. Varsayılan olarak unutmayın re2c içinde argüman üretir
parantez ve noktalı virgülden sonra YYSETDURUM. Yapman gerekiyorsa YYSETDURUM an
bir çağrı yerine keyfi ifade, ayarla re2c:define:YYSETCONDITION:çıplak için
sıfır olmayan ve kullanım re2c:tanımla:YYSETCONDITION@cond içindeki resmi parametreyi belirtmek için
of YYSETDURUM vücut.
re2c:tanımla:YYSETCONDITION@cond = @@ ;
Bu metnin herhangi bir oluşumu YYSETDURUM ile değiştirilecek
gerçek argüman.
re2c:define:YYSETCONDITION:çıplak = 0;
Argümanı parantez ve noktalı virgülden sonra kontrol eder YYSETDURUM. sıfır ise ikiside
agrument ve noktalı virgül atlanmıştır. Sıfır değilse, hem bağımsız değişken hem de noktalı virgül
oluşturuldu.
re2c:tanımla:YYGETSTATE = YYGETSTATE ;
için ikame YYGETSTATE. Varsayılan olarak unutmayın re2c sonra parantez oluşturur
YYGETSTATE. Ayarlamak re2c:define:YYGETSTATE:çıplak parantezleri atlamak için sıfırdan farklı.
re2c:define:YYGETSTATE:çıplak = 0;
Parantezleri sonra kontrol eder YYGETSTATE. Sıfırsa, parantezler atlanır. Sıfır değilse, parantezler
Üretilir.
re2c:tanımla:YYSETSTATE = YYSETSTATE ;
için ikame YYSETSTATE. Varsayılan olarak unutmayın re2c parantez içinde argüman üretir
ve noktalı virgülden sonra YYSETSTATE. Yapman gerekiyorsa YYSETSTATE keyfi
bir çağrı yerine ifade, ayarla re2c:define:YYSETSTATE:çıplak sıfır olmayana ve kullan
re2c:tanımla:YYSETSTATE@cond içindeki resmi parametreyi belirtmek için YYSETSTATE vücut.
re2c:tanımla:YYSETSTATE@durum = @@ ;
Bu metnin herhangi bir oluşumu YYSETSTATE gerçek ile değiştirilecek
argüman.
re2c:define:YYSETSTATE:çıplak = 0;
Argümanı parantez ve noktalı virgülden sonra kontrol eder YYSETSTATE. Sıfır ise, her iki agrument
ve noktalı virgül atlanmıştır. Sıfır değilse, hem bağımsız değişken hem de noktalı virgül oluşturulur.
re2c:tanımla:YYLIMIT = YILDIRIM ;
Birinin tanımın üzerine yazmasına izin verir YILDIRIM ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:tanımla:YYMARKER = YYMARKER ;
Birinin tanımın üzerine yazmasına izin verir YYMARKER ve böylece ayarlayarak bundan kaçınmak
gereken gerçek kodun değeri.
re2c:etiket:yyFillLabel = yyFillEtiket ;
Birinin etiket adının üzerine yazmasına izin verir yyFillEtiket.
re2c:etiket:yySonraki = yySonraki ;
Birinin etiket adının üzerine yazmasına izin verir yySonraki.
re2c:değişken:yya kabul et = kabul et;
Birinin değişkenin adının üzerine yazmasına izin verir kabul et.
re2c:değişken:yybm = yybm ;
Birinin değişkenin adının üzerine yazmasına izin verir yybm.
re2c:değişken:yych = yych ;
Birinin değişkenin adının üzerine yazmasına izin verir yych.
re2c:değişken:yyctable = yaşanabilir ;
her ikisi de -c ve -g o zaman aktif re2c bir statik oluşturmak için bu değişkeni kullanır
için atlama masası YYGETKOŞUL.
re2c:değişken:ystable = ystable ;
Kullanımdan kaldırıldı.
re2c:değişken:yytarget = yy hedef ;
Birinin değişkenin adının üzerine yazmasına izin verir yy hedef.
DÜZENLİ İFADE
"foo" gerçek dize "foo". ANSI-C kaçış dizileri kullanılabilir.
'foo' gerçek dize "foo" (karakterler [a-zA-Z] büyük/küçük harfe duyarlı değildir). ANSI-C kaçış
diziler kullanılabilir.
[xyz] karakter sınıfı; bu durumda, normal ifade aşağıdakilerden biriyle eşleşir: x, yya da z.
[abj-oZ]
içinde bir aralık bulunan karakter sınıfı; maçlar a, b, herhangi bir mektup j içinden o or Z.
[^sınıf]
ters karakter sınıfı.
r \ s herhangi biriyle eşleş r hangisi değil s. r ve s olabilen düzenli ifadeler olmalıdır.
karakter sınıfları olarak ifade edilir.
r* sıfır veya daha fazla olay r.
r+ bir veya daha fazla olay r.
r? isteğe bağlı r.
(R) r; parantezler önceliği geçersiz kılmak için kullanılır.
r s r ardından s (birleştirme).
r | s ya r or s (alternatif).
r / s r ama sadece takip edilirse s. Bunu not et s eşleşen metnin parçası değil.
Bu tür düzenli ifadeye "sondaki bağlam" denir. İzleyen bağlam
adlandırılmış bir tanımın parçası değil, yalnızca bir kuralın sonu olabilir.
r{n} maçlar r kesinlikle n kez.
r{n,} maçlar r en azından n kez.
r{n,m} maçlar r en azından n kez, ama daha fazla değil m kez.
. yeni satır dışında herhangi bir karakterle eşleşir.
isim tarafından belirtilen adlandırılmış tanımla eşleşir isim Yalnızca -F kapalı. Eğer -F aktif
o zaman bu, çift tırnak içine alınmış gibi davranır ve dizeyle eşleşir
"Name".
Karakter sınıfları ve dize değişmezleri sekizli veya onaltılı karakter içerebilir
tanımlar ve aşağıdaki kaçış dizileri kümesi: \a, \b, \f, \n, \r, \t, \v, \\. Bir
sekizlik karakter, bir ters eğik çizgi ve ardından üç sekizlik basamağı ile tanımlanır (örn. \ 377).
0 ile 0xFF arasındaki onaltılık karakterler, küçük harfli ters eğik çizgi ile tanımlanır. x ve iki
onaltılık rakamlar (örn. \ x12). 0x100 ile 0xFFFF arasındaki onaltılık karakterler şu şekilde tanımlanır:
ters eğik çizgi, küçük harfli \u veya büyük harf \X ve dört onaltılık basamak (örn.
\ u1234). 0x10000 ile 0xFFFFffff arasındaki onaltılık karakterler ters eğik çizgi ile tanımlanır.
üst kasa \U ve sekiz onaltılık basamak (örn. \U12345678).
Tek taşınabilir "herhangi" kural, varsayılan kuraldır *.
TARAYICI İLE DEPOLANABİLİR DEVLETLERİ
Zaman -f bayrak belirtilir, re2c mevcut durumunu depolayabilen bir tarayıcı oluşturur,
arayana geri dönün ve daha sonra işlemlere tam olarak kaldığı yerden devam edin.
Varsayılan çalışma re2c tarayıcının ekstra girdi istediği bir "çekme" modelidir
ne zaman ihtiyacı olursa. Ancak bu çalışma modu, tarayıcının
ayrıştırma döngüsünün "sahibi" ve bu her zaman uygun olmayabilir.
Tipik olarak, akışta tarayıcının önünde bir önişlemci varsa veya bunun için
Diğer herhangi bir prosedürel veri kaynağı ne olursa olsun, tarayıcı daha fazla veri "isteyemez".
hem tarayıcı hem de kaynak ayrı bir iş parçacığında yaşıyor.
The -f flag sadece bu durum için kullanışlıdır: kullanıcıların şu durumlarda çalışan tarayıcılar tasarlamasına izin verir:
bir "push" modeli, yani verilerin tarayıcıya parça parça beslendiği yer. tarayıcı ne zaman
tüketilecek veri biter, sadece durumunu saklar ve arayana geri döner. ne zaman daha fazla
giriş verileri tarayıcıya beslenir, işlemlere tam olarak kaldığı yerden devam eder.
"Çekme" modeline kıyasla gerekli değişiklikler:
· Kullanıcı makroları sağlamalıdır YYSETSTATE () ve YYGETSTATE (durum).
· -f seçenek bildirimini engeller yych ve kabul et. Yani kullanıcının beyan etmesi gerekiyor
bunlar. Ayrıca kullanıcının bunları kaydetmesi ve geri yüklemesi gerekir. örnekte
örnekler/push_model/push.re bunlar, (C++) sınıfının alanları olarak bildirilir.
tarayıcı bir yöntemdir, dolayısıyla açıkça kaydedilmeleri/geri yüklenmeleri gerekmez. C için onlar
örneğin parametre olarak geçirilen bir yapıdan alanları seçen makrolar yapılabilir.
Alternatif olarak, yerel değişkenler olarak bildirilebilirler ve YYFILL (N) o zaman
işleve girişte geri dönmeye ve geri yüklenmeye karar verir. Ayrıca, daha fazla olabilir
Devleti kurtarmak için etkili YYFILL (N) Çünkü YYSETSTATE (durum) denir
koşulsuz olarak. YYFILL (N) ancak almıyor belirtmek, bildirmek parametre olarak,
durumu yerel bir değişkende saklamak için YYSETSTATE (durum).
· Değiştir YYFILL (N) daha fazla girdi gerekiyorsa (onu çağıran işlevden) dönmek için.
· Daha fazla giriş gerekip gerekmediğini anlamak ve uygun şekilde yanıt vermek için arayanı değiştirin.
· Oluşturulan kod, son durumu geri yüklemek için kullanılan bir anahtar bloğu içerecektir.
tersanenin arkasına atlayarak YYFILL (N) Arama. Bu kod otomatik olarak oluşturulur
ilkinin epilogunda /*!re2c */ engellemek. oluşumunu tetiklemek mümkündür.
YYGETSTATE () yerleştirerek daha önce engelle /*!getstate:re2c*/ Yorum. Bu özellikle
tarayıcı kodunun bir döngü içine sarılması gerektiğinde kullanışlıdır.
Bakınız örnekler/push_model/push.re "push" model tarayıcı için. Oluşturulan kod olabilir
yerinde yapılandırmalar kullanılarak ince ayar yapıldı durum:iptal ve durum: sonraki etiket.
TARAYICI İLE ŞART DESTEK
Kullanırken, bir koşul adları listesiyle normal ifadelerin önüne geçebilirsiniz. -c
değiştirmek. Bu durumda re2c her koşul için tarayıcı blokları oluşturur. nerede her biri
oluşturulan blokların kendi ön koşulu vardır. Ön koşul arayüz tarafından verilir
tanımlamak YYGETCONDITON() ve türünde olmalıdır YYCONDTİPİ.
İki özel kural türü vardır. İlk olarak, durumun kuralları <*> hepsi birleştirildi
koşullar (bu koşulun diğer kurallarından daha düşük önceliğe sahip olduklarını unutmayın). Ve
ikinci olarak boş koşul listesi, birinin bir kod bloğu sağlamasına izin verir.
tarayıcı parçası Yani herhangi bir düzenli ifadeye izin vermiyor. koşul değeri
bu özel bloğa atıfta bulunulan her zaman numaralandırma değeri 0 olandır. Bu şekilde
bu özel kuralın kodu, bir tarayıcıyı başlatmak için kullanılabilir. hiçbir şekilde
bu kurallara sahip olmak gereklidir: ancak bazen özel bir
başlatılmamış koşul durumu.
Boş olmayan kurallar, yeni koşulun belirtilmesine izin verir, bu da onları geçiş kuralları yapar.
Tanımlama için çağrılar üretmenin yanı sıra YYSETKOŞUL başka özel kod yok
oluşturuldu.
Herhangi bir kod bloğunun başına kodun eklenmesine izin veren başka bir tür özel kural vardır.
belirli bir koşul kümesinin tüm kuralları veya tüm kurallara tüm kod blokları. Bu olabilir
kurallar arasında bazı işlemler yaygın olduğunda yardımcı olur. Örneğin bu depolamak için kullanılabilir
taranan dizenin uzunluğu. Bu özel kurulum kuralları bir ünlem işaretiyle başlar
ya bir koşullar listesi takip eder <! şart, Kendi ID’n ile mağazalarını oluştur > ya da bir yıldız . Ne zaman re2c
durumu bir kurulum kuralına ve yıldızlı bir kuruluma sahip olmayan bir kuralın kodunu oluşturur
kuralı mevcutsa, bu kod kurulum kodu olarak kullanılacaktır.
KODLAMALAR
re2c aşağıdaki kodlamaları destekler: ASCII (varsayılan), EBCDIC (-e), UCS-2 (-w), UTF-16
(-x), UTF-32 (-u) ve UTF-8 (-8). Ayrıca bkz. yerinde yapılandırma re2c:bayraklar.
Kodlamadan bahsederken aşağıdaki kavramlar açıklığa kavuşturulmalıdır. Kod noktası bir
tek kodlama sembolünü temsil eden soyut sayı. Kod birimi en küçük birimdir
kodlanmış metinde kullanılan hafızanın (girişteki bir karaktere karşılık gelir)
aktarım). Tek bir kod noktasını temsil etmek için bir veya daha fazla kod birimi gerekli olabilir.
kodlama üzerinde. Sabit uzunluklu kodlamada, her kod noktası eşit olarak temsil edilir.
kod birimlerinin sayısı. Değişken uzunluklu kodlamada, farklı kod noktaları
farklı sayıda kod birimiyle temsil edilir.
ASCII sabit uzunluklu bir kodlamadır. Kod alanı, 0'dan 100'a kadar 0xXNUMX kod noktası içerir.
0xFF. Bir kod noktası, tam olarak 1 baytlık bir kod birimiyle temsil edilir.
kod noktasıyla aynı değer. Boyutu YYCTİPİ 1 bayt olmalıdır.
EBCDIC sabit uzunluklu bir kodlamadır. Kod alanı, 0'dan 100'a kadar 0xXNUMX kod noktası içerir.
0xFF. Bir kod noktası, tam olarak 1 baytlık bir kod birimiyle temsil edilir.
kod noktasıyla aynı değer. Boyutu YYCTİPİ 1 bayt olmalıdır.
UCS-2 sabit uzunluklu bir kodlamadır. Kod alanı, 0'dan 10000'a kadar 0xXNUMX kod noktası içerir.
0xFFFF. Bir kod noktası, tam olarak 2 baytlık bir kod birimiyle temsil edilir.
kod noktasıyla aynı değer. Boyutu YYCTİPİ 2 bayt olmalıdır.
UTF-16 değişken uzunluklu bir kodlamadır. Kod alanı, tüm Unicode kod noktalarını içerir,
0'dan 0xD7FF'ye ve 0xE000'den 0x10FFFF'ye. Bir kod noktası ile temsil edilir
bir veya iki 2 baytlık kod birimi. Boyutu YYCTİPİ 2 bayt olmalıdır.
UTF-32 sabit uzunluklu bir kodlamadır. Kod alanı, 0'dan itibaren tüm Unicode kod noktalarını içerir.
0xD7FF'ye ve 0xE000'den 0x10FFFF'ye. Bir kod noktası tam olarak ile temsil edilir
bir adet 4 baytlık kod birimi. Boyutu YYCTİPİ 4 bayt olmalıdır.
UTF-8 değişken uzunluklu bir kodlamadır. Kod alanı, tüm Unicode kod noktalarını içerir,
0'dan 0xD7FF'ye ve 0xE000'den 0x10FFFF'ye. Bir kod noktası ile temsil edilir
bir, iki, üç veya dört 1 baytlık kod birimi dizisi. Boyutu YYCTİPİ 1 olmalı
bayt.
Unicode'da, 0xD800 ila 0xDFFF (vekiller) aralığındaki değerler geçerli Unicode kodu değil
noktalarında Unicode kod noktalarıyla eşlenecek kod birimlerinin herhangi bir kodlanmış dizisidir.
0xD800-0xDFFF aralığı, hatalı biçimlendirilmiş. Kullanıcı nasıl kontrol edebilir re2c böyle biçimsiz davranır
ile diziler --kodlama-politikası bayrak (bkz. SEÇENEKLER tam açıklama için).
Bazı kodlamalar için, geçerli kodlanmış akışta asla oluşmayan kod birimleri vardır (örn.
UTF-0'de 8xFF bayt). Oluşturulan tarayıcının geçersiz girişi kontrol etmesi gerekiyorsa, tek doğru
bunu yapmanın yolu varsayılan kuralı kullanmaktır *. Tam aralık kuralına dikkat edin [^] geçersiz yakalamaz
değişken uzunluklu kodlama kullanıldığında kod birimleri ([^] "tüm geçerli kod noktaları" anlamına gelirken
varsayılan kural * "tüm olası kod birimleri" anlamına gelir).
GENEL GİRİŞ API
re2c genellikle işaretçi benzeri ilkelleri kullanarak girdi üzerinde çalışır YYCURSOR, YYMARKER,
YYCTXİŞARETİ ve YILDIRIM.
Genel giriş API'si (ile etkinleştirildi --giriş görenek anahtarı) birinin girişi özelleştirmesine izin verir
operasyonlar. Bu modda, re2c girişle ilgili tüm işlemleri şu şekilde ifade edecektir:
aşağıdaki ilkeller:
┌─────────────────────────────────────────── ──┐
│YYPEK () │ mevcut giriş karakterini al │
├─────────────────────────────────────────── ──┤
│YYSKİP () │ sonraki karaktere ilerleyin │
├─────────────────────────────────────────── ──┤
│YYYEDEKLEME () │ yedek geçerli giriş konumu │
├─────────────────────────────────────────── ──┤
│YYBACKUPCTTX () │ yedek geçerli giriş konumu │
│ │ sondaki bağlam için │
├─────────────────────────────────────────── ──┤
│YYRESTORE () │ mevcut giriş konumunu geri yükle │
├─────────────────────────────────────────── ──┤
│YYRESTORECTX () │ mevcut giriş konumunu geri yükle │
│ │ sondaki bağlam için │
├─────────────────────────────────────────── ──┤
│YYLESSTHAN (N) │ daha az olup olmadığını kontrol edin n giriş │
│ │ karakterler kaldı │
└─────────────────────────────────────────── ──┘
Bazı örnekler sağlayan birkaç faydalı bağlantı:
1. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-13-input_model.html
2. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-15-input_model_custom.html
onworks.net hizmetlerini kullanarak re2c'yi çevrimiçi kullanın