/// <summary> /// 文字列 => トークン => 定義/適用した関数リスト /// </summary> /// <returns>関数の定義/適用結果リスト</returns> private InterpretResult Interpret() { try { var tokenList = _Rule.TextToTokens(Input); //文字列をトークンリストに変換 var tokenWithCountList = TokenWithCount.CountContinuousTokens(tokenList); //連続トークンをカウント return(InterpretFromTokenWithCounts(_FuncStack, tokenWithCountList)); //現スタックに対して連続トークンを解釈 } catch (GllException e) { System.Diagnostics.Debug.WriteLine(e.Message + "\n" + e.StackTrace); System.Diagnostics.Debug.WriteLine(""); throw; } }
/// <summary> /// Grass風言語ソースコードを可視化言語に変換 /// </summary> /// <param name="source"></param> /// <returns></returns> public static string GllToVisualized(string source, BaseRule rule) { var il = Visualization.VisualizedLanguage.ToVisualizedLanguage( TokenWithCount.CountContinuousTokens( rule.TextToTokens( source) ).ToArray()); StringBuilder sb = new StringBuilder(); foreach (var line in il) { sb.AppendLine(line.Line); } return(sb.ToString()); }