Aktywne Wpisy
Smarek37 +338
#remontujzwykopem #stolarstwo
Miraski zmontowałem znajomemu takie stare mebelki z odzysku. Ktoś wymieniał i miało iść na śmietnik a dostało drugie życie. Wiadomo nie jest to kuchnia jak z katalogu, ale po małych przeróbkach typu nowe cokoły, kilka wstawek i zrobieniu ściany z tej samej płyty mdf wyszedł całkiem sympatyczny efekt. Wiadomo, nie ma zgrania góry z dołem i szafka narożna przy zlewozmywaku też nie jest szafką narożną tylko taką przeróbką. Blat też
Miraski zmontowałem znajomemu takie stare mebelki z odzysku. Ktoś wymieniał i miało iść na śmietnik a dostało drugie życie. Wiadomo nie jest to kuchnia jak z katalogu, ale po małych przeróbkach typu nowe cokoły, kilka wstawek i zrobieniu ściany z tej samej płyty mdf wyszedł całkiem sympatyczny efekt. Wiadomo, nie ma zgrania góry z dołem i szafka narożna przy zlewozmywaku też nie jest szafką narożną tylko taką przeróbką. Blat też
qeti +82
W jaki sposób mogę przeparsować argumenty w określonym wywołaniu funkcji?
Przykładowo mam takie wywołanie(zawsze wiem z iloma argumentami będzie wywoływane)
obj.call("a1", "a2", "a3")
w których argumentami są
a1
a2
a3
i to robię wyszukując tekst pomiędzy przecinkami.
Niby dobrze to działa, ale wysypuje się przy np.
obj.call(call2("a1,"a2"),"a3")
ponieważ jako argumenty wyszukuje
call2("a1
"a2)
a3
zamiast tylko dwóch
#programowanie #regex
W sumie to mogę korzystać tylko z tej jednej implementacji - https://www.pcre.org/
Używasz AST jak kolega @Aryze powiedział, albo jakiegoś antlr itp.
Akurat grzebię nie przy swoim projekcie, więc nie mogę dodawać żadnych nowych narzędzi a jedyne istniejące narzędzia to RegEx albo czysty C++ i funkcje np. ze Stringa
Tego regexami raczej nie zrobisz, musiałbyś pisać kod pod to, zliczać ile było
"
by wiedzieć czy jesteś w stringu czy nie, przy tym zliczaniu patrzeć czy są escapowane itd, jak dla mnie bez sensu, #!$%@? się pod górkę zamiast wziąć istniejące narzędzie do twojego języka.https://github.com/yhirose/cpp-peglib . Jak header only nie pasuje to możesz napisać coś takiego samemu. Iterujesz się po każdym znaku. Dla każdego typu nawiasów trzymasz licznik, który odpowiednio zwiekszasz/zmniejszasz gdy napotkasz nawias otwierający/zamykający. Jak napotkasz przycinek to sprawdzasz licznik nawiasów: jak wszystkie są na 0 (nie liczymy tego głównego) to masz granicę pomiędzy argumentami