tworzę drzewo składniowy, który będzie zawierał wyrażenia podobne doJednoargumentowy i binarne Minus w Parse Drzewa
3 - 4 * 8
lub
8 * -5
lub
-(10 * 1)
Potrzebuję sposobu, aby odróżnić jednoargumentowy i dwójkowy minus. Sposób, w jaki moja gramatyka idzie teraz do binarnego minusu, jest osiągany najpierw, ale myślę o zmianie tego i dodaniu zmiennej flagi, która zawiera ostatnią zmienną.
Ex: jeśli jest 5 - 6
Flaga trzyma 5 i jeśli uzna to za minus, a flaga jest liczba, tym pominąć jednoskładnikowa i przejdź do pliku binarnego.
Jednak nie jestem pewien dokładnie, jak zaimplementować to w C++
Każda pomoc będzie mile widziana.
Dzięki
masz na myśli sposób, aby odróżnić je jako robisz analizowania, czy sposób, aby odróżnić je w parse drzewo? W drzewie analizy jest to banalne - wystarczy mieć oddzielne operatory 'UNARY_MINUS' i' BINARY_MINUS'. Jeśli masz na myśli, że parsujesz, jednoargumentowy minus pojawia się, gdy oczekujesz operandu, a nie operatora. –
W moim parserze chciałbym rozróżnić między -5 a 4 -5. Moja następna część zamienia liście tego drzewa na drzewo AST (które działa), ale mój parser widzi wszystko jako binarny minus (4 - 5). – Dfranc3373