Anarres-Mud-Driver
view release on metacpan or search on metacpan
Compiler/Compiler.xs view on Meta::CPAN
{ "object", L_BASIC_TYPE, { .str = LVAL_OBJECT } },
{ "private", L_TYPE_MODIFIER, { .number = M_PRIVATE } },
{ "protected", L_TYPE_MODIFIER, { .number = M_PROTECTED } },
{ "public", L_TYPE_MODIFIER, { .number = M_PUBLIC } },
{ "return", L_RETURN, LVAL_NONE },
{ "rlimits", L_RLIMITS, LVAL_NONE },
{ "sscanf", L_SSCANF, LVAL_NONE },
{ "string", L_BASIC_TYPE, { .str = LVAL_STRING } },
{ "static", L_TYPE_MODIFIER, { .number = M_STATIC } },
{ "switch", L_SWITCH, LVAL_NONE },
{ "varargs", L_TYPE_MODIFIER, { .number = M_VARARGS } },
// { "virtual", L_TYPE_MODIFIER, { .number = M_VIRTUAL } },
{ "void", L_VOID, { .str = LVAL_VOID } },
{ "while", L_WHILE, LVAL_NONE },
};
MODULE = Anarres::Mud::Driver::Compiler PACKAGE = Anarres::Mud::Driver::Compiler
PROTOTYPES: ENABLE
BOOT:
{
{
SV *sv;
int size;
int i;
size = sizeof(keywords) / sizeof(keywords[0]);
/* Don't put this into Perl-space or it can get fucked with. */
/* One day we might want to allow that. */
amd_kwtab = newHV();
amd_lvaltab = newHV();
for (i = 0; i < size; i++) {
hv_store(amd_kwtab,
keywords[i].keyword, strlen(keywords[i].keyword),
newSViv(keywords[i].token), 0);
if (keywords[i].lval.number) {
sv = newSViv(PTR2IV((void *)(&keywords[i].lval) ));
hv_store(amd_lvaltab,
keywords[i].keyword, strlen(keywords[i].keyword),
sv, 0);
}
}
}
{
/* The parser needs these to build the tree. */
amd_require(_AMD "::Compiler::Type");
amd_require(_AMD "::Compiler::Node");
amd_require(_AMD "::Program");
}
}
Anarres::Mud::Driver::Compiler
new(class)
SV * class
CODE:
RETVAL = Newz(0, RETVAL, 1, struct _amd_parser);
OUTPUT:
RETVAL
int
lex(class, str)
SV * class
char * str
CODE:
test_lexer(str);
RETVAL = 0;
OUTPUT:
RETVAL
int
parse(class, prog, str)
SV * class
SV * prog
char * str
CODE:
amd_yyparser_parse(prog, str);
RETVAL = 0;
OUTPUT:
RETVAL
void
DESTROY(self)
Anarres::Mud::Driver::Compiler self
CODE:
Safefree(self);
( run in 1.176 second using v1.01-cache-2.11-cpan-13bb782fe5a )