Portál AbcLinuxu, 15. května 2025 11:03
Lze napsat regulární výraz, který dokáže v zdrojovém kódu rozlišovat "živý kód", poznámky a text. konstanty?
např. v souboru (zdroják v PL/SQL, -- znamená jednořádkovou poznámku, textová konstanta je v apostrofech, čísla vlevo jsou pouze pro označení řádků)
1 declare 2 x varchar2(100) := 'if else begin'; 3 begin 4 -- nasledujici IF je zbytecny 5 if 1=1 then 6 null; 7 end if; 8 end;najde IF buď
Regulární výrazy pro komentáře či textové konstanty napsat lze (lexikální analyzátor překladače/interpretu koneckonců není nic jiného než speciální konečný automat), problém je ale ten, že nástroje jako grep
pracují s celými řádky. Pro "rozsekání" zdrojáku na jednotlivé lexikální elementy je ale potřeba, aby po nalezení odpovídajícího výrazu pokračoval automat na znaku, kde skončil při nalezení předchozího elementu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.