Esempio n. 1
0
        void ParseImport(FileNode filenode)
        {
            while (TryConsume(TokenType.Import))
            {
                var node = new ImportNode();

                node.Name = FetchToken(TokenType.QuotedString, "require file name").Value;

                if (filenode.Import.Exists(x => x.Name == node.Name))
                {
                    Reporter.Error(ErrorType.Parse, _lexer.Loc, "duplicate import filename");
                }

                if (filenode.Name == node.Name)
                {
                    Reporter.Error(ErrorType.Parse, _lexer.Loc, "can not import self");
                }

                var parser = new ProtobufParser();
                parser.Init(_tool);
                parser.StartParseFile(node.Name);

                filenode.Import.Add(node);
                filenode.Add(node);

                Consume(TokenType.SemiColon);
                Consume(TokenType.EOL);
            }
        }
Esempio n. 2
0
        void ParsePackage(FileNode filenode)
        {
            var node = new PackageNode();

            Consume(TokenType.Package);

            if (!string.IsNullOrEmpty(filenode.Package))
            {
                Reporter.Error(ErrorType.Parse, _lexer.Loc, "package already specified");
            }

            node.Name = FetchToken(TokenType.Identifier, "require package name").Value;

            if (filenode.Package == node.Name)
            {
                Reporter.Error(ErrorType.Parse, _lexer.Loc, "package name duplicated");
            }

            Consume(TokenType.SemiColon);

            Consume(TokenType.EOL);

            filenode.Package = node.Name;
            filenode.Add(node);
        }
        public void should_encode_csv()
        {
            var result = new StringBuilder();
            var writer = new StringWriter(result);
            var file   = new FileNode(NodeType.Array,
                                      typeof(List <Record>), typeof(List <Record>),
                                      Options.Create(x => x.IncludePublicFields()), writer);
            var row = new RowNode(1)
            {
                { new ValueNode("Property", "Property", null, "oh,"), x => {} },
                { new ValueNode("Field", "Field", null, "\"hai\""), x => {} },
                { new ValueNode("Null", "Null", null), x => {} }
            };

            file.Add(row, x => {});
            writer.Flush();
            result.ToString().ShouldEqual(Data);
        }