11//JavaScript syntax module
2+
3+ require "json-to-js/js-on-common.k"
4+
25module JS-SYNTAX
6+ imports JS-ON-COMMON
37
48//Program - Ecma262-14 ---------------
59 syntax Program ::= SourceElements //using List causes the listing of .SourceElements
@@ -32,7 +36,7 @@ module JS-SYNTAX
3236
3337//check if works!!
3438 syntax VarDecl ::= Id
35- | Id "=" Expression //!!!!
39+ | Id "=" Expression [strict( 2 )] //!!!!
3640
3741 syntax VarDecls ::= VarDecl
3842 | VarDecls "," VarDecl //List can't be empty
@@ -106,11 +110,9 @@ module JS-SYNTAX
106110//FUNCTIONAPPLICATION!
107111
108112 syntax Literal ::= "this"
109- | "null"
110- | "true"
111- | "false"
112- | Int //check
113- | Float //--precision is off!
113+ | Null
114+ | Bool
115+ | JNumber
114116 | String //check
115117// | RegExp //check
116118
@@ -123,44 +125,6 @@ module JS-SYNTAX
123125
124126 syntax Asgn ::= "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "ˆ=" | "|="
125127
126-
127- //ARRAYNOTATION---------------------
128- //Array Initializer - Ecma262-11.1 .4
129- //--introduces amb with Exp,Exp --find a better way!
130- syntax ArrayLiteral ::= "[" "]"
131- | "[" Elision "]"
132- | "[" ElementList "]"
133- | "[" ElementList "," Elision "]"
134- | "[" ElementList "," "]"
135-
136- syntax ElementList ::= Elision Expression
137- | Expression
138- | ElementList "," Elision Expression
139- | ElementList "," Expression
140-
141- syntax Elision ::= ","
142- | Elision ","
143- //ARRAYNOTATION---------------------
144-
145- //OBJECTNOTATION--------------------
146- //Object Initializer - Ecma262-11.1 .5
147- //check if works!
148- syntax ObjectLiteral ::= "{" "}"
149- | "{" PropertyNameAndValueList "}"
150- | "{" PropertyNameAndValueList "," "}"
151-
152- syntax PropertyNameAndValueList ::= PropertyAssignment
153- | PropertyNameAndValueList "," PropertyAssignment
154-
155- syntax PropertyAssignment ::= PropertyName ":" Expression //Field
156- | "get" PropertyName "(" ")" "{" FuncBody "}" //GetProp
157- | "set" PropertyName "(" Id ")" "{" FuncBody "}" //SetProp
158-
159- syntax PropertyName ::= Id
160- | String
161- | Int | Float
162- //OBJECTNOTATION--------------------
163-
164128//CASEBLOCK-------------------------
165129//The switch Statement - Ecma262-12.11
166130 syntax CaseBlock ::= "{" "}"
0 commit comments