Article View: pl.comp.lang.tcl
Article #320Wykrywanie zakresu zmiennej
From: Googie
Date: Tue, 31 Jan 2006 12:41
Date: Tue, 31 Jan 2006 12:41
50 lines
1870 bytes
1870 bytes
Witam,
Szukam najlepszego sposobu na wykrywanie zakresu zmiennej, bez względu
na to, czy jest ona zmienną lokalną w procedurze, czy globalną, czy też
linkowaną przez [upvar].
Przez "znalezienie zakresu" rozumiem taką wartość (np. zwracaną przez
procedurę szukającą zakresu), która jest listą zawierającą indeksy:
linii i znaku w linii, w której występuje odpytywana zmienna.
Nie jest to takie oczywiste, bo nie chodzi mi o wykrywanie zmiennych w
lokalnym skrypcie (bo to jest akurat proste), tylko o parsowanie
jakiegoś skryptu Tcl, który jest w dowolnym zewnętrznym pliku, czyli
przeczytać plik przez [read] lub [gets] i nie uruchamiając tego skryptu
sprawdzić zasięg zmiennych.
Chciałbym, przykładowo taką procedurę:
### <CODE>
proc detect {line char name} {
# body
}
### </CODE>
Przykładowy skrypt do sprawdzenia:
### <CODE>
proc test {aaa} {
set aaa 30
puts $aaa
}
### </CODE>
Ja wywołuję:
### <CODE>
detect 2 10 "aaa"
### </CODE>
A dostaję:
### <CODE>
{0 11} {1 8} {2 10}
### </CODE>
Ma ktoś jakieś pomysły? :)
--
Pozdrawiam!
Googie
Technical Details
Message-ID:
<drnlcu$itr$1@srv.cyf-kr.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail From: Googie <no@spam.org> Newsgroups: pl.comp.lang.tcl Subject: Wykrywanie zakresu zmiennej Date: Tue, 31 Jan 2006 13:41:51 +0100 Organization: Academic Computer Center CYFRONET AGH Lines: 50 Message-ID: <drnlcu$itr$1@srv.cyf-kr.edu.pl> NNTP-Posting-Host: ip-7-197.ists.pl Mime-Version: 1.0 X-Trace: srv.cyf-kr.edu.pl 1138710750 19387 193.25.7.197 (31 Jan 2006 12:32:30 GMT) X-Complaints-To: news@cyf-kr.edu.pl NNTP-Posting-Date: Tue, 31 Jan 2006 12:32:30 +0000 (UTC) User-Agent: Thunderbird 1.5 (Windows/20051201) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit