debugging natural semantics specifications adrian pop and peter fritzson programming environment...
TRANSCRIPT
![Page 1: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/1.jpg)
Debugging Natural Semantics Specifications
Adrian Pop and Peter Fritzson
Programming Environment LaboratoryDepartment of Computer and Information
ScienceLinköping University
2005-09-20
AADEBUG’2005, September 19-21, Monterey, Canada, USA
![Page 2: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/2.jpg)
2
Outline
Introduction Natural Semantics Relational Meta-Language (RML)
The debugging framework for RML Framework overview Emacs integration Data value browser
Demo Conclusions and Future Work
![Page 3: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/3.jpg)
3
Natural Semantics and Relational Meta-Language
Natural Semantics, a formalism widely used for specification of programming language aspects type systems static, dynamic and translational semantics few implementations in real systems
Relational Meta-Language (RML) a system for generating efficient executable code
from Natural Semantics specifications fast learning curve, used in teaching and
specification of languages such as: Java, Modelica, MiniML, Pascal,..
developed by Mikael Petterson “Compiling Natural Semantics” PhD Linköping University
1996 also as Springer Lecture Notes in Computer Science (LNCS)
vol. 1549 in 1999 previously no support for debugging.
![Page 4: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/4.jpg)
4
Natural Semantics
Hi are hypotheses (environments) Ti are terms (pieces of abstract syntax) Ri are results (types, run-time values,
changed environments) Hj |- Tj : Rj are sequents Premises or preconditions are above the line Conclusion is below the line Condition on the side if exists must be
satisfied
![Page 5: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/5.jpg)
5
Natural Semantics vs. Relational Meta–Language
RML has the same visual syntax as Natural Semantics
rule <cond> RelName1(H1,T1) => R1 & ... RelNameN(Hn,Tn) => Rn & ------------------------------ RelName(H, T) => R
RML language properties Separation of input and output arguments/results Statically strongly typed Polymorphic type inference Efficient compilation of pattern-matching
![Page 6: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/6.jpg)
6
Natural Semantics vs. Relational Meta-Language
Natural Semantics formalism Relational Meta-Language
module exp1: (* Abstract syntax of language
Exp1 *) datatype Exp = INTconst of
int | ADDop of Exp * Exp | SUBop of Exp * Exp | MULop of Exp * Exp | DIVop of Exp * Exp | NEGop of Exp relation eval: Exp => intend
integers:
expressions (abstract syntax):
::
| 1 2
| 1 2
| 1* 2
| 1 / 2
|
v Int
e Exp v
e e
e e
e e
e e
e
![Page 7: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/7.jpg)
7
Natural Semantics vs. Relational Meta-Language
Natural Semantics formalism Relational Meta-Language
relation eval: Exp => int =
axiom eval(INTconst(ival)) => ival rule eval(e1) => v1 &
eval(e2) => v2 & v1 + v2 => v3 ------------------------------ eval( ADDop(e1, e2) ) => v3
rule eval(e1) => v1 & eval(e2) => v2 & v1 - v2 => v3 ------------------------------ eval( SUBop(e1, e2) ) => v3
rule eval(e1) => v1 & eval(e2) => v2 & v1 * v2 => v3
------------------------------ eval( MULop(e1, e2) ) => v3
rule eval(e1) => v1 & eval(e2) => v2 & v1 / v2 => v3 ------------------------------ eval( DIVop(e1, e2) ) => v3 rule eval(e) => v & -v => vneg -------------------------- eval( NEGop(e) ) => vnegend (* eval *)
1 1 2 2 v1+v2 v3
1 2 3
1 1 2 2 v1-v2 v3
1 2 3
1 1 2 2 v1*v2 v3
1 2 3
1 1 2 2 v1/v2 v3
1 2 3
-v vneg
(1)
(2)
(3)
(4)
(5)
(6)
e v e v
e e v
e v e v
e e v
e v e v
e e v
e v e v
e e v
e v
e vneg
v v
![Page 8: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/8.jpg)
8
The Need for RML Debugging
Facilitate language learning run, stop and inspect features
Large specifications are hard to debug Example: The OpenModelica compiler for
Modelica 43 packages 57083 lines of code 4054 functions 132 data structures
Also Java 1.2 specification ~18000 lines generating a bytecode compiler
![Page 9: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/9.jpg)
9
The RML Debugging framework
module Dump with “absyn.rml” relation dump: Absyn.Program => () ...
RML AST
FOL AST
Parser
Static Elaboration(Typecheck)AST to FOL
FOL to CPS via Pattern-Matching Compiler
CPS AST
CPS to Code
Code AST
Linking with the RML runtime
ANSI-C
Code to ANSI-C
Executable
The RML compiler phases
Instrumentation withdebug nodes at the ASTlevel
![Page 10: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/10.jpg)
10
The RML Debugging framework Portable debugging
framework based on code instrumentation and a small runtime interface; can be adapted/reused
module Dump with “absyn.rml” relation dump: Absyn.Program => () ...
RML Compiler
ExternalProgramDatabase
Linking with the RML
debugging runtime
ANSI-C
Executablewith
Debugging
RML Data Browser
RML Debugging Emacs Mode
![Page 11: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/11.jpg)
11
Debugger Implementation - Instrumentation
(* Evaluation semantics of Exp1 *)
relation eval: Exp => int =
axiom eval(INTconst(ival)) => ival
rule eval(e1) => v1 &
eval(e2) => v2 &
v1 + v2 => v3
---------------------------
eval( ADDop(e1, e2) ) => v3
...
end (* eval *)
(* Evaluation semantics of Exp1 *)
relation eval: Exp => int =
axiom eval(INTconst(ival)) => ival
rule RML.debug_push_in01("e1",e1) &RML.debug(...) &
eval(e1) => (v1) &RML.debug_push_out01("v1",v1) &RML.debug_push_in01("e2",e2) &RML.debug(...) => () & eval(e2) => (v2) & RML.debug_push_out01("v2",v2) &RML.debug_push_in02("v1",v1,"v2",v2) & RML.debug(...) &RML.int_add(v1,v2) => (v3)
----------------------------------
eval(ADDop(e1,e2)) => (v3)
...
end (* eval *)
![Page 12: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/12.jpg)
12
Debugger Functionality (1)
Breakpoints
Stepping and Running
![Page 13: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/13.jpg)
13
Debugger Functionality (2)
Additional functionality viewing status information printing backtrace
information (stack trace) printing call chain setting debugger defaults getting help
Examining dataprinting variablessending variables to an external browser
![Page 14: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/14.jpg)
14
Browser for RML Data Structures (1)
Current Execution Point
Variable value inspection
![Page 15: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/15.jpg)
15
Browser for RML Data Structures (2)
Data structure browsing
Data structure definition
![Page 16: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/16.jpg)
16
Conclusions and Future work
Conclusions debugging framework for Natural
Semantics based on source code instrumentation Emacs integration data value browser
Future Work debugging enhancements Eclipse IDE integration integration with static equation debugging,
or with dynamic algorithmic debugging
![Page 17: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/17.jpg)
17
Debugger Demo
Demo
![Page 18: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/18.jpg)
18
End
Thank you!Questions?
http://www.ida.liu.se/~pelab/rml
![Page 19: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/19.jpg)
19
Debugger Emacs integration
Emacs integration within GUD mode
Classical debugging facilities breakpoints stack trace data inspection
![Page 20: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/20.jpg)
20
Data Value Browser
Helps the user understand complex datatypes
Shows the execution point
![Page 21: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/21.jpg)
21
Data Value Browser
Helps the user understand complex datatypes
Presents datatype definitions
![Page 22: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/22.jpg)
22
Ideas for Presentation
Natural Semantics/Structured Operational Semantics common for specification of types systems, programming languages
RML is a language with efficient implementation of NS, compiling to C
The current work is first (to our knowledge) debugger for compiled NS
Portable debugging framework based on code instrumentation and a small interface; can be adapted/reused
Automatic mapping from data term to position in program where data was created
Emphasis on practical debugging of large specifications
Future work: Integration with static equation debugging, or with dynamic algorithmic debugging
![Page 23: Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science](https://reader030.vdocument.in/reader030/viewer/2022032516/56649c755503460f949289cf/html5/thumbnails/23.jpg)
23
RML example: the Exp language
Abstract syntax datatype Exp = INTconst of int | PLUSop of Exp * Exp | SUBop of Exp * Exp | MULop of Exp * Exp | DIVop of Exp * Exp | NEGop of Exp
Exp: 10 * 12/3
SUBop
INTconst
DIVop
INTconst INTconst
10 12 3