Язык Общего назначения для создания компилятора для

они используют OnOffsetChangedListener, который является определением интерфейса для обратного вызова, который вызывается при изменении вертикального смещения AppBarLayout.

onOffsetChanged Вызывается, когда смещение макета AppBarLayout было изменено. Это позволяет дочерним представлениям реализовывать пользовательское поведение на основе смещения (например, закрепление представления с определенным значением y).

здесь ссылка OnOffsetChangedListener

12
задан vitaut 2 June 2011 в 15:46
поделиться

13 ответов

Мое предложение состоит в том, чтобы выбрать Ваш любимый язык. Знание у Вас есть вход в него, перевесит трудность записи компилятора для него, обычно.

8
ответ дан 2 December 2019 в 03:25
поделиться

Вы будете самыми счастливыми компиляторами записи для более старых, меньших языков. Паскаль, например, был разработан как средства обучения. Язык Паскаля является маленьким и изящным; компилятор может быть записан справедливо просто.

Даже Oberon или компилятор Modula-2 подобны в сложности Паскалю; их дизайн управлялся тем же человеком, Niklaus Wirth.

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

13
ответ дан 2 December 2019 в 03:25
поделиться

Запишите компилятор Схемы.

См.: поэтапный подход для конструкции компилятора

9
ответ дан 2 December 2019 в 03:25
поделиться

Если Вы хотите компактное учебное руководство, почему бы не рассмотреть Конструкцию Компилятора Wirth (PDF). Исходный язык (Oberon-0) достаточно прост сохранить компилятор понятным. Язык реализации (Oberon) должен быть читаемым любому, кто сделал некоторое программирование.

Относительно который язык использовать для реализации компилятора. Используйте что-то, с чем Вы знакомы. Когда в сомнении, выберите язык, который весьма обязательно усложнит попытку: Что-то со сборкой "мусора". Что-то, что помогает распечатать или иначе вывести внутренние структуры данных для контроля. Python, Scheme и Lua все приходят на ум.

Заключительное соображение состоит в том, что быть нацеленным с Вашим компилятором. Виртуальные машины JVM и CLR были упомянуты, я уверен. Вы могли пойти тем путем. Это могло бы быть легче для первой попытки использовать средство моделирования для упрощенного процессора RISC как Ваша цель. (Книга компилятора Wirth делает это.)

Я не рекомендовал бы быть нацеленным на x86 для Вашего первого компилятора, поскольку это отвратительно вне слов. Я также не был бы нацелен на высокий (er) язык уровня как C, потому что Вы пропустите много интересных деталей, как то, как реализовать семантику короткого замыкания для булевых операторов и такой как.

4
ответ дан 2 December 2019 в 03:25
поделиться

Другая точка в пользу Схемы: это практично для новичка для записи компилятора самохостинга для него, как Схема Ура Kragen Sitaker, его первый компилятор. Существует немного других 'учебных' компиляторов, достаточно мощных для компиляции себя (хотя существуют некоторые указатели в ссылке). Это приносит больше реализма и интереса для проблемы.

3
ответ дан 2 December 2019 в 03:25
поделиться

Паскаль был уже упомянут, но я хотел бы добавить, что книга Niklaus Wirth Алгоритмы + Структуры данных = Программы содержит полноценное внедрение маленького подобного Паскалю языка с помощью рекурсивного спуска. При поиске интенсивного теорией обсуждения парсинга посмотрите в другом месте; но если Вы хотите простой код, который позволяет Вам обучаться на практике, затем я рекомендовал бы + DP = P.

2
ответ дан 2 December 2019 в 03:25
поделиться

Безотносительно языка Вы выбираете, помните, что можно определить собственный набор поддерживавших функций для настройки его для установки приобретению знаний целей. Если Вы хотите узнать о компиляторах (который это кажется, что Вы делаете), то Вы могли записать компилятор C, но просто отбросить поддержку некоторой случайной функции, как указатели, например, или только реализовать подмножество ключевых слов, только для создания этого более управляемым.

Конечно, если Ваша цель состоит в том, чтобы стать действительно близкой с конкретным языком, Вы захотите полностью реализовать компилятор для того языка.

2
ответ дан 2 December 2019 в 03:25
поделиться

Какой бы ни язык, который Вы выбираете, Вы могли полагать, что компиляция в промежуточный язык (IL) предназначалась для Общеязыковой среды выполнения (CLR). Я предполагаю, что предназначение для виртуальной машины Java (JVM) было бы подобно для не-Windows, или предварительные случаи реализация CLR в Моно? Это было бы, вероятно, значительно simiplify задание и позволит Вам иметь что-то, что работало хорошо от прочь. Вы позже перенастраиваете определенную архитектуру, если Вы хотели пойти далее.

1
ответ дан 2 December 2019 в 03:25
поделиться

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

1
ответ дан 2 December 2019 в 03:25
поделиться

Запишите brainfuck или дальше компилятор. ОСНОВНОЙ, возможно, также такой язык, не слишком богатый функциями. Я думаю, что C был бы умеренно тверд. Не завидуйте о целевой дуге. Используйте то, что Вы имеете.

Если Вы не хотите реализовывать ассемблер, затем помещает Ваш код сборки выхода компилятора и продвигают его к газу или nasm.

0
ответ дан 2 December 2019 в 03:25
поделиться

С точки зрения простоты Forth будет одним из более легких языков для разработки. Это распараллелило интерпретирующий, а не действительно скомпилированный, но Вы будете все еще иметь дело с парсингом, переменным устройством хранения данных, и т.д.

Для компилятора я пошел бы с C или Паскалем, оба из которых довольно компактны и имеют источник для доступных компиляторов.

0
ответ дан 2 December 2019 в 03:25
поделиться

Я бы порекомендовал написать мозговой компилятор. Это очень просто и хорошо для первого компилятора. И шкала времени была бы больше 1,5 часа. Некоторые другие хорошие языки - это Forth, Logo и Lisp.

0
ответ дан 2 December 2019 в 03:25
поделиться

В курсе компиляторов мы писали компиляторы для подмножества C (мне нравилось думать об этом как о C--). Это было не так уж сложно, потому что вы знали, где находятся ваши границы. Вы всегда можете провести рефакторинг и добавить дополнительные функции позже.

1
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: