private static void MainTest2( MatchMethodStatement code ) { MainTest( code, " " ); MainTest( code, "\r\n\t" ); MainTest( code, " " ); MainTest( code, "\r\n\t" ); }
private static void MainTest( MatchMethodStatement code, string spaces ) { var codeStatementText = MatchToString( code, spaces ); var actualCodeStatement = ParserHelper.ParseMatch( codeStatementText ); AssertHelper.AssertMatch( code, actualCodeStatement ); }
public RuleMethodStatement( StatementPosition position, MatchMethodStatement matchMethodStatement, string name, IList<Variable> variables, IList<RuleStatement> statements) : base(position) { this.matchMethodStatement = matchMethodStatement; this.name = name; this.variables = variables ?? emptyVariableList; this.statements = statements ?? emptyRuleStatementList; if (this.matchMethodStatement != null) this.matchMethodStatement.RuleMethod = this; }
public static string MatchToString( MatchMethodStatement codeStatement, string spaces ) { var builder = new StringBuilder(); builder.Append( "<%match" ); builder.Append( spaces ); builder.Append( codeStatement.Name ); builder.Append( "%>" ); builder.Append( spaces ); builder.Append( codeStatement.Code ); builder.Append( spaces ); builder.Append( "<%end%>" ); return builder.ToString(); }
public CodeWriter Match( MatchMethodStatement matchMethodStatement, string fileName ) { var writer = new CodeWriter(); writer.Indent = 0; writer.Append( "[MatchMethod( \"" ); writer.AppendText( matchMethodStatement.RuleMethod.Name ); writer.Indent = 0; writer.Append( "\", \"" ); writer.AppendText( matchMethodStatement.Name ); writer.Indent = 0; writer.Append( "\", \"" ); writer.AppendText( fileName ); writer.Indent = 0; writer.AppendLine( "\" )]" ); writer.Append( "private bool Match_" ); writer.AppendText( matchMethodStatement.RuleMethod.Name ); writer.Indent = 0; writer.Append( "_" ); writer.AppendText( matchMethodStatement.Name ); writer.Indent = 0; writer.Append( "(" ); writer.Append( this.Invoke( "MethodParamenters", matchMethodStatement.RuleMethod.Variables ) ); writer.Indent = 0; writer.AppendLine( ")" ); writer.AppendLine( "{" ); writer.Indent = 1; writer.AppendText( matchMethodStatement.Code ); writer.Indent = 0; writer.AppendLine(); writer.Append( "}" ); return writer; }
void MatchMethod(out MatchMethodStatement statement) { string name; string code; Expect(8); Token start = t; Expect(1); name = t.val; Expect(10); int startPos = t.pos + t.val.Length; while (StartOf(3)) { Get(); } code = ExtractString( true, true, startPos, la.pos ); Expect(11); statement = new MatchMethodStatement( new StatementPosition( start, t ), name, code ); }