- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
;;; the toplevel operators of each equation in the system
;;; type : array[term]
(defmacro match-acz-state-methods (state__) `(svref ,state__ 0))
;;; functional terms
;;; type : array[term]
(defmacro match-acz-state-lhs-f (state__) `(svref ,state__ 1))
;;; variables on the LHS
;;; type : array[term]
(defmacro match-acz-state-lhs-v (state__) `(svref ,state__ 2))
;;; contants on the RHS
;;; type : array[term]
(defmacro match-acz-state-rhs-c (state__) `(svref ,state__ 3))
;;; functional terms on RHS
;;; type : array[term]
(defmacro match-acz-state-rhs-f (state__) `(svref ,state__ 4))
;;; notes repeated functional terms of LHS
;;; type : array[bool]
(defmacro match-acz-state-lhs-f-r (state__) `(svref ,state__ 5))
;;; notes repeated variables of LHS
;;; type : array[bool]
(defmacro match-acz-state-lhs-v-r (state__) `(svref ,state__ 6))
;;; notes repeated constants of RHS
;;; type : array[bool]
(defmacro match-acz-state-rhs-c-r (state__) `(svref ,state__ 7))
;;; notes repreated funcational terms of RHS
;;; type : array[bool]
(defmacro match-acz-state-rhs-f-r (state__) `(svref ,state__ 8))
;;; variables and funs acocunted for by RHS-c-sol
;;; type : fixnum
(defmacro match-acz-state-lhs-mask (state__) `(svref ,state__ 9))
;;; funs accounted for by RHS-c-sol
;;; type : fixnum
(defmacro match-acz-state-lhs-f-mask (state__) `(svref ,state__ 10))
;;; bit vector of all repeated (> 0) terms on LHS
(defmacro match-acz-state-lhs-r-mask (state__) `(svref ,state__ 11))
;;; solution matrix for constants
;;; type : array[fixnum]
(defmacro match-acz-state-rhs-c-sol (state__) `(svref ,state__ 12 ))
;;; max value of elements of RHS-C-sol
;;; type : fixnum
(defmacro match-acz-state-rhs-c-max (state__) `(svref ,state__ 13))
;;; solutions matrix; functional terms
;;; type : array[fixnum]
(defmacro match-acz-state-rhs-f-sol (state__) `(svref ,state__ 14))
;;; max value of elements of RHS-f-sol
;;; type : fixnum
(defmacro match-acz-state-rhs-f-max (state__) `(svref ,state__ 15))
;;; type : fixnum 11111 ... 1111
(defmacro match-acz-state-rhs-full-bits (state__) `(svref ,state__ 16))
;;; array of compatibility bitvectors; constants
;;; type : array[fixnum]
(defmacro match-acz-state-rhs-c-compat (state__) `(svref ,state__ 17))
;;; array of compatibility bitvectors; funcs
;;; type : array[fixnum]
(defmacro match-acz-state-rhs-f-compat (state__) `(svref ,state__ 18))
;;; number of constants on LHS after simplification
;;; type : fixnum
(defmacro match-acz-state-lhs-c-count (state__) `(svref ,state__ 19))
;;; number of functions on LHS after simplification
;;; type : fixnum
(defmacro match-acz-state-lhs-f-count (state__) `(svref ,state__ 20))
;;; number of variables on LHS after simplification
;;; type : fixnum
(defmacro match-acz-state-lhs-v-count (state__) `(svref ,state__ 21))
;;; number of constants on RHS after simplification
;;; type : fixnum
(defmacro match-acz-state-rhs-c-count (state__) `(svref ,state__ 22))
;;; number of functions on RHS after simplification
;;; type : fixnum
(defmacro match-acz-state-rhs-f-count (state__) `(svref ,state__ 23))
;;; t iff all solutions have been reported.
(defmacro match-acz-state-no-more (state__) `(svref ,state__ 24))
j123123 20.12.2018 19:44 # +1
j123123 20.12.2018 20:06 # 0
Specification and Verification of Software with CafeOBJ – Part 3 – First steps with CafeOBJ
> As a challenge the reader might try to give definitions of the factorial function and the Fibonacci function, the next blog will present solutions for it.
j123123 20.12.2018 20:10 # 0
crestoblyad 20.12.2018 20:47 # 0
j123123 20.12.2018 20:52 # 0
crestoblyad 20.12.2018 21:04 # 0
yet_another_one_shit 20.12.2018 20:51 # +1
yet_another_one_shit 20.12.2018 20:55 # 0
j123123 20.12.2018 20:58 # 0
yet_another_one_shit 20.12.2018 21:00 # 0
yet_another_one_shit 20.12.2018 20:59 # 0
j123123 20.12.2018 21:07 # 0
и с точки зрения языка это будет двусвязный список
И чтоб можно было интерпретировать это, элементы в двусвязном списке менять как массивы байт, вставлять новые элементы в двусвязный список и потом интерпретировать свежевставленное на основе каких-то правил, которые могут быть заданы двусвязными списками и которые могут быть сгенерированы в процессе интерпретации двусвязных списков из этой всей питушни. Можно грабить корованы
zhigolo 20.12.2018 21:58 # 0
А нам всё равно — что жопа, что говно.
1024-- 20.12.2018 22:23 # 0
В программировании уже почти не обойтись без иерархии и циклических ссылок (то есть графов). Сюда надо хотя бы что-то вроде SAX-питушни.
А вот простой синтаксис для перезаписи деревьев (вроде функций с паттерн матчингом) был бы полезен.
j123123 20.12.2018 22:48 # 0
j123123 20.12.2018 23:10 # +1
А если нужно сами скобки или еще какую-то фигню записать, можно это сделать эскейп-последовательностью
Если строка слишком длинная, можно делать так
распознается как
И можно даже сделать подобие инклуда, типа
просто воткнет в один элемент двусвязного списка всё содержимое файла C:\somefile.txt
guest8 21.12.2018 13:56 # −999
bormand 21.12.2018 07:51 # +1
XSLT
1024-- 21.12.2018 17:47 # 0
bormand 21.12.2018 19:51 # 0
guest8 21.12.2018 21:04 # −999
roman-kashitsyn 21.12.2018 23:01 # 0
Для старательных он, замучаешься этими тегами хоть что-то интересное писать.
guest8 21.12.2018 23:04 # −999
roman-kashitsyn 22.12.2018 00:54 # 0
guest8 22.12.2018 02:40 # −999
guest8 22.12.2018 04:58 # −999
yet_another_one_shit 22.12.2018 06:43 # 0
guest8 22.12.2018 11:23 # −999
guest8 22.12.2018 20:13 # −999
roman-kashitsyn 22.12.2018 12:28 # +1
Спасибо, капитан, я в своё время километры этого xslt-говна написал, удручающий опыт (не помню, для чего именно — вроде из выхлопа какого-то апи генерил отчёты в pdf через разметку apache poi).
> И инклуды не нужны в цикле: ты сначала все инклудишь, а потом матчишь.
Ну так в коде, который ты принёс, список инклюдов определяется динамически, исходя из данных, которые прибиндили к шаблону. В теории можно добавить в FS новый шаблон, и шаблонизатор сможет его заинклюдить без изменений базового шаблона.
В XSLT так в принципе невозможно сделать, нужно заранее всё инклюдить руками.
Я не говорю, что это очень уж плохо, просто код, эквивалентный тому, что ты принёс, написать невозможно.
guest8 22.12.2018 16:45 # −999
guest8 22.12.2018 17:07 # −999
guest8 22.12.2018 19:59 # −999
roman-kashitsyn 22.12.2018 21:40 # +1
Я вообще не понимаю, для чего нужны языки шаблонизаторов, если можно просто eDSL в нормальном языке написать. Нет, надо придумать странный синтаксис и кривую семантику, передавать в этот недоязык данные, а потом писать плагины для редакторов и ИДЕ.
У меня от всех шаблонизаторов (кроме typesafe-аналогов printf) пригорает.
guest8 22.12.2018 21:54 # −999
1024-- 22.12.2018 23:15 # 0
Сначала хотели сделать что-то выразительное и легковесное, потом стало чего-то не хватать - добавили, ещё чего-то не хватало, ещё и ещё..., надобавляли - и вот уже второй C++ вышел, только для шаблонов.
guest8 22.12.2018 23:17 # −999
guest8 22.12.2018 02:05 # −999
guest8 22.12.2018 00:08 # −999
guest8 22.12.2018 00:11 # −999
yet_another_one_shit 22.12.2018 00:14 # +1
guest8 22.12.2018 11:47 # −999
guest8 22.12.2018 12:03 # −999
guest8 22.12.2018 20:00 # −999
CHayT 22.12.2018 15:15 # +2
j123123 28.12.2018 23:43 # 0
Note that XSLT is just a (special) kind of rewriting language, acting on XML documents
(там еще в качестве примера приводятся конфиги сендмейла)