diff --git a/charter-compiler/src/codegen/mod.rs b/charter-compiler/src/codegen/mod.rs index f4036a7..ea28984 100644 --- a/charter-compiler/src/codegen/mod.rs +++ b/charter-compiler/src/codegen/mod.rs @@ -76,8 +76,52 @@ pub enum OpCode { GNACS_ENCODE = 0xE6, GNACS_DECODE = 0xE7, GNACS_VALIDATE = 0xE8, + // ACC 基础代币操作码 ACC20_TRANSFER = 0xEB, ACC20_BALANCE = 0xEF, + ACC20_MINT = 0xA0, + ACC20_BURN = 0xA1, + ACC721_MINT = 0xA2, + ACC721_TRANSFER = 0xA3, + ACC1155_MINT = 0xA4, + ACC1155_TRANSFER = 0xA5, + // RWA 专用操作码 + RWA_REGISTER = 0xD0, + RWA_TRANSFER = 0xD1, + RWA_FREEZE = 0xD2, + RWA_UPDATE_VALUATION = 0xD3, + COMPLIANCE_CHECK = 0xD4, + COMPLIANCE_SEVEN_LAYER = 0xD5, + VALUATION_REQUEST = 0xD6, + VALUATION_GET = 0xD7, + CUSTODY_CREATE = 0xD8, + CUSTODY_TRANSFER = 0xD9, + COLLATERAL_CREATE = 0xDA, + COLLATERAL_LIQUIDATE = 0xDB, + REDEMPTION_REQUEST = 0xDC, + REDEMPTION_COMPLETE = 0xDD, + INSURANCE_ISSUE = 0xDE, + INSURANCE_CLAIM = 0xDF, + GOVERNANCE_PROPOSE = 0xC0, + GOVERNANCE_VOTE = 0xC1, + GOVERNANCE_FINALIZE = 0xC2, + // 稳定币与储备操作码 + XTZH_MINT = 0xC3, + XTZH_BURN = 0xC4, + XTZH_TRANSFER = 0xC5, + XTZH_UPDATE_RATE = 0xC6, + RESERVE_DEPOSIT = 0xC7, + RESERVE_WITHDRAW = 0xC8, + RESERVE_AUDIT = 0xC9, + // 证券代币操作码 + ACC1410_PARTITION = 0xB0, + ACC1410_TRANSFER_BY_PARTITION = 0xB1, + ACC1400_ISSUE = 0xB2, + ACC1400_REDEEM = 0xB3, + ACC1594_DISTRIBUTE = 0xB4, + ACC1643_ADD_DOCUMENT = 0xB5, + ACC1644_FREEZE = 0xB6, + ACC1644_FORCE_TRANSFER = 0xB7, } pub struct CodeGenerator { diff --git a/charter-compiler/src/parser/ast.rs b/charter-compiler/src/parser/ast.rs index 7aec7ed..0b11ae1 100644 --- a/charter-compiler/src/parser/ast.rs +++ b/charter-compiler/src/parser/ast.rs @@ -128,10 +128,30 @@ pub enum TypeAnnotation { GNACSCode, ConstitutionalReceipt, AssetInstance, + // 基础代币协议类型 ACC20, + ACC20Enhanced, ACC721, ACC1155, + ACC20C, + // RWA 专用协议类型 ACCRWA, + ACCCompliance, + ACCValuation, + ACCCustody, + ACCCollateral, + ACCRedemption, + ACCInsurance, + ACCGovernance, + // 稳定币与储备协议类型 + ACCXTZH, + ACCReserve, + // 证券代币协议类型 + ACC1410, + ACC1400, + ACC1594, + ACC1643, + ACC1644, // 数组类型 Array(Box, Option), diff --git a/charter-compiler/src/semantic/mod.rs b/charter-compiler/src/semantic/mod.rs index c8ae3b0..52905a8 100644 --- a/charter-compiler/src/semantic/mod.rs +++ b/charter-compiler/src/semantic/mod.rs @@ -208,8 +208,16 @@ impl SemanticAnalyzer { TypeAnnotation::Bytes | TypeAnnotation::Hash | TypeAnnotation::Timestamp | TypeAnnotation::DID | TypeAnnotation::GNACSCode | TypeAnnotation::ConstitutionalReceipt | TypeAnnotation::AssetInstance | - TypeAnnotation::ACC20 | TypeAnnotation::ACC721 | TypeAnnotation::ACC1155 | - TypeAnnotation::ACCRWA => Ok(()), + TypeAnnotation::ACC20 | TypeAnnotation::ACC20Enhanced | TypeAnnotation::ACC20C | + TypeAnnotation::ACC721 | TypeAnnotation::ACC1155 | + TypeAnnotation::ACCRWA | TypeAnnotation::ACCCompliance | + TypeAnnotation::ACCValuation | TypeAnnotation::ACCCustody | + TypeAnnotation::ACCCollateral | TypeAnnotation::ACCRedemption | + TypeAnnotation::ACCInsurance | TypeAnnotation::ACCGovernance | + TypeAnnotation::ACCXTZH | TypeAnnotation::ACCReserve | + TypeAnnotation::ACC1410 | TypeAnnotation::ACC1400 | + TypeAnnotation::ACC1594 | TypeAnnotation::ACC1643 | + TypeAnnotation::ACC1644 => Ok(()), // 数组类型需要验证元素类型 TypeAnnotation::Array(element_type, _) => self.validate_type(element_type),