ppml.txt
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:2k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. PPML control structs. This is intended as a sort of super-NCSA/Apache SSI.
  2. <!--#set var="name" value="value" [type=string|integer]-->
  3. or
  4. <!--#set var="name" [type=string|integer] [scope=local|global]-->
  5. ...value...
  6. <!--#endset-->
  7. <!--#if expr="expression string"-->
  8. ...text...
  9. <!--#elif expr="expression string"-->
  10. ...text...
  11. <!--#else-->
  12. ...text...
  13. <!--#endif-->
  14. <!--#for var="name" start=value end=value step=value-->
  15. ...text...
  16. <!--#next [var="name"]-->
  17. <!--#while expr="expression string"-->
  18. ...text...
  19. <!--#do-->
  20. <!--#repeat-->
  21. ...text...
  22. <!--#until expr="expression string"-->
  23. # Generate an HTTP error code in the output
  24. <!--#status code="value"-->
  25. # Flush (forget about it) all so far generated output
  26. <!--#flush-->
  27. # Stop parsing the file
  28. <!--#stop-->
  29. # Function definitions. Arguments will be available as local variables.
  30. <!--#define procedure="name"-->
  31. <!--#endef-->
  32. # To call a function:
  33. <!--#call procedure="name" [args]-->
  34. or
  35. <!--#name [args]-->
  36. or
  37. <!--#module:name [args]-->
  38. # To print a variable:
  39. <!--#echo var="name"-->
  40. # To include another file:
  41. <!--#include file="fsys path"-->
  42. <!--#include virtual="url path"-->
  43. <!--#exec cmd="fsys path"-->
  44. <!--#exec cgi="url path"-->
  45. <!--#fsize file="fsys path"-->
  46. <!--#fsize virtual="url path"-->
  47. <!--#flastmod file="fsys path"-->
  48. <!--#flastmod virtual="url path"-->
  49. <!--#printenv-->
  50. PPML Module Design:
  51. pm_request():
  52. 1. mmap() the file.
  53. 2. Parse the file include a parse tree (Yacc?)
  54. 3. Execute the parse tree if error-free. Output should probably
  55.    be sent to a temporary file.
  56. 4. Free the parse tree.
  57. 5. Send the output temporary file.
  58. The parse tree shoule probably be cached.