C # iRony 파서 - 모든 것이 올바른 것에도 불구하고 파일을 파싱하지 않습니다.
문제
나는 이해하지 못하는 아이러니에 약간의 까다로운 문제가 있습니다 ...
내 응용 프로그램의 런타임에서 수행하는 첫 번째 구문 분석은 성공합니다.
string src = "" // this is the file to parse
Grammar g = new CSharpGrammar();
LanguageData language = new LanguageData(g);
Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(src);
ParseRoot = parseTree.Root;
.
그 다음에 languageData 변수를 전역 컨텍스트로 이동시키는 하나의 힌트를 따랐습니다.아직도 모두 괜찮아.그러나 이제는 아이러니가 제공 한 C # 문법 v3.5와 여러 파일을 구문 분석하고, 아이러니 (LINQ 쿼리가 나에게 중요하지 않으므로 충분한 것처럼 보입니다).같은 접근 방식 :
Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(file);
ParseRoot = parseTree.Root;
.
그러나 이제 parseroot는 "null"입니다.그리고 나는 왜 전혀 모르겠다.나는 또한 파서 오류를 잠시 전에 확인했는데, 나는 이해할 수없는 오류를 인식했다.
"Syntax error, expected: statement, member declaration, namespace"
.
그러나 내 파일은 다음과 같습니다.
using System;
using Microsoft.SharePoint.WebControls;
namespace WebParts.Layouts.Ordering
{
public partial class ConfirmDelete : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
lblMsg.Text = "Are you sure you want to delete the entry?";
if (!IsPostBack)
{
BtnYes.Attributes.Add("onclick", "OnYes(); return false;");
BtnNo.Attributes.Add("onclick", "OnNo(); return false;");
}
}
}
}
.
당신이 내 코드에 무엇이 잘못되었는지 알 수 있기를 바랍니다 ... 나는이 일로 필사적으로 절망적이지 않습니다 ...
해결책
parser.parse의 두 번째 인수로 파일 이름을 제공해야합니다.
static void Main(string[] args)
{
Grammar g = new CSharpGrammar();
LanguageData language = new LanguageData(g);
Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse("", "class1.cs");
var r = parseTree.Root;
}
. 제휴하지 않습니다 StackOverflow