コード例 #1
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
        public void TestBlockLevel()
        {
            var tokenDic = new NakoTokenDic();

            NakoReservedWord.Init(tokenDic);
            Assert.IsTrue(
                NakoTokenization.Tokenize(
                    @"もし、A=1ならば
  PRINT A
違えば
  PRINT A
", tokenDic)
                .CheckTokenType(new NakoTokenType[] {
                NakoTokenType.IF,
                NakoTokenType.WORD,
                NakoTokenType.EQ,
                NakoTokenType.INT,
                NakoTokenType.EOL,
                NakoTokenType.SCOPE_BEGIN,
                NakoTokenType.PRINT,
                NakoTokenType.WORD,
                NakoTokenType.EOL,
                NakoTokenType.SCOPE_END,
                NakoTokenType.ELSE,
                NakoTokenType.EOL,
                NakoTokenType.SCOPE_BEGIN,
                NakoTokenType.PRINT,
                NakoTokenType.WORD,
                NakoTokenType.EOL,
                NakoTokenType.SCOPE_END
            }));
        }
コード例 #2
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
 public void TestTokenize()
 {
     // 1番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("1").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.INT
     }));
     // 2番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("1+2").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.INT,
         NakoTokenType.PLUS,
         NakoTokenType.INT
     }));
     // 3番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("1+2*3").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.INT,
         NakoTokenType.PLUS,
         NakoTokenType.INT,
         NakoTokenType.MUL,
         NakoTokenType.INT
     }));
     // 4番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("(1+2)*3").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.PARENTHESES_L,
         NakoTokenType.INT,
         NakoTokenType.PLUS,
         NakoTokenType.INT,
         NakoTokenType.PARENTHESES_R,
         NakoTokenType.MUL,
         NakoTokenType.INT
     }));
 }
