diff --git a/shared/rascal/src/io/json/JSON.rsc b/shared/rascal/src/io/json/JSON.rsc deleted file mode 100644 index 4697c76f..00000000 --- a/shared/rascal/src/io/json/JSON.rsc +++ /dev/null @@ -1,50 +0,0 @@ -@contributor{Vadim Zaytsev - vadim@grammarware.net - SWAT, CWI} -module \syntax::JSON - -import IO; - -layout L = WS; -lexical WS = [\ \n\r\t]* !>> [\ \n\r\t]; - -start syntax Data = BasicType; - -syntax BasicType - = Number - | String - | Boolean - | Array - | Object - | Null - ; - -syntax Number = "-"? Digits ("." Digits)?; -lexical Digits = [0-9]+ !>> [0-9]; - -syntax String = DoubleQuotedString; -lexical DoubleQuotedString = [\"] DQSElement* [\"]; //" -lexical DQSElement = ![\"] | [\\][\"] ; //" - -syntax Boolean = "false" | "true" ; - -syntax Array = "[" {BasicType ","}* "]"; - -syntax Object = "{" {KeyValue ","}* "}"; -syntax KeyValue = BasicType ":" BasicType; - -syntax Null = "null" ; - -data JSO - = jsnumber(real n) - | jsstring(str s) - | jsboolean(bool b) - | jsarray(list[JSO] xs) - | jsobject(map[JSO,JSO] kvs) - | jsnull() - ; - -public void main(list[str] args) -{ - loc src = |cwd:///|+args[0]; - PT = parse(#BasicType,src); - println("Extraction completed."); -} diff --git a/shared/rascal/src/io/json/Parse.rsc b/shared/rascal/src/io/json/Parse.rsc index 77bb4d4e..2f18d194 100644 --- a/shared/rascal/src/io/json/Parse.rsc +++ b/shared/rascal/src/io/json/Parse.rsc @@ -18,22 +18,26 @@ data JSO JSO str2jso(str s) { - PT = parse(#BasicType,trim(s)); + PT = parse(#JSONBasicType,trim(s)); return basic2jso(PT); } -JSO basic2jso(BasicType t) +JSO basic2jso(JSONBasicType t) { //if ((BasicType)`Number v` := PT) //println("numberr!"); switch(t) { - case (BasicType)``: return str2num(""); - case (BasicType)``: return str2str(""); - case (BasicType)``: return str2bool(""); - case (BasicType)``: return arr2array(v); - case (BasicType)``: return obj2object(v); - case (BasicType)``: return jsnull(); + case (JSONBasicType)``: return str2num(""); + case (JSONBasicType)``: return str2str(""); + case (JSONBasicType)``: return str2bool(""); + case (JSONBasicType)``: + return jsarray(arr2array(v)); + //return jsnull(); + case (JSONBasicType)``: + return jsobject(obj2object(v)); + //return jsnull(); + case (JSONBasicType)``: return jsnull(); default: println("dunno"); } @@ -45,8 +49,8 @@ JSO str2str(str s) = jsstring(s); JSO str2bool("true") = jsboolean(true); default JSO str2bool(str s) = jsboolean(false); -list[JSO] arr2array((Array)`[<{BasicType ","}* vs>]`) = [basic2jso(v) | BasicType v <- vs]; -map[JSO,JSO] obj2object((Object)`{<{KeyValue ","}* kvs>}`) = (basic2jso(kv.key):basic2jso(kv.val) | KeyValue kv <- kvs); +list[JSO] arr2array((JSONArray)`[<{JSONBasicType ","}* vs>]`) = [basic2jso(v) | JSONBasicType v <- vs]; +map[JSO,JSO] obj2object((JSONObject)`{<{JSONKeyValue ","}* kvs>}`) = (basic2jso(kv.key):basic2jso(kv.val) | JSONKeyValue kv <- kvs); //| jsarray(list[JSO] xs) // | jsobject(map[JSO,JSO] kvs) diff --git a/shared/rascal/src/io/json/Syntax.rsc b/shared/rascal/src/io/json/Syntax.rsc index 16231515..90b4848f 100644 --- a/shared/rascal/src/io/json/Syntax.rsc +++ b/shared/rascal/src/io/json/Syntax.rsc @@ -4,29 +4,29 @@ module io::json::Syntax layout L = WS; lexical WS = [\ \n\r\t]* !>> [\ \n\r\t]; -start syntax Data = BasicType; - -syntax BasicType - = Number - | String - | Boolean - | Array - | Object - | Null +start syntax JSONData = JSONBasicType; + +syntax JSONBasicType + = JSONNumber + | JSONString + | JSONBoolean + | JSONArray + | JSONObject + | JSONNull ; -syntax Number = "-"? Digits ("." Digits)?; +syntax JSONNumber = "-"? Digits ("." Digits)?; lexical Digits = [0-9]+ !>> [0-9]; -syntax String = DoubleQuotedString; +syntax JSONString = DoubleQuotedString; lexical DoubleQuotedString = [\"] DQSElement* [\"]; //" lexical DQSElement = ![\"] | [\\][\"] ; //" -syntax Boolean = "false" | "true" ; +syntax JSONBoolean = "false" | "true" ; -syntax Array = "[" {BasicType ","}* "]"; +syntax JSONArray = "[" {JSONBasicType ","}* "]"; -syntax Object = "{" {KeyValue ","}* "}"; -syntax KeyValue = BasicType key ":" BasicType val; +syntax JSONObject = "{" {JSONKeyValue ","}* "}"; +syntax JSONKeyValue = JSONBasicType key ":" JSONBasicType val; -syntax Null = "null" ; +syntax JSONNull = "null" ;