OSDN Git Service

Nimpretty reformat. Two-space indentation.
authorSimon Forman <sforman@hushmail.com>
Wed, 14 Sep 2022 16:49:33 +0000 (09:49 -0700)
committerSimon Forman <sforman@hushmail.com>
Wed, 14 Sep 2022 16:49:33 +0000 (09:49 -0700)
implementations/Nim/simplejoy.nim

index 5028b1f..372614d 100644 (file)
@@ -137,11 +137,11 @@ proc next_term(expression: JoyType): (JoyType, JoyType) =
     return item, push_quote(quote, expression)
 
   ]#
-  let el = as_list(expression)  ## JoyListType
-  let ehead = el.head  ## JoyType
-  let eheadl = as_list(ehead)  ## JoyListType
-  let item = eheadl.head  ## JoyType
-  let quote = eheadl.tail  ## JoyListType
+  let el = as_list(expression) ## JoyListType
+  let ehead = el.head ## JoyType
+  let eheadl = as_list(ehead) ## JoyListType
+  let item = eheadl.head ## JoyType
+  let quote = eheadl.tail ## JoyListType
   if quote.isEmpty:
     let t = JoyType(kind: joyList, listVal: el.tail)
     return (item, t)
@@ -160,7 +160,7 @@ proc next_term(expression: JoyType): (JoyType, JoyType) =
 
 
 proc text_to_expression(text: string): JoyType =
-    #[
+  #[
     Convert a string to a Joy expression.
 
     When supplied with a string this function returns a Python datastructure
@@ -171,39 +171,39 @@ proc text_to_expression(text: string): JoyType =
     :rtype: stack
     :raises ParseError: if the parse fails.
     ]#
-    var frame : seq[JoyType] = @[]
-    var stack : seq[seq[JoyType]] = @[]
-    var thing : JoyType
-
-    for tok in text.replace("[", " [ ").replace("]", " ] ").splitWhitespace():
-
-        if tok == "[":
-            stack.add(frame)
-            frame = newSeq[JoyType](0)
-            continue
-
-        if tok == "]":
-            thing = JoyType(kind: joyList, listVal: frame.asList)
-            try:
-                frame = stack.pop()
-            except IndexDefect:
-                raise newException(ParseError, "Extra closing bracket.")
-        elif tok == "true":
-            thing = j_true
-        elif tok == "false":
-            thing = j_false
-        else:
-            try:
-                thing = JoyType(kind: joyInt, intVal: tok.initBigInt)
-            except ValueError:
-                thing = JoyType(kind: joyAtom, atomVal: tok)
-
-        frame.add(thing)
-    
-    if stack.len() != 0:
-        raise newException(ParseError, "Unclosed bracket.")
-
-    JoyType(kind: joyList, listVal: frame.asList)
+  var frame: seq[JoyType] = @[]
+  var stack: seq[seq[JoyType]] = @[]
+  var thing: JoyType
+
+  for tok in text.replace("[", " [ ").replace("]", " ] ").splitWhitespace():
+
+    if tok == "[":
+      stack.add(frame)
+      frame = newSeq[JoyType](0)
+      continue
+
+    if tok == "]":
+      thing = JoyType(kind: joyList, listVal: frame.asList)
+      try:
+        frame = stack.pop()
+      except IndexDefect:
+        raise newException(ParseError, "Extra closing bracket.")
+    elif tok == "true":
+      thing = j_true
+    elif tok == "false":
+      thing = j_false
+    else:
+      try:
+        thing = JoyType(kind: joyInt, intVal: tok.initBigInt)
+      except ValueError:
+        thing = JoyType(kind: joyAtom, atomVal: tok)
+
+    frame.add(thing)
+
+  if stack.len() != 0:
+    raise newException(ParseError, "Unclosed bracket.")
+
+  JoyType(kind: joyList, listVal: frame.asList)
 
 
 #██████╗ ██████╗ ██╗███╗   ██╗████████╗███████╗██████╗
@@ -242,7 +242,8 @@ proc print_stack*(stack: JoyListType): string =
 # ╚═════╝ ╚═════╝ ╚═╝     ╚═╝╚═════╝ ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝╚══════╝
 
 
-proc branch(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyListType, JoyType, JoyMapType) =
+proc branch(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (
+    JoyListType, JoyType, JoyMapType) =
   let (true_body, s0) = pop_list(stack)
   let (false_body, s1) = pop_list(s0)
   let (flag, s2) = pop_bool(s1)
@@ -253,11 +254,13 @@ proc branch(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (J
   # re-wrap one of them in a joytype wrapper.
 
 
-proc clear(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyListType, JoyType, JoyMapType) =
+proc clear(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (
+    JoyListType, JoyType, JoyMapType) =
   return (empty_list.listVal, expression, dictionary)
 
 
-proc concat(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyListType, JoyType, JoyMapType) =
+proc concat(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (
+    JoyListType, JoyType, JoyMapType) =
   let (tos, s0) = pop_list(stack)
   let (second, s1) = pop_list(s0)
   return (push_list((second ++ tos), s1), expression, dictionary)
@@ -276,7 +279,8 @@ proc concat(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (J
 # it looks up in the dictionary.
 
 
-proc joy_eval(sym: string, stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyListType, JoyType, JoyMapType) =
+proc joy_eval(sym: string, stack: JoyListType, expression: JoyType,
+    dictionary: JoyMapType): (JoyListType, JoyType, JoyMapType) =
   case sym
 
   of "add":
@@ -348,11 +352,12 @@ proc joy_eval(sym: string, stack: JoyListType, expression: JoyType, dictionary:
 #    <> ≡ ne
 
 
-proc joy(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyListType, JoyMapType) =
+proc joy(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (
+    JoyListType, JoyMapType) =
   var s = stack
   var d = dictionary
   var e = push_quote(expression, empty_list)
-  var term : JoyType
+  var term: JoyType
 
   while not e.listVal.isEmpty:
     (term, e) = next_term(e)
@@ -373,24 +378,24 @@ proc joy(stack: JoyListType, expression: JoyType, dictionary: JoyMapType): (JoyL
 
 let stack = empty_list.listVal
 let dict = newMap[string, JoyListType]()
-#let exp = text_to_expression("2 3 add 23 mul 45 gt")
-#let exp = text_to_expression("2 3 false [add] [mul] branch")
-#let exp = text_to_expression("2 3 true [add] [mul] branch")
-#let exp = text_to_expression("[add] [mul] concat")
-#let (s,d) = joy(stack, exp, dict)
+ #let exp = text_to_expression("2 3 add 23 mul 45 gt")
+ #let exp = text_to_expression("2 3 false [add] [mul] branch")
+ #let exp = text_to_expression("2 3 true [add] [mul] branch")
+ #let exp = text_to_expression("[add] [mul] concat")
+ #let (s,d) = joy(stack, exp, dict)
 
-#echo print_stack(s)
+ #echo print_stack(s)
 
 var s = stack
 var d = dict
-var exp : JoyType
+var exp: JoyType
 while true:
   try:
     exp = text_to_expression(readLineFromStdin("joy? "))
   except IOError:
     break
   try:
-    (s,d) = joy(s, exp, dict)
+    (s, d) = joy(s, exp, dict)
   except:
     echo getCurrentExceptionMsg()
     echo print_stack(s)
@@ -432,4 +437,4 @@ while true:
 #echo pr_str(a)
 
 
-#text_to_expression("""[] [[]]""")
\ No newline at end of file
+#text_to_expression("""[] [[]]""")