|
|
| version 1.22, 2002/03/18 15:29:46 | version 1.56, 2002/04/30 10:40:58 |
|---|---|
| Line 1 | Line 1 |
| #@USE | @USE |
| #z/t.p | t.p |
| @autoz[] | @autoz[] |
| $request:charset[windows-1251] | $request:charset[windows-1251] |
| $response:charset[windows-1251] | $response:charset[windows-1251] |
| $response:content-type[$.value[text/html]$.charset[$response:charset]] | $response:content-type[$.value[text/html]$.charset[$response:charset]] |
| @postprocess[body] | |
| #=$env:HTTP_TEST=<br> | |
| #=$env:REDIRECT_HTTP_TEST=<br> | |
| #<hr> | |
| $body | |
| <hr> | |
| OK | |
| @main[] | @main[] |
| ^exceptions1[] | #^sqldefaults[] |
| #^eval(2) | |
| #^tcrashlocaljunctionsv2[] | |
| #^tcrashlocaljunctions[] | |
| #^tjunctions[] | |
| #^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[] | #^locate_by_expr[] |
| #^method_junction_params{...} | #^method_junction_params{...} |
| #^verifyCookie[paf] | #^verifyCookie[paf] |
| Line 106 $response:content-type[$.value[text/html | Line 144 $response:content-type[$.value[text/html |
| #^xslt[] | #^xslt[] |
| #^xml[] | #^xml[] |
| #^header[] | #^header[] |
| #^tablehasht[] | |
| #^datecreatestring[] | |
| #^mssqltypes1[] | |
| #^badthrows[] | |
| ^xmlspace[] | |
| @xmlspace[] | |
| $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?> | |
| <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"--> | |
| <people> | |
| <man id="1" имя="word слово"> | |
| <name>1 2</name> | |
| </man> | |
| </people> | |
| }}] | |
| $xdoc[^xdoc.transform[global.xsl]] | |
| $string[^xdoc.string[$.method[html]]] | |
| ^string.save[a] | |
| ^untaint[html]{$string} | |
| @badthrows[] | |
| #^throw[a;b;] | |
| ^throw[a;] | |
| @mssqltypes1[] | |
| ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{ | |
| # ^string:sql{select { ts '1998-05-02 01:23:56.123' }} | |
| # ^string:sql{select CAST({ ts '1998-05-02 01:23:56.123' }AS smalldatetime)} | |
| # ^string:sql{select CAST({ts '2002-04-28 00:00:00.000'} AS smalldatetime)} | |
| $t[^table::sql{select a from paf}] | |
| ^t.count[] | |
| } | |
| @datecreatestring[] | |
| $d[^date::create[2002-04-33 01:03:04]] | |
| ^d.sql-string[] | |
| @method[hash] | |
| $hash.key | |
| @mainZ[] | |
| ^method[ | |
| $.key{code} | |
| ] | |
| @tablehasht[] | |
| $t[^table::create{p | |
| 1 | |
| 3 | |
| 2 | |
| 4}] | |
| $h[^t.hash[p]] | |
| =^h._count[]= | |
| @sqldefaults[] | |
| ^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{ | |
| ^int:sql{select news_id from news where news_id=-1}[$.default{2}]<br> | |
| ^string:sql{select news_id from news where news_id=-1}[$.default{2}] | |
| } | |
| @tcrashlocaljunctionsv2[] | |
| $a[ | |
| $b{ $c[1] } | |
| ] | |
| $b | |
| $c | |
| @tcrashlocaljunctions[] | |
| $var[aaa] | |
| ^if(1){ | |
| ^tcrashlocaljunctions1[] | |
| } | |
| $j | |
| @tcrashlocaljunctions1[][var] | |
| $var[varvalue] | |
| $j{ | |
| $var | |
| } | |
| $j | |
| @tjunctions[][tl] | |
| $t[^t::create[]] | |
| ^tjunctionsi[] | |
| @tjunctionsi[][tl] | |
| $tl[12345] | |
| ^t.tjunctionsm[ | |
| $.key{ | |
| $tl | |
| } | |
| ] | |
| @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{<?xml version="1.0" encoding="windows-1251" ?><d/>}] | |
| $xdoc.nodeName | |
| ^xdoc.selectNumber[2*2] | |
| $xdoc:ELEMENT_NODE | |
| @tclasses[] | |
| $t[^t::create[]] | |
| ^t.method[] | |
| <hr> | <hr> |
| OK | ^t.base_method[] |
| @errort[] | |
| ^xdoc::create[a] | |
| #^throw[user;here;this] | |
| @tselectNumber[] | |
| $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет" n="123"/>}] | |
| ^d.selectString[string(d/@attr)]<br> | |
| ^d.selectNumber[2*2]<br> | |
| ^d.selectNumber[number(/d/@n)+1]<br> | |
| @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<br>} | |
| @transparams[] | |
| $idoc[^xdoc::create{<?xml version="1.0" ?><doc/>}] | |
| $odoc[^idoc.transform[global.xsl; | |
| $.param1['1'] | |
| $.param2['2'] | |
| ]] | |
| <pre>^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[]<br> | |
| ^for[i](1;12){ | |
| ^d.roll[month](-1) ^d.sql-string[]<br> | |
| } | |
| @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{<forgot?>} 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[]<br> | |
| ^d.roll[day](+365*3+1) ^d.sql-string[]<br> | |
| @rolls[] | |
| $d[^date::create(2002;4;4)] | |
| ^d.sql-string[]<br> | |
| ^for[i](1;7){ | |
| ^d.roll[day](-1) | |
| ^d.sql-string[]<br> | |
| } | |
| <hr> | |
| $d[^date::create(2002;3;28)] | |
| ^d.sql-string[]<br> | |
| ^for[i](1;7){ | |
| ^d.roll[day](+1) | |
| ^d.sql-string[]<br> | |
| } | |
| <hr> | |
| $d[^date::create(2002;12;3)] | |
| ^d.sql-string[]<br> | |
| ^for[i](1;14){ | |
| ^d.roll[day](-1) | |
| ^d.sql-string[]<br> | |
| } | |
| <hr> | |
| $d[^date::create(2002;10;19)] | |
| ^d.sql-string[]<br> | |
| ^for[i](1;14){ | |
| ^d.roll[day](+1) | |
| ^d.sql-string[]<br> | |
| } | |
| @exceptions1[] | @exceptions1[] |
| ^try{ | ^try{ |
| aaa | aaa |
| ^throw[user;paf;is stupid] | ^throw[custom1;paf;is stupid] |
| }{ | }{ |
| $exception.handled(1) | ^if($exception.type eq custom1){ |
| #^throw[$exception] | # $exception.handled(1) |
| type=$exception.type<br> | ^throw[$exception] |
| source=$exception.source<br> | type=$exception.type<br> |
| file=$exception.file<br> | source=$exception.source<br> |
| lineno=$exception.lineno<br> | file=$exception.file<br> |
| comment=$exception.comment<br> | lineno=$exception.lineno<br> |
| comment=$exception.comment<br> | |
| } | |
| } | } |
| @locate_by_expr[] | @locate_by_expr[] |
| Line 144 $t[^table::create{a b | Line 534 $t[^table::create{a b |
| @execlangs[] | @execlangs[] |
| $f[^file::exec[test.pl]] | $f[^file::exec[test.pl]] |
| err:$f.stderr<br> | |
| ^process{$f.text} | ^process{$f.text} |
| #$c[^t.columns[]] | #$c[^t.columns[]] |
| #^c.menu{ | #^c.menu{ |
| #* $c.column<br> | #* $c.column<br> |
| #} | #} |
| =$t.c= | c:$t.c<br> |
| @tobjeresult[] | @tobjeresult[] |
| ^table::create{a | ^table::create{a |