Come mantenere AST per l'accesso alle funzioni?

-1

Considera tale codice (diciamo che è C ++)

Foo::Bar.get().X

Come si dovrebbe mantenere l'AST per questo - come "albero" con radice a sinistra Foo(Bar(get(X)) , o con radice a destra (((Foo)Bar)get)X ? O forse come una struttura piatta (elenco)?

Il primo sembra più conveniente quando si risolvono i nomi, il secondo quando si lavora con esso come espressione.

Ho impostato il tag parsing , ma mi sto chiedendo davvero dall'analisi semantica di POV (non esiste tale tag).

    
posta greenoldman 10.06.2014 - 21:30
fonte

1 risposta

3

Il tuo esempio ottiene l'attributo X del risultato del metodo di chiamata bar () sul risultato di ottenere Bar membro statico del risultato della valutazione del nome Foo. Come albero:

GetAttribute
+-CallMethod
| +-GetStaticMember
| | +-Foo
| | +-Bar
| +-bar
| +-[] // parameters
+-X
    
risposta data 10.06.2014 - 22:33
fonte

Leggi altre domande sui tag