Instrukcja switch w interpreterze

0

Witam. Piszę obecnie w celach głównie edukacyjnych interpreter dla mojego języka skryptowego. Posiada on pętle for, while, zmienne, stałe, tablice, warunki i wiele, wiele innych przydatnych w języku rzeczy. Teraz pomyślałem o zaimplementowaniu instrukcji switch. Nie mam jednak pomysłu jak zrobić to najoptymalniej. Bawił się ktoś z was kiedyś w coś podobnego i mógłby mnie nieco nakierować na ewentualne rozwiązanie problemu? Póki co działa to (bardzo zbugowanie) na zasadzie, że każdemu Case'owi nadawany jest fragment kodu, który ma zostać wykonany, gdy jego wartość jest równa wartości zmiennej podanej jako argument dla switcha.

0

Robisz to "na żywca" czy korzystasz z yacc/flex?

0

Kod w 100% pisany ręcznie, bez generatorów.

0

To jeszcze określ model switch/case - taki jak w C - z przepływającymi caseami, któ©e trzeba przerwać breakiem, czy odrębnymi?

0

Myślałem nad tym i wydaje mi się, że lepszym rozwiązaniem będą odrębne case'y, więc w gruncie rzeczy nie będą wymagać break'a.

0

Opowiedz coś jak trzymasz ten kod bliżej szczegółów technicznych? Bo na razie ciężko coś doradzać, bez wiedzy co tam masz i w jakiej postaci.

0

Interpreter działa w prosty sposób, najpierw wczytuje cały tekst skryptu, potem parser rozpoznaje polecenia, jeżeli jest to zmienna/stała/tablica to wypełnia odpowiedni kontener, w przeciwnym wypadku "wrzuca polecenie" do kontenera z wszystkimi wykonywalnymi komendami, na samym końcu wykonuje wcześniej wczytany kod. Ostatecznie spróbuję to zrobić podobnie jak w przypadku instrukcji warunkowych, ale jako pierwszy argument wybiorę argument ostatniego switcha, a jako kolejny wartość przypisana danemu case'owi. Jakby ktoś był zainteresowany jak wygląda prototyp (Na 100% będę go przebudowywał i optymalizował) języka to można go znaleźć tutaj: https://github.com/ZwolinKox/SnakeScripts-1.0 .

1 użytkowników online, w tym zalogowanych: 0, gości: 1