Portál AbcLinuxu, 15. května 2025 11:03

Dotaz: RE prohledávající v zdrojáku jen poznámky?

8.8.2006 22:35 Petr Přikryl
RE prohledávající v zdrojáku jen poznámky?
Přečteno: 67×
Odpovědět | Admin
Napadla mě tato otázka:

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ď
na řádku 2 protože je to uvnitř text. konstanty
nebo
na řádku 4 protože je to v poznámce
nebo
na řádku 5 protože to je "živý kód".
Nemám zatím žádnou ideu, ani to, zda je úloha pomocí RE vůbec řešitelná, takže předem díky za všechny připomínky.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.8.2006 22:57 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: RE prohledávající v zdrojáku jen poznámky?
Odpovědět | | Sbalit | Link | Blokovat | Admin

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.

Každý má právo na můj názor!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.