Пример #1
0
 private static void MainTest2( MatchMethodStatement code )
 {
     MainTest( code, " " );
     MainTest( code, "\r\n\t" );
     MainTest( code, " " );
     MainTest( code, "\r\n\t" );
 }
Пример #2
0
        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;
        }
Пример #4
0
        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();
        }
Пример #5
0
        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;
        }
Пример #6
0
 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 );
 }