Запитання з тегом «compilers»

Запитання щодо програм, які читають код однією мовою (мова-джерело) та переводять її в еквівалентну програму іншою мовою (цільова мова).

4
Чому ліва рекурсія погана?
Чому під час проектування компілятора слід усунути ліву рекурсію у граматиках? Я читаю, що це тому, що це може спричинити нескінченну рекурсію, але чи не так це і для правильної рекурсивної граматики?

3
Розбір довільних безконтекстних граматик, в основному коротких фрагментів
Я хочу проаналізувати визначені користувачем мови домену. Ці мови, як правило, близькі до математичних позначень (я не розбираю природну мову). Користувачі визначають свою DSL у позначенні BNF, наприклад: expr ::= LiteralInteger | ( expr ) | expr + expr | expr * expr Введення типу "подібне" 1 + ( 2 …


2
Чому в багатьох компіляторах, що використовуються в галузі, статичне одинарне призначення переважає над стилем передачі продовження?
За даними сторінки Вікіпедії щодо статичного єдиного призначення (SSA) , SSA використовується великими і відомими проектами, такими як LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey і V8, а сторінка для проектів, що використовують стиль продовження проходження (CPS) трохи бракує для порівняння. Я маю таке уявлення, що CPS віддають перевагу компіляторам та …

1
Навіщо розділяти лексинг та розбір?
Можна проаналізувати документ за допомогою одного пропуску з державної машини. Яка користь мати два проходи, тобто. мати лексеру для перетворення тексту в лексеми та аналізатор для тестування правил виробництва для цих маркерів? Чому б не було єдиного пропуску, який застосовує правила виробництва безпосередньо до тексту?

1
Введіть умовивід з типами продуктів
Я працюю над компілятором для конкатенативної мови і хотів би додати підтримку виводу типу. Я розумію Хіндлі – Мілнера, але я вивчав теорію типів, коли йду, тому не знаю, як її адаптувати. Чи є наступна система звуковою і, можливо, незмінною? Термін - це буквальне слово, склад термінів, цитата терміна або …


2
Яка властивість мінусів дозволяє усунути хвостові модулі рекурсії хвоста?
Мені знайома ідея усунення основної хвостової рекурсії, де функції, які повертають собі прямий результат дзвінка, можуть бути переписані у вигляді ітеративних циклів. foo(...): # ... return foo(...) Я також розумію, що, як особливий випадок, функцію все одно можна переписати, якщо рекурсивний виклик буде завернуто у виклик cons. foo(...): # ... …

6
Чи має бути абстрактним синтаксичним деревом дерево?
Чи має висновок аналізатора бути деревом чи це також може бути загальний графік? Більше того, чи існує якась існуюча мова чи правдоподібна мова, яка використовує загальне подання графіків замість дерев для свого синтаксису?

3
Чому використання лексера / парсера для двійкових даних так неправильно?
Я часто працюю з лексером / парсерами , на відміну від комбінатора парсера і бачу людей, які ніколи не брали клас на розбір, запитують про розбір бінарних даних. Зазвичай дані не тільки двійкові, але й контекстно-залежні. Це в основному призводить до наявності лише одного типу токена, лексеми для байта. Чи …

2
Видалення лівої рекурсії в граматиці при збереженні лівої асоціації оператора
У мене проблема з цією вправою: Нехай G - наступна неоднозначна граматика λ-числення: E → v | λv.E | EE | (E) де E - єдиний нетермінальний символ, λv.E являє собою абстракцію wrt змінної v в E, а EE являє додаток. Визначте граматику LL (1) G 'так, що L (G …

3
Як "вирубка лісу" видаляє "дерева" з програми?
Я думаю, розумію, як вирубка лісів споживає та створює список одночасно (із функції складання та розгортання - див. Цю хорошу відповідь на CodeReview тут ), але коли я порівнював це із записом у Вікіпедії щодо техніки, про яку говорилося про «видалення дерева 'з програми. Я розумію, як програма може бути …

2
Чи можна розрізнити граматику LL (k) та LR (k)?
Я нещодавно вивчаю питання проектування компіляторів. Мені стало відомо про два типи граматик, один - граматика ЛЛ, а другий - граматика ЛР. Ми також знаємо факти, що кожна граматика LL є LR, що є LL граматикою - це належна підмножина граматики LR. Перший використовується при синтаксичному розборі зверху вниз, а …

3
Як ця граматика LL (1)?
Це питання з Книги Драконів. Це граматика: S→ A a A b ∣ B b B aS→AaAb∣BbBaS \to AaAb \mid BbBa A → εA→εA \to \varepsilon B → εB→εB \to \varepsilon Питання задає питання, як показати, що це LL (1), але не SLR (1). Щоб довести, що це LL (1), …

1
Підхід “CPS” завдав великої шкоди результативності в SML / NJ; міркування бажаного
У коментарі до Learning F #: Які книги за допомогою інших мов програмування можна перекласти на F # для вивчення функціональних понять? Макарій заявив: Зауважте, що підхід "CPS" завдав великої шкоди продуктивності в SML / NJ. Його модель фізичної оцінки порушує занадто багато припущень, які вбудовані в апаратне забезпечення. Якщо …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.