GPPG+GPLex - что исправить для русской кодировки: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая: GPPG и GPLex почему-то генерируют файлы, в которых русские буквы переводятся в ужасную кодировку, не отобр...)
 
Нет описания правки
 
(не показаны 2 промежуточные версии этого же участника)
Строка 2: Строка 2:


Для каждой новой версии надо сделать следующее:
Для каждой новой версии надо сделать следующее:
1. В файле TaskState.cs проекта gplex:
 
1. В файле TaskState.cs проекта gplex поменять генерируемую кодировку на 1252:
<source lang="CSharp">        TextWriter OutputWriter()
<source lang="CSharp">        TextWriter OutputWriter()
         {
         {
Строка 34: Строка 35:
         }
         }
</source>
</source>
2. В файле CodeGenerator.cs проекта Gppg поменять генерируемую кодировку на 1252:
<source lang="CSharp">internal void Generate(List<AutomatonState> states, Grammar grammar)
        {
                ...
                try
                {
                    FileStream fStrm = new FileStream(grammar.OutFileName, FileMode.Create);
                    sWrtr = new StreamWriter(fStrm,Encoding.GetEncoding(1252)); // SSM
</source>
Вуаля!

Текущая версия от 15:03, 15 мая 2010

GPPG и GPLex почему-то генерируют файлы, в которых русские буквы переводятся в ужасную кодировку, не отображаемую VS.

Для каждой новой версии надо сделать следующее:

1. В файле TaskState.cs проекта gplex поменять генерируемую кодировку на 1252:

        TextWriter OutputWriter()
        {
            TextWriter rslt = null;
            if (this.outName.Equals("-"))
            {
                rslt = Console.Out;
                if (verbose) msgWrtr.WriteLine("GPLEX: output sent to StdOut");
            }
            else
            {
                outputFile = OutputFile();
                rslt = new StreamWriter(outputFile,Encoding.GetEncoding(1252)); // SSM
            }
            return rslt;
        }

        StreamWriter ListingFile(string outName)
        {
            try
            {
                listFile = new FileStream(outName, FileMode.Create);
                if (verbose) msgWrtr.WriteLine("GPLEX: opened listing file <{0}>", outName);
                return new StreamWriter(listFile, Encoding.GetEncoding(1252)); // SSM
            }
            catch (IOException)
            {
                handler.AddError("GPLEX: listing file <" + outName + "> not created", aast.AtStart);
                return null;
            }
        }

2. В файле CodeGenerator.cs проекта Gppg поменять генерируемую кодировку на 1252:

internal void Generate(List<AutomatonState> states, Grammar grammar)
        {
                ...
                try
                {
                    FileStream fStrm = new FileStream(grammar.OutFileName, FileMode.Create);
                    sWrtr = new StreamWriter(fStrm,Encoding.GetEncoding(1252)); // SSM

Вуаля!