Added constants of type prefix and pair, added their printing
This commit is contained in:
parent
4872cef4df
commit
720d911d77
2 changed files with 10 additions and 1 deletions
|
@ -5,7 +5,7 @@
|
||||||
*
|
*
|
||||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||||
*
|
*
|
||||||
FIXME: constant prefixes, make prefix.ip and prefix.length work
|
FIXME: prefix variables, make prefix.ip and prefix.length work
|
||||||
FIXME: define keyword
|
FIXME: define keyword
|
||||||
FIXME: case without { }'s
|
FIXME: case without { }'s
|
||||||
FIXME: allow px+, px- px^pair in prefix sets
|
FIXME: allow px+, px- px^pair in prefix sets
|
||||||
|
@ -13,6 +13,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: access to dynamic attributes
|
FIXME: access to dynamic attributes
|
||||||
|
FIXME: do not allow function call by callme(1,2,)
|
||||||
|
FIXME: pairs of integers: define compare
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CF_HDR
|
CF_HDR
|
||||||
|
@ -147,6 +149,7 @@ block:
|
||||||
set_atom:
|
set_atom:
|
||||||
NUM { $$.type = T_INT; $$.val.i = $1; }
|
NUM { $$.type = T_INT; $$.val.i = $1; }
|
||||||
| IPA { $$.type = T_IP; $$.val.ip = $1; }
|
| IPA { $$.type = T_IP; $$.val.ip = $1; }
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
set_item:
|
set_item:
|
||||||
|
@ -165,7 +168,9 @@ constant:
|
||||||
| TRUE { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_BOOL; $$->a2.i = 1; }
|
| TRUE { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_BOOL; $$->a2.i = 1; }
|
||||||
| FALSE { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_BOOL; $$->a2.i = 0; }
|
| FALSE { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_BOOL; $$->a2.i = 0; }
|
||||||
| TEXT { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_STRING; $$->a2.p = $1; }
|
| TEXT { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_STRING; $$->a2.p = $1; }
|
||||||
|
| '(' NUM ',' NUM ')' { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_PAIR; $$->a2.i = $2 << 16 | $4; }
|
||||||
| IPA { struct f_val * val; val = cfg_alloc(sizeof(struct f_val)); $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; val->type = T_IP; val->val.ip = $1; }
|
| IPA { struct f_val * val; val = cfg_alloc(sizeof(struct f_val)); $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; val->type = T_IP; val->val.ip = $1; }
|
||||||
|
| IPA '/' NUM { struct f_val * val; val = cfg_alloc(sizeof(struct f_val)); $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; val->type = T_PREFIX; val->val.px.ip = $1; val->val.px.len = $3; printf( "ook, we have prefix here\n" ); }
|
||||||
| '[' set_items ']' { printf( "We've got a set here..." ); $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_SET; $$->a2.p = build_tree($2); printf( "ook\n" ); }
|
| '[' set_items ']' { printf( "We've got a set here..." ); $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_SET; $$->a2.p = build_tree($2); printf( "ook\n" ); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||||
*
|
*
|
||||||
* FIXME: local namespace for functions
|
* FIXME: local namespace for functions
|
||||||
|
*
|
||||||
|
* Notice that pair is stored as integer: first << 16 | second
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -99,6 +101,8 @@ val_print(struct f_val v)
|
||||||
case T_INT: PRINTF( "%d ", v.val.i ); break;
|
case T_INT: PRINTF( "%d ", v.val.i ); break;
|
||||||
case T_STRING: PRINTF( "%s", v.val.s ); break;
|
case T_STRING: PRINTF( "%s", v.val.s ); break;
|
||||||
case T_IP: PRINTF( "%I", v.val.ip ); break;
|
case T_IP: PRINTF( "%I", v.val.ip ); 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_SET: tree_print( v.val.t ); PRINTF( "\n" ); break;
|
case T_SET: tree_print( v.val.t ); PRINTF( "\n" ); break;
|
||||||
default: PRINTF( "[unknown type %x]", v.type );
|
default: PRINTF( "[unknown type %x]", v.type );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue