示例#1
0
        //[Test]
        public void TestLoad()
        {
            const string scenePathname = @"Examples\Scene.unity";
            var          local         = MakeLocalPath(scenePathname);
            var          text          = System.IO.File.ReadAllText(local);

            Assert.IsNotEmpty(text, $"Couldn't read {local}");
            var lexer = new UnityLexer(text);

            Assert.IsTrue(lexer.Process(), lexer.Error);
        }
示例#2
0
        private static SyntaxTree Parse(SourceText sourceText, Func <UnityParser, SyntaxNode> parseFunc)
        {
            var lexer  = new UnityLexer(sourceText);
            var parser = new UnityParser(lexer);

            var result = new SyntaxTree(sourceText,
                                        syntaxTree => parseFunc(parser));

            Debug.WriteLine(DateTime.Now + " - Finished parsing");

            return(result);
        }
示例#3
0
        public static IReadOnlyList <SyntaxToken> ParseAllTokens(SourceText sourceText)
        {
            var tokens = new List <SyntaxToken>();

            var         lexer = new UnityLexer(sourceText);
            SyntaxToken token;

            do
            {
                tokens.Add(token = lexer.Lex());
            } while (token.Kind != SyntaxKind.EndOfFileToken);

            return(tokens);
        }
示例#4
0
        private static SyntaxTree Parse(SourceText sourceText, Func <UnityParser, SyntaxNode> parseFunc)
        {
            var pretokenizer       = new UnityPretokenizer(sourceText);
            var pretokenizedTokens = pretokenizer.GetTokens();

            var lexer  = new UnityLexer(sourceText, pretokenizedTokens);
            var parser = new UnityParser(lexer);

            var result = new SyntaxTree(sourceText,
                                        syntaxTree =>
            {
                var node = parseFunc(parser);
                node.SetSyntaxTree(syntaxTree);
                return(node);
            });

            Debug.WriteLine(DateTime.Now + " - Finished parsing");

            return(result);
        }