WebDSL-Ajax.sdf3
pdmosses/webdsl-statix/webdslstatix/syntax/WebDSL-Ajax.sdf3
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
|
module WebDSL-Ajax
imports
WebDSL-Action
WebDSL-Lexical
WebDSL-UI
WebDSL-Core
context-free sorts
AjaxStatement PlaceholderWithAjaxCall PlaceholderVar
context-free syntax
Statement.AjaxStatement = <
<AjaxStatement> ;
>
AjaxStatement.AjaxReplace = <replace ( <Exp> , <AjaxReplaceTemplateCall> )>
AjaxStatement.AjaxAppend = <append ( <Exp> , <TemplateCall> )>
AjaxStatement.AjaxVisibility = <visibility ( <Exp> , <AjaxVisibility> )>
.Show = <show>
.Toggle = <toggle>
.Hide = <hide>
AjaxStatement.AjaxRelocate = <relocate ( <PageCall> )>
AjaxStatement.AjaxRestyle = <restyle ( <Exp> , <Exp> )>
AjaxStatement.AjaxClear = <clear ( <Exp> )>
AjaxStatement.AjaxRefresh = <refresh ( )>
AjaxStatement.AjaxRunScript = <runscript ( <Exp> )>
context-free syntax
.AjaxReplaceTemplateCall = <<TemplateCall>>
.AjaxReplaceEmpty = <<EmptyLex>>
lexical sorts
EmptyLex
lexical syntax
EmptyLex = "empty"
context-free syntax
ThisCall = <replace ( <Exp> , <AjaxReplaceTemplateCall> )> {reject}
ThisCall = <append ( <Exp> , <TemplateCall> )> {reject}
ThisCall = <visibility ( <Exp> , <AjaxVisibility> )> {reject}
ThisCall = <relocate ( <PageCall> )> {reject}
ThisCall = <restyle ( <Exp> , <Exp> )> {reject}
ThisCall = <clear ( <Exp> )> {reject}
ThisCall = <refresh ( )> {reject}
ThisCall = <runscript ( <Exp> )> {reject}
context-free syntax
.TEPlaceholder = <
<Placeholder>
>
.TEPlaceholderWithAjaxCall = <
<PlaceholderWithAjaxCall>
>
.PlaceholderHtml = <placeholder \< <Id> \> <Id> {
<TemplateElement*>
}>
.PlaceholderHtmlExp = <placeholder \< <Id> \> <Exp> {
<TemplateElement*>
}>
.Placeholder = <placeholder <Id> {
<TemplateElement*>
}>
.PlaceholderExp = <placeholder <Exp> {
<TemplateElement*>
}>
PlaceholderWithAjaxCall.PlaceholderAjaxHtml = <placeholder \< <Id> \> <Id> <TemplateCall>>
PlaceholderWithAjaxCall.PlaceholderAjaxHtmlExp = <placeholder \< <Id> \> <PHExp> <TemplateCall>>
PlaceholderWithAjaxCall.PlaceholderAjax = <placeholder <Id> <TemplateCall>>
PlaceholderWithAjaxCall.PlaceholderAjaxExp = <placeholder <PHExp> <TemplateCall>>
= PlaceholderVar
PlaceholderVar.PlaceholderVar = <placeholdervar <Id>>
lexical syntax
TemplateId = "placeholder" {reject}
TemplateId = "placeholdervar" {reject}
lexical restrictions
"placeholder" -/- [a-zA-Z0-9]
context-free priorities
Placeholder.PlaceholderHtmlExp <4> .> Exp.Var,
Placeholder.PlaceholderExp <1> .> Exp.Var
context-free sorts
context-free syntax
.PHThisCall = ThisCall
.PHCall = <<Exp> . <Id> ( <{Exp ","}*> )>
.PHFieldAccess = <<Exp> . <PropertyId>>
.PHCollectionIndex = <<Exp> [ <Exp> ]>
.PHAdd = <<Exp> + <Exp>>
.PHConst = ConstValue
|