2014-12-15 2 views
0

Chicken Схема 4.8.0.5Chicken Scheme и деформированные определения

Привет всем,

Вот отрывок из искаженного определения списка списков. Я говорю об ошибке, потому что имя переменной лежит за самой левой скобкой, и нет явного оператора определения ie. (определить techDisplays ((AG1 fillerIgnore .... ноль ноль))

snippet.il

techDisplays(
;(LayerName   Purpose     Packet       Vis Sel C2C Drg Val) 
;(---------   -------     ------       --- --- --- --- ---) 
(AG1     fillerIgnore    AG1_fillerIgnore    t t nil t nil) 
(AG2     drawing     AG2_drawing      t t nil t t ) 
(AG2     fillerIgnore    AG2_fillerIgnore    t t nil t nil) 
(AG2     frame     AG2_frame      t t nil t t ) 
(AG2     frameOnly    AG2_frameOnly     t t nil t t ) 
(AG2     frameOnlyHole   AG2_frameOnlyHole    t t nil t t ) 
(y0    flight  y0_flight     t t t t nil) 
(y1    flight  y1_flight     t t t t nil) 
(y2    flight  y2_flight     t t t t nil) 
(y3    flight  y3_flight     t t t t nil) 
(y4    flight  y4_flight     t t t t nil) 
(y5    flight  y5_flight     t t t t nil) 
(y6    flight  y6_flight     t t t t nil) 
(y7    flight  y7_flight     t t t t nil) 
(y8    flight  y8_flight     t t t t nil) 
(y9    flight  y9_flight     t t t t nil) 
(border   boundary border_boundary   t nil t t nil) 
(snap    grid  snap_grid     t nil t nil nil) 
) ;techDisplays 

Проблема: мне нужно, чтобы получить схему, чтобы признать это как определение действует верхнего уровня Дальнейшая проблема : Решение должно быть масштабируемым, так как есть еще 100 с того места, где он пришел из этого . Я тоже должен прочитать Ограничение: мне очень хотелось бы, чтобы НЕ нужно было писать какую-то рутинную парсинг, так как, скорее всего, получится неправильным. со всеми скобками, подсчетами, сопоставлением и расслоением.

Любые идеи, подсказки, конструктивные критические замечания приветствуются.

ТИА,

Еще обучения Стив

ответ

0

Рассмотрим это,

; this is structured as your input with just a space after the first name 
#;1> (define inp 
      '(techdisps (foo bar baz) 
         (foo1 bar1 baz1) 
         (foo2 bar2 baz2))) 
#;2> inp 
(techdisps (foo bar baz) (foo1 bar1 baz1) (foo2 bar2 baz2)) 
#;3> (define techdisps cdr) 
;get all the displays from you input 
#;4> (techdisps inp) 
((foo bar baz) (foo1 bar1 baz1) (foo2 bar2 baz2)) 
;this should be just a tech display, let's see how it parses. 
#;5> (car (techdisps inp)) 
(foo bar baz) 
#;6> (define foo car) 
#;7> (define bar cadr) 
#;8> (define baz caddr) 
;this will give us all the bazes 
#;9> (map baz (techdisps inp)) 
(baz baz1 baz2) 

Если вы считаете, что это не будет масштабировать (хотя 100s больше не будет чем-то, что современный переводчик схема в приличной коробке будут проблемы с хрустом), мы можем предложить альтернативы. Надеюсь, это поможет.

Cheers.

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