Gibt es einen bekannten Hack, der benutzerdefinierte Syntax für Definitionen in einem bestimmten Gebietsschema mithilfe des Syntax-/Übersetzungsmechanismus ermöglicht? Alle meine Versuche einer "offensichtlichen" Lösung erzeugen Typfehler, von denen ich glaube, dass sie dadurch verursacht werden, dass die Syntax/Übersetzung noch nicht "lokalitätsbewusst" ist.Verwenden von Syntax/Übersetzungen mit Gebietsschemas
1
A
Antwort
1
Rohe AST-Transformationen mit syntax
und translations
können nicht innerhalb von Locales in Isabelle2016 verwendet werden. Es gibt eine Problemumgehung für Konstanten und Typen, deren Deklaration nicht von den Ländereinstellungsparametern abhängt. Sie müssen lediglich die Syntaxdeklaration außerhalb der Locale für die entsprechende Konstante aus der Hintergrundtheorie ausgeben. Im Folgenden finden Sie eine Proof of Concept:
locale test = fixes a :: nat begin
definition foo :: "nat ⇒ nat" where "foo x = x"
end
syntax "_foo" :: "nat ⇒ bool" ("FOO")
translations "FOO" ↽ "CONST test.foo"
context test begin
term foo
Diese Problemumgehung funktioniert nicht für Konstanten, die auf Parameter des Lokals ab, weil dann konstant im Hintergrund Theorie dieser Parameter als zusätzliche Argumente übernimmt und das Gebietsschema eine Abkürzung installiert, die wird gefaltet, bevor die benutzerdefinierte Syntaxübersetzung ausgelöst wird.
Verwandte Themen
- 1. Ändern des Gebietsschemas in Qt
- 2. So erhalten Sie eine Liste von Gebietsschemas in .Net
- 3. Werden Java-Compiler für verschiedene Gebietsschemas übersetzt?
- 4. Best Practice für die Handhabung von Gebietsschemas mit Währungen und Sprachumschaltungen
- 5. Android So erhalten Sie die installierten Gebietsschemas des Systems
- 6. Bearbeiten von Gebietsschemas mit einfacher Form, um benutzerdefinierte Fehlermeldungen zu aktivieren
- 7. Wie strukturiere ich Solr-Kerne für mehrere Gebietsschemas und Inhaltstypen?
- 8. Wie lautet der Name des Gebietsschemas für Koreanisch?
- 9. Bevorzugte Vorgehensweise für Gebietsschemas in der Haskell-Plattform
- 10. Verwenden von Log4J mit LogStash
- 11. Verwenden von Trimbox mit ImageMagick
- 12. Verwenden von Neo4j mit Scala
- 13. Verwenden von Daten mit RSQLite
- 14. Verwenden von Layout mit Knitr
- 15. Verwenden von Lambda mit Wörterbüchern
- 16. Verwenden von NSArray mit Monotouch
- 17. Verwenden von AlertBuilder mit Cursors
- 18. Verwenden von ProGuard mit Android
- 19. Verwenden von Git mit Emacs
- 20. Verwenden von Verschlussbibliothek mit jsTestDriver
- 21. Verwenden von Quartz mit Spring
- 22. Verwenden von Zufallszahlen mit GPUs
- 23. Verwenden von FORMDATEN mit Alamofire
- 24. Verwenden von GPUImage mit AVVideoCompositing
- 25. Verwenden von QTQuick mit Haskell
- 26. Verwenden von WinMerge mit Basar
- 27. Verwenden von FOSRestBundle mit Formularen
- 28. Verwenden von gprof mit Pthreads
- 29. Verwenden von open2300 mit Ubuntu
- 30. Verwenden von Transaktionen mit Unterschall
OK, danke. Leider hat die Definition, für die ich eine Syntaxumwandlung durchführen möchte, in meinem Fall einen Typ, der von den Gebietsschema-Parametern abhängt. Ich muss nur auf irgendeine Syntax dafür verzichten. –
Typen können nicht von den lokalen Parametern abhängen. Wenn es also nur darum geht, die gleichen Typvariablen zu verwenden, funktioniert die obige Problemumgehung immer noch. –
Entschuldigung, ja, Sie haben Recht. Ich wollte damit sagen, dass der Typ der betreffenden Definition von den Typvariablen des Gebietsschemas abhängt und die Definition selbst von den Parametern des Gebietsschemas abhängt. –