--- parser3/www/htdocs/Attic/index.html 2002/01/31 10:20:24 1.1 +++ parser3/www/htdocs/Attic/index.html 2002/04/19 11:59:45 1.47 @@ -1,10 +1,54 @@ -@auto[] +@USE +t.p + +@autoz[] $request:charset[windows-1251] $response:charset[windows-1251] $response:content-type[$.value[text/html]$.charset[$response:charset]] +#@postprocess[body] +#$body +#$result[123] + @main[] -^xoutputrusattr[] +#^replacetest[] +^matchoptionpp[] +#^txdocxnodechild[] +#^tclasses[] +#$math:PI +#^b:method[] +#^main[] +#^errort[] +#^tselectNumber[] +#$result[hello] +#^invaliddate2[] +#^process2[] +#^casehashtext[] +#^subjvaltest[] +#^tableselect0[] +#^memnotest1[] +#^transparams[] +#^voidparams[] +#^rolls2[] +#^cacheexpireschanging[] +#^cacheexpiresfixed[] +#^dateoffsets[] +#^exceptionTypes[] +#^roll2[] +#^rolls[] +#^exceptions1[] +#^locate_by_expr[] +#^method_junction_params{...} +#^verifyCookie[paf] +#^execlangs[] +#$t[^tobjeresult[]]$t.a +#^xmlprobs[] +#^doubleprobs[] +#^math:random(-10) +#^divnamestop[] +#^arrayclone[] +#^operator_tricks[] +#^xoutputrusattr[] #^xdocset1[] #^regexp3[] #^exec2[] @@ -94,6 +138,353 @@ $response:content-type[$.value[text/html
OK +@replacetest[] +$b[b] +$s[ +aaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +] +^s.replace[^table::create{from to +ba !_}] + + +@matchoptionpp[] +#$ORIGINS(1) +$s[ +aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +] +^s.match[b;g']{($match.prematch|$match.match|$match.postmatch)} + + +@txdocxnodechild[] +$xdoc[^xdoc::set{}] +$xdoc.nodeName +^xdoc.selectNumber[2*2] +$xdoc:ELEMENT_NODE + + +@tclasses[] +$t[^t::create[]] +^t.method[] +
+^t.base_method[] + + +@errort[] +^xdoc::create[a] +#^throw[user;here;this] + +@tselectNumber[] +$d[^xdoc::set{}] +^d.selectString[string(d/@attr)]
+^d.selectNumber[2*2]
+^d.selectNumber[number(/d/@n)+1]
+ + +@invaliddate2[] +$d[^date::create(1018946575/60/60)] ^d.sql-string[] + +@process2[] +^^process{ + ^process{ + ^$a[^^if(0){^$.k[y]}{^$.k[^^hren[]n]}] ^$a.k + } +} + +@casehashtext[] +$tt[1] +$tmp[ + ^switch[$tt]{ + ^case[1]{ + $.aaa[123] + } + ^case[DEFAULT]{ + $.bbb[456] + } + } + shit! +] +#$tmp +$tmp.aaa + +@subjvaltest[] +$a12[val] +$b[12] +$a$b + +@tableselect0[] +$person[^table::create{name height +paf 1.77 +шохин 2.07 +moko 1.77 +}] +$nottoohigh[^person.select($person.height<2)] +^nottoohigh.menu{$nottoohigh.name
} + +@transparams[] +$idoc[^xdoc::create{}] +$odoc[^idoc.transform[global.xsl; + $.param1['1'] + $.param2['2'] +]] +
^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{}]
 ^show_xdoc2[$d]