Remix编译BSC的BEP20合约出现expected primary expression错误求助
Solidity编译
expected primary expression错误解释及解决方法 报错含义
这是Solidity编译器抛出的典型语法错误,指编译器在报错指向的代码行位置,预期读取到变量、常量、函数调用这类合法的基础可执行表达式,但实际读取到的内容不符合Solidity语法规则,无法完成解析。
常见原因及对应解决方法
结合你使用标准BEP20模板发行代币的场景,该报错基本都是修改模板参数时的语法疏漏导致,按以下优先级排查即可:
- 检查报错行的参数格式是否正确
你需要修改的代币名称、符号属于字符串类型,必须用英文半角双引号包裹,总发行量、小数精度属于数字类型不需要加引号,所有语句末尾必须加英文半角分号。比如正确的写法是:
如果漏了引号、用了中文全角标点、漏了末尾分号,都会触发该报错。string public constant name = "Omega"; string public constant symbol = "OHM"; uint8 public constant decimals = 18; uint256 public constant totalSupply = 1000000 * 10 ** 18; - 检查语法符号是否完整
看报错行前后3行的代码,是否有缺失{、}、(、)这类语法分隔符,有没有误删模板原有代码结构的情况,只需要替换模板中占位的参数内容,不要修改其他代码的结构和符号。 - 检查是否残留模板占位符
部分模板会用{{xxx}}这类标记标注需要替换的位置,如果你没有完全删除占位符的大括号,直接在中间填写内容,编译器无法识别这类自定义标记也会抛出该报错,把占位符完全删除后替换为实际参数即可。
内容的提问来源于stack exchange,提问作者Adam Wetzli
相关产品推荐
相关产品推荐

