// Parse and translate a program private void DoProgram() { Block(""); if (Cradle.Look != 'e') { Cradle.Expected("End"); } Cradle.EmitLn("END"); }
// 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; }
// 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]; }
// 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 = '?'; } }
// 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; } }