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();
        }
Exemple #2
0
 // Skip over a comma
 private void SkipComma()
 {
     Cradle.SkipWhite();
     if (Cradle.Look == ',')
     {
         Cradle.GetChar();
         Cradle.SkipWhite();
     }
 }
Exemple #3
0
 // Get a number
 private void GetNum()
 {
     Value = "";
     if (!Cradle.IsDigit(Cradle.Look))
     {
         Cradle.Expected("Integer");
     }
     while (Cradle.IsDigit(Cradle.Look))
     {
         Value += Cradle.Look;
         Cradle.GetChar();
     }
     Token = SymType.Number;
 }
Exemple #4
0
 // Get an operator
 private void GetOp()
 {
     Value = "";
     if (!IsOp(Cradle.Look))
     {
         Cradle.Expected("Operator");
     }
     while (IsOp(Cradle.Look))
     {
         Value += Cradle.Look;
         Cradle.GetChar();
     }
     Token = SymType.Operator;
 }
 // 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];
 }
 // Parse and translate the first math factor
 private void SignedFactor()
 {
     if (Cradle.Look == '+') Cradle.GetChar();
     if (Cradle.Look == '-')
     {
         Cradle.GetChar();
         if (Cradle.IsDigit(Cradle.Look))
             Cradle.EmitLn("MOVE #-" + Cradle.GetNum() + ",D0");
         else
         {
             Factor();
             Cradle.EmitLn("NEG D0");
         }
     }
     else
         Factor();
 }
 // Get an operator
 private void GetOp()
 {
     Value = "";
     if (!IsOp(Cradle.Look))
     {
         Cradle.Expected("Operator");
     }
     while (IsOp(Cradle.Look))
     {
         Value += Cradle.Look;
         Cradle.GetChar();
     }
     if (Value.Length == 1)
     {
         Token = Value[0];
     }
     else
     {
         Token = '?';
     }
 }
Exemple #8
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;
            }
        }