예제 #1
0
        /// <summary>
        /// パーサーを取得する
        /// </summary>
        /// <param name="filePath">ファイルパス</param>
        /// <param name="text">パースする文字列</param>
        /// <returns>パーサー</returns>
        CompletionUnit BackThreadParser_GetCompletionUnit(string filePath, string text)
        {
            IParser    parser = null;
            TextReader reader = null;

            try
            {
                FileType.KrkrType type = FileType.GetKrkrType(filePath);
                if (type == FileType.KrkrType.Kag)
                {
                    //KAG用パーサを取得
                    reader = new StringReader(text);
                    KagLexer lexer = new KagLexer(reader);
                    parser = new KagParser(filePath, lexer);
                    parser.Parse();
                }
                else if (type == FileType.KrkrType.Tjs)
                {
                    if (FileType.IsKagexEnvinitFileName(filePath))
                    {
                        //KAGEX用
                        kagex.KagexEnvinitLexer lexer = new kkde.parse.kagex.KagexEnvinitLexer(text);
                        parser = new kagex.KagexEnvinitParser(filePath, lexer);
                        parser.Parse();
                    }
                    else
                    {
                        //TJS用パーサーを取得
                        //未実装
                        parser = null;
                    }
                }
            }
            catch (Exception err)
            {
                Debug.WriteLine("Parse ERROR: " + err.ToString());
                parser = null;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader.Dispose();
                }
            }

            if (parser == null)
            {
                return(null);
            }
            return(parser.CompletionUnit);
        }
예제 #2
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="filePath">ファイルパス</param>
 /// <param name="lexer">字句解析オブジェクト</param>
 public KagParser(string filePath, KagLexer lexer)
 {
     m_lexer = lexer;
     m_cu    = new KagCompletionUnit(filePath);
 }