Beispiel #1
0
 /// <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
 }
Beispiel #2
0
 /// <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);
 }
Beispiel #3
0
 /// <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));
 }