Created
February 17, 2017 16:14
-
-
Save DarkDimius/eaed558f58b986ece94d481a1e9a7365 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| meta: | |
| id: tasty | |
| file-extension: tasty | |
| endian: be | |
| seq: | |
| - id: magic | |
| contents: [0x5C, 0xA1, 0xAB, 0x1F] | |
| - id: major_version | |
| type: Nat | |
| - id: minor_version | |
| type: Nat | |
| - id: uuid | |
| size: 16 | |
| - id: name_table_length | |
| type: Nat | |
| - id: name_table | |
| type: NameTable | |
| size: name_table_length.value | |
| - id: sections | |
| type: Section | |
| repeat: eos | |
| types: | |
| Nat: | |
| seq: | |
| - id: groups | |
| type: NatByte | |
| repeat: until | |
| repeat-until: not _.has_next | |
| instances: | |
| last: | |
| value: groups.size - 1 | |
| value: | |
| value: >- | |
| groups[last].value | |
| + (last >= 1 ? (groups[last - 1].value << 7) : 0) | |
| + (last >= 2 ? (groups[last - 2].value << 14) : 0) | |
| + (last >= 3 ? (groups[last - 3].value << 21) : 0) | |
| + (last >= 4 ? (groups[last - 4].value << 28) : 0) | |
| + (last >= 5 ? (groups[last - 5].value << 35) : 0) | |
| + (last >= 6 ? (groups[last - 6].value << 42) : 0) | |
| + (last >= 7 ? (groups[last - 7].value << 49) : 0) | |
| NatByte: | |
| seq: | |
| - id: b | |
| type: u1 | |
| instances: | |
| has_next: | |
| value: (b & 128) == 0 | |
| value: | |
| value: b & 0b0111_1111 | |
| NameTable: | |
| seq: | |
| - id: entries | |
| type: NameT | |
| repeat: eos | |
| NameT: | |
| seq: | |
| - id: type | |
| type: u1 | |
| enum: name_tag | |
| - id: length | |
| type: Nat | |
| - id: body | |
| size: length.value | |
| type: | |
| switch-on: type | |
| cases: | |
| name_tag::utf8 : Name_UTF8 | |
| name_tag::qualified : Name_Qualified | |
| name_tag::signed : Name_Signed | |
| name_tag::expanded : Name_Expanded | |
| name_tag::objectclass : Name_ObjectClass | |
| name_tag::superaccessor: Name_SuperAccessor | |
| name_tag::defaultgetter: Name_Default_Getter | |
| name_tag::shadowed : Name_Shadowed | |
| Name_Ref: | |
| seq: | |
| - id: ref_id | |
| type: Nat | |
| instances: | |
| value: | |
| value: _root.name_table.entries[ref_id.value] | |
| Name_UTF8: | |
| seq: | |
| - id: str | |
| size-eos: true | |
| type: str | |
| encoding: UTF-8 | |
| Name_Qualified: | |
| seq: | |
| - id: qualified_ref | |
| type: Name_Ref | |
| - id: selector_ref | |
| type: Name_Ref | |
| Name_Signed: | |
| seq: | |
| - id: original_nameref | |
| type: Name_Ref | |
| - id: resultsig_nameref | |
| type: Name_Ref | |
| - id: paramsig_name | |
| type: Name_Ref | |
| repeat: eos | |
| Name_Expanded: | |
| seq: | |
| - id: original_nameref | |
| type: Name_Ref | |
| Name_ObjectClass: | |
| seq: | |
| - id: object_nameref | |
| type: Name_Ref | |
| Name_SuperAccessor: | |
| seq: | |
| - id: accessed_nameref | |
| type: Name_Ref | |
| Name_Default_Getter: | |
| seq: | |
| - id: methodname | |
| type: Name_Ref | |
| - id: param_number | |
| type: Name_Ref | |
| Name_Shadowed: | |
| seq: | |
| - id: origial_nameref | |
| type: Name_Ref | |
| Section: | |
| seq: | |
| - id: name | |
| type: Name_Ref | |
| - id: length | |
| type: Nat | |
| - id: data | |
| size: length.value | |
| type: | |
| switch-on: name.value.body.str | |
| cases: | |
| '"ASTs"' : Section_AST | |
| '"Positions"' : Section_AST | |
| Section_AST: | |
| seq: | |
| - id: trees | |
| size-eos: true | |
| enums: | |
| name_tag: | |
| 1: utf8 | |
| 2: qualified | |
| 3: signed | |
| 4: expanded | |
| 5: objectclass | |
| 6: superaccessor | |
| 7: defaultgetter | |
| 8: shadowed | |
| ast_tag: | |
| #costants | |
| 2: unit_const | |
| 3: false_const | |
| 4: true_const | |
| 5: null_const | |
| #flags | |
| 6: private | |
| 7: internal | |
| 8: protected | |
| 9: abstract | |
| 10: final | |
| 11: sealed | |
| 12: case | |
| 13: implicit | |
| 14: lazy | |
| 15: override | |
| 16: inline | |
| 17: static | |
| 18: object | |
| 19: trait | |
| 20: local | |
| 21: synthetic | |
| 22: artifact | |
| 23: mutable | |
| 24: label | |
| 25: field_accessor | |
| 26: case_accessor | |
| 27: covariant | |
| 28: contravariant | |
| 29: scala2x | |
| 30: default_parameterized | |
| 31: in_supercall | |
| 32: stable | |
| #types | |
| 64: shared | |
| 65: termref_direct | |
| 66: typeref_direct | |
| 67: termref_pkg | |
| 68: typeref_pkg | |
| 69: rec_this | |
| 70: byte_const | |
| 71: short_const | |
| 72: char_const | |
| 73: int_const | |
| 74: long_const | |
| 75: float_const | |
| 76: double_const | |
| 77: string_const | |
| 78: imported | |
| 79: renamed | |
| # trees | |
| 112: ident | |
| 113: ident_tpt | |
| 114: select | |
| 115: select_tpt | |
| 116: termref_symbol | |
| 117: termref | |
| 118: typeref_symbol | |
| 119: typeref | |
| 120: selfdef | |
| # skip | |
| 128: package | |
| 129: valdef | |
| 130: defdef | |
| 131: typedef | |
| 132: import | |
| 133: typeparam | |
| 134: params | |
| #skip | |
| 136: param | |
| 137: apply | |
| 138: typeapply | |
| 139: typed | |
| 140: namedarg | |
| 141: assign | |
| 142: block | |
| 143: if | |
| 144: lambda | |
| 145: match | |
| 146: return | |
| 147: try | |
| 148: inlined | |
| 149: repeated | |
| 150: bind | |
| 151: alternative | |
| 152: unapply | |
| 153: annotated_type | |
| 154: annotated_tpt | |
| 155: casedef | |
| 156: template | |
| 157: super | |
| 158: super_type | |
| 159: refiend_type | |
| 160: refined_tpt | |
| 161: applied_type | |
| 162: applied_tpt | |
| 163: typebounds | |
| 164: typeboundstpt | |
| 165: typealias | |
| 166: and_type | |
| 167: and_tpt | |
| 168: or_type | |
| 169: or_tpt | |
| 170: method_type | |
| 171: poly_type | |
| 172: poly_tpt | |
| 173: param_type | |
| 174: annotation |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment