Revgex
Knihovna a program pro generování náhodných testovacích dat pomocí "jazyka" nápadně podobného regulárním výrazům.
Na projektu pracuji sám, napsán je v C# za použití Windows Forms.
Projekt využívá FastColoredTextBox komponentu.
Popis jazyka
Základ jazyka je podobný regulárním výrazům
- nerezervovaný znak (nebo rezervovaný který je předcházen zpětným lomítkem) -> vypsán na výstup
- [abc123] -> vypsán náhodný znak z výběru, možno používat i intervaly - např. a-z
- \d, \s apod. -> kategorie znaků (možno použít i uvnitř []): \d jsou číslice, \s bílé znaky, \w písmena, číslice a _, velkým pístenem se značí opak (např. \D -> cokoli kromě číslic)
- () -> skupina, může začínat výrazem ve tvaru :název; - tedy (:název; kód ) -> takto lze skupinu pojmenovat
- * -> náhodný počet opakování, horní limit je zadán v aplikaci ("Repetition limit"), častěji generuje méně opakování
- + -> jako *, ale vždy vygeneruje alespoň 1 výskyt
- {n} -> n výskytů
- {n,} -> alespoň n výskytů
- {n,m} -> alespoň n, nejvýše m výskytů
- (abc|012) -> znak '|' odděluje možnosti, z možností va dané skupině se náhodně vybere
- . -> libovolný znak
- \01 -> zpětná reference na 1. skupinu
- \:název; -> zpětná reference na skupinu s daným názvem
- $01 -> zpětná reference na 1. skupinu, namísto generování použije naposledy vygenerovanou hodnotu
- $:název; -> zpětná reference na skupinu s daným názvem, namísto generování použije naposledy vygenerovanou hodnotu
Pozn.: rekurze není povolená
Další syntaxe
- (!x kód ) -> modifikuje vše co je generováno jejím obsahem na základě znaku za vykřičníkem
U | převod na velká písmena |
l | převod na malá písmena |
C | velká písmena na začátku slov |
_ | nahradí mezery a pomlčky za podtržítka |
' ' | nahradí pomlčky a podtržítka za mezery |
- | nahradí mezery a podtržítka za pomlčky |
n | odstraní mezery |
t | odebere bílé znaky ze začátku a konce |
0 | odebere nuly ze začátku |
! | výstup kódu je skryt - možno použít jako komentář nebo pro defiince skupin které mají být použity později |
- (?: kód ) -> na skupinu nelze zpětně odkazovat, v číslování skupin je ignorována
- (" oddělovač ; opakování kód ) -> generuje pomocí kódu tolikrát, kolik je dáno opakováním, vygenerovaté výrazy oddělí oddělovačem, např. (",\ ;{5} \d{2} )
- (' oddělovač ; opakování kód ) -> jako s dvojitými uvozovkami, ale generuje pouze jeden výraz a ten opakuje
Poznámky k aplikaci
- volby pro ignorování bílých znaků v aplikaci jsou zde pro umožnění formátování "kódu". Pokud má být bílý znak přeci jen vygenerován, stačí použít zpětné lomítko ("\ " pro mezeru, "\n" pro konec řádky)
- Filtr umožňuje filtrovat vygenerované texty na základě regulárního výrazu
- knihovna generuje pouze ASCII znaky
- aplikace umožňuje uložit výstup do souboru
Vyjádření poroty
- Dan Vítek - 9 bodů - Super aplikace, osobně jsem něco takového už nějakou dobu hledal. Funguje dobře, reálně mi tam chyběl nějaký, alespoň základní, syntax highlighting. Stačilo by, aby oddělil barevně skupiny, makra a další fce od textu.
- Adam Ježek - 10 bodů - Dobrý nápad, aplikace funkční, dovedu si představit její využití, v GUI nejsou žádné nepotřebné grafické prvky.
V následujícím cvičení, Cvičení 1 - Spojování textu, si procvičíme nabyté zkušenosti z předchozích lekcí.
Galerie



Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 14x (1.26 MB)
Aplikace je včetně zdrojových kódů v jazyce C#