public static FTL.AST.INode ParseWithIdentifier( CharStream stream, FTL.AST.StringPrimitive identifier) { if (MemberExpression.Peek(stream)) { return(MemberExpression.Parse(stream, identifier)); } if (CallExpression.Peek(stream)) { return(CallExpression.Parse(stream, identifier)); } return(new FTL.AST.Reference(identifier)); }
public void CallExpressionTests() { var builtin = Builtin.Parse(NCS("FOO")); // good examples Assert.IsNotNull(CallExpression.Parse(NCS("()"), builtin)); Assert.IsNotNull(CallExpression.Parse(NCS("(hello)"), builtin)); Assert.IsNotNull(CallExpression.Parse(NCS("(hello, world)"), builtin)); Assert.IsNotNull(CallExpression.Parse(NCS("(hello , world)"), builtin)); Assert.IsNotNull(CallExpression.Parse(NCS("(hello,world, 42)"), builtin)); Assert.IsNotNull(CallExpression.Parse(NCS("(glen, 42, member[test], $ok, FOO(bar))"), builtin)); // bad examples // should not be empty Throws(() => Argument.Parse(NCS(""))); }