<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caml.net on csegura</title><link>https://blog.romheat.net/tags/caml.net/</link><description>Recent content in Caml.net on csegura</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 22 Apr 2009 00:00:00 +0200</lastBuildDate><atom:link href="https://blog.romheat.net/tags/caml.net/index.xml" rel="self" type="application/rss+xml"/><item><title>YACAMLQT (Yet another CAML query tool) Redux (2)</title><link>https://blog.romheat.net/posts/2009/09_04_22_yacamltool_2/</link><pubDate>Wed, 22 Apr 2009 00:00:00 +0200</pubDate><guid>https://blog.romheat.net/posts/2009/09_04_22_yacamltool_2/</guid><description>&lt;p>Habíamos visto la parte relacionada con el Lexer el analizador morfológico. Como es obvio detrás debe haber un analizador sintáctico y semántico el &lt;a href="https://web.archive.org/web/20130904001414/http://en.wikipedia.org/wiki/Parsing" target="_blank">Parser&lt;/a>.&lt;/p>
&lt;p>El analizador sintáctico y semántico (&lt;strong>NParser&lt;/strong>) se ha implementado siguiendo el patrón interpeter, (&lt;em>seguramente sea uno de los que menos se ven&lt;/em>), el objetivo es obtener los distintos Tokens desde el Scanner y montar un árbol sintáctico (&lt;a href="https://web.archive.org/web/20130904001414/http://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank">AST&lt;/a>) este árbol contiene Nodos (&lt;strong>ASTNodeBase&lt;/strong>) y estos nodos representan de manera abstracta y simplificada la estructura sintáctica de la consulta en SQL.&lt;/p></description></item><item><title>YACAMLQT (Yet another CAML query tool) Redux (2)</title><link>https://blog.romheat.net/posts/2009/09_04_23_yacamltool_3/</link><pubDate>Wed, 22 Apr 2009 00:00:00 +0200</pubDate><guid>https://blog.romheat.net/posts/2009/09_04_23_yacamltool_3/</guid><description>&lt;p>Bueno, esta es la última entrega a partir de hoy el proyecto se encuentra en CodePlex (yacamlqt.codeplex.com).&lt;/p>
&lt;p>En esta última parte solo unas pequeñas notas para el usuario final.&lt;/p>
&lt;p>Bien, para usar YACAMLQT, dentro de tus proyectos, solo hay que referenciar la dll (IdeSeg.SharePoint.Caml.QueryParser.dll) y el uso sería el siguiente:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">try&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> parser = &lt;span style="color:#66d9ef">new&lt;/span> NParser(textTSql, &lt;span style="color:#66d9ef">new&lt;/span> ASTNodeCAMLFactory());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> generator = &lt;span style="color:#66d9ef">new&lt;/span> CodeGenerator(parser.Parse());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> generator.Generate();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> _formatTools.FormatXml(generator.Code);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">catch&lt;/span> (ParserException ex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> _view.Status = ex.Message;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">catch&lt;/span> (ScannerException ex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> _view.Status = ex.Message;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Instanciamos el Parser (NParser), le pasamos la consulta en TSQL (textSql) y la factoría correspondiente a lo que queremos generar, por el momento solo está disponible la de CAML, en breve completaré la de CAML.Net; Por último inyectamos el Parser en el Generador de código, llamamos al método Generate y recogemos la consulta en CAML en generator.Code.&lt;/p></description></item><item><title>YACAMLQT (Yet another CAML query tool) Redux (1)</title><link>https://blog.romheat.net/posts/2009/09_04_21_yacamltool/</link><pubDate>Tue, 21 Apr 2009 00:00:00 +0200</pubDate><guid>https://blog.romheat.net/posts/2009/09_04_21_yacamltool/</guid><description>&lt;p>Hace un mes, John Holliday, me pidió a ver si podíamos integrar su CAML.net con mi YACAMLQT, a la vez que ampliar mi herramienta para soportar otro tipo de consultas como adds y updates.&lt;/p>
&lt;p>YACAMLQT, es una utilidad que convierte una sentencia SQL en CAML, el lenguaje de consulta de Sharepoint. (Véase YACAMLQT, YACAMLQT2 y YACAMLQT-CAML.Net)&lt;/p>
&lt;p>Estos días entre rato bueno y rato malo, he reescrito totalmente el código de YACAMLQT, para hacerlo más sencillo (por supuesto usando TDD), en principio el objetivo ha sido emular el antiguo YACAMLQT, pero dotándolo de un diseño más sencillo y ampliable.&lt;/p></description></item></channel></rss>