Please explain these semantic actions for record types and how to execute them with the help of an example of a record type declaration. You can use the declaration: record
{ float x; float y; } p; as the example. T -> record '{' { Env.push(top); top = new Env(); Stack.push(ofset); offset = 0; } D '}' { T.type = record(top); T.width = offset; top = Env.pop(); offset = Stack.pop(); }