Описание тега compiler-theory
A compiler is a computer program (or set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language, often having a binary form known as object code). The most common reason for wanting to transform source code is to create an executable program.
3
ответа
Как распознать переменные, которые не влияют на вывод программы?
Иногда значение переменной, доступ к которой осуществляется в потоке управления программы, может никак не повлиять на ее вывод. Например: global var_1 global var_2 start program hello(var_3, var_4) if (var_2 < 0) then save-log-to-disk (var_1, var…
12 июн '14 в 12:46
3
ответа
Однозначная грамматика для арифметического выражения с Unary + и -
Я только начал самостоятельно изучать книгу Dragon Design of Compiler Design. Я работаю над проблемой, которая говорит, чтобы разработать грамматику для выражения, содержащего двоичные +,-,*,/ и унарные +, - Я придумал E -> E+T | E-T | T T -> …
14 июл '11 в 17:13
3
ответа
Проверка типов данных / структур в парсере
Я пишу парсер рекурсивного спуска, и я не знаю, как все проверить. Я даже не уверен, должен ли я делать это на этапе синтаксического анализа. Я имею в виду, что я мог бы иметь некоторый синтаксис, а именно: int x = 5 int x = 5 И это будет правильно,…
21 янв '15 в 22:21
3
ответа
How to make a Side-by-Side Compiler for .NET
Сценарий Никхила Котари #, возможно, является одной из самых удивительных концепций, которые я видел на арене JavaScript в течение достаточно долгого времени. Этот вопрос не о JavaScript, а о компиляции языка во время выполнения.NET. Меня довольно …
16 сен '08 в 18:10
6
ответов
Мог ли C++ не избавиться от идиомы pimpl?
Как я понимаю, pimpl идиома существует только потому, что C++ заставляет вас помещать все закрытые члены класса в заголовок. Если бы заголовок содержал только открытый интерфейс, теоретически, любое изменение в реализации класса не требовало бы пере…
06 ноя '08 в 15:56
0
ответов
Затраты времени на создание и запуск NFA против DFA для данного регулярного выражения
Я прохожу прошлые экзамены и постоянно сталкиваюсь с вопросами, на которые я не могу найти ответ в учебниках или в Google, поэтому любая помощь будет высоко ценится. Вопрос, с которым у меня сейчас проблемы, заключается в следующем: Учитывая регуляр…
06 авг '12 в 15:05
1
ответ
Найти эквивалентную грамматику LR для одного и того же числа грамматик "a" и "b"?
Я не могу найти эквивалентную грамматику LR для: S → aSbS | bSaS | ε которые я думаю, распознают строки с тем же числом "а", что и "б". Что бы обойти это? Можно ли найти и грамматику LR для этого? Заранее спасибо! РЕДАКТИРОВАТЬ: Я нашел то, что я сч…
30 май '17 в 19:11
1
ответ
Компиляторы: зарегистрируйте распределение против сложных ветвлений / переходов
Я заинтересовался оптимизаторами и их работой, особенно в отношении распределения регистров. У меня есть некоторый опыт в написании высокоуровневых интерпретаторов, которые не удосужились сгенерировать эффективный машинный код, поэтому части, вращаю…
14 май '15 в 04:28
1
ответ
Как лямбда-выражения переводятся в байт-код Java
Я пытаюсь создать пример с использованием лямбда-выражения в Java, и я использую официальный JDK8. Мой пример был успешно выполнен. Но когда я пытаюсь проверить, как компилятор переводит лямбда-выражение в байт-код, это вызывает у меня некоторую пут…
17 апр '14 в 12:34
6
ответов
Возможно ли иметь компилятор, который предсказывал бы каждую возможную "специфическую для ситуации" ошибку времени выполнения?
Под "конкретной ситуацией" я подразумеваю, что он использует некоторые данные, к которым у него будет доступ, например, текущую настройку базы данных, версию некоторой ОС и т. Д. Представьте, что компилятор проверит базу данных, которую вы в данный …
04 окт '09 в 05:02
5
ответов
Как компиляторы обнаруживают переполнение чисел при компиляции?
Компилятор работает с исходным кодом в виде строк, например, в C++, например, когда он поощряет такие выражения unsigned char x = 150; он знает из пределов типа, что unsigned char должно быть в диапазоне между 0 а также 255, Мой вопрос пока номер 15…
01 июн '11 в 23:07
1
ответ
Интересные проекты компилятора
Я смотрю на семестровый проект в компиляторах, который также может превратиться в мою дипломную работу. У меня нет большого опыта в этой области (я написал небольшой "переводчик" для Паскаля как часть моей работы бакалавра) - я больше увлекался маши…
21 окт '10 в 21:37
2
ответа
Алгоритм встраивания
Кто-нибудь знает какие-либо документы, обсуждающие алгоритмы встраивания? И тесно связаны, отношения родитель-дочерний граф к графу вызовов. Фон: у меня есть компилятор, написанный на Ocaml который активно использует функции, в основном в результате…
16 дек '10 в 02:20
1
ответ
Значение доминант в реверс-инжиниринге
Наткнулся на этот вопрос: объяснить роль доминант в реверс-инжиниринге Java-кода. Все, что я могу придумать, это то, что вам нужно уметь вычислять доминаторы в контрольном графике, чтобы увидеть, можно ли его привести: Работайте над доминаторами Опр…
11 май '12 в 20:29
2
ответа
Вопросы по реализации глобального распределителя регистров для крошечного компилятора c
Наступающим летом я надеюсь начать писать магистерскую диссертацию, и я был довольно занят поиском темы диссертации. Теперь у меня есть пул предметов, которые меня интересуют, и больше всего меня поразила реализация глобального распределителя регист…
24 янв '10 в 22:57
5
ответов
Как компиляторы C реализуют функции, которые возвращают большие структуры?
Возвращаемое значение функции обычно хранится в стеке или в регистре. Но для большой структуры это должно быть в стеке. Сколько копирования должно происходить в реальном компиляторе для этого кода? Или это оптимизировано? Например: struct Data { uns…
28 янв '10 в 15:42
2
ответа
C++ странный неоднозначный вызов перегруженной функции
Прежде всего, этот вопрос носит чисто теоретический характер. Я не ищу решение (я его уже знаю), я просто ищу объяснение. Следующий код не компилируется: struct foo {}; void a(foo) {} namespace foobar { void a(foo) {} void b(foo f) {a(f);} } int mai…
12 апр '13 в 10:31
1
ответ
Насколько легко найти строку, которая приводит к конфликту в парсере SLR(1) по сравнению с LR (1)
Известно, что парсеры SLR(1) обычно имеют меньше состояний, чем LR(1). Но легче или труднее из-за этого найти строку, которая приводит к конфликту в парсере SLR(1) по сравнению с LR (1) и почему? Заранее спасибо.
15 дек '18 в 16:44
1
ответ
Как получить контекстно-свободную грамматику и соответствующий ей КПК?
Я не могу понять, как я могу решить это упражнение. Мне нужно сделать контекстно-свободную грамматику, которая может проверить следующие входные данные: L={w € (0,1,2)* | w= 2^n 0^(m+1) 1^(m+n) with n>=0, m>0} Как я могу создать соответствующи…
15 янв '12 в 16:27
1
ответ
Замена всех вызовов функций их определением в коде C/C++
Интересно, есть ли какая-нибудь теория / инструмент, доступный для замены части кода, содержащей вызовы функций, на код, где все вызовы функций были заменены их соответствующим кодом. лайк main() { fun(); } fun() { int i; fun2(); } fun2() { int j; }…
26 июн '12 в 15:59