Introduce command PRINTI to print integers

PRINTV prints integers in hexadecimal, PRINTI prints them in signed
decimal. For example:

    PRINTT "Error at line "
    PRINTI __LINE__
    PRINTT "\n"

Signed-off-by: Antonio Niño Díaz <antonio_nd@outlook.com>
This commit is contained in:
Antonio Niño Díaz
2018-02-23 00:16:30 +00:00
parent 3623638be7
commit d243bd04ef
4 changed files with 28 additions and 10 deletions

View File

@@ -791,7 +791,8 @@ These three instructions type text and values to stdout. Useful for debugging
<div class="Bd" style="margin-left: 5.00ex;">
<pre class="Li">
PRINTT &quot;I'm the greatest programmer in the whole wide world\n&quot;
PRINTV (2+3)/5
PRINTI (2 + 3) / 5
PRINTV $FF00 + $F0
PRINTF MUL(3.14, 3987.0)
</pre>
</div>
@@ -799,9 +800,11 @@ PRINTF MUL(3.14,3987.0)
<dt class="It-inset"><a class="selflink" href="#PRINTT"><b class="Ic" title="Ic" id="PRINTT">PRINTT</b></a></dt>
<dd class="It-inset">prints out a string.</dd>
<dt class="It-inset"><a class="selflink" href="#PRINTV"><b class="Ic" title="Ic" id="PRINTV">PRINTV</b></a></dt>
<dd class="It-inset">prints out an integer value or, as in the example, the
result of a calculation. Unsurprisingly, you can also print out a constant
symbols value.</dd>
<dd class="It-inset">prints out an integer value in hexadecimal or, as in the
example, the result of a calculation. Unsurprisingly, you can also print
out a constant symbols value.</dd>
<dt class="It-inset"><a class="selflink" href="#PRINTI"><b class="Ic" title="Ic" id="PRINTI">PRINTI</b></a></dt>
<dd class="It-inset">prints out a signed integer value.</dd>
<dt class="It-inset"><a class="selflink" href="#PRINTF"><b class="Ic" title="Ic" id="PRINTF">PRINTF</b></a></dt>
<dd class="It-inset">prints out a fixed point value.</dd>
</dl>
@@ -1377,6 +1380,8 @@ The options that OPT can modify are currently: <b class="Sy" title="Sy">b</b>,
<dd class="It-inset"></dd>
<dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTF">PRINTF</a></dt>
<dd class="It-inset"></dd>
<dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTI">PRINTI</a></dt>
<dd class="It-inset"></dd>
<dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTT">PRINTT</a></dt>
<dd class="It-inset"></dd>
<dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTV">PRINTV</a></dt>

View File

@@ -504,7 +504,7 @@ static void updateUnion(void)
%token <tzSym> T_POP_SET
%token <tzSym> T_POP_EQUS
%token T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV
%token T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV T_POP_PRINTI
%token T_POP_IF T_POP_ELIF T_POP_ELSE T_POP_ENDC
%token T_POP_IMPORT T_POP_EXPORT T_POP_GLOBAL
%token T_POP_DB T_POP_DS T_POP_DW T_POP_DL
@@ -648,6 +648,7 @@ simple_pseudoop : include
| printf
| printt
| printv
| printi
| if
| elif
| else
@@ -933,6 +934,13 @@ printv : T_POP_PRINTV const
}
;
printi : T_POP_PRINTI const
{
if (nPass == 1)
printf("%d", $2);
}
;
printf : T_POP_PRINTF const
{
if (nPass == 1)

View File

@@ -368,6 +368,7 @@ const struct sLexInitString lexer_strings[] = {
{"include", T_POP_INCLUDE},
{"printt", T_POP_PRINTT},
{"printi", T_POP_PRINTI},
{"printv", T_POP_PRINTV},
{"printf", T_POP_PRINTF},
{"export", T_POP_EXPORT},

View File

@@ -660,7 +660,8 @@ some important information.
.Pp
.Bd -literal -offset indent
PRINTT \[dq]I'm the greatest programmer in the whole wide world\[rs]n\[dq]
PRINTV (2+3)/5
PRINTI (2 + 3) / 5
PRINTV $FF00 + $F0
PRINTF MUL(3.14, 3987.0)
.Ed
.Pp
@@ -668,8 +669,10 @@ PRINTF MUL(3.14,3987.0)
.It Ic PRINTT
prints out a string.
.It Ic PRINTV
prints out an integer value or, as in the example, the result of a calculation.
Unsurprisingly, you can also print out a constant symbols value.
prints out an integer value in hexadecimal or, as in the example, the result of
a calculation. Unsurprisingly, you can also print out a constant symbols value.
.It Ic PRINTI
prints out a signed integer value.
.It Ic PRINTF
prints out a fixed point value.
.El
@@ -1068,6 +1071,7 @@ machine.
.It Sx POPO
.It Sx POPS
.It Sx PRINTF
.It Sx PRINTI
.It Sx PRINTT
.It Sx PRINTV
.It Sx PURGE