public override void Accept (InterfaceDeclaration contractDecl)
		{
			IodineInterface contract = new IodineInterface (contractDecl.Name);
			foreach (AstNode node in contractDecl.Children) {
				FunctionDeclaration decl = node as FunctionDeclaration;
				contract.AddMethod (new IodineMethod (methodBuilder.Module, decl.Name, decl.InstanceMethod,
					decl.Parameters.Count, 0));
			}
			methodBuilder.EmitInstruction (contractDecl.Location, Opcode.LoadConst,
				methodBuilder.Module.DefineConstant (contract));
			methodBuilder.EmitInstruction (contractDecl.Location, Opcode.StoreLocal,
				symbolTable.GetSymbol (contractDecl.Name).Index);
		}
Example #2
0
        private static AstNode ParseInterface(TokenStream stream)
        {
            stream.Expect (TokenClass.Keyword, "interface");
            string name = stream.Expect (TokenClass.Identifier).Value;

            InterfaceDeclaration contract = new InterfaceDeclaration (stream.Location, name);

            stream.Expect (TokenClass.OpenBrace);

            while (!stream.Match (TokenClass.CloseBrace)) {
                if (stream.Match (TokenClass.Keyword, "func")) {
                    FunctionDeclaration func = ParseFunction (stream, true) as FunctionDeclaration;
                    contract.Add (func);
                } else {
                    stream.ErrorLog.AddError (ErrorType.ParserError, stream.Location,
                        "Interface may only contain function prototypes!");
                }
                while (stream.Accept (TokenClass.SemiColon));
            }

            stream.Expect (TokenClass.CloseBrace);

            return contract;
        }
Example #3
0
 public void Accept(InterfaceDeclaration contractDecl)
 {
     IodineInterface contract = new IodineInterface (contractDecl.Name);
     foreach (AstNode node in contractDecl.Children) {
         FunctionDeclaration decl = node as FunctionDeclaration;
         contract.AddMethod (new IodineMethod (module, decl.Name, decl.InstanceMethod,
             decl.Parameters.Count, 0));
     }
     module.SetAttribute (contractDecl.Name, contract);
 }
Example #4
0
		public override void Accept (InterfaceDeclaration contractDecl)
		{
			errorLog.AddError (ErrorType.ParserError, contractDecl.Location,
				"statement can not exist inside pattern!");
		}
 public virtual void Accept(InterfaceDeclaration interfaceDecl)
 {
 }
Example #6
0
 public void Accept(InterfaceDeclaration interfaceDecl)
 {
     symbolTable.AddSymbol (interfaceDecl.Name);
 }
Example #7
0
 public void Accept(InterfaceDeclaration contractDecl)
 {
 }