Domanda

Sto avendo alcuni problemi complicati con ironia che non capisco ...

Il primo analizzo che faccio nel runtime della mia applicazione ha successo.

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

Quindi ho seguito un suggerimento per spostare la variabile Languagedata per il contesto globale.Ancora tutto ok.Ma ora volevo chiamare il parser ironico all'interno delle funzioni personalizzate, analizzando più file con la grammatica C # V3.5 fornita da ironia (le query LINQ non sono importanti per me, quindi sembra sufficiente).Stesso approccio:

Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(file);
ParseRoot = parseTree.Root;
.

Ma ora il parseroot è e rimane "null".E non ho assolutamente idea del perché.Ho anche controllato gli errori del parser un momento fa, lì ho riconosciuto un errore che non riesco a comprendere.

"Syntax error, expected: statement, member declaration, namespace"
.

Ma il mio file è simile a questo:

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

Spero che tu possa vedere cosa c'è che non va nel mio codice ... Sto diventando disperato con questa cosa ...

È stato utile?

Soluzione

Devi fornire un nome file come secondo argomento di 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;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top