コード例 #3
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
        public void TestGetWordToken()
        {
            NakoToken token;

            // 1番目のテスト
            token = NakoTokenization.Tokenize("ABC")[0];
            Assert.AreEqual(NakoTokenType.WORD, token.Type);
            Assert.AreEqual("ABC", token.Value);
            // 2番目のテスト
            token = NakoTokenization.Tokenize("豆腐から")[0];
            Assert.AreEqual(NakoTokenType.WORD, token.Type);
            Assert.AreEqual("豆腐", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 3番目のテスト
            token = NakoTokenization.Tokenize("F_豆腐から")[0];
            Assert.AreEqual(NakoTokenType.WORD, token.Type);
            Assert.AreEqual("F_豆腐", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 4番目のテスト
            token = NakoTokenization.Tokenize("F123から")[0];
            Assert.AreEqual(NakoTokenType.WORD, token.Type);
            Assert.AreEqual("F123", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 5番目のテスト
            token = NakoTokenization.Tokenize("__から")[0];
            Assert.AreEqual(NakoTokenType.WORD, token.Type);
            Assert.AreEqual("__", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 6番目のテスト
            var tokens = NakoTokenization.Tokenize("AからBへファイルコピー");

            Assert.IsTrue(
                tokens.CheckTokenType(new NakoTokenType[] {
                NakoTokenType.WORD,
                NakoTokenType.WORD,
                NakoTokenType.WORD
            }));
            Assert.AreEqual("A", tokens[0].Value);
            Assert.AreEqual("から", tokens[0].Josi);
            Assert.AreEqual("B", tokens[1].Value);
            Assert.AreEqual("へ", tokens[1].Josi);
            Assert.AreEqual("ファイルコピー", tokens[2].Value);
            Assert.AreEqual("", tokens[2].Josi);
        }
コード例 #4
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
        public void TestGetStringToken()
        {
            NakoToken token;

            // 1番目のテスト
            token = NakoTokenization.Tokenize("「ABC」")[0];
            Assert.AreEqual(NakoTokenType.STRING, token.Type);
            Assert.AreEqual("ABC", token.Value);
            Assert.AreEqual("", token.Josi);
            // 2番目のテスト
            token = NakoTokenization.Tokenize("`豆腐`から")[0];
            Assert.AreEqual(NakoTokenType.STRING, token.Type);
            Assert.AreEqual("豆腐", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 3番目のテスト
            token = NakoTokenization.Tokenize("「「豆腐」」から")[0];
            Assert.AreEqual(NakoTokenType.STRING, token.Type);
            Assert.AreEqual("豆腐", token.Value);
            Assert.AreEqual("から", token.Josi);
            // 4番目のテスト
            token = NakoTokenization.Tokenize("『『『F123』』』へ飛ぶ")[0];
            Assert.AreEqual(NakoTokenType.STRING, token.Type);
            Assert.AreEqual("F123", token.Value);
            Assert.AreEqual("へ", token.Josi);
            // 5番目のテスト
            var tokens = NakoTokenization.Tokenize("「aaa\nbbb\nccc」から「豆腐」へ");

            Assert.AreEqual(NakoTokenType.STRING, tokens[0].Type);
            Assert.AreEqual("aaa\nbbb\nccc", tokens[0].Value);
            Assert.AreEqual("から", tokens[0].Josi);
            Assert.AreEqual(NakoTokenType.STRING, tokens[1].Type);
            Assert.AreEqual("豆腐", tokens[1].Value);
            Assert.AreEqual("へ", tokens[1].Josi);
            Assert.AreEqual(2, tokens[1].LineNo);
            // 6番目のテスト
            token = NakoTokenization.Tokenize("`abc\tabc`")[0];
            Assert.AreEqual(NakoTokenType.STRING, token.Type);
            Assert.AreEqual("abc\tabc", token.Value);
            Assert.AreEqual("", token.Josi);
        }
コード例 #5
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
        public void TestGetNumberToken()
        {
            NakoToken token;

            // 1番目のテスト
            token = NakoTokenization.Tokenize("1234")[0];
            Assert.AreEqual(NakoTokenType.INT, token.Type);
            Assert.AreEqual("1234", token.Value);
            // 2番目のテスト
            token = NakoTokenization.Tokenize("12.3456")[0];
            Assert.AreEqual(NakoTokenType.NUMBER, token.Type);
            Assert.AreEqual("12.3456", token.Value);
            // 3番目のテスト
            token = NakoTokenization.Tokenize("0.123")[0];
            Assert.AreEqual(NakoTokenType.NUMBER, token.Type);
            Assert.AreEqual("0.123", token.Value);
            // 4番目のテスト
            token = NakoTokenization.Tokenize("32から")[0];
            Assert.AreEqual(NakoTokenType.INT, token.Type);
            Assert.AreEqual("32", token.Value);
            Assert.AreEqual("から", token.Josi);
        }
コード例 #6
0
ファイル: TestNakoTokenizer.cs プロジェクト: weyk/nadesiko2
 public void TestGetExStringToken()
 {
     // 1番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("「ABC」").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.STRING
     }));
     // 2番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("「ABC{123}」").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.STRING,
         NakoTokenType.AND,
         NakoTokenType.PARENTHESES_L,
         NakoTokenType.INT,
         NakoTokenType.PARENTHESES_R
     }));
     // 3番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("「ABC{`123`}」").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.STRING,
         NakoTokenType.AND,
         NakoTokenType.PARENTHESES_L,
         NakoTokenType.STRING,
         NakoTokenType.PARENTHESES_R
     }));
     //4番目のテスト
     Assert.IsTrue(
         NakoTokenization.Tokenize("「「ABC{`123`&123}」」").CheckTokenType(new NakoTokenType[] {
         NakoTokenType.STRING,
         NakoTokenType.AND,
         NakoTokenType.PARENTHESES_L,
         NakoTokenType.STRING,
         NakoTokenType.AND,
         NakoTokenType.INT,
         NakoTokenType.PARENTHESES_R
     }));
 }
コード例 #7
0
ファイル: NakoFuncArgs.cs プロジェクト: nobodxbodon/nadesiko2
        /// <summary>
        /// 引数の定義文字列を読んで、関数の引数として登録する
        /// </summary>
        /// <param name="str"></param>
        public void analizeArgStr(string str)
        {
            NakoTokenList tokens = NakoTokenization.TokenizeSplitOnly(str);

            analizeArgTokens(tokens);
        }
コード例 #8
0
 /// <summary>
 /// 字句解析(トークンの分割)を行う
 /// 結果は Tokens で得られる
 /// </summary>
 public void Tokenize()
 {
     tokens = NakoTokenization.Tokenize(source, TokenDic);
 }