|A statement has been completed. Write it to the current output text buffer and continue processing the pattern string. If the syntax of the dialect being authored requires an end of statement like ";" then add it. These end of statement characters should not be entered into the pattern strings directly.
|The operation code is followed by the storage offset of an enumeration entry in an external library or language file. Obtain the offset and enter its library-style identifier into the current statement.
|The operation code is followed by a short integer value. Convert the value to string and enter it into the current statement.
|The operation is followed by the offset of the string representation of a long or exact representation constant. Retrieve it, do any dialect specific editing that is needed, and enter it into the current statement.
|The operation is followed by the offset of the string representation or a real constant. Retrieve it, do any dialect specific editing that is needed, and enter it into the current statement.
|The operation is followed by the offset of a character string. Retrieve it and enter it into the current statement surrounded by quotes.
|The operation is followed by the offset of a character string. Retrieve it and enter it as is into the current statement -- i.e., without quotes.
|The operation is followed by the offset of a single-character string. Retrieve it and enter it into the current record surrounded by single or double quotes, depending upon the requirements for character constants in the target dialect.
|The operation is followed by the root offset of a component in an external library. Display the identifier of this component either as a fully qualified identifier (library.class.component) or as a simple identifier depending upon the context of its use in the intermediate code.
|The operation is followed by the root offset of a component in the user code. In cases where a qualified identifier is needed, simplify it depending upon the location of the reference.
|The operation is followed by the root offset of a user code component that is in a different project than the reference. The qualifications that have to be associated with the reference may have to be fully specified.
|The operation increases the logical nesting of the authored code. Write the current record and then increase the margin setting for the following records by the indentation margin width.
|The operation decreases the logical nesting of the authored code. Write the current record and then decrease the margin setting for the following records by the indentation margin width.
|Simply write the current record without associating any language specific end-of-statement characters.
|Flush the string stack -- enter all active entries on the string stack into the output record
|Enter without margin -- write the current record without a margin. The "m" pattern opcodes have a 0,1, or 2 to distinguish #if, #else, and #end; however that is not used in this implementation.
|Write the current record without a new line. This means that the following record written will be concatenated with this record in the final written record.
|Tab to an indicated position -- the "t" pattern code is optionally followed by an integer constant which indicates the absolute character position to which the current record should be tabbed. A value of 0 or no value, simply inserts a tab into the current record.
|Enter a single double quote character into the current record. These pattern codes are tracked by pair by the surface pattern author. If this is a second one entered, the characters after the first one are scanned for double quotes that need to be escaped and if found the language specific conventions are used.
|Enter a single or double quote into the output record depending upon the presence of <% in the current record. This is a special operator used for writing the ends of attribute values for HTML statements within ASP code. It switches between single and double quotes when the language level change.
|The operation is followed is by the offset of a stored resource. The label of that resource is entered into the current record.
|The operation is followed by the root offset of a control whose code needs to be written. First write the current record and then author the code associated with the control.
|The current record contains a comment that needs to be authored as such using the conventions of the target language and the various Select attributes that control the form and spacing of comments.
|The operation code is followed by the root offset of a component whose declaration needs to be authored. Do so and associate any inline comment that follows it with the declaration -- if possible.
|The operation ends the authoring of a control code started by the "B" pattern opcode. If it is followed by a 1 decrement the current indentation nesting level.
|This operation is a specialty operator for writing the arguments to be associated with a direct call to an event handler. The operation scans the code looking for the event handler being call and then determines from its description what the appropriate event arguments are in the target language.
|This operation simply enters two double quotes -- typically indicating an empty string -- into the output record.
|One of the problems faced by the author involves authoring strings with embedded quotes in quoted form. The term for this is "Quote-enclosure". The Qcontext characters are used to control the process which uses special characters called "hard quotes" to distinguish quotes that have to be escaped from quotes that do not. The basic issue is that once the quotes in part of an output string have been escaped, they must not be escaped again. The terminal hard quote of a string then is a blocking quote. The "Qo" operation opens a string to be quoted by entering a blocking hard quote
|This Qcontext operation simple enters a hard quote at the possible end of a string.
|This Qcontext operation removes a terminating hard quote. It is needed for multiple concatenations where the termination expected by the proceeding pattern is now delayed to the end of the current pattern.
|This Qcontext operation ends a string to be quoted. This is where all the work is done. The entire current output record starting at the last blocking quote is searched for soft quotes which are then escaped. When the record is actually written, all hard quotes are displayed as quotes.
|The operation code is followed by the root offset of a component whose binary type display needs to be entered into the current record.
|This specialty operator, replace with comma, is used when possibly indexed assignments must be authored as calls to a Set operation. The current record is checked for an ending right-parenthesis and if present it is removed before a comma is entered into the record.
|This specialty operator, author asp Xml comment, checks the current record to see if it is an ASP include. If not it uses the target language appropriate annotations to make it a comment. If it is an include it then authors using the appropriate markup conventions.
|This operator enters a blank into the current record if it is needed to create a token break -- if the current ending character in the record is an identifier character.
Return previous argument string to the string stack so it may be used again in authoring the next operation pattern. For example
VB6\COM using MSComCtlLib.TabStrip
Set objTab = Me.TabStrip1.Tabs.Add(1, "key1", "Browser")
<Migrate id="ITabs.Add" migPattern="%1d\Nnew TabPage(%5d); %1d.Name=%4d; %2d.Add(%1d)" nPram="6" />
objTab = new TabPage("Browser"); objTab.Name="key1"; this.TabStrip1.TabPages.Add(objTab);
|This operator simply enters a backslash into the current record.