public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new CgIdentifierTokenNode(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }
Beispiel #2
0
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new CgUnfinishedDelimitedCommentNode(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return new Whitespace(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)));
 }
Beispiel #4
0
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new JsonNewGenericTokenNode(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }
Beispiel #5
0
 public SpringLexer(IBuffer buffer)
 {
     Buffer  = buffer;
     _lexer  = new CLexer(new AntlrInputStream(buffer.GetText()));
     _stream = new BufferedTokenStream(_lexer);
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return new VariableIdentifier(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)));
 }
Beispiel #7
0
        /// <summary>
        /// This method skips m_Modifications entry in prefab document and stores modifications in dictionaries
        ///
        /// After this method is executed, lexer current token is null or indent of next entry (after m_Modifications)
        /// </summary>
        private void GetModifications(IBuffer buffer, YamlLexer lexer, int parentIndentSize, Dictionary <FileID, string> names, Dictionary <FileID, int?> rootIndexes)
        {
            FileID curTarget       = null;
            string curPropertyPath = null;
            string curValue        = null;

            // Each property modifications is flow node:
            // - target: ..
            //   propertyPath: ..
            //   value:
            // Minus token means that new modification description is started
            // There are several entries in description. We are interested only
            // in target, propertyPath and value

            while (UnitySceneDataUtil.FindNextIndent(lexer))
            {
                var currentSize = lexer.TokenEnd - lexer.TokenStart;

                lexer.Advance();
                var tokenType = lexer.TokenType;


                if (tokenType == YamlTokenType.MINUS)
                {
                    currentSize++;
                    AddData();
                    lexer.Advance();
                }


                if (currentSize <= parentIndentSize)
                {
                    break;
                }

                UnitySceneDataUtil.SkipWhitespace(lexer);
                tokenType = lexer.TokenType;

                if (tokenType == YamlTokenType.NS_PLAIN_ONE_LINE_IN)
                {
                    var text = buffer.GetText(new TextRange(lexer.TokenStart, lexer.TokenEnd));
                    if (text.Equals(UnityYamlConstants.TargetProperty))
                    {
                        lexer.Advance();
                        UnitySceneDataUtil.SkipWhitespace(lexer);
                        lexer.Advance(); // skip column

                        // [TODO] handle prefab in prefab
                        curTarget = UnitySceneDataUtil.GetFileId(buffer, lexer).WithGuid(null);
                    }
                    else if (text.Equals(UnityYamlConstants.PropertyPathProperty))
                    {
                        lexer.Advance();
                        UnitySceneDataUtil.SkipWhitespace(lexer);
                        lexer.Advance();

                        curPropertyPath = UnitySceneDataUtil.GetPrimitiveValue(buffer, lexer);
                    }
                    else if (text.Equals(UnityYamlConstants.ValueProperty))
                    {
                        lexer.Advance();
                        UnitySceneDataUtil.SkipWhitespace(lexer);
                        lexer.Advance();

                        curValue = UnitySceneDataUtil.GetPrimitiveValue(buffer, lexer);
                    }
                }
            }

            AddData();

            void AddData()
            {
                if (curTarget != null)
                {
                    if (curPropertyPath != null && curPropertyPath.Equals(UnityYamlConstants.NameProperty))
                    {
                        names[curTarget] = curValue;
                    }
                    else if (curPropertyPath != null && curPropertyPath.Equals(UnityYamlConstants.RootOrderProperty))
                    {
                        rootIndexes[curTarget] = int.TryParse(curValue, out var r) ? (int?)r : null;
                    }

                    curTarget       = null;
                    curPropertyPath = null;
                    curValue        = null;
                }
            }
        }
