Example #1
0
        private void WeaveForOne(object sender, RoutedEventArgs e)
        {
            //選択されたパスからファイルを取得
            var targetPath = TargetPath.Text;
            var aspectPath = AspectPath.Text;

            //アスペクト情報を持つオブジェクトを生成する
            var aspect = new ANTLRFileStream(aspectPath);
            var lexer  = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast    = (CommonTree)result.Tree;

            //ASTを走査してパース結果をアスペクトオブジェクトとしてvisitor内に格納する
            var visitor = new AstVisitor();

            visitor.Visit(ast, 0, null);

            //対象ファイルの拡張子を取得
            var fileExtension = Path.GetExtension(targetPath);

            //対象言語のソースコードでない場合は次の対象へ進む
            string langType;

            if (fileExtension == null ||
                !TargetLanguage.TryGetValue(fileExtension, out langType))
            {
                WeavedSourceArea.Text = "指定のプログラミング言語には対応していません";
                return;
            }

            var code = File.ReadAllText(targetPath, XEncoding.SJIS);
            var gen  =
                UnifiedGenerators.GetProgramGeneratorByExtension(
                    fileExtension);
            var model = gen.Generate(code);

            Weaver.AnalizeAspect(aspectPath);
            //アスペクトの合成を行う
            Weaver.Weave(langType, model);

            //とりえあず標準出力に表示;
            var codeGen = UnifiedGenerators.GetCodeGeneratorByExtension(fileExtension);

            WeavedSourceArea.Text = codeGen.Generate(model);
        }
Example #2
0
        // アスペクトファイルを解析してその結果をフィールドに格納します
        public static void AnalizeAspect(string aspectPath)
        {
            //アスペクト情報を持つオブジェクトを生成する
            var aspect = new ANTLRFileStream(aspectPath);
            var lexer  = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast    = (CommonTree)result.Tree;

            //ASTを走査してパース結果をアスペクトオブジェクトとしてvisitor内に格納する
            _visitor = new AstVisitor();
            _visitor.Visit(ast, 0, null);
        }
Example #3
0
        // アスペクトファイルを解析してその結果をフィールドに格納します
        public static void AnalizeAspect(string aspectPath)
        {
            //アスペクト情報を持つオブジェクトを生成する
            var aspect = new ANTLRFileStream(aspectPath);
            var lexer = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast = (CommonTree)result.Tree;

            //ASTを走査してパース結果をアスペクトオブジェクトとしてvisitor内に格納する
            _visitor = new AstVisitor();
            _visitor.Visit(ast, 0, null);
        }
Example #4
0
        public void SetUp()
        {
            //アスペクトファイルのパスを取得
            var input = new ANTLRFileStream(FixtureUtil.GetAspectPath("simple_advice_sample.apt"));

            //アスペクトファイルをパースして抽象構文木を生成する
            var lex    = new UniAspectLexer(input);
            var tokens = new CommonTokenStream(lex);
            var parser = new UniAspectParser(tokens);

            var result = parser.aspect();
            var ast    = (CommonTree)result.Tree;

            //抽象構文木を走査して、ポイントカット・アドバイス情報を格納する
            _visitor = new AstVisitor();
            _visitor.Visit(ast, 0, null);
        }
Example #5
0
        public void SetUp()
        {
            //アスペクトファイルのパスを取得
            var input = new ANTLRFileStream(FixtureUtil.GetAspectPath("simple_advice_sample.apt"));

            //アスペクトファイルをパースして抽象構文木を生成する
            var lex = new UniAspectLexer(input);
            var tokens = new CommonTokenStream(lex);
            var parser = new UniAspectParser(tokens);

            var result = parser.aspect();
            var ast = (CommonTree)result.Tree;

            //抽象構文木を走査して、ポイントカット・アドバイス情報を格納する
            _visitor = new AstVisitor();
            _visitor.Visit(ast, 0, null);
        }
Example #6
0
        public AstVisitor CreateAspectElement(string path)
        {
            //アスペクトファイルの生成
            var aspect = new ANTLRFileStream(path);
            var lexer  = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast    = (CommonTree)result.Tree;

            var visitor = new AstVisitor();

            visitor.Visit(ast, 0, null);

            return(visitor);
        }
        private void WeaveForOne(object sender, RoutedEventArgs e)
        {
            //選択されたパスからファイルを取得
            var targetPath = TargetPath.Text;
            var aspectPath = AspectPath.Text;

            //アスペクト情報を持つオブジェクトを生成する
            var aspect = new ANTLRFileStream(aspectPath);
            var lexer = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast = (CommonTree)result.Tree;

            //ASTを走査してパース結果をアスペクトオブジェクトとしてvisitor内に格納する
            var visitor = new AstVisitor();
            visitor.Visit(ast, 0, null);

            //対象ファイルの拡張子を取得
            var fileExtension = Path.GetExtension(targetPath);

            //対象言語のソースコードでない場合は次の対象へ進む
            string langType;
            if (fileExtension == null
                || !TargetLanguage.TryGetValue(fileExtension, out langType)) {
                WeavedSourceArea.Text = "指定のプログラミング言語には対応していません";
                return;
            }

            var code = File.ReadAllText(targetPath, XEncoding.SJIS);
            var gen =
                    UnifiedGenerators.GetProgramGeneratorByExtension(
                            fileExtension);
            var model = gen.Generate(code);

            Weaver.AnalizeAspect(aspectPath);
            //アスペクトの合成を行う
            Weaver.Weave(langType, model);

            //とりえあず標準出力に表示;
            var codeGen = UnifiedGenerators.GetCodeGeneratorByExtension(fileExtension);
            WeavedSourceArea.Text = codeGen.Generate(model);
        }
        public AstVisitor CreateAspectElement(string path)
        {
            //アスペクトファイルの生成
            var aspect = new ANTLRFileStream(path);
            var lexer = new UniAspectLexer(aspect);
            var tokens = new CommonTokenStream(lexer);
            var parser = new UniAspectParser(tokens);

            //アスペクトファイルを解析してASTを生成する
            var result = parser.aspect();
            var ast = (CommonTree)result.Tree;

            var visitor = new AstVisitor();
            visitor.Visit(ast, 0, null);

            return visitor;
        }