В момента се опитвам да начертая потока на атрибутите за тази граматика на атрибута.
decl → ID decl tail
decl.t := decl tail.t
decl tail.in tab := insert (decl.in tab, ID.n, decl tail.t)
decl.out tab := decl tail.out tab
decl tail → , decl
decl tail.t := decl.t
decl.in tab := decl tail.in tab
decl tail.out tab := decl.out tab
decl tail → : ID ;
decl tail.t := ID.n
decl tail.out tab := decl tail.in tab
Но не разбирам какво означава insert (decl.in tab, ID.n, decl tail.t)
.
Първото ми предположение беше, че ще бъде нещо подобно на функцията insert() в Python.
Но доколкото знам, insert()
на Python приема два параметъра, но в тази граматика на атрибута отнема три параметъра decl.in tab, ID.n, decl tail.t
, така че първоначалното ми предположение е очевидно погрешно тук.
Аз съм съвсем нов в дизайна на компилатора и ми е трудно да разбера значенията на някои семантични функции, които никога не съм виждал преди. (напр. ReduceTo()
)
Какво означава това insert (decl.in tab, ID.n, decl tail.t)
?
Има ли списък със семантични функции като тази, които трябва да знам или запомня?