GPPG+GPLex - что исправить для русской кодировки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (Новая: GPPG и GPLex почему-то генерируют файлы, в которых русские буквы переводятся в ужасную кодировку, не отобр...) |
Mikst (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
Для каждой новой версии надо сделать следующее: | Для каждой новой версии надо сделать следующее: | ||
1. В файле TaskState.cs проекта gplex: | 1. В файле TaskState.cs проекта gplex поменять генерируемую кодировку на 1252: | ||
<source lang="CSharp"> TextWriter OutputWriter() | <source lang="CSharp"> TextWriter OutputWriter() | ||
{ | { | ||
Строка 34: | Строка 34: | ||
} | } | ||
</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));</source> |
Версия от 15:02, 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));