public static InterfaceEntryNode Parse(Lexer lex) { InterfaceEntryNode n = new InterfaceEntryNode(); Token tkn; n.IsVirtual = lex.DequeueIf("virtual", out tkn); n.IsUnsafe = lex.DequeueIf("unsafe", out tkn); n.TypeName = TypeNode.Parse(lex); if (GenericParamNode.IsPresent(lex)) { n.GenericParams = GenericParamNode.Parse(lex); } tkn = lex.Dequeue(TokenType.Identifier); n.Identifier = tkn.Value; if (InterfaceFunctionNode.IsPresent(lex)) { n.Entry = InterfaceFunctionNode.Parse(lex); } else if (InterfacePropertyNode.IsPresent(lex)) { n.Entry = InterfacePropertyNode.Parse(lex); } else { throw ExceptionProvider.Syntax(lex.Peek().Cursor, "Unrecognized definition"); } return(n); }
public static InterfaceFunctionNode Parse(Lexer lex) { InterfaceFunctionNode n = new InterfaceFunctionNode(); lex.Dequeue(TokenType.LParen); //TODO: Add FUNCTION_ARGUMENT_DECL parsing lex.Dequeue(TokenType.RParen); return(n); }