X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Text%2FParserCombinators%2FParsec%2Fexamples%2Ftiger%2Fmerge.tig;fp=Text%2FParserCombinators%2FParsec%2Fexamples%2Ftiger%2Fmerge.tig;h=0000000000000000000000000000000000000000;hb=6b42ff99c867e8eb18b22d1d50e914f1fc532dd5;hp=330474875759849b3e6a366d24879918689b61f2;hpb=b21d4af465d575d0072ddf97e178e0e9545f77ba;p=ghc-base.git diff --git a/Text/ParserCombinators/Parsec/examples/tiger/merge.tig b/Text/ParserCombinators/Parsec/examples/tiger/merge.tig deleted file mode 100644 index 3304748..0000000 --- a/Text/ParserCombinators/Parsec/examples/tiger/merge.tig +++ /dev/null @@ -1,56 +0,0 @@ -let - - type any = {any : int} - var buffer := getchar() - - function readint(any: any) : int = - let var i := 0 - function isdigit(s : string) : int = - ord(buffer)>=ord("0") & ord(buffer)<=ord("9") - function skipto() = - while buffer=" " | buffer="\n" - do buffer := getchar() - in skipto(); - any.any := isdigit(buffer); - while isdigit(buffer) - do (i := i*10+ord(buffer)-ord("0"); buffer := getchar()); - i - end - - type list = {first: int, rest: list} - - function readlist() : list = - let var any := any{any=0} - var i := readint(any) - in if any.any - then list{first=i,rest=readlist()} - else nil - end - - function merge(a: list, b: list) : list = - if a=nil then b - else if b=nil then a - else if a.first < b.first - then list{first=a.first,rest=merge(a.rest,b)} - else list{first=b.first,rest=merge(a,b.rest)} - - function printint(i: int) = - let function f(i:int) = if i>0 - then (f(i/10); print(chr(i-i/10*10+ord("0")))) - in if i<0 then (print("-"); f(-i)) - else if i>0 then f(i) - else print("0") - end - - function printlist(l: list) = - if l=nil then print("\n") - else (printint(l.first); print(" "); printlist(l.rest)) - - var list1 := readlist() - var list2 := (buffer:=getchar(); readlist()) - - - /* BODY OF MAIN PROGRAM */ - in printlist(merge(list1,list2)) -end -