C # Parser de ironía: no analizará el archivo a pesar de que todo parece correcto

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

  •  12-12-2019
  •  | 
  •  

Pregunta

Estoy teniendo algunos problemas difíciles con la ironía que no entiendo ...

El primer análisis que hago en el tiempo de ejecución de mi solicitud tiene éxito.

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;

Luego, seguí un indicio para mover la variable lenguiagedata al contexto global.Todavía todo está bien.Pero ahora quería llamar al analizador de la ironía dentro de las funciones personalizadas, analizando múltiples archivos con la C # Gramática V3.5 proporcionada por la ironía (las consultas de Linq no son importantes para mí, para que eso parece suficiente).Mismo enfoque:

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

Pero ahora el parseroot es y permanece "nulo".Y no tengo absolutamente ninguna idea de por qué.También revisé los errores del analizador hace un momento, allí reconocí un error que no puedo comprender.

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

Pero mi archivo se ve así:

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

Espero que puedas ver lo que está mal con mi código ... Me estoy desesperando con esta cosa ...

¿Fue útil?

Solución

Tienes que proporcionar un nombre de archivo como el segundo argumento de la 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;
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top