Skip navigation.

Sign up | Lost password? | Help

проФорт

Форт и всё такое

Динамический scoping... и bac4th

, ,

Динамический scoping в моём приближенном понимании это две вещи -- определение видимости имени в runtime (во время исполнения) и вложенное присваивание значений.

В форте изначально используется lexical scoping. Очевидно что динамический scoping прикручивается в язык со статическим легко и непринуждённо, единственное для чего требуется поддержка в ядре -- красивый синтаксис.

KEEP из bac4th автоматически восстанавливает старое значение при откате. profiT описывает KEEP как "локальное значение, глобальное имя".

Можно представлять KEEP как простой аналог dynamic scoping для форта. И на самом деле удобно использовать например для отслеживания глубины отступа при выводе xml тэгов бэкртрекингом.

Вот основной код :
USER indent

\ open tag with attributes, close tag when backtracking
: tag ( attr-l a u --> \ <-- )
   PRO
   BACK " </{s}>" STYPE TRACKING
   2RESTB
   CR indent @ SPACES
   " <{s}>" STYPE
   indent KEEP
   indent 1+!
   CONT ;


Мне нравится эта лаконичность :smile:

Как отлаживать крэш SPFSP-Forth, Linux и Vim

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies