(* Title: HOL/ex/Antiquote.thy
Author: Markus Wenzel, TU Muenchen
*)
section \<open>Antiquotations\<close>
theory Antiquote
imports Main
begin
text \<open>A simple example on quote / antiquote in higher-order abstract syntax.\<close>
definition var :: "'a \ ('a \ nat) \ nat" ("VAR _" [1000] 999)
where "var x env = env x"
definition Expr :: "(('a \ nat) \ nat) \ ('a \ nat) \ nat"
where "Expr exp env = exp env"
syntax
"_Expr" :: "'a \ 'a" ("EXPR _" [1000] 999)
parse_translation
\<open>[Syntax_Trans.quote_antiquote_tr
\<^syntax_const>\<open>_Expr\<close> \<^const_syntax>\<open>var\<close> \<^const_syntax>\<open>Expr\<close>]\<close>
print_translation
\<open>[Syntax_Trans.quote_antiquote_tr'
\<^syntax_const>\<open>_Expr\<close> \<^const_syntax>\<open>var\<close> \<^const_syntax>\<open>Expr\<close>]\<close>
term "EXPR (a + b + c)"
term "EXPR (a + b + c + VAR x + VAR y + 1)"
term "EXPR (VAR (f w) + VAR x)"
term "Expr (\env. env x)" \ \improper\
term "Expr (\env. f env)"
term "Expr (\env. f env + env x)" \ \improper\
term "Expr (\env. f env y z)"
term "Expr (\env. f env + g y env)"
term "Expr (\env. f env + g env y + h a env z)"
end
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|