Beispiel #8
0
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new SpringGenericToken(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)), this));
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new KeywordTokenElement(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }
Beispiel #10
0
        public void AddPrefabModification(IBuffer buffer)
        {
            var anchor = UnitySceneDataUtil.GetAnchorFromBuffer(buffer);

            if (anchor == null)
            {
                return;
            }

            var lexer = new YamlLexer(buffer, false, false);

            lexer.Start();

            TokenNodeType currentToken;

            var transformParentId = FileID.Null;

            while ((currentToken = lexer.TokenType) != null)
            {
                if (currentToken == YamlTokenType.INDENT)
                {
                    var indentSize = lexer.TokenEnd - lexer.TokenStart;
                    lexer.Advance();
                    currentToken = lexer.TokenType;

                    if (currentToken == YamlTokenType.NS_PLAIN_ONE_LINE_IN)
                    {
                        var text = buffer.GetText(new TextRange(lexer.TokenStart, lexer.TokenEnd));
                        if (text.Equals(UnityYamlConstants.TransformParentProperty))
                        {
                            lexer.Advance();
                            UnitySceneDataUtil.SkipWhitespace(lexer);
                            currentToken = lexer.TokenType;

                            if (currentToken == YamlTokenType.COLON)
                            {
                                lexer.Advance();

                                var result = UnitySceneDataUtil.GetFileId(buffer, lexer);
                                if (result != null)
                                {
                                    transformParentId = result;
                                }
                            }
                        }
                        else if (text.Equals(UnityYamlConstants.ModificationsProperty))
                        {
                            var names       = new Dictionary <FileID, string>();
                            var rootIndexes = new Dictionary <FileID, int?>();
                            GetModifications(buffer, lexer, indentSize, names, rootIndexes);
                            var id = new FileID(null, anchor);
                            Elements.Add(id,
                                         new ModificationHierarchyElement(id, null, null, false, transformParentId, rootIndexes, names));
                            return;
                        }
                    }
                }
                else
                {
                    lexer.Advance();
                }
            }
        }
        public static void ExtractSimpleAndReferenceValues(IBuffer buffer, Dictionary <string, string> simpleValues, Dictionary <string, FileID> referenceValues, OneToSetMap <string, FileID> eventHandlerToScriptTarget)
        {
            // special field for accessing anchor id
            simpleValues["&anchor"] = GetAnchorFromBuffer(buffer);

            var lexer = new YamlLexer(buffer, true, false);

            lexer.Start();

            TokenNodeType currentToken;
            bool          noColon = true;

            while ((currentToken = lexer.TokenType) != null)
            {
                if (noColon)
                {
                    if (currentToken == YamlTokenType.COLON)
                    {
                        noColon = false;
                    }

                    if (currentToken == YamlTokenType.NS_PLAIN_ONE_LINE_OUT)
                    {
                        var key = buffer.GetText(new TextRange(lexer.TokenStart, lexer.TokenEnd));

                        // special filed for checking stripped documents
                        if (key.Equals("stripped"))
                        {
                            simpleValues["stripped"] = "1";
                        }
                    }
                }

                if (currentToken == YamlTokenType.INDENT)
                {
                    lexer.Advance();
                    currentToken = lexer.TokenType;
                    if (currentToken == YamlTokenType.NS_PLAIN_ONE_LINE_IN)
                    {
                        var key = buffer.GetText(new TextRange(lexer.TokenStart, lexer.TokenEnd));

                        lexer.Advance();
                        SkipWhitespace(lexer);

                        currentToken = lexer.TokenType;
                        if (currentToken == YamlTokenType.COLON)
                        {
                            lexer.Advance();
                            SkipWhitespace(lexer);

                            currentToken = lexer.TokenType;
                            if (currentToken == YamlTokenType.LBRACE)
                            {
                                lexer.Advance();
                                var result = GetFileIdInner(buffer, lexer);
                                if (result != null)
                                {
                                    referenceValues[key] = result;
                                }
                            }
                            else if (YamlTokenType.CHAMELEON_BLOCK_MAPPING_ENTRY_CONTENT_WITH_ANY_INDENT.Equals(currentToken))
                            {
                                var chameleonBuffer = ProjectedBuffer.Create(buffer, new TextRange(lexer.TokenStart, lexer.TokenEnd));
                                if (ourStringSearcher.Find(chameleonBuffer, 0, Math.Min(chameleonBuffer.Length, 150)) > 0)
                                {
                                    FillTargetAndMethod(chameleonBuffer, eventHandlerToScriptTarget);
                                }
                                else
                                {
                                    // sometimes, FileId is multiline
                                    var result = GetFileId(chameleonBuffer);
                                    if (result != null)
                                    {
                                        referenceValues[key] = result;
                                    }
                                }
                            }
                            else
                            {
                                var result = GetPrimitiveValue(buffer, lexer);
                                if (result != null)
                                {
                                    simpleValues[key] = result;
                                }
                            }
                        }
                    }
                    else
                    {
                        FindNextIndent(lexer);
                    }
                }
                else
                {
                    lexer.Advance();
                }
            }
        }
Beispiel #12
0
 public HaskellLexer(IBuffer buffer)
 {
     Buffer           = buffer;
     _lexer           = new GHaskellLexer(new AntlrInputStream(buffer.GetText()));
     _currentPosition = 0;
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     // throw new System.NotImplementedException(buffer.ToString() + " " + startOffset.ToString() + " " + endOffset.ToString());
     return(new SpringLeafToken(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)), this));
 }
Beispiel #14
0
 protected override ILexer CreateLexer(IBuffer buffer) =>
 new T4Lexer(new StringBuffer(buffer.GetText().Replace("\r\n", "\n")));
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     if (endOffset - startOffset > 2 && buffer[startOffset.Offset + 2] == '/' &&
         (endOffset - startOffset == 3 || buffer[startOffset.Offset + 3] != '/'))
     {
         return new DocComment(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)));
     }
     return new Comment(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)));
 }
Beispiel #16
0
 public override string GetText() => _buffer.GetText(_range);
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return new NTriplesGenericToken(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset)));
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new EndOfLineComment(buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }
 public override LeafElementBase Create(IBuffer buffer, TreeOffset startOffset, TreeOffset endOffset)
 {
     return(new CgPreprocessorTokenNode(this, buffer.GetText(new TextRange(startOffset.Offset, endOffset.Offset))));
 }