用于元编程处理的 m4 犯罪(八十二十新闻)

主要观点:6 月曾尝试在 Processing 4 中运行功能性 UI 的大爆炸模型,因 Processing 使用的 Java 方言早于Java Records (JEP395),所以创造性地使用m4)作为预处理器,生成的宏可将特定代码片段转换为另一种形式。
关键信息:时间为 2024 年 7 月 22 日周一 07:21 EDT;Processing 相关情况;m4 作为预处理器;宏的具体转换内容等。
重要细节:宏的具体定义和代码形式,如_record等相关定义及转换逻辑等。具体如下:

/* -*- mode: java; c-basic-offset: 2 -*- */
changecom(`//')dnl
changequote(`{{',`}}')dnl
dnl);
define({{_record}}, {{class $1 {_record_fields($2,)
  public _record_classname($1)($2) {_record_inits($2,)
  }
$3dnl;
}{{}}}})dnl;
define({{_record_fields}}, {{ifelse({{$#}}, {{1}},, {{
  public final $1;$0(shift($@))}})}})dnl;
define({{_record_inits}}, {{ifelse({{$#}}, {{1}},, {{
    this._record_fieldname({{$1}}) = _record_fieldname({{$1}});$0(shift($@))}})}})dnl;
define({{_record_classname}}, {{regexp({{$1}}, {{^\(\w+\).*$}}, {{\1}})}})dnl;
define({{_record_fieldname}}, {{regexp({{$1}}, {{^.+\s\(\w+\)$}}, {{\1}})}})dnl;
dnl;//---------------------------------------------------------------------------
阅读 17
0 条评论