Attribute grammars are traditionally constrained to be noncircular. In
using attribute grammars to specify the semantics of programming lang
uages, this noncircularity limitation has restricted attribute grammar
s to compile-time or static semantics. Inductive attribute grammars ad
d a general form of circularity to this standard approach. Inductive a
ttribute grammars have the expressiveness required to describe the ful
l semantics of programming languages, while at the same time maintaini
ng the declarative character of standard attribute grammars. This expa
nded view of attribute grammars proves to be useful in interactive lan
guage-based programming environments, as inductive attribute grammars
allow the environment to provide an interpreter for incremental re-eva
luation of programs after small changes to the code. The addition of r
un-time semantics via circular attribute grammars permits automaticall
y generated environments to be complete, in that incremental static se
mantic checking and fast incremental execution are now available withi
n a single framework.