C # iRony 파서 - 모든 것이 올바른 것에도 불구하고 파일을 파싱하지 않습니다.

StackOverflow https://stackoverflow.com//questions/11684189

  •  12-12-2019
  •  | 
  •  

문제

나는 이해하지 못하는 아이러니에 약간의 까다로운 문제가 있습니다 ...

내 응용 프로그램의 런타임에서 수행하는 첫 번째 구문 분석은 성공합니다.

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;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top