コード例 #1
0
ファイル: LabelSymbol.cs プロジェクト: vinzenz/phlox
        public override bool Equals(object obj)
        {
            LabelSymbol l = obj as LabelSymbol;

            if (l != null)
            {
                return(l.Name == this.Name);
            }

            return(false);
        }
コード例 #2
0
        public int GetLabelAddress(string labelId)
        {
            LabelSymbol label;

            if (_labels.TryGetValue(labelId, out label))
            {
                if (label.IsFwdRef)
                {
                    label.AddFwdRef(_ip);
                }

                return(label.Address);
            }
            else
            {
                LabelSymbol newLab = new LabelSymbol(labelId);
                newLab.AddFwdRef(_ip);
                _labels.Add(labelId, newLab);
                return(0);
            }
        }
コード例 #3
0
        public void DefineLabel(IToken idToken)
        {
            LabelSymbol label;

            if (_labels.TryGetValue(idToken.Text, out label))
            {
                if (label.IsFwdRef)
                {
                    //label exists, patch up references
                    label.Define(_ip);
                    label.ResolveFwdRefs(_code);
                }
                else
                {
                    throw new GenerationException(String.Format("line {0}:{1} Label '{2}' already defined", idToken.Line,
                                                                idToken.CharPositionInLine, idToken.Text));
                }
            }
            else
            {
                label = new LabelSymbol(idToken.Text, _ip);
                _labels.Add(label.Name, label);
            }
        }
コード例 #4
0
 public void DefineLabel(IToken idToken)
 {
     LabelSymbol label;
     if (_labels.TryGetValue(idToken.Text, out label))
     {
         if (label.IsFwdRef)
         {
             //label exists, patch up references
             label.Define(_ip);
             label.ResolveFwdRefs(_code);
         }
         else
         {
             throw new GenerationException(String.Format("line {0}:{1} Label '{2}' already defined", idToken.Line, 
                 idToken.CharPositionInLine, idToken.Text));
         }
     }
     else
     {
         label = new LabelSymbol(idToken.Text, _ip);
         _labels.Add(label.Name, label);
     }
 }
コード例 #5
0
        public int GetLabelAddress(string labelId)
        {
            LabelSymbol label;
            if (_labels.TryGetValue(labelId, out label))
            {
                if (label.IsFwdRef)
                {
                    label.AddFwdRef(_ip);
                }

                return label.Address;
            }
            else
            {
                LabelSymbol newLab = new LabelSymbol(labelId);
                newLab.AddFwdRef(_ip);
                _labels.Add(labelId, newLab);
                return 0;
            }
        }