You can now print enum.
This commit is contained in:
parent
4364b47e48
commit
346a12c210
3 changed files with 10 additions and 14 deletions
|
@ -9,6 +9,8 @@
|
||||||
FIXME: whole system of paths, path ~ string, path.prepend(), path.originate
|
FIXME: whole system of paths, path ~ string, path.prepend(), path.originate
|
||||||
FIXME: create community lists
|
FIXME: create community lists
|
||||||
FIXME: write access to dynamic attributes.
|
FIXME: write access to dynamic attributes.
|
||||||
|
FIXME: '! =' should not be permitted. Ze `!=' by nemelo byt totez jako `! =' Nadefinujes si pres %token novy token a do cf-lex.l pridas nove pravidlo, ktere jej rozpoznava. Napriklad != return NEQ;
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CF_HDR
|
CF_HDR
|
||||||
|
@ -29,7 +31,7 @@ CF_KEYWORDS(FUNCTION, PRINT, PRINTN, CONST,
|
||||||
INT, BOOL, IP, PREFIX, PAIR, SET, STRING,
|
INT, BOOL, IP, PREFIX, PAIR, SET, STRING,
|
||||||
IF, THEN, ELSE, CASE,
|
IF, THEN, ELSE, CASE,
|
||||||
TRUE, FALSE,
|
TRUE, FALSE,
|
||||||
RTA, FROM, GW, NET, MASK, RIP_METRIC, RIP_TAG,
|
RTA, FROM, GW, NET, MASK, RIP_METRIC, RIP_TAG, SOURCE,
|
||||||
LEN,
|
LEN,
|
||||||
DEFINED,
|
DEFINED,
|
||||||
IMPOSSIBLE,
|
IMPOSSIBLE,
|
||||||
|
@ -261,13 +263,6 @@ term:
|
||||||
| SYM {
|
| SYM {
|
||||||
$$ = f_new_inst();
|
$$ = f_new_inst();
|
||||||
switch ($1->class) {
|
switch ($1->class) {
|
||||||
case 0: /* This should better be an enum */
|
|
||||||
$$->code = 'c';
|
|
||||||
$$->a1.i = $1->aux;
|
|
||||||
if (($$->a1.i < T_ENUM_LO) || ($$->a1.i > T_ENUM_HI))
|
|
||||||
cf_error("You used symbol and it was not enum.\n");
|
|
||||||
$$->a2.i = (int) $1->aux2;
|
|
||||||
break;
|
|
||||||
case SYM_VARIABLE | T_INT:
|
case SYM_VARIABLE | T_INT:
|
||||||
case SYM_VARIABLE | T_PAIR:
|
case SYM_VARIABLE | T_PAIR:
|
||||||
case SYM_VARIABLE | T_PREFIX:
|
case SYM_VARIABLE | T_PREFIX:
|
||||||
|
@ -284,6 +279,7 @@ term:
|
||||||
|
|
||||||
| RTA '.' GW { $$ = f_new_inst(); $$->code = 'a'; $$->a1.i = T_IP; $$->a2.i = OFFSETOF(struct rta, gw); }
|
| RTA '.' GW { $$ = f_new_inst(); $$->code = 'a'; $$->a1.i = T_IP; $$->a2.i = OFFSETOF(struct rta, gw); }
|
||||||
| RTA '.' NET { $$ = f_new_inst(); $$->code = 'a'; $$->a1.i = T_PREFIX; $$->a2.i = 0x12345678; }
|
| RTA '.' NET { $$ = f_new_inst(); $$->code = 'a'; $$->a1.i = T_PREFIX; $$->a2.i = 0x12345678; }
|
||||||
|
| RTA '.' SOURCE { $$ = f_new_inst(); $$->code = 'a'; $$->a1.i = T_ENUM_RTS; $$->a2.i = OFFSETOF(struct rta, gw); }
|
||||||
|
|
||||||
| RTA '.' any_dynamic { $$ = $3; $$->code = 'ea'; }
|
| RTA '.' any_dynamic { $$ = $3; $$->code = 'ea'; }
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,7 @@ val_print(struct f_val v)
|
||||||
case T_PREFIX: PRINTF( "%I/%d", v.val.px.ip, v.val.px.len ); break;
|
case T_PREFIX: PRINTF( "%I/%d", v.val.px.ip, v.val.px.len ); break;
|
||||||
case T_PAIR: PRINTF( "(%d,%d)", v.val.i >> 16, v.val.i & 0xffff ); break;
|
case T_PAIR: PRINTF( "(%d,%d)", v.val.i >> 16, v.val.i & 0xffff ); break;
|
||||||
case T_SET: tree_print( v.val.t ); PRINTF( "\n" ); break;
|
case T_SET: tree_print( v.val.t ); PRINTF( "\n" ); break;
|
||||||
|
case T_ENUM: PRINTF( "(enum %x)%d", v.type, v.val.i ); break;
|
||||||
default: PRINTF( "[unknown type %x]", v.type );
|
default: PRINTF( "[unknown type %x]", v.type );
|
||||||
}
|
}
|
||||||
printf( buf );
|
printf( buf );
|
||||||
|
|
|
@ -13,8 +13,7 @@ int local1;
|
||||||
int local2;
|
int local2;
|
||||||
int i;
|
int i;
|
||||||
{
|
{
|
||||||
print "Ok";
|
printn "Function callme called arguments " arg1 " and " arg2 ":";
|
||||||
print "Function callme called arguments " arg1 " and " arg2;
|
|
||||||
i = arg2;
|
i = arg2;
|
||||||
|
|
||||||
case arg1 {
|
case arg1 {
|
||||||
|
@ -47,7 +46,7 @@ ip p;
|
||||||
p = 127.1.2.3;
|
p = 127.1.2.3;
|
||||||
print "Testing mask : 127.0.0.0 = " p.mask(8);
|
print "Testing mask : 127.0.0.0 = " p.mask(8);
|
||||||
print "Testing pairs: (1,2) = " (1,2);
|
print "Testing pairs: (1,2) = " (1,2);
|
||||||
#
|
print "Testing enums: " RTS_DUMMY " " RTS_STATIC;
|
||||||
|
|
||||||
print "What will this do? " [ 1, 2, 1, 1, 1, 3, 4, 1, 1, 1, 5 ];
|
print "What will this do? " [ 1, 2, 1, 1, 1, 3, 4, 1, 1, 1, 5 ];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue