--- parser3/www/htdocs/Attic/index.html 2002/01/31 12:00:43 1.3 +++ parser3/www/htdocs/Attic/index.html 2002/11/28 07:17:37 1.185 @@ -1,13 +1,84 @@ -@auto[] +@USE +/derived.p +/operators.p + +@auto[filespec] +$selffilespec[$filespec] +#$form:here +#$request:charset[UTF-8] $request:charset[windows-1251] $response:charset[windows-1251] -$response:content-type[$.value[text/html]$.charset[$response:charset]] +#$response:charset[UTF-8] +#$response:charset[empty] +#$response:content-type[$.value[text/html]$.charset[$response:charset]] + +@postprocess[body] +#$body +#$result[123] +$body +
^taint[^xdoc.string[]]+ +@http_prefix_table[] +$table[^table::load[nameless;http://www.artlebedev.ru;$.USER-AGENT[paf]]] +^table.count[] +
$table.0+ +@http_prefix[] +#$file[^file::load[text;http://www.artlebedev.ru]] +#$file[^file::load[text;http://www.artlebedev.ru;alt]] +#$file[^file::load[text;http://parser3/exif.html; +$file[^file::load[text;http://parser3/none; + $.headers[ + $.USER-AGENT[paf] + ] +]] +server: $file.SERVER
$file.text+ +@test_exif[dir] +$file[^file:list[$dir;\.(jpe?g|JPE?G)^$]] +
| ^image.html[$.width(100)$.height(100)] | +
+ $file.name + $exif[$image.exif] + ^if($exif){ + $keys[^exif._keys[]] ^keys.sort{$keys.key} + ^keys.menu{ + $key[$keys.key] + $value[$exif.$key] + + ${key}: ^show_exif_value[$value] + } + }{ + no EXIF info + } + |
+
$f.text+ +@sergestrandef[] +$sQuantity[ ] +^sQuantity.int(10) + +@xmltransformbyxdoc[] +$xdoc[^xdoc::set{^process{ + +
$f.text+ + +@tserge[] +^if(" 09 "){y} + +@datetest[] + $f[^file::stat[some.zip]] +Размер в байтах: $f.size
^taint[^odoc.string[$.method[html]]]
+
+@memnotest1[]
+^for[i](0;4000){
+
+ $xxxx[$i]
+ $xxxx
+
+}
+
+@memnotest1notes[]
+одна итерация цикла:
+[Mon Apr 8 20:12:02 2002] execution-------------------------|
+'469641+=28 wcodeframe -> 0 !optimize[3]''469669+=49 string от {} -> 0 optimize[3]'
+[Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
+[Mon Apr 8 20:12:02 2002] "|| "
+[Mon Apr 8 20:12:02 2002] 12:WITH_ROOT
+[Mon Apr 8 20:12:02 2002] 13:VALUE
+[Mon Apr 8 20:12:02 2002] "xxxx" string
+[Mon Apr 8 20:12:02 2002] 14:CREATE_EWPOOL'469377+=24 wcodeframe -> 0 !optimize[1]''469401+=49 string -> 41 !optimize[7]'
+[Mon Apr 8 20:12:02 2002] 16:WITH_READ
+[Mon Apr 8 20:12:02 2002] 17:VALUE
+[Mon Apr 8 20:12:02 2002] "i" string
+[Mon Apr 8 20:12:02 2002] 18:GET_ELEMENT
+[Mon Apr 8 20:12:02 2002] 17:WRITE_VALUE'469452+=40 MAX_NUMBER -> !~2 actual digits''469492+=49 -> 41 !'
+[Mon Apr 8 20:12:02 2002] 16:REDUCE_EWPOOL'469541+=24 VString -> 0 optimize[5]'
+[Mon Apr 8 20:12:02 2002] 15:CONSTRUCT_VALUE
+[Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
+[Mon Apr 8 20:12:02 2002] "| "
+[Mon Apr 8 20:12:02 2002] 12:WITH_READ
+[Mon Apr 8 20:12:02 2002] 13:VALUE
+[Mon Apr 8 20:12:02 2002] "xxxx" string
+[Mon Apr 8 20:12:02 2002] 14:GET_ELEMENT
+[Mon Apr 8 20:12:02 2002] 13:WRITE_VALUE'469573+=41 string expand nothing for now'
+[Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
+[Mon Apr 8 20:12:02 2002] "||"'469617+=24 VString -> 0 !optimize[6]'
+[Mon Apr 8 20:12:02 2002] <-ja returned
+[Mon Apr 8 20:12:02 2002] ja->
+
+201/328=0.612804878049 %%optimized
+
+1.
+CREATE_*POOL
+ сделать
+*POOL_POOLED+CODE
+ где
+ wwrapper
+ и(возможно) wcodeframe
+ +string
+ стековая переменная
+
+2.
+избавиться от обёртки при возврате результата process [см. тело _for]
+
+3.
+сделать callback для process, чтобы вынести invariants из _for & co.
+
+4.
+ @todo склеить get_element и write_value (при вставлении? write_value)
+
+5.
+reduce_*pool -> вариант получить именно string, без VString обёртки [часто
+обёртка сразу выбрасывается = не нужна]
+
+6.
+process вариант получить именно string, без VString обёртки [часто обёртка
+сразу выбрасывается = не нужна]
+
+7.
+string head, убить 8 байт неправильной link
+
+@voidparams[]
+^voidparamsm[$form:field]
+
+@voidparamsm[p]
+^p.int(123)
+
+@rolls2[]
+$now[^date::now[]]
+$d[^date::create($now.year;$now.month)] ^d.sql-string[]
+^for[i](1;12){
+ ^d.roll[month](-1) ^d.sql-string[]
+}
+
+@cacheexpireschanging[]
+^cache[$DB_HOME/keyключ][^date::now(+1)]{ ^rem{1 day}
+ ^cache[^date::now(+4/24/60/60)]
+# ^cache(2)
+# ^cache(0)
+ ^math:random(100)
+}
+
+
+
+@cacheexpiresfixed[]
+^cache[$DB_HOME/keyключ][^date::now(+2/24/60/60)]{
+ ^math:random(100)
+}
+
+@dateoffsets[]
+$d[^date::create(^date::now[]+1/24/60)]
+#$d[^date::now(+1/24/60)]
+^d.sql-string[]
+#$d
+
+@exceptionTypes[]
+# parser.compile ^test[} компиляция (непарная скобка, ...)
+# parser.runtime ^if(0). параметры (больше/меньше, чем нужно, не тех типов, ...)
+# number.zerodivision ^eval(1/0) ^eval(1%0)
+# number.format ^eval(abc*5)
+# file.missing ^file:delete[delme] not found
+# file.access ^table::load[.] no rights
+# image.format ^image::measure[index.html] not gif/jpg
+# sql.connect ^connect[mysql://baduser:pass@host/db]{} not found/timeout
+# sql.execute ^connect[mysql://okuser:pass@host/db]{^void:sql{select bad}} syntax error
+# xml ^xdoc::create{} any error in xml/xslt libs
+# smtp.connect not found/timeout
+# smtp.execute communication error
+
+@roll2[]
+$d[^date::create(2002;4;2;2;2;3)] ^d.sql-string[]
+^d.roll[day](+365*3+1) ^d.sql-string[]
+
+
+@rolls[]
+$d[^date::create(2002;4;4)]
+^d.sql-string[]
+^for[i](1;7){
+^d.roll[day](-1)
+^d.sql-string[]
+}
+
+$d[^date::create(2002;3;28)]
+^d.sql-string[]
+^for[i](1;7){
+^d.roll[day](+1)
+^d.sql-string[]
+}
+
+$d[^date::create(2002;12;3)]
+^d.sql-string[]
+^for[i](1;14){
+^d.roll[day](-1)
+^d.sql-string[]
+}
+
+$d[^date::create(2002;10;19)]
+^d.sql-string[]
+^for[i](1;14){
+^d.roll[day](+1)
+^d.sql-string[]
+}
+
+
+
+
+
+
+@exceptions1[]
+^try{
+ aaa
+ ^throw[custom1;paf;is stupid]
+}{
+ ^if($exception.type eq custom1){
+# $exception.handled(1)
+ ^throw[$exception]
+ type=$exception.type
+ source=$exception.source
+ file=$exception.file
+ lineno=$exception.lineno
+ comment=$exception.comment
+ }
+}
+
+@locate_by_expr[]
+$t[^table::create{a b
+1 nok
+2 ok
+3 nok
+}]
+^if(^t.locate($t.a==2)){$t.b}{n}
+
+@method_junction_params[param]
+^if($param is junction){junction}{ne junction}
+
+@verifyCookie[value]
+^if($cookie:dummyvote eq $value){
+ $result(1)
+}{
+ $cookie:dummyvote[$value]
+ $result(0)
+}
+
+@execlangs[]
+$f[^file::exec[test.pl]]
+err:$f.stderr
+^process{$f.text}
+#$c[^t.columns[]]
+#^c.menu{
+#* $c.column
+#}
+c:$t.c
+
+@tobjeresult[]
+^table::create{a
+12}
+
+@xmlprobs[]
+$xmlDataType[^xdoc::load[program.xml]]
+#^taint[^xmlDataType.string[]]
+$xmlDataTypes[^xmlDataType.select[programs/program[@id=4]/data]]
+#=^xmlDataTypes._count[]=
+=^xmlDataTypes.0.getAttribute[type-id]=
+
+@doubleprobs[]
+$1(^math:radians(180))
+$2($math:PI)
+^if(^1.format[%.10f]==^2.format[%.10f]){y;n}
+^if($1==$2){y;n}
+^if(^math:radians(180)==$math:PI){y;n}
+
+
+@divnamestop[]
+$a(10)
+^eval($a\3)
+
+@arrayclone[]
+$t[^table::create{a b
+1 11
+2 22
+}]
+$c[^table::create[$t]]
+^c.append{2 33}
+^t.count[]
+^c.count[]
+
+@operator_tricks[]
+^if(1){$a[^t[]]}
+$a!
+$a($b)
+^if(1){y}{n}
+$MAIN:a(^t[] eq OK)
+#$MAIN:a(1)
+^if($a){y}{n}
+#^if(1){y}{n}
+$form:if
+$a[$.n[1]]
+$a.if
@xoutputrusattr[]
$d[^xdoc::set{ }]
@@ -177,13 +1888,13 @@ $t[^table::set{^untaint{^taint[$a-tab-b]
@mail3[]
^mail:send[
- $.from[Александр Петросян ]
- $.to[Александр Петросян ]
- $.subject[проверка4]
+ $.from[Александр Петросян ]
+ $.to[Александр Петросян ]
+ $.subject[проверка2]
$.body[
$.text[
$.content-type[$.value[text/plain] $.charset[windows-1251]]
- $.body[проверка]
+ $.body[проверка^taint[uri][москва]=]
]
$.attachment[
$.value[^file::load[text;index.html]]
@@ -310,7 +2021,7 @@ $date.year $date.month $date.day
@cookie2[]
#=$cookie:clientType[$.value[test]]=
-=$cookie:clientType=
+=$cookie:CLASS.clientType=
@tableset[]
@@ -642,10 +2353,12 @@ $abc[abc]
^abc.save[abc]
@calendar[]
-2001;11:
-$week_days[^date:calendar[rus](2001;11)]
+$year(2002)
+$month(12)
+${year}-${month}:
+$week_days[^date:calendar[rus]($year;$month)]
-^week_days.menu{^for[wday](0;7){^if($week_days.$wday){$week_days.$wday; ^; ^;} }
}
+^week_days.menu{^for[wday](0;6){^if($week_days.$wday){$week_days.$wday; ^; ^;} }=$week_days.week,$week_days.year=
}
@thash[]
@@ -682,15 +2395,16 @@ $response:body[^pict.gif[]]
@mail2[]
^mail:send[
+ $.message-id[<6615%1@parser.ru>]
$.content-type[$.value[text/plain] $.charset[windows-1251]]
$.from[Александр Петросян ]
$.to[Александр Петросян ]
- $.subject[проверка]
- $.body[проверка]
+ $.subject[проверка проверка]
+ $.text[проверка]
]
@cookie[]
-$env:HTTP_COOKIE
+#$env:HTTP_COOKIE
#$cookie:переменная[test тест ТЕСТ2]
=$cookie:переменная=
@@ -756,10 +2470,6 @@ $s[abcАБВ]
3]
]
-@exec[]
-$a[^file::exec[fc.exe;;a;b]]
-$a.status|$a.stderr
-
@fori[][i]
^for[i](1;3){... =$i= ...}
@@ -779,7 +2489,7 @@ $xdoc[^xdoc::set{
+$xdoc[^xdoc::create{
@@ -789,7 +2499,7 @@ $xdoc[^xdoc::set{^process{ПИФ^taint[&]
-}}]
+}]
@xml[]
^xdata[]