Описание тега compiler-design

Используется для вопросов о дизайне компилятора, которые лишены деталей реализации.
1 ответ

Ошибка компилятора в зависимости от положения параметра в сигнатуре метода. Использование неназначенной локальной переменной

Допустим, у меня есть этот класс: class Boo { public override string ToString() { return "I am Boo!"; } } И эти методы: static int Foo(out Boo boo) { boo = new Boo(); return 1; } static void Lol(Boo boo, int n) { Console.WriteLine(n); Console.WriteL…
1 ответ

Можно ли выразить левый ассоциативный оператор таким образом, чтобы синтаксические анализаторы LL(1) могли его понять?

Я пытался реализовать нисходящий синтаксический анализатор LL(1) для языка калькулятора. Это позволяет нам только суммировать, вычитать, делить и умножать числа. Нет скобок. S -> A A -> B + A | B - A | B B -> int * B | int / B | int Посколь…
1 ответ

Каков наилучший способ реализации оператора break на интерпретаторе?

Я разрабатывал интерпретатор для Brain (язык, похожий на Brainfuck), и у меня есть некоторые опасения относительно дизайна оператора break. Рассмотрим код ниже в JS: var Stmt = (function() { var Stmt = function() {}; Stmt.prototype = { update_expres…
1 ответ

LL1 Сначала и следуйте установленным правилам

Я смотрю на создание таблицы разбора для грамматики LL(1), и все это имеет смысл, кроме одного аспекта!? Правила для последующего набора швов конфликтуют. • Для каждого производства X → αAβ, поместите ПЕРВЫЙ (β) - {€} в СЛЕДУЮЩЕМ (A)• Если € - ПЕРВЫ…
1 ответ

Что подразумевается под самой левой деривацией?

Пожалуйста, помогите мне понять, что подразумевается под Left Most Derivation второй L в LL Parser, Объясните это на простейшем примере. Я видел следующую картину, объясняющую левое происхождение, но я ее не понимаю:
1 ответ

Как кодировать наборы FIRST & FOLLOW внутри компилятора

Я пишу компилятор для курса по компиляции, который я прохожу, и в настоящее время я нахожусь на Синтаксическом анализе, где мне нужно написать парсер. Мне нужно иметь наборы FIRST и FOLLOW для обработки любых ошибок, которые могут появиться в исходн…
2 ответа

ПРОЧИТАЙТЕ перед началом вашего проекта компилятора

Вообще-то, это прежде всего мечта... Возможно, когда-нибудь у меня будет свой собственный язык программирования!, но это скоро превратится в кошмар, сразу после того, как вы ищете Как собрать компилятор?, Я провожу слишком много времени, как и больш…
1 ответ

Как я должен сделать вывод, когда GC должен работать?

Я пишу статически скомпилированный язык и хотел бы поддержать сборку мусора. Прежде чем приступить к его разработке, я хотел бы узнать, как мне определить, когда должен работать GC? Должно ли это быть после каждых 16 МБ? (проверка после достаточного…
02 окт '10 в 12:22
1 ответ

Тестирование компилятора

В настоящее время я работаю над компилятором, созданным с использованием sablecc. Короче говоря, компилятор примет в качестве входных данных файлы спецификаций (это то, что мы анализируем) и файлы.class и обработает байт-код файлов.class, чтобы убед…
2 ответа

Генерировать вывод вместе с парсером рекурсивного спуска

Написание простых парсеров тривиально, и я реализовал несколько за эти годы. В колледже нам тоже пришлось написать один. Но нам никогда не приходилось генерировать значимые результаты, используя этот метод; мы никогда не учились создавать бэкэнд. Ес…
2 ответа

Карри и дизайн компилятора

Это домашнее задание: Объясните, какие преобразования тип подпрограммы претерпевает при частичной параметризации. До сих пор я понимаю, карри. Но я не могу найти никаких ресурсов о том, как подобная функция реализуется компилятором в памяти. Могу ли…
01 ноя '09 в 01:35
1 ответ

Как мне назвать выражения, которые не имеют скобки?

Я добавляю больше к своему языку, используя зубров, и в правилах я немного запутался. Как назвать выражения, которые имеют {}, такие как класс, функции, switch и т. Д. Выражения VS, которым в конце нужна точка с запятой (Int i;) У меня были они как …
13 окт '10 в 06:30
1 ответ

Создать адрес электронной почты из имен Compiler Design

Создание адресов электронной почты с именами форм Вы дали файл, содержащий имена нескольких человек. Файл будет иметь ровно одно имя в каждой строке. Вам нужно создать адрес электронной почты, заканчивающийся @bitmesra.ac.in из этих имен. Правило со…
1 ответ

Зачем указывать отдельную продукцию для оператора присваивания с символом `=` вместо символа `AssignmentOperator`

Грамматика EcmaScript для AssignmentExpression определяет следующее: AssignmentExpression : ConditionalExpression YieldExpression ArrowFunction AsyncArrowFunction LeftHandSideExpression = AssignmentExpression <-------------- here LeftHandSideExpr…
1 ответ

Как определить грамматику LR(0) или SLR(1)?

Это грамматика LR(0) или SLR(1)? S -> E $ E -> T + E | T T -> x
16 июл '15 в 12:32
3 ответа

Не сравнивайте, если между кавычками стоит символ (у АКА есть шаблон строки программирования)

Мне поручили написать компилятор для языка программирования Basic. В основном коды разделяются новыми строками или : отметка. например, чтобы следующие коды действительны.Модель № 1 10 PRINT "Hello World 1" : PRINT "Hello World 2" Модель № 2 10 PRIN…
29 мар '14 в 21:23
4 ответа

Как разработать лексер и парсер в Java?

Привет я студент и новичок в концепции проектирования компиляторов. Я не знаю, как разработать лексер и парсер в Java? Пожалуйста, помогите мне сделать это, дайте мне руководство линии...
20 фев '11 в 16:28
1 ответ

Как исключения обрабатываются в целом на любом языке программирования?

Какие изменения происходят в программе при обнаружении исключения? Как сгенерированное исключение попадает в ближайший блок catch.
0 ответов

Как рекурсивная функция реализована в функциональных языках?

Рассмотрим следующую рекурсивную привязку верхнего уровня: let f = (a => f a); (где arg => expr это лямбда-выражение) Определить f в глобальной среде, сначала мы должны оценить ценность fа именно a => f a, Но с тех пор f выражение еще не оп…
1 ответ

Дизайн компилятора - лексический анализ: сколько столбцов занимает \t?

Я должен хранить информацию о токене для моего лексического анализатора, например его строку и столбец. Если я сталкиваюсь с некоторым исходным кодом, как это: \t \t int myInt; как узнать столбец токена? Потому что я не знаю, сколько столбцов нужно …
30 мар '13 в 19:56