WIP
parent
a2a8edfe3f
commit
e922c9f3e2
283
Scanner.cs
283
Scanner.cs
|
@ -1,283 +0,0 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ln.templates.streams;
|
||||
using System.Runtime.InteropServices;
|
||||
namespace ln.templates
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* Expression Syntax
|
||||
*
|
||||
* expr := ( <constant> | ( <objpath> | <path> ) [ "(" <arguments> ")" ] )
|
||||
* objpath := <keyword> [ "." <objpath> ]
|
||||
* arguments := <expr> [ "," <arguments> ]
|
||||
*
|
||||
*
|
||||
**/
|
||||
|
||||
|
||||
//public static class Scanner
|
||||
//{
|
||||
// private static char[] letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
|
||||
// private static char[] digits = "0123456789".ToCharArray();
|
||||
|
||||
// private static char[] keywordChars = letters.Concat(digits).Concat(new char[] { '_' }).ToArray();
|
||||
// private static char[] pathChars = keywordChars.Concat(new char[] { '.','/' }).ToArray();
|
||||
// private static char[] numberChars = digits.Concat(new char[] { '.' }).ToArray();
|
||||
|
||||
// private static char[] operatorChars = new char[] { '+', '-', '*', '/' };
|
||||
|
||||
|
||||
// private static char[] ScanValidCharacters(CharStream charStream,char[] validCharacters)
|
||||
// {
|
||||
// charStream.Mark();
|
||||
// while (!charStream.EndOfBuffer && validCharacters.Contains(charStream.Peek())){
|
||||
// charStream.Read();
|
||||
// }
|
||||
// return charStream.GetMarkedIntervall();
|
||||
// }
|
||||
|
||||
// public static String ScanKeyword(CharStream charStream)
|
||||
// {
|
||||
// if (!Char.IsLetter(charStream.Peek()))
|
||||
// throw new ArgumentException(String.Format("ScanKeyword positioned on character {0}", charStream.Peek()));
|
||||
|
||||
// return new string(ScanValidCharacters(charStream,keywordChars));
|
||||
// }
|
||||
|
||||
// public static String ScanNumber(CharStream charStream)
|
||||
// {
|
||||
// if (!Char.IsDigit(charStream.Peek()))
|
||||
// throw new ArgumentException(String.Format("ScanNumber positioned on character {0}", charStream.Peek()));
|
||||
|
||||
// return new string(ScanValidCharacters(charStream, numberChars));
|
||||
// }
|
||||
|
||||
// public static string ScanString(CharStream charStream)
|
||||
// {
|
||||
// if (charStream.Peek() != '"')
|
||||
// throw new ArgumentException(String.Format("ScanString positioned on {0}", charStream.Peek()));
|
||||
|
||||
// charStream.Read();
|
||||
// charStream.Mark();
|
||||
|
||||
// while (charStream.Peek() != '"')
|
||||
// {
|
||||
// if (charStream.Read() == '\\')
|
||||
// {
|
||||
// charStream.Read();
|
||||
// }
|
||||
// }
|
||||
|
||||
// string result = new string(charStream.GetMarkedIntervall());
|
||||
|
||||
// charStream.Read();
|
||||
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// public static PathToken ScanPath(CharStream charStream)
|
||||
// {
|
||||
// if (charStream.Peek() != '/')
|
||||
// throw new ArgumentException(String.Format("ScanPath positioned on character {0}", charStream.Peek()));
|
||||
|
||||
// return new PathToken(new string(ScanValidCharacters(charStream, pathChars)));
|
||||
// }
|
||||
|
||||
// public static Token ScanObjectPath(CharStream charStream,ObjectPathToken parent = null){
|
||||
// if (!Char.IsLetter(charStream.Peek()))
|
||||
// throw new ArgumentOutOfRangeException(String.Format("ScanObjectPath is not positioned on a letter: {0}",charStream.Peek()));
|
||||
|
||||
// String component = ScanKeyword(charStream);
|
||||
|
||||
// if (charStream.Peek() == '.')
|
||||
// {
|
||||
// charStream.Read();
|
||||
// return ScanObjectPath(charStream, new ObjectPathToken(component, parent));
|
||||
// } else if (charStream.Peek() == '(')
|
||||
// {
|
||||
// Token[] arguments = ScanArguments(charStream);
|
||||
// return new CallToken(component, arguments, parent);
|
||||
// } else {
|
||||
// return new ObjectPathToken(component, parent);
|
||||
// }
|
||||
// }
|
||||
|
||||
// public static char[] SeekProcessingInstruction(CharStream charStream)
|
||||
// {
|
||||
// charStream.Mark();
|
||||
// while (!charStream.EndOfBuffer)
|
||||
// {
|
||||
// if ((charStream.Remaining > 1) && (charStream.Peek(0) == '<') && (charStream.Peek(1) == '?'))
|
||||
// break;
|
||||
// charStream.Read();
|
||||
// }
|
||||
// return charStream.GetMarkedIntervall();
|
||||
// }
|
||||
|
||||
// public static Token ScanExpression(CharStream charStream)
|
||||
// {
|
||||
// while (!charStream.EndOfBuffer)
|
||||
// {
|
||||
// if (charStream.Peek() == '"')
|
||||
// {
|
||||
// return new ValueToken(ScanString(charStream));
|
||||
// }
|
||||
// else if (Char.IsLetter(charStream.Peek()))
|
||||
// {
|
||||
// return ScanObjectPath(charStream);
|
||||
// }
|
||||
// else if (charStream.Peek() == '/')
|
||||
// {
|
||||
// return ScanPath(charStream);
|
||||
// }
|
||||
// else if (Char.IsDigit(charStream.Peek()))
|
||||
// {
|
||||
// return new NumberToken(ScanNumber(charStream));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine("Unexpected character: {0}", charStream.Read());
|
||||
// }
|
||||
// }
|
||||
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// public static Token[] ScanArguments(CharStream charStream){
|
||||
|
||||
// if (charStream.Peek() != '(')
|
||||
// throw new ArgumentException(String.Format("ScanArguments not positioned on ("));
|
||||
|
||||
// charStream.Read();
|
||||
|
||||
// List<Token> arguments = new List<Token>();
|
||||
|
||||
// while (!charStream.EndOfBuffer && (charStream.Peek() != ')'))
|
||||
// {
|
||||
// if (Char.IsWhiteSpace(charStream.Peek()))
|
||||
// {
|
||||
// charStream.Read();
|
||||
// } else {
|
||||
// arguments.Add(ScanExpression(charStream));
|
||||
// while (Char.IsWhiteSpace(charStream.Peek()))
|
||||
// {
|
||||
// charStream.Read();
|
||||
// }
|
||||
// if (charStream.Peek() == ')')
|
||||
// {
|
||||
// break;
|
||||
// }
|
||||
// if (charStream.Peek() != ',')
|
||||
// throw new ArgumentException(String.Format("expected , or ) after argument"));
|
||||
// }
|
||||
// }
|
||||
// charStream.Read();
|
||||
// return arguments.ToArray();
|
||||
// }
|
||||
|
||||
// public static Token[] ScanParameters(CharStream charStream)
|
||||
// {
|
||||
// List<Token> tokens = new List<Token>();
|
||||
|
||||
// while (!charStream.EndOfBuffer)
|
||||
// {
|
||||
// if ((charStream.Remaining > 1) && (charStream.Peek() == '?') && (charStream.Peek(1) == '>'))
|
||||
// {
|
||||
// charStream.Read();
|
||||
// charStream.Read();
|
||||
// break;
|
||||
// }
|
||||
// else if (Char.IsWhiteSpace(charStream.Peek()))
|
||||
// {
|
||||
// charStream.Read();
|
||||
// } else {
|
||||
// tokens.Add(ScanExpression(charStream));
|
||||
// }
|
||||
// }
|
||||
// return tokens.ToArray();
|
||||
// }
|
||||
|
||||
// public static void Scan(CharStream sourceStream, FormElement container)
|
||||
// {
|
||||
// while (!sourceStream.EndOfBuffer)
|
||||
// {
|
||||
// char[] textPart = SeekProcessingInstruction(sourceStream);
|
||||
// if (textPart.Length > 0)
|
||||
// {
|
||||
// new Text(container, textPart);
|
||||
// }
|
||||
// if (!sourceStream.EndOfBuffer)
|
||||
// {
|
||||
// if (!ScanProcessingInstruction(sourceStream, container))
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// public static bool ScanProcessingInstruction(CharStream sourceStream, FormElement container)
|
||||
// {
|
||||
// if ((sourceStream.Remaining > 1) && (sourceStream.Peek(0) == '<') && (sourceStream.Peek(1) == '?'))
|
||||
// {
|
||||
// sourceStream.Read();
|
||||
// sourceStream.Read();
|
||||
|
||||
// if (sourceStream.Peek() == '=')
|
||||
// {
|
||||
// sourceStream.Read();
|
||||
// new Var(container, ScanParameters(sourceStream));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// String keyword = ScanKeyword(sourceStream);
|
||||
// Token[] parameters = ScanParameters(sourceStream);
|
||||
|
||||
// switch (keyword)
|
||||
// {
|
||||
// case "include":
|
||||
// new Include(container, parameters);
|
||||
// break;
|
||||
// case "head":
|
||||
// Scan(sourceStream, new Head(container));
|
||||
// break;
|
||||
// case "set":
|
||||
// new Set(container, ((ObjectPathToken)parameters[0]).Component ,parameters[1]);
|
||||
// break;
|
||||
// case "iterate":
|
||||
// Scan(sourceStream, new Iterate(container,((ObjectPathToken)parameters[0]).Component,parameters[1]));
|
||||
// break;
|
||||
// case "if":
|
||||
// Scan(sourceStream, new If(container, parameters[0]));
|
||||
// break;
|
||||
// case "editor":
|
||||
// new Editor(container, parameters);
|
||||
// break;
|
||||
// case "frame":
|
||||
// if (!(parameters[0] is PathToken))
|
||||
// throw new ArgumentException("<?frame ...?> needs path as argument.");
|
||||
|
||||
// container.Form.Frame = (PathToken)parameters[0];
|
||||
|
||||
// break;
|
||||
// case "framed":
|
||||
// new Framed(container);
|
||||
// break;
|
||||
// case "end":
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// throw new ArgumentException("ScanProcessingInstruction was not positioned on PI");
|
||||
// }
|
||||
// }
|
||||
|
||||
//}
|
||||
}
|
|
@ -34,7 +34,6 @@
|
|||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="FormContext.cs" />
|
||||
<Compile Include="FormElement.cs" />
|
||||
<Compile Include="Scanner.cs" />
|
||||
<Compile Include="Template.cs" />
|
||||
<Compile Include="TemplateProvider.cs" />
|
||||
<Compile Include="streams\CharStream.cs" />
|
||||
|
|
Loading…
Reference in New Issue