Akurat z listą ort! nazw zmiennych nie ma aż tak wielkiego problemu:
Wystarczy tylko odnajdywać operatory przypisania '='.
Jesli tworzymy zmienną w MatLabie to musi zostać nadana jej wartość ;)
A chodzi tylko o odnalezienie zarezerwowanych ort! nazw :)
to w twoim przykładzie mamy:
1: sin(1)
2: sin(1)=2
3: sin(1)
Skrypt odnalazłby operator '=' w 2'giej linijce i podejzewałby, że to co jest przed nim definiuje nazwę zmiennej;
Należy jeszcze zauważyć, że jeżeli nie ma żadnych nawiasów to nazwa zmiennej kończy się przed pierwszym napodkanym białym znakiem (a jeżeli są nawiasy to przed pierwszym białym znakiem po otwarciu wszystkich nawiasów).
czyli należy bliżej przyjżeć się części:
'sin(1)'
Z tego ort! nie jest strasznie trudno wyciągnąc nazwę zmiennej 'sin' ;)
Do takiej listy należałoby tylko dodać nazwy zarezerwowane podczas eventualnej deklaracji funkcji (jeśli plik *.m zawiera funkcje);
Dodam że interesuje mnie lista nazw zmiennych ort! w głównej funkcji M-Pliku jeżeli analizujemy plik funkcyjny.
Dużo gożej jest natomias z detekcją miejsc które będą dokładnie raz wykonywane podczas dowolnego odpalenia skryptu [sciana]
Jest tak z kilku powodów:
1: instrukcja kończąca ort! (itp) - 'end' może równie dobrze oznaczać ostatni element tablicy np:
1: v='Jakis tam text';
2: for i=1:length(v)-1 % poczatek <ort>pentli</ort> <b>for</b>
3: disp(v(i:end)) % ten <b>end</b> oznacza ostatni element vectora v
4: end % ten <b>end</b> oznacza koniec <ort>pentli</ort> <b>for</b>
2: plik *.m może być plikiem funkcyjnym i może zawierać jednocześnie inne podfunkcje lub funkcje zagnieżdżone i wtedy to dopiero się robią problemy ze znaczeniem po<ort>szczegulnych</ort> 'end'ów</span>
ps: Nie wiem dlaczego mimo, że jestem zalogowany moje ostatnie posty są wyświetlane jako Anonimowe :(
Sebo
// bo piszesz je dłużej niż 15 minut i system Cię wylogowuje - Ł
//zaloguj się permanentnie abyś mógł poprawiać błędy - mało rozumiem z twojego postu - same orty... poza tym ten niebieski powoduje, że raczej nie chce mi się tego czytać - M