Token 類別階層
internal abstract class Token { }
internal sealed class NumToken : Token
{
public double Value { get; }
}
internal sealed class OpToken : Token
{
public Op Value { get; }
public Priority Priority { get; }
}
internal enum Op : int { Plus = '+', Minus = '-', Multiply = '*', Divide = '/' }
internal enum Priority { Lv2 = 2, Lv1 = 1, Lv0 = 0 }
Tokenizer 實作
internal sealed class Tokenizer { public Token[] Parse(string value); }
- 掃描字串,忽略空白。
- 緩衝區收集數字字元,遇非數字轉為
double 產生 NumToken,處理小數點重複錯誤。
- 遇運算子
+ - * / 產生 OpToken,正負號視為一元運算子獨立處理。
- 未定義字元拋出錯誤。