GPPG+GPLex - что исправить для русской кодировки
Материал из Вики проекта PascalABC.NET
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
Вуаля!
