• Case-Of宏

    Case-Of宏

    在Nim中,可以使用具有 case-of 表达式的语法的宏,区别在于所有分支都传递给宏实现并由宏实现处理。 然后是宏实现将 of-branches 转换为有效的Nim语句。 以下示例应显示如何将此功能用于词法分析器。

    1. import macros
    2.  
    3. macro case_token(args: varargs[untyped]): untyped =
    4. echo args.treeRepr
    5. # 从正则表达式创建词法分析器
    6. # ... (实现留给读者作为练习 ;-)
    7. discard
    8.  
    9. case_token: # 这个冒号告诉解析器它是一个宏语句
    10. of r"[A-Za-z_]+[A-Za-z_0-9]*":
    11. return tkIdentifier
    12. of r"0-9+":
    13. return tkInteger
    14. of r"[\+\-\*\?]+":
    15. return tkOperator
    16. else:
    17. return tkUnknown

    风格注释 :为了代码可读性,最好使用功能最少但仍然足够的编程结构。所以“检查清单”是:

    • 如果可能,请使用普通的proc和iterator。
    • 否则:如果可能,使用泛型的proc和iterator。
    • 否则:如果可能,请使用模板。
    • 否则:使用宏。