Pro e contro dei seguenti metodi di analisi?

0

Sto pensando di creare un convertitore / compilatore Python-JavaScript. Mi sono interrogato sui pro e contro dei seguenti metodi per analizzare il codice Pythonic, in equivalente JavaScript.

  1. Lavorare con l'output di ast.dump(ast.parse(code))
  2. Lavorare con i token.

Ho provato a valutare i pro ei contro di questi metodi, ma non riesco a pensare a nessuno dei principali, perché non li ho mai usati ..
Quindi, fondamentalmente qualcuno potrebbe aiutarmi dicendomi quali sono i pro e i contro dei due metodi che ho menzionato sopra?
Inoltre, se c'è qualcosa di meglio che posso usare per questo scopo, notificatemi ..

PS: userò Python per scrivere il convertitore ..

    
posta pradyunsg 11.05.2013 - 15:36
fonte

1 risposta

2

Big con token: dovrai analizzare, e questo è sia inutile che non banale.

Big con of ast.dump(ast.parse(code)) : È inutilmente stupido. ast.parse ti offre un AST perfettamente valido, strutturato in una struttura dati appropriata. ast.dump ti fornisce una rappresentazione di stringa di quella struttura dati, quindi dovresti analizzare che per recuperare ciò che ast.parse ti ha già dato!

Lasciando ast.dump e utilizzando AST da ast.parse , ci sono due grandi professionisti:

  • Non devi preoccuparti di analizzare il codice Python (e farlo è moderatamente complesso).
  • Gli AST sono davvero il minimo che devi guardare per qualsiasi progetto di compilazione su questa scala. Mentre il ast AST può avere una certa complessità che non è necessario (ad esempio informazioni sulla linea, o funzionalità Python che non supportano), presumo che la semplificazione di un AST Python per il tuo AST personalizzato sia più semplice di generare il tuo AST personalizzato dai token .
  • Un vantaggio minore: esiste già una classe visitatore incorporata in ast , quindi non devi crearne una (un'attività semplice ma alquanto noiosa) per un facile traversamento AST.

Contro? Non così tanto. Vai per ast , ma non aver paura di utilizzare strutture di dati aggiuntive oltre a quelle.

    
risposta data 11.05.2013 - 16:06
fonte

Leggi altre domande sui tag