private void ParseFunctionDefinition(CodeFileAbstraction codeFile, FunctionDefinitionSet functionSet, StringAbstraction s) { List <StringAbstraction> args = new List <StringAbstraction>(codeFile.GetCurrentLine().AfterFirstPipe().Split(",")); Block functionBlock = GetBlock(codeFile, functionSet); functionSet.Add(new FunctionName(s.BeforeFirstOccuranceOf("|").Value()), new IntReturningFunction( functionBlock, ParseIntReturningExpression(codeFile.GetCurrentLine().Replace("return", ""), functionSet), args.Select(x => new VariableName(x.Value())).ToList() )); }
private static IBooleanReturningStatement ParseLessThanCondition(CodeFileAbstraction codeFile, FunctionDefinitionSet functionSet) { StringAbstraction expression = codeFile.GetCurrentLine().AfterFirstColon(); IIntegerReturningStatement smaller = ParseIntReturningExpression(expression.BeforeFirstOccuranceOf("<"), functionSet); IIntegerReturningStatement bigger = ParseIntReturningExpression(expression.AfterFirstOccuranceOf("<"), functionSet); IBooleanReturningStatement condition = new CompareLessThan(smaller, bigger); return(condition); }
private static void ParsePrint(CodeFileAbstraction codeFile, FunctionDefinitionSet functionSet, Block block) { block.AddChild( new PrintIntegerReturningStatement(ParseIntReturningExpression(codeFile.GetCurrentLine().AfterFirstColon(), functionSet))); }