Katakanlah saya memiliki blok kode besar yang sudah saya lex dan parsing.
Misalkan hanya satu karakter yang berubah; Saya ingin memperbarui penguraian saya, tetapi karena modifikasinya sangat kecil dibandingkan dengan semuanya, saya ingin tahu apakah mungkin untuk tidak menguraikan semuanya lagi, tetapi jika ada algoritma untuk menentukan kisaran untuk mengurai kembali , dan untuk menangani dengan benar batas token yang bergerak.
Terima kasih sebelumnya!
Jawaban:
Sesuai permintaan @Agos, saya mengubah komentar menjadi jawaban.
Pertama, saya harus mengakui bahwa saya tidak benar-benar berpengetahuan di bidang ini. Namun saya sarankan Anda membaca makalah Membangun parser ramah dan Parsing Incremental Efisien dan Fleksibel untuk memiliki pandangan tentang algoritma apa yang digunakan untuk parsing inkremental sebelum tahun 2000.
Untuk perawatan terbaru, Anda dapat melihat makalah ini:
Info lebih lanjut: Ada (setidaknya) dua pendekatan untuk parsing / kompilasi:
sumber
jika parser inkremental Anda menyimpan status di setiap ujung baris, Anda menguraikan ulang hanya dari kondisi parser yang valid terakhir (paling tidak, misalnya setelah parser penuh, ini hanya permulaan baris di mana modifikasi dimulai) dan berhenti mengurai di akhir garis di mana modifikasi berakhir (parser internal mungkin melihat ke depan di luar modifikasi untuk mengenali struktur dengan benar)
sumber