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); } }
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); }