Портирование файла предварительной обработки кода с C на C # - PullRequest
1 голос
/ 11 августа 2009

Ранее я делал базовый интерпретатор в C с препроцессором, который брал большую нагрузку на синтаксический анализ и тому подобное. Я хотел бы перенести этот препроцессор для использования в C # сейчас, и у меня возникли проблемы, так как я все еще новичок в C #.

Мой старый препроцессор сделал так, что-то вроде

var $mine=        this;
      //weird intendtation
var       $something        + $a=$b;

получит что-то довольно машиночитаемое, как

var\0$mine\0=this\0;\0var\0$something\0+$a\0=$b\0;\0

(с \ 0, равным NULL, чтобы я мог очень легко получить имена переменных и идентификаторов)

Что ж, с моим старым кодом я читаю его по одному байту за раз и в зависимости от того, был ли его пробел и каким был последний символ и тому подобное, тогда он либо вставит символ, вставит NULL, либо проигнорирует символ. *

Ну, у меня проблемы с превращением этого в код C #. Я использую класс StringBuilder и использую Insert () для вставки одного символа за раз. Но моя проблема в том, что я не могу использовать \ 0 как символьное значение. Как сделать так, чтобы имена идентификаторов по-прежнему были чрезвычайно легко читаемыми? в этом случае было бы лучше иметь массив строк или объектов для построения строк?

1 Ответ

6 голосов
/ 11 августа 2009

Я бы порекомендовал использовать List<string> и добавлять элементы в список по одному.

Это дает вам все возможности использования массива строк, но он будет расти динамически. Код C # для анализа вашего файла должен быть намного, намного проще и понятнее, чем код C, если вы используете этот подход.

...