Bazı özel karakterlere yalnızca önlerinde bir çıkış karakteri varsa izin verilir
Ben inşa etmek istiyoruz (OCaml benzeri sözdizimi bir fazlası ile, Lex tarzında) düzenli ifade dizeleri bir sınıf için 4 karakter [
, ]
, #
, '
onlar bir kaçış karakter öncesinde sadece eğer izin verilir'
.
İşte bazı geçerli örnekler:
'#Data
,abc'#Headers
,abc'#Totals'[efg
,123'#Totals']efg
,abc
,123
İşte bazı geçerli olmayan örnekler:
#Data
,abc#Headers
,abc#Totals[efg
,123#Totals]efg
,'#Totals[efg
Umarım tanım açıktır. İlk olarak, böyle bir düzenli ifadenin nasıl oluşturulacağını bilen var mı? İkincisi, ocamllex tarafından kabul edilebilecek böyle bir düzenli ifadenin (lex tarzında, daha OCaml benzeri bir sözdizimi ile) nasıl oluşturulacağını bilen var mı?
Yanıtlar
Kabul edilen dizelerin birkaç örnek dışında göründüğünü söylemiyorsunuz. Sadece somut olmak için, küçük harflere ve rakamlara izin verildiğini ve 4 özel karaktere yalnızca öncesinde varsa izin verildiğini varsayalım '
.
Bu, daha sonra, 36 tek karakterli dizinin ve 4 iki karakterli dizinin Kleene kapanışı ile açıklanmaktadır.
Şuna benzeyen:
(['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*