|
using System;
using System.Text;
using System.Collections;
using System.Text.RegularExpressions;
namespace YAMP
{
class AbsExpression : Expression
{
BracketExpression _child;
AbsFunction abs;
public AbsExpression () : base(@"\|.*\|")
{
abs = new AbsFunction();
}
public override Expression Create(Match match)
{
return new AbsExpression();
}
public override Value Interpret (Hashtable symbols)
{
var value = _child.Interpret(symbols);
return abs.Perform(value);
}
public override string Set (string input)
{
var brackets = 0;
var sb = new StringBuilder();
for(var i = 1; i < input.Length; i++)
{
if(input[i] == ')' || input[i] == ']' || input[i] == '}')
brackets--;
else if(input[i] == '(' || input[i] == '[' || input[i] == '{')
brackets++;
else if(brackets == 0 && input[i] == '|')
{
_input = sb.ToString();
var _tree = new ParseTree(_input);
_child = new BracketExpression(_tree);
return input.Substring(i + 1);
}
sb.Append(input[i]);
}
throw new BracketException("|", input);
}
public override string ToString ()
{
return "| | [ ExpressionType = Abs ]\n" + _child.ToString();
}
}
}
|
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.