예제 #1
0
        public override void Codegen(CIntermediateLang cil, IndentingStringBuilder sb)
        {
            var ty        = Thing.TryInferType(cil);
            var separator = CTypes.IsPointerType(ty) ? "->" : ".";
            var @struct   = cil.SymTable.LookupStruct(ty);
            // TODO: Handle key not found exception
            var member = @struct.Members[Member];

            Thing.Codegen(cil, sb);
            var thingVar = cil.LastUsedVar;

            cil.LastUsedVar = string.Format("{0}{1}{2}", thingVar, separator, member.Name);
        }