2016-12-15 5 views
2

Есть ли какие-либо пакеты для ярлыков, goto, команды перехода в трейлере?ярлык, команды goto в drracket

Control пакет дает следующее сообщение об ошибке:

(let ([x 1]) 
    (let/ec return 
     (begin/goto 
     (label l1) 
     (set! x (+ x 1)) 
     (when (= x 10000000) 
      (return x)) 
     (goto l1) 
     2))) 

goto: undefined;

cannot reference undefined identifier

нужно имитировать метку, Гото/прыжок для запуска кода в LLVM IR, поэтому переписывание с использованием циклов не вариант.

+0

Переписать с помощью петель? –

+0

Преобразование из 'goto' в' loop' не может быть автоматизировано, поэтому не подходит для моей цели – sinhayash

+0

Пакет управления теперь обновлен. Попробуйте и дайте мне знать, если это не сработает (может быть, небольшая задержка с обновлением на Github на сервер пакетов, набирающий на нем). Racket «недавно» переключился на новый расширитель макросов. Пакет управления довольно старый, поэтому он использовал трюки, которые работали на старом расширителе, а не на новом. – soegaard

ответ

3

Во-первых: ясно, что пакет управления Soegaard работает некорректно, и я предполагаю, что это связано с обновлениями системы синтаксиса, которые происходят в течение последних нескольких лет.

Во-вторых: если вы моделируете LLVM, вам не нужны ярлыки и переходы. Просто разбивайте код на базовые блоки и моделируйте каждый базовый блок как функцию. Тогда каждый goto становится вызовом функции. Вы можете определенно автоматизировать это.

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

+0

Как вы отмечаете людей? soegaard? @soegaard? + soegaard? grr ... –

+0

Да, должно быть, что-то случилось с новым расширителем. Я взгляну. Кроме того: тегирование работает только для людей, уже участвующих в обсуждении (насколько я знаю). – soegaard

Смежные вопросы