|
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace YAMP
{
public abstract class Expression : IRegisterToken
{
string _pattern;
protected string _input;
protected Match mx;
int _offset;
internal string Pattern
{
get { return _pattern; }
}
internal Match Match
{
get { return mx; }
}
internal int Offset
{
get { return _offset; }
set { _offset = value; }
}
internal virtual string Input
{
get { return _input; }
}
public Expression (string pattern)
{
_pattern = pattern;
}
public Value Interpret()
{
return Interpret(new Hashtable());
}
public abstract Value Interpret(Hashtable symbols);
public abstract Expression Create(Match match);
public virtual string Set(string input)
{
_input = mx.Value;
return input.Substring(_input.Length);
}
#region IRegisterToken implementation
public virtual void RegisterToken ()
{
Tokens.Instance.AddExpression(_pattern, this);
}
#endregion
public override string ToString ()
{
return string.Format ("{0} [ ExpressionType = {1} ]", _input, GetType().Name.Replace("Expression", string.Empty));
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.