Ejemplo n.º 1
0
        private void TranslateTempFileContent(TranslationData data, TempFileFull fileData)
        {
            int tokenStart = data.CurrentToken;
            TranslationDataIterator iterator = data.GetIterator();
            Token token;
            TempClass contentData = null;
            while (iterator.Next(out token))
            {
                if (token.Term.Type != TermType.IdentifierKey && token.Term.Type != TermType.Key)
                {
                    continue;
                }

                JavaTermKey key = this.GetTermKey(token);
                switch (key)
                {
                    case JavaTermKey.Class:
                    case JavaTermKey.Interface:
                    case JavaTermKey.Enum:
                        {
                            contentData = new TempClass();
                            break;
                        }

                    case JavaTermKey.BraceRight:
                        {
                            return;
                        }
                }

                if (contentData != null)
                {
                    break;
                }
            }

            if (contentData != null)
            {
                data.CurrentToken = tokenStart;
                data.TranslationStack.Push(contentData);
                fileData.AddClass(contentData);
                return;
            }

            throw new InvalidDataException("Unexpected token list: ");
        }
Ejemplo n.º 2
0
        private void TranslateTempFile(TranslationData data, TempFileFull fileData)
        {
            TranslationDataIterator iterator = data.GetIterator();
            Token token;
            while (iterator.Next(out token))
            {
                switch (token.Term.Type)
                {
                    case TermType.IdentifierKey:
                        {
                            JavaTermKey key = this.GetTermKey(token);
                            switch (key)
                            {
                                case JavaTermKey.Package:
                                    {
                                        this.TranslateTempFilePackage(data, fileData);
                                        continue;
                                    }

                                case JavaTermKey.Import:
                                    {
                                        this.TranslateTempFileImport(data, fileData);
                                        continue;
                                    }

                                default:
                                    {
                                        // Rewind to current token and read the possible section
                                        data.CurrentToken--;
                                        this.TranslateTempFileContent(data, fileData);
                                        return;
                                    }
                            }
                        }
                }

                throw new InvalidDataException("Unexpected token: " + token);
            }
        }
Ejemplo n.º 3
0
        private void TranslateTempFilePackage(TranslationData data, TempFileFull fileData)
        {
            if (!string.IsNullOrEmpty(fileData.Namespace))
            {
                throw new InvalidDataException("Possibly duplicate namespace!");
            }

            var builder = new StringBuilder();
            TranslationDataIterator iterator = data.GetIterator();
            Token token;
            while (iterator.Next(out token))
            {
                if (token.Term.Type == TermType.Key)
                {
                    JavaTermKey key = this.GetTermKey(token);
                    if (key == JavaTermKey.Semicolon)
                    {
                        fileData.Namespace = builder.ToString();
                        return;
                    }
                }

                builder.Append(token.Contents);
            }
        }
Ejemplo n.º 4
0
        private void TranslateTempFileImport(TranslationData data, TempFileFull fileData)
        {
            var builder = new StringBuilder();
            TranslationDataIterator iterator = data.GetIterator();
            Token token;
            while (iterator.Next(out token))
            {
                if (token.Term.Type == TermType.Key)
                {
                    JavaTermKey key = this.GetTermKey(token);
                    if (key == JavaTermKey.Semicolon)
                    {
                        fileData.AddInclude(builder.ToString());
                        return;
                    }
                }

                builder.Append(token.Contents);
            }
        }
Ejemplo n.º 5
0
        private TempFileFull TranslateToTempFile(TranslationData data)
        {
            data.CurrentToken = 0;

            // Create the root data element
            var file = new TempFileFull { Name = data.TargetFile.FileName, StructureType = TempFileStructureType.Java };
            data.TranslationStack.Push(file);

            while (data.CurrentToken < data.Tokens.Count)
            {
                TempData currentData = data.TranslationStack.Peek();
                switch (currentData.Type)
                {
                    case TempDataType.File:
                        {
                            this.TranslateTempFile(data, (TempFileFull)currentData);
                            break;
                        }

                    case TempDataType.Class:
                        {
                            this.TranslateTempClass(data, (TempClass)currentData);
                            break;
                        }

                    case TempDataType.Function:
                        {
                            this.TranslateTempFunction(data, (TempFunction)currentData);
                            break;
                        }

                    case TempDataType.Member:
                        {
                            this.TranslateTempMember(data);
                            break;
                        }

                    default:
                        {
                            throw new NotImplementedException("Unknown translation data type: " + currentData.Type);
                        }
                }
            }

            return file;
        }
Ejemplo n.º 6
0
 private void SaveTempFile(TranslationData data, TempFileFull file)
 {
     if (this.config.Current.CompressIntermediate)
     {
         JsonExtensions.SaveToFile(data.TargetFile, file);
     }
     else
     {
         JsonExtensions.SaveToFile(data.TargetFile, file, false, Formatting.Indented);
     }
 }