Вот мое решение в Javascript - очень похоже на JPot, но короче (и, возможно, немного быстрее):
value = new Date(parseInt(value.substr(6)));
"value.substr (6)" вынимает "/ Date ( ", а функция parseInt игнорирует символы не числа, которые встречаются в конце.
EDIT: Я намеренно исключил основание (второй аргумент parseInt), см. мой комментарий ниже . Также обратите внимание, что даты ISO-8601 предпочтительнее этого старого формата, поэтому этот формат обычно не должен использоваться для новой разработки. См. отличную библиотеку Json.NET для отличная альтернатива, которая сериализует даты с использованием формата ISO-8601.
Для ISO-8601 отформатированных дат JSON просто передайте строку в конструктор Date:
var date = new Date(jsonDate); //no ugly parsing needed; full timezone support
Я обнаружил, что книгу Дракона слишком трудно читать, уделяя слишком много внимания теории языка, т. Е. на практике для написания компилятора не требуется.
Я бы добавил книгу Oberon , которая содержит полный исходный код удивительно быстрого и простого компилятора Oberon Project Oberon .
Если у вас мало времени, я рекомендую Никлауса Вирта "Строительство компилятора" (Addison-Wesley. 1996), маленькую брошюру, которую вы можете прочитать за день, но она объясняет основы (включая как реализовать лексеры, парсеры рекурсивного спуска и ваши собственные виртуальные машины на основе стека). После этого, если вы хотите глубоко погрузиться, нет никакого способа обойти книгу Дракона, как предлагают другие комментаторы.
Я удивлен, что это не было упомянуто, но Дональд Кнут Искусство компьютерного программирования изначально было написано как своего рода учебник по написанию компилятора.
Конечно, склонность доктора Кнута к углубленному изучению тем привела к тому, что руководство по написанию компилятора было расширено до ориентировочного 9 томов, из которых фактически опубликовано только три. Это довольно полное изложение тем программирования, и оно охватывает все, что вам когда-либо понадобится при написании компилятора, с мельчайшими подробностями.
Всякий раз, когда я хочу опробовать идею нового языка, я просто пишу простой синтаксический анализатор и заставляю его генерировать язык, для которого легко получить хорошие компиляторы, например C.
Как сделать вы думаете, что C ++ был создан?
Отсутствует в списке: Сборка мусора: Алгоритмы автоматического управления динамической памятью, Джонс и Линс.
(Предполагая, что вы пишете систему исполнения компилятора и , и что вы реализуете язык со сборкой мусора.