Character-Oriented-Interaction.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
  2. <html>
  3. <!-- Created on November 8, 2012 by texi2html 1.82
  4. texi2html was written by:
  5. Lionel Cons <[email protected]> (original author)
  6. Karl Berry <[email protected]>
  7. Olaf Bachmann <[email protected]>
  8. and many others.
  9. Maintained by: Many creative people.
  10. Send bugs and suggestions to <[email protected]>
  11. -->
  12. <head>
  13. <title>avram - a virtual machine code interpreter: 2.6.4.2 Character Oriented Interaction</title>
  14. <meta name="description" content="avram - a virtual machine code interpreter: 2.6.4.2 Character Oriented Interaction">
  15. <meta name="keywords" content="avram - a virtual machine code interpreter: 2.6.4.2 Character Oriented Interaction">
  16. <meta name="resource-type" content="document">
  17. <meta name="distribution" content="global">
  18. <meta name="Generator" content="texi2html 1.82">
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <style type="text/css">
  21. <!--
  22. a.summary-letter {text-decoration: none}
  23. blockquote.smallquotation {font-size: smaller}
  24. pre.display {font-family: serif}
  25. pre.format {font-family: serif}
  26. pre.menu-comment {font-family: serif}
  27. pre.menu-preformatted {font-family: serif}
  28. pre.smalldisplay {font-family: serif; font-size: smaller}
  29. pre.smallexample {font-size: smaller}
  30. pre.smallformat {font-family: serif; font-size: smaller}
  31. pre.smalllisp {font-size: smaller}
  32. span.roman {font-family:serif; font-weight:normal;}
  33. span.sansserif {font-family:sans-serif; font-weight:normal;}
  34. ul.toc {list-style: none}
  35. -->
  36. </style>
  37. </head>
  38. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  39. <a name="Character-Oriented-Interaction"></a>
  40. <table cellpadding="1" cellspacing="1" border="0">
  41. <tr><td valign="middle" align="left">[<a href="Line-Oriented-Interaction.html#Line-Oriented-Interaction" title="Previous section in reading order"> &lt; </a>]</td>
  42. <td valign="middle" align="left">[<a href="Mixed-Modes-of-Interaction.html#Mixed-Modes-of-Interaction" title="Next section in reading order"> &gt; </a>]</td>
  43. <td valign="middle" align="left"> &nbsp; </td>
  44. <td valign="middle" align="left">[<a href="Virtual-Machine-Specification.html#Virtual-Machine-Specification" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  45. <td valign="middle" align="left">[<a href="Output-From-Interactive-Applications.html#Output-From-Interactive-Applications" title="Up section"> Up </a>]</td>
  46. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Next chapter"> &gt;&gt; </a>]</td>
  47. <td valign="middle" align="left"> &nbsp; </td>
  48. <td valign="middle" align="left"> &nbsp; </td>
  49. <td valign="middle" align="left"> &nbsp; </td>
  50. <td valign="middle" align="left"> &nbsp; </td>
  51. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  52. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  53. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  54. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  55. </tr></table>
  56. <hr size="1">
  57. <a name="Character-Oriented-Interaction-1"></a>
  58. <h4 class="subsubsection">2.6.4.2 Character Oriented Interaction</h4>
  59. <p>A character oriented style of interaction involves the function always
  60. returning a data structure of the form <code>(<var>state</var>,(<var>command
  61. lines</var>,nil))</code>. The <var>state</var> and <var>command lines</var> fields serve
  62. <a name="index-command-line-5"></a>
  63. exactly the same purposes respectively as they do in the case of line
  64. oriented interaction. The field that would be occupied by the
  65. <var>prompt strings</var> list in the case of line oriented interaction is
  66. identically <code>nil</code> in this style.
  67. </p>
  68. <p>When this style is used, <code>avram</code> spawns a process and/or sends
  69. <a name="index-spawning-processes-2"></a>
  70. command lines to it as in the case of line oriented interaction, but
  71. attempts to read only a single character from it per iteration. When the
  72. character is received, <code>avram</code> applies the function to the pair
  73. <code>(<var>state</var>,<var>character</var>)</code> in order to obtain the next state
  74. and the next list of command lines. If the process has terminated, a
  75. <code>nil</code> value is used in place of the character. If the process is
  76. quiescent, deadlock ensues.
  77. </p>
  78. <p>The character oriented style is a lower level protocol that shifts more
  79. of the burden of analyzing the process&rsquo;s output to the virtual code
  80. application. It can do anything line oriented interaction can do except
  81. proceeding immediately without waiting to receive any output from the
  82. process. It may also allow more general criteria (in effect) than the
  83. matching of a fixed prompt string to delimit the received data, for
  84. those pathological processes that may require such things.
  85. </p>
  86. <p>Applications using character oriented interaction need to deal with line
  87. <a name="index-line-breaks"></a>
  88. breaks explicitly among the received characters, unlike the case with
  89. line oriented interaction, where the line breaks are implicit in the
  90. <a name="index-Unix-6"></a>
  91. list of received strings. Contrary to the convention for Unix text
  92. files, line breaks in the output of a process are indicated by character
  93. code 13 followed by character code 10.
  94. </p>
  95. <hr size="1">
  96. <table cellpadding="1" cellspacing="1" border="0">
  97. <tr><td valign="middle" align="left">[<a href="Line-Oriented-Interaction.html#Line-Oriented-Interaction" title="Previous section in reading order"> &lt; </a>]</td>
  98. <td valign="middle" align="left">[<a href="Mixed-Modes-of-Interaction.html#Mixed-Modes-of-Interaction" title="Next section in reading order"> &gt; </a>]</td>
  99. <td valign="middle" align="left"> &nbsp; </td>
  100. <td valign="middle" align="left">[<a href="Virtual-Machine-Specification.html#Virtual-Machine-Specification" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  101. <td valign="middle" align="left">[<a href="Output-From-Interactive-Applications.html#Output-From-Interactive-Applications" title="Up section"> Up </a>]</td>
  102. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Next chapter"> &gt;&gt; </a>]</td>
  103. <td valign="middle" align="left"> &nbsp; </td>
  104. <td valign="middle" align="left"> &nbsp; </td>
  105. <td valign="middle" align="left"> &nbsp; </td>
  106. <td valign="middle" align="left"> &nbsp; </td>
  107. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  108. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  109. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  110. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  111. </tr></table>
  112. <p>
  113. <font size="-1">
  114. This document was generated on <i>November 8, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
  115. </font>
  116. <br>
  117. </p>
  118. </body>
  119. </html>