예제 #1
0
 public MClass(FileSyntaxNode tree, string name, string fileName, List <MMethod> methods)
 {
     Tree     = tree;
     Name     = name;
     FileName = FileName;
     Methods  = methods;
 }
예제 #2
0
        public override void VisitFile(FileSyntaxNode node)
        {
            _methodAssignments = new MethodAssignments();
            foreach (var nodeOrToken in node.Body.Statements)
            {
                if (nodeOrToken.IsToken)
                {
                    continue;
                }

                var n = nodeOrToken.AsNode();
                if (n.Kind == TokenKind.FunctionDeclaration)
                {
                    var functionDeclaration = (FunctionDeclarationSyntaxNode)n;
                    _methodAssignments.Add(functionDeclaration.Name.Text, new Variable());
                }
            }
            base.VisitFile(node);
        }
예제 #3
0
        public static MClass FromTree(FileSyntaxNode tree, string fileName)
        {
            var classDeclaration = tree.Body.Statements[0].AsNode() as ClassDeclarationSyntaxNode;

            if (classDeclaration == null)
            {
                return(null);
            }
            var name    = classDeclaration.ClassName.Text;
            var methods = new List <MMethod>();

            foreach (var s in classDeclaration.Nodes)
            {
                if (s.IsToken)
                {
                    continue;
                }
                if (s.AsNode() is MethodsListSyntaxNode methodsList)
                {
                    methods.AddRange(MethodsFromList(methodsList));
                }
            }
            return(new MClass(tree, name, fileName, methods));
        }
예제 #4
0
 public override void VisitFile(FileSyntaxNode node)
 {
     Visit(node.Body.Statements);
     AddToken(node.EndOfFile, _scheme.Keyword);
 }
예제 #5
0
 public RootSyntaxNode RootSyntax(FileSyntaxNode file)
 {
     return(new RootSyntaxNode(file));
 }
예제 #6
0
 public override void VisitFile(FileSyntaxNode node)
 {
     Visit(node.Body.Statements);
     OutputKeyword(node.EndOfFile);
 }
예제 #7
0
        private BoundFile BindFile(FileSyntaxNode node)
        {
            var body = BindBlockStatement(node.Body);

            return(File(node, body));
        }
예제 #8
0
 public RootSyntaxNode(FileSyntaxNode file, TokenDiagnostic[] diagnostics) : base(TokenKind.Root, diagnostics)
 {
     Slots = 1;
     this.AdjustWidth(file);
     _file = file;
 }
예제 #9
0
 public RootSyntaxNode(FileSyntaxNode file) : base(TokenKind.Root)
 {
     Slots = 1;
     this.AdjustWidth(file);
     _file = file;
 }
예제 #10
0
 public virtual void VisitFile(FileSyntaxNode node)
 {
     DefaultVisit(node);
 }