-
Notifications
You must be signed in to change notification settings - Fork 0
/
esop-syntax-figure.tex
122 lines (113 loc) · 4.34 KB
/
esop-syntax-figure.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
\begin{figure}[h]
$$
\begin{altgrammar}
\expd{}, \e{} &::=& \x{}
\alt \v{}
\alt {\comb {\e{}} {\e{}}}
\alt {\abs {\x{}} {\t{}} {\e{}}}
\alt {\ifexp {\e{}} {\e{}} {\e{}}}
\alt {\doexp {\e{}} {\e{}}}
\\
&\alt& {\letexp {\x{}} {\e{}} {\e{}}}
\alt {\wrongorerror{}}
\alt {\ReflectiveExp{}}
\alt {\NonReflectiveExp{}}
\alt {\MultimethodExp{}}
%\alt {\HintedExp{}}
\alt {\HashMapExp{}}
&\mbox{Expressions} \\
\v{} &::=& \singletonmeta{}
\alt \classvaluemeta{}
\alt {\emptymap{}}
\alt {\const{}}
\alt {\num{}}
\alt {\str{}}
\alt \mapval{}
\alt {\closure {\openv{}} {\abs {\x{}} {\t{}} {\e{}}}}
\alt {\multi {\v{}} {\disptable{}}}
&\mbox{Values} \\
\mapval{} &::=& {\curlymapvaloverright{\v{}}{\v{}}}
&\mbox{Map Values} \\
\constantssyntax{}\\
% \HintedExp{} &::=& \typehintedexpsyntax{}
% &\mbox{Type Hinted Expressions} \\
\HashMapExp{} &::=& \hmapexpressionsyntax{}
&\mbox{Hash Maps} \\
\NonReflectiveExp{} &::=& \nonreflectiveexpsyntax{}
&\mbox{Non-Reflective %Java
Interop} \\
\ReflectiveExp{} &::=& \reflectiveexpsyntax{}
&\mbox{Reflective %Java
Interop} \\
\MultimethodExp{} &::=& \multimethodexpsyntax{}
&\mbox{%Immutable First-Class
Multimethods}
\\%\\ save space...
\s{}, \t{} &::=& \Top
\alt \class{}
\alt {\Value \singletonmeta{}}
\alt {\Unionsplice {\overrightarrow{\t{}}}}
\alt
{\ArrowOne {\x{}} {\t{}}
{\t{}}
{\filterset {\prop{}} {\prop{}}}
{\object{}}}
\\
&\alt& {\HMapgeneric {\mandatory{}} {\absent{}}}
\alt {\MultiFntype{\t{}}{\t{}}}
&\mbox{Types} \\
\auxhmapsyntax{}\\
\singletonallsyntax{}
\\% \\ save space...
\openvsyntax{}\\\\
%\tatypesyntax{}\\\\
\occurrencetypingsyntax{}
%\pathelemsyntax{}\\
\propenvsyntax{}
\\\\
\disptablesyntax{} \\
%\typehintenvsyntax{} \\
\classtableallsyntax{} \\
\classliteralallsyntax{}\\
\classvaluesyntaxentry{}\\
\\
\wrongorerror{} &::=& \wrong{} \alt \errorvalv{}
&\mbox{Wrong or error}
\\
\definedreduction{} &::=& \v{} \alt \wrongorerror{}
&\mbox{Defined reductions}
\\
\polaritymeta{} &::=& \pluspolarityliteral \alt \minuspolarityliteral
&\mbox{Substitution Polarity}
\end{altgrammar}
$$
\caption{Syntax of Terms, Types, Propositions, and Objects}
\end{figure}
\begin{figure}
$$
\begin{array}{lllr}
\Nil &\equiv& {\ValueNil}\\
\True &\equiv& {\ValueTrue}\\
\False &\equiv& {\ValueFalse}\\
\end{array}
$$
\caption{Type abbreviations}
\end{figure}
\begin{figure}
$$
\begin{array}{lllr}
\judgementtwo{\propenv{}}{\e{}}{\t{}} &\equiv&
\judgement{\propenv{}}{\e{}}{\t{}}{\filterset{\thenprop{\prop{}}}{\elseprop{\prop{}}}}{\object{}}
& \text{for some}\ {\thenprop{\prop{}}}, {\elseprop{\prop{}}} \text{and}\ {\object{}}
\\
{\replacefor{\t{}}{\object{}}{\x{}}} &\equiv& {\pluspolarity{\replacefor{\t{}}{\object{}}{\x{}}}}
\\
{\replacefor{\prop{}}{\object{}}{\x{}}} &\equiv& {\pluspolarity{\replacefor{\prop{}}{\object{}}{\x{}}}}
\\
{\replacefor{\filterset{\prop{}}{\prop{}}}{\object{}}{\x{}}} &\equiv& {\pluspolarity{\replacefor{\filterset{\prop{}}{\prop{}}}{\object{}}{\x{}}}}
\\
{\replacefor{\object{}}{\object{}}{\x{}}} &\equiv& {\pluspolarity{\replacefor{\object{}}{\object{}}{\x{}}}}
\end{array}
$$
\caption{Judgment abbreviations}
\end{figure}