IronPythonを使用してカスタマイズされた出力を得るために、基になるデータの簡単な式をユーザーが入力できます。sinle lineで詳細なエラー位置(文字の位置)を取得する方法Pythonの式
私が何をしたか...
using System;
using IronPython.Hosting;
namespace SimpleTest
{
class Program
{
static void Main(string[] args)
{
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
scope.SetVariable("a", new Person("A", 18));
scope.SetVariable("b", new Person("B", 24));
object result = null;
try
{
//result = engine.Execute<object>("a.Age + b.Age", scope);
result = engine.Execute<object>("a.Age + b.Grade", scope);
}
catch (Exception e)
{
// Error Message : 'Person' object has no attribute 'Grade'
// TODO HOW TO GET Character Span Location?
Console.WriteLine(e);
}
Console.WriteLine("Result:{0}", result);
}
}
public class Person
{
public string Name { get; private set; }
public double Age { get; private set; }
public Person(string name, double age)
{
Name = name;
Age = age;
}
}
}
期待通りにエンジンが例外をスローしますが、それは含まれていないように、あなたは、クラスにはGrade
小道具がないためengine.Execute<object>
に渡された式が無効である見ることができるように赤のような目立つ色でユーザーに見せるのがよいテキストの文字位置に関する情報。
これを行うためのヒント?
私はグーグルだが、これに対する回答は見つかりませんでした。私が見つけたのは、ファイル名情報に行番号を表示することだけでした。
おかげ
私は 'offset'(?)23と同じ値を持っていますが、その意味と正確な文字のスパン(与えられたPythonの式文字列の文字インデックスの範囲)を抽出する方法を理解していません。 これ以上のヒントはありますか? – Joonhwan
正直なところ、私は 'Index'プロパティが正確に何を意味するのか分かりません。最初は、ファイルへのオフセットだけで、正確な位置が発生したと思いました。ライン番号は、コンパイラ指令がサポートされていれば、常に調整することができます。私はそうでなければ信じる理由はない。 –