예제 #1
0
        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);
        }