summaryrefslogtreecommitdiff
path: root/rules/CC/auto/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'rules/CC/auto/EXPRESSIONS')
-rw-r--r--rules/CC/auto/EXPRESSIONS32
1 files changed, 32 insertions, 0 deletions
diff --git a/rules/CC/auto/EXPRESSIONS b/rules/CC/auto/EXPRESSIONS
new file mode 100644
index 0000000..ac19f7a
--- /dev/null
+++ b/rules/CC/auto/EXPRESSIONS
@@ -0,0 +1,32 @@
+{ "last_list_entry":
+ { "vars": ["list"]
+ , "expression":
+ { "type": "foldl"
+ , "range": {"type": "var", "name": "list"}
+ , "start": null
+ , "body": {"type": "var", "name": "_"}
+ }
+ }
+, "first_list_entry":
+ { "vars": ["list"]
+ , "imports": {"last": "last_list_entry"}
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ [ "list"
+ , { "type": "foldl"
+ , "range": {"type": "var", "name": "list", "default": []}
+ , "start": null
+ , "body":
+ { "type": "if"
+ , "cond": {"type": "var", "name": "$1"}
+ , "then": {"type": "var", "name": "$1"}
+ , "else": [{"type": "var", "name": "_"}]
+ }
+ }
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "last"}
+ }
+ }
+}