public StatementListBuilder <StatementT, TokenT> Statement(StatementT type, TokenListBuilder <TokenT> tokens) { Statement <StatementT, TokenT> statement = new Statement <StatementT, TokenT>(type, tokens, tokens); this.statements.Add(statement); return(this); }
public StatementNodeBuilder StatementNode(int indent, StatementType type, TokenListBuilder<ParserTokenType> tokens, StatementNodeBuilder children = null) { var statement = new Statement<StatementType, ParserTokenType>(type, tokens, tokens); var statementNode = new StatementNode(indent, null, statement); this.statementNodes.Add(statementNode); if (children != null) { foreach (var child in children) { statementNode.Add(child); } } return this; }
private static TokenListBuilder<ParserTokenType> Token(ParserTokenType type, string value) { var builder = new TokenListBuilder<ParserTokenType>(); return builder.Token(type, value); }
private static StatementNodeBuilder StatementNode(int indent, StatementType type, TokenListBuilder<ParserTokenType> tokens, StatementNodeBuilder children = null) { var builder = new StatementNodeBuilder(); return builder.StatementNode(indent, type, tokens, children); }
////[Fact] ////public void TwoTrivialObjects() ////{ //// this.TestParser( //// "one\ntwo", //// Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "one") //// .Token(ParserTokenType.Whitespace, "\n") //// ) //// .Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "two") //// ) //// ); ////} ////[Fact] ////public void TwoObjects() ////{ //// this.TestParser( //// "one value\ntwo name=value", //// Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "one") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyValue, "value") //// .Token(ParserTokenType.Whitespace, "\n") //// ) //// .Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "two") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "name") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "value") //// ) //// ); ////} ////[Fact] ////public void TwoObjectsWithIndent() ////{ //// this.TestParser( //// "one value\n\ttwo name=value", //// Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "one") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyValue, "value") //// .Token(ParserTokenType.Whitespace, "\n") //// ) //// .Statement( //// StatementType.Object, //// Token(ParserTokenType.Whitespace, "\t") //// .Token(ParserTokenType.Object, "two") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "name") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "value") //// ) //// ); ////} ////[Fact] ////public void Continuation() ////{ //// this.TestParser( //// "folder\n\tname=value", //// Statement( //// StatementType.Object, //// Token(ParserTokenType.Object, "folder") //// .Token(ParserTokenType.Whitespace, "\n") //// .Token(ParserTokenType.Whitespace, "\t") //// .Token(ParserTokenType.PropertyName, "name") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "value") //// )); ////} ////[Fact] ////public void UseStatement() ////{ //// this.TestParser( //// "use appx", //// Statement( //// StatementType.Use, //// Token(ParserTokenType.UseKeyword, "use") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.NamespacePrefixDeclaration, "appx") //// ) //// ); ////} //// [Fact] //// public void WixlibFileSearchTest() //// { //// this.TestParser( //// @"use msi //// ////msi.fileSearch id=fsC component=c00d5a59-1bd1-4f6b-9b2b-27e0ae64020b //// ////msi.fileSearch id=fsRK registry=HKLM\Search\Registry\Key\", //// Statement( //// //// StatementType.Use, //// //// Token(ParserTokenType.UseKeyword, "use") //// //// .Token(ParserTokenType.Whitespace, " ") //// //// .Token(ParserTokenType.NamespacePrefixDeclaration, "msi") //// //// .Token(ParserTokenType.Whitespace, "\r\n") //// //// ) //// ////.Statement( //// StatementType.Ignorable, //// Token(ParserTokenType.Whitespace, "\r\n") //// ) //// .Statement( //// StatementType.Object, //// Token(ParserTokenType.NamespacePrefix, "msi") //// .Token(ParserTokenType.Period, ".") //// .Token(ParserTokenType.Object, "fileSearch") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "id") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "fsC") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "component") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "c00d5a59-1bd1-4f6b-9b2b-27e0ae64020b") //// .Token(ParserTokenType.Whitespace, "\r\n") //// ) //// .Statement( //// StatementType.Ignorable, //// Token(ParserTokenType.Whitespace, "\r\n") //// ) //// .Statement( //// StatementType.Object, //// Token(ParserTokenType.NamespacePrefix, "msi") //// .Token(ParserTokenType.Period, ".") //// .Token(ParserTokenType.Object, "fileSearch") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "id") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "fsRK") //// .Token(ParserTokenType.Whitespace, " ") //// .Token(ParserTokenType.PropertyName, "registry") //// .Token(ParserTokenType.Equals, "=") //// .Token(ParserTokenType.PropertyValue, "HKLM\\Search\\Registry\\Key\\") //// ) //// ); //// } private static StatementListBuilder <StatementType, ParserTokenType> Statement(StatementType type, TokenListBuilder <ParserTokenType> tokens) { var builder = new StatementListBuilder <StatementType, ParserTokenType>(); return(builder.Statement(type, tokens)); }
private void TestLexer(string source, TokenListBuilder <LexerTokenType> expected) { var actual = XmlLexer.LexTokens(source, new Position(0, 0, 0)); Assert.True(expected.SequenceEqual(actual, this.comparer)); }
////[Fact] ////public void UseStatement() ////{ //// this.TestLexer( //// "use appx", //// Token(LexerTokenType.UseKeyword, "use") //// .Token(LexerTokenType.Whitespace, " ") //// .Token(LexerTokenType.Identifier, "appx") //// ); ////} private static TokenListBuilder <LexerTokenType> Token(LexerTokenType type, string value) { var builder = new TokenListBuilder <LexerTokenType>(); return(builder.Token(type, value)); }