Files
SWG-ScriptConverter/ScriptConverter/Parser/Parselets/Expressions/CallParselet.cs
Rohan Singh ad50a19057 Add code
2019-01-23 22:52:45 -05:00

26 lines
773 B
C#

using System.Linq;
using ScriptConverter.Ast.Expressions;
namespace ScriptConverter.Parser.Parselets.Expressions
{
class CallParselet : IInfixParselet
{
public int Precedence { get { return (int)PrecedenceValue.Suffix; } }
public Expression Parse(ScriptParser parser, Expression left, ScriptToken token)
{
var parameters = parser.ParseSeparatedBy(ScriptTokenType.Comma, (_, first) =>
{
if (first && parser.Match(ScriptTokenType.RightParen))
return null;
return parser.ParseExpression();
}).ToList();
parser.Take(ScriptTokenType.RightParen);
return new CallExpression(parser.Previous, left, parameters);
}
}
}