Exemple #1
0
        // Lexical scanner
        private void Scan()
        {
            int k;

            while (Cradle.Look == Cradle.CR)
            {
                Cradle.Fin();
            }
            if (Cradle.IsAlpha(Cradle.Look))
            {
                GetName();
            }
            else if (Cradle.IsDigit(Cradle.Look))
            {
                GetNum();
            }
            else if (IsOp(Cradle.Look))
            {
                GetOp();
            }
            else
            {
                Value = Cradle.Look.ToString();
                Token = SymType.Operator;
                Cradle.GetChar();
            }
            Cradle.SkipWhite();
        }
 // Parse and translate a math factor
 private void Factor()
 {
     if (Cradle.Look == '(')
     {
         Cradle.Match('(');
         Expression();
         Cradle.Match(')');
     }
     else if (Cradle.IsAlpha(Cradle.Look))
         Ident();
     else
         Cradle.EmitLn("MOVE #" + Cradle.GetNum() + ",D0");
 }
 // Get an identifier
 private void GetName()
 {
     Value = "";
     if (!Cradle.IsAlpha(Cradle.Look))
     {
         Cradle.Expected("Name");
     }
     while (Cradle.IsAlNum(Cradle.Look))
     {
         Value += char.ToUpper(Cradle.Look);
         Cradle.GetChar();
     }
     Token = KWCode[Lookup(Value) + 1];
 }
Exemple #4
0
 // Parse and translate a math factor
 private int Factor()
 {
     if (Cradle.Look == '(')
     {
         Cradle.Match('(');
         int value = Expression();
         Cradle.Match(')');
         return(value);
     }
     else if (Cradle.IsAlpha(Cradle.Look))
     {
         return(Table[Cradle.GetName() - 'A']);
     }
     else
     {
         return(Cradle.GetNum());
     }
 }
Exemple #5
0
        // Get an identifier
        private void GetName()
        {
            int k;

            Value = "";
            if (!Cradle.IsAlpha(Cradle.Look))
            {
                Cradle.Expected("Name");
            }
            while (Cradle.IsAlNum(Cradle.Look))
            {
                Value += char.ToUpper(Cradle.Look);
                Cradle.GetChar();
            }
            k = Lookup(Value);
            if (k == -1)
            {
                Token = SymType.Ident;
            }
            else
            {
                Token = (SymType)k;
            }
        }