En attributgrammatik er en formel måde til at udvide en formel grammatik med semantisk databehandling.
I en attributgrammatik gemmes semantisk information i attributter associeret med grammatikkens terminal og ikke-terminal symboler. Attributternes værdier er resultatet af attribut evalueringsregler associeret med grammatikproduktioner. Attributter tillader overførsel af information fra et vilkårligt sted i det abstrakte syntakstræ til et vilkårligt andet sted, på en styret og formel måde.
Det følgende er en simpel kontekstfri grammatik, som kan beskrive et sprog udgjort af multiplikation og addition af heltal.
Expr → Expr + Term
Expr → Term
Term → Term * Factor
Term → Factor
Factor → "(" Expr ")"
Factor → integer
Den følgende attributgrammatik kan anvendes til at beregne resultatet af et udtryk skrevet i grammatikken. Bemærk at denne grammatik kun anvender syntesiserede værdier, og at den derfor er en S-attributgrammatik.
Expr1 → Expr2 + Term [ Expr1.value = Expr2.value + Term.value ]
Expr → Term [ Expr.value = Term.value ]
Term1 → Term2 * Factor [ Term1.value = Term2.value * Factor.value ]
Term → Factor [ Term.value = Factor.value ]
Factor → "(" Expr ")" [ Factor.value = Expr.value ]
Factor → integer [ Factor.value = strToInt(integer.str) ]
Programmeringssproget Ada er blevet beskrevet i attributgrammatik.
{{cite journal}}: CS1-vedligeholdelse: BOT: original-url status ukendt (link),| Spire Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den. |