fixed some build file flaws
This commit is contained in:
75
samples/hawk02.c
Normal file
75
samples/hawk02.c
Normal file
@ -0,0 +1,75 @@
|
||||
#include <hawk-std.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
static const hawk_bch_t* src =
|
||||
"BEGIN {"
|
||||
" for (i=2;i<=9;i++)"
|
||||
" {"
|
||||
" for (j=1;j<=9;j++)"
|
||||
" print i \"*\" j \"=\" i * j;"
|
||||
" print \"---------------------\";"
|
||||
" }"
|
||||
"}";
|
||||
|
||||
int main ()
|
||||
{
|
||||
hawk_t* hawk = HAWK_NULL;
|
||||
hawk_rtx_t* rtx = HAWK_NULL;
|
||||
hawk_val_t* retv;
|
||||
hawk_parsestd_t psin[2];
|
||||
int ret;
|
||||
|
||||
hawk = hawk_openstd(0, HAWK_NULL); /* create a hawk instance */
|
||||
if (!hawk)
|
||||
{
|
||||
fprintf (stderr, "ERROR: cannot open hawk\n");
|
||||
ret = -1; goto oops;
|
||||
}
|
||||
|
||||
/* set up source script file to read in */
|
||||
memset (&psin, 0, HAWK_SIZEOF(psin));
|
||||
psin[0].type = HAWK_PARSESTD_BCS; /* specify the first script path */
|
||||
psin[0].u.bcs.ptr = (hawk_bch_t*)src;
|
||||
psin[0].u.bcs.len = hawk_count_bcstr(src);
|
||||
psin[1].type = HAWK_PARSESTD_NULL; /* indicate the no more script to read */
|
||||
|
||||
ret = hawk_parsestd(hawk, psin, HAWK_NULL); /* parse the script */
|
||||
if (ret <= -1)
|
||||
{
|
||||
hawk_logbfmt (hawk, HAWK_LOG_STDERR, "ERROR(parse): %js\n", hawk_geterrmsg(hawk));
|
||||
ret = -1; goto oops;
|
||||
}
|
||||
|
||||
/* create a runtime context needed for execution */
|
||||
rtx = hawk_rtx_openstd (
|
||||
hawk,
|
||||
0,
|
||||
HAWK_T("hawk02"),
|
||||
HAWK_NULL, /* stdin */
|
||||
HAWK_NULL, /* stdout */
|
||||
HAWK_NULL /* default cmgr */
|
||||
);
|
||||
if (!rtx)
|
||||
{
|
||||
hawk_logbfmt (hawk, HAWK_LOG_STDERR, "ERROR(rtx_open): %js\n", hawk_geterrmsg(hawk));
|
||||
ret = -1; goto oops;
|
||||
}
|
||||
|
||||
/* execute the BEGIN/pattern-action/END blocks */
|
||||
retv = hawk_rtx_loop(rtx);
|
||||
if (!retv)
|
||||
{
|
||||
hawk_logbfmt (hawk, HAWK_LOG_STDERR, "ERROR(rtx_loop): %js\n", hawk_geterrmsg(hawk));
|
||||
ret = -1; goto oops;
|
||||
}
|
||||
|
||||
/* lowered the reference count of the returned value */
|
||||
hawk_rtx_refdownval (rtx, retv);
|
||||
ret = 0;
|
||||
|
||||
oops:
|
||||
if (rtx) hawk_rtx_close (rtx); /* destroy the runtime context */
|
||||
if (hawk) hawk_close (hawk); /* destroy the hawk instance */
|
||||
return -1;
|
||||
}
|
Reference in New Issue
Block a user