Changes in uspace/app/sbi/src/stree_t.h [38aaacc2:051bc69a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sbi/src/stree_t.h
r38aaacc2 r051bc69a 43 43 typedef struct { 44 44 int sid; 45 struct cspan *cspan; 45 46 } stree_ident_t; 46 47 47 48 /** Name reference */ 48 49 typedef struct { 50 /** Expression backlink */ 51 struct stree_expr *expr; 52 49 53 stree_ident_t *name; 50 54 } stree_nameref_t; 51 52 /** Reference to currently active object. */53 typedef struct {54 } stree_self_ref_t;55 55 56 56 /** Boolean literal */ … … 88 88 /** Literal */ 89 89 typedef struct { 90 /** Expression backlink */ 91 struct stree_expr *expr; 92 90 93 literal_class_t ltc; 91 94 union { … … 98 101 } stree_literal_t; 99 102 103 /** Reference to currently active object. */ 104 typedef struct { 105 /** Expression backlink */ 106 struct stree_expr *expr; 107 } stree_self_ref_t; 108 100 109 /** Binary operation class */ 101 110 typedef enum { … … 108 117 bo_plus, 109 118 bo_minus, 110 bo_mult 119 bo_mult, 120 bo_and, 121 bo_or 111 122 } binop_class_t; 112 123 … … 115 126 uo_plus, 116 127 uo_minus, 128 uo_not 117 129 } unop_class_t; 118 130 119 131 /** Binary operation */ 120 132 typedef struct { 133 /** Expression backlink */ 134 struct stree_expr *expr; 135 121 136 /** Binary operation class */ 122 137 binop_class_t bc; … … 128 143 /** Unary operation */ 129 144 typedef struct { 145 /** Expression backlink */ 146 struct stree_expr *expr; 147 130 148 /** Operation class */ 131 149 unop_class_t uc; … … 137 155 /** New operation */ 138 156 typedef struct { 157 /** Expression backlink */ 158 struct stree_expr *expr; 159 139 160 /** Type of object to construct. */ 140 161 struct stree_texpr *texpr; 162 163 /** Constructor arguments */ 164 list_t ctor_args; /* of stree_expr_t */ 141 165 } stree_new_t; 142 166 143 167 /** Member access operation */ 144 168 typedef struct { 169 /** Expression backlink */ 170 struct stree_expr *expr; 171 145 172 /** Argument */ 146 173 struct stree_expr *arg; … … 151 178 /** Function call operation */ 152 179 typedef struct { 180 /** Expression backlink */ 181 struct stree_expr *expr; 182 153 183 /** Function */ 154 184 struct stree_expr *fun; … … 165 195 /** Assignment */ 166 196 typedef struct { 197 /** Expression backlink */ 198 struct stree_expr *expr; 199 167 200 assign_class_t ac; 168 201 struct stree_expr *dest, *src; … … 171 204 /** Indexing operation */ 172 205 typedef struct { 206 /** Expression backlink */ 207 struct stree_expr *expr; 208 173 209 /** Base */ 174 210 struct stree_expr *base; … … 180 216 /** @c as conversion operation */ 181 217 typedef struct { 218 /** Expression backlink */ 219 struct stree_expr *expr; 220 182 221 /** Expression to convert */ 183 222 struct stree_expr *arg; 223 184 224 /** Destination type of conversion. */ 185 225 struct stree_texpr *dtype; … … 193 233 */ 194 234 typedef struct { 235 /** Expression backlink */ 236 struct stree_expr *expr; 237 195 238 /* Primitive type expression */ 196 239 struct stree_expr *arg; … … 217 260 expr_class_t ec; 218 261 262 /** Type of this expression or @c NULL if not typed yet */ 219 263 struct tdata_item *titem; 264 265 /** Coordinate span */ 266 struct cspan *cspan; 220 267 221 268 union { … … 252 299 /** Type literal */ 253 300 typedef struct { 301 /** Type expression backlink */ 302 struct stree_texpr *texpr; 303 254 304 tliteral_class_t tlc; 255 305 } stree_tliteral_t; … … 257 307 /** Type name reference */ 258 308 typedef struct { 309 /** Type expression backlink */ 310 struct stree_texpr *texpr; 311 259 312 stree_ident_t *name; 260 313 } stree_tnameref_t; … … 262 315 /** Type member access operation */ 263 316 typedef struct { 317 /** Type expression backlink */ 318 struct stree_texpr *texpr; 319 264 320 /** Argument */ 265 321 struct stree_texpr *arg; 322 266 323 /** Name of member being accessed. */ 267 324 stree_ident_t *member_name; … … 270 327 /** Type application operation */ 271 328 typedef struct { 329 /** Type expression backlink */ 330 struct stree_texpr *texpr; 331 272 332 /* Base type */ 273 333 struct stree_texpr *gtype; … … 279 339 /** Type index operation */ 280 340 typedef struct { 341 /** Type expression backlink */ 342 struct stree_texpr *texpr; 343 281 344 /** Base type */ 282 345 struct stree_texpr *base_type; … … 304 367 typedef struct stree_texpr { 305 368 texpr_class_t tc; 369 370 /** Coordinate span */ 371 struct cspan *cspan; 306 372 307 373 union { … … 337 403 } stree_except_t; 338 404 405 /** @c if or @c elif clause */ 406 typedef struct { 407 stree_expr_t *cond; 408 stree_block_t *block; 409 } stree_if_clause_t; 410 339 411 /** If statement */ 340 412 typedef struct { 341 stree_expr_t *cond; 342 stree_block_t *if_block; 413 /** If and elif clauses */ 414 list_t if_clauses; /* of stree_if_clause_t */ 415 416 /** Else block */ 343 417 stree_block_t *else_block; 344 418 } stree_if_t; … … 359 433 stree_expr_t *expr; 360 434 } stree_raise_t; 435 436 /** Break statement */ 437 typedef struct { 438 } stree_break_t; 361 439 362 440 /** Return statement */ … … 384 462 st_for, 385 463 st_raise, 464 st_break, 386 465 st_return, 387 466 st_exps, … … 399 478 stree_for_t *for_s; 400 479 stree_raise_t *raise_s; 480 stree_break_t *break_s; 401 481 stree_return_t *return_s; 402 482 stree_exps_t *exp_s; … … 461 541 } stree_proc_t; 462 542 543 /** Constructor declaration */ 544 typedef struct stree_ctor { 545 /** Constructor 'name'. Points to the @c new keyword. */ 546 stree_ident_t *name; 547 548 /** Symbol */ 549 struct stree_symbol *symbol; 550 551 /** Signature (arguments, return type is always none) */ 552 stree_fun_sig_t *sig; 553 554 /** Constructor implementation */ 555 stree_proc_t *proc; 556 557 /** Type item describing the constructor */ 558 struct tdata_item *titem; 559 } stree_ctor_t; 560 463 561 /** Delegate declaration */ 464 562 typedef struct stree_deleg { … … 476 574 } stree_deleg_t; 477 575 576 /** Enum member */ 577 typedef struct stree_embr { 578 /** Enum containing this declaration */ 579 struct stree_enum *outer_enum; 580 581 /** Enum member name */ 582 stree_ident_t *name; 583 } stree_embr_t; 584 585 /** Enum declaration */ 586 typedef struct stree_enum { 587 /** Enum name */ 588 stree_ident_t *name; 589 590 /** Symbol */ 591 struct stree_symbol *symbol; 592 593 /** List of enum members */ 594 list_t members; /* of stree_embr_t */ 595 596 /** Type item describing the enum */ 597 struct tdata_item *titem; 598 } stree_enum_t; 599 478 600 /** Member function declaration */ 479 601 typedef struct stree_fun { … … 521 643 /** 522 644 * Fake identifiers used with symbols that do not really have one. 523 * (Mostly for error messages.)524 645 */ 646 #define CTOR_IDENT "$ctor" 525 647 #define INDEXER_IDENT "$indexer" 526 648 527 649 typedef enum { 528 650 csimbr_csi, 651 csimbr_ctor, 529 652 csimbr_deleg, 653 csimbr_enum, 530 654 csimbr_fun, 531 655 csimbr_var, … … 539 663 union { 540 664 struct stree_csi *csi; 665 stree_ctor_t *ctor; 541 666 stree_deleg_t *deleg; 667 stree_enum_t *enum_d; 542 668 stree_fun_t *fun; 543 669 stree_var_t *var; … … 587 713 typedef enum { 588 714 /* Class, struct or interface declaration */ 589 mc_csi 715 mc_csi, 716 /* Enum declaration */ 717 mc_enum 590 718 } modm_class_t; 591 719 … … 595 723 union { 596 724 stree_csi_t *csi; 725 stree_enum_t *enum_d; 597 726 } u; 598 727 } stree_modm_t; … … 618 747 /** CSI (class, struct or interface) */ 619 748 sc_csi, 749 /** Constructor */ 750 sc_ctor, 620 751 /** Member delegate */ 621 752 sc_deleg, 753 /** Enum */ 754 sc_enum, 622 755 /** Member function */ 623 756 sc_fun, … … 638 771 union { 639 772 struct stree_csi *csi; 773 stree_ctor_t *ctor; 640 774 stree_deleg_t *deleg; 775 stree_enum_t *enum_d; 641 776 stree_fun_t *fun; 642 777 stree_var_t *var;
Note:
See TracChangeset
for help on using the changeset viewer.