/// <summary> /// 単語の初期化 /// </summary> /// <param name="dic"></param> public static void Init(NakoTokenDic dic) { // 構文 dic.AddWord("もし", NakoTokenType.IF); dic.AddWord("ならば", NakoTokenType.THEN); dic.AddWord("違えば", NakoTokenType.ELSE); dic.AddWord("ここまで", NakoTokenType.KOKOMADE); dic.AddWord("繰り返す", NakoTokenType.FOR); dic.AddWord("間", NakoTokenType.WHILE); dic.AddWord("回", NakoTokenType.REPEAT_TIMES); dic.AddWord("反復", NakoTokenType.FOREACH); dic.AddWord("条件分岐", NakoTokenType.SWITCH); dic.AddWord("抜ける", NakoTokenType.BREAK); dic.AddWord("続ける", NakoTokenType.CONTINUE); dic.AddWord("戻る", NakoTokenType.RETURN); // デバッグ用の特殊構文 dic.AddWord("PRINT", NakoTokenType.PRINT); // システムの優先予約語 dic.AddWord("ナデシコ", NakoTokenType.RESERVED); dic.AddWord("取り込む", NakoTokenType.INCLUDE); // 変数定義など dic.AddWord("数値", NakoTokenType.DIM_NUMBER); dic.AddWord("整数", NakoTokenType.DIM_INT); dic.AddWord("文字列", NakoTokenType.DIM_STRING); dic.AddWord("変数", NakoTokenType.DIM_VARIABLE); dic.AddWord("配列変数", NakoTokenType.DIM_ARRAY); // 予約変数名 dic.AddWord("それ", NakoTokenType.WORD); // SORE dic.AddWord("対象", NakoTokenType.WORD); // TAISYOU dic.AddWord("回数", NakoTokenType.WORD); // KAISU dic.AddWord("エラー監視", NakoTokenType.TRY); dic.AddWord("エラーならば", NakoTokenType.CATCH); dic.AddWord("エラー発生", NakoTokenType.THROW); dic.AddWord("エラー値", NakoTokenType.WORD); // ERROR }
/// <summary> /// 指定したソースコードからトークンを解析します。 /// </summary> /// <param name="source">解析するソースコード。</param> /// <param name="tokenDic">解析に使用する、トークン辞書。</param> /// <returns>指定したソースコードから解析した、トークン一覧。</returns> public NakoTokenList Tokenize(string source, NakoTokenDic tokenDic) { Initialization(); this.source = source; this.tokenDic = tokenDic; SplitToToken(); DefineFunction(); CheckWord(); Include(); CheckWord(); //includeした後に関数が追加された可能性があるので、再チェック return(tokens); }
/// <summary> /// 指定したソースコードからトークンを解析します。 /// </summary> /// <param name="source">解析するソースコード。</param> /// <param name="tokenDic">解析に使用する、トークン辞書。</param> /// <returns>指定したソースコードから解析した、トークン一覧。</returns> public static NakoTokenList Tokenize(string source, NakoTokenDic tokenDic) { return(new NakoTokenizer().Tokenize(source, tokenDic)); }