/// <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); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="filePath">ファイルパス</param> /// <param name="lexer">字句解析オブジェクト</param> public KagParser(string filePath, KagLexer lexer) { m_lexer = lexer; m_cu = new KagCompletionUnit(filePath); }