|
using System;
using System.Text;
using System.Collections;
using System.Text.RegularExpressions;
namespace YAMP
{
public class StringExpression : Expression
{
public StringExpression () : base(@"\""")
{
}
public override Expression Create(Match match)
{
return new StringExpression();
}
public override Value Interpret (Hashtable symbols)
{
return new StringValue(_input);
}
public override string Set (string input)
{
var escape = false;
var sb = new StringBuilder();
for(var i = 1; i < input.Length; i++)
{
if(!escape && input[i] == '\\')
escape = true;
else if(!escape && input[i] == '"')
{
_input = sb.ToString();
return input.Length > i + 1 ? input.Substring(i + 1) : string.Empty;
}
else
{
sb.Append(input[i]);
escape = false;
}
}
throw new BracketException(Offset, "\"", input);
}
}
}
|
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.