mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-05 22:38:44 +00:00
490 lines
5.7 KiB
Text
490 lines
5.7 KiB
Text
IMPORT ("Std")
|
|
PUBLIC ("main")
|
|
EXTERN ("Llowercase")
|
|
EXTERN ("Luppercase")
|
|
EXTERN ("LtagHash")
|
|
EXTERN ("LflatCompare")
|
|
EXTERN ("LcompareTags")
|
|
EXTERN ("LkindOf")
|
|
EXTERN ("Ltime")
|
|
EXTERN ("Lrandom")
|
|
EXTERN ("LdisableGC")
|
|
EXTERN ("LenableGC")
|
|
EXTERN ("Ls__Infix_37")
|
|
EXTERN ("Ls__Infix_47")
|
|
EXTERN ("Ls__Infix_42")
|
|
EXTERN ("Ls__Infix_45")
|
|
EXTERN ("Ls__Infix_43")
|
|
EXTERN ("Ls__Infix_62")
|
|
EXTERN ("Ls__Infix_6261")
|
|
EXTERN ("Ls__Infix_60")
|
|
EXTERN ("Ls__Infix_6061")
|
|
EXTERN ("Ls__Infix_3361")
|
|
EXTERN ("Ls__Infix_6161")
|
|
EXTERN ("Ls__Infix_3838")
|
|
EXTERN ("Ls__Infix_3333")
|
|
EXTERN ("Ls__Infix_58")
|
|
EXTERN ("Li__Infix_4343")
|
|
EXTERN ("Lcompare")
|
|
EXTERN ("Lwrite")
|
|
EXTERN ("Lread")
|
|
EXTERN ("Lfailure")
|
|
EXTERN ("Lfexists")
|
|
EXTERN ("Lfwrite")
|
|
EXTERN ("Lfread")
|
|
EXTERN ("Lfclose")
|
|
EXTERN ("Lfopen")
|
|
EXTERN ("Lfprintf")
|
|
EXTERN ("Lprintf")
|
|
EXTERN ("LmakeString")
|
|
EXTERN ("Lsprintf")
|
|
EXTERN ("LregexpMatch")
|
|
EXTERN ("Lregexp")
|
|
EXTERN ("Lsubstring")
|
|
EXTERN ("LmatchSubString")
|
|
EXTERN ("Lstringcat")
|
|
EXTERN ("LreadLine")
|
|
EXTERN ("Ltl")
|
|
EXTERN ("Lhd")
|
|
EXTERN ("Lsnd")
|
|
EXTERN ("Lfst")
|
|
EXTERN ("Lhash")
|
|
EXTERN ("Lclone")
|
|
EXTERN ("Llength")
|
|
EXTERN ("Lstring")
|
|
EXTERN ("LmakeArray")
|
|
EXTERN ("LstringInt")
|
|
EXTERN ("global_sysargs")
|
|
EXTERN ("Lsystem")
|
|
EXTERN ("LgetEnv")
|
|
EXTERN ("Lassert")
|
|
LABEL ("main")
|
|
BEGIN ("main", 2, 4, [], [], [])
|
|
SLABEL ("L1")
|
|
LINE (3)
|
|
CALL ("Lread", 0, false)
|
|
LINE (1)
|
|
ST (Global ("n"))
|
|
DROP
|
|
CONST (3)
|
|
DUP
|
|
SLABEL ("L11")
|
|
DROP
|
|
DUP
|
|
ST (Local (0))
|
|
DROP
|
|
DROP
|
|
SLABEL ("L13")
|
|
LINE (6)
|
|
LD (Local (0))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L14")
|
|
JMP ("L7")
|
|
SLABEL ("L12")
|
|
JMP ("L7")
|
|
LABEL ("L7")
|
|
CONST (3)
|
|
DUP
|
|
SLABEL ("L20")
|
|
DROP
|
|
DUP
|
|
ST (Local (0))
|
|
DROP
|
|
DROP
|
|
SLABEL ("L22")
|
|
LINE (11)
|
|
LD (Local (0))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L23")
|
|
SLABEL ("L21")
|
|
JMP ("L17")
|
|
LABEL ("L17")
|
|
CONST (3)
|
|
DUP
|
|
SLABEL ("L29")
|
|
DROP
|
|
DUP
|
|
ST (Local (0))
|
|
DROP
|
|
DROP
|
|
SLABEL ("L31")
|
|
LINE (15)
|
|
LD (Local (0))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L32")
|
|
SLABEL ("L30")
|
|
JMP ("L26")
|
|
LABEL ("L26")
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
SEXP ("A", 3)
|
|
DUP
|
|
SLABEL ("L44")
|
|
DUP
|
|
TAG ("A", 0)
|
|
CJMP ("nz", "L42")
|
|
LABEL ("L43")
|
|
DROP
|
|
JMP ("L41")
|
|
LABEL ("L42")
|
|
DROP
|
|
DROP
|
|
SLABEL ("L46")
|
|
LINE (19)
|
|
CONST (1)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L47")
|
|
JMP ("L35")
|
|
SLABEL ("L45")
|
|
SLABEL ("L52")
|
|
LABEL ("L41")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 3)
|
|
CJMP ("nz", "L50")
|
|
LABEL ("L51")
|
|
DROP
|
|
JMP ("L36")
|
|
LABEL ("L50")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DUP
|
|
ST (Local (0))
|
|
DROP
|
|
DROP
|
|
SLABEL ("L54")
|
|
LINE (20)
|
|
LD (Local (0))
|
|
DUP
|
|
SLABEL ("L60")
|
|
DUP
|
|
TAG ("A", 3)
|
|
CJMP ("nz", "L58")
|
|
LABEL ("L59")
|
|
DROP
|
|
JMP ("L56")
|
|
LABEL ("L58")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
ST (Local (3))
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
ST (Local (2))
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
ST (Local (1))
|
|
DROP
|
|
DROP
|
|
SLABEL ("L62")
|
|
LINE (21)
|
|
LD (Local (3))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LD (Local (2))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LD (Local (1))
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L63")
|
|
SLABEL ("L61")
|
|
JMP ("L35")
|
|
LABEL ("L56")
|
|
FAIL ((20, 24), false)
|
|
JMP ("L35")
|
|
SLABEL ("L55")
|
|
SLABEL ("L53")
|
|
JMP ("L35")
|
|
LABEL ("L36")
|
|
FAIL ((18, 5), false)
|
|
JMP ("L35")
|
|
LABEL ("L35")
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
DUP
|
|
SLABEL ("L83")
|
|
DUP
|
|
TAG ("A", 0)
|
|
CJMP ("nz", "L81")
|
|
LABEL ("L82")
|
|
DROP
|
|
JMP ("L80")
|
|
LABEL ("L81")
|
|
DROP
|
|
DROP
|
|
SLABEL ("L85")
|
|
LINE (26)
|
|
CONST (0)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L86")
|
|
JMP ("L72")
|
|
SLABEL ("L84")
|
|
SLABEL ("L92")
|
|
LABEL ("L80")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 1)
|
|
CJMP ("nz", "L90")
|
|
LABEL ("L91")
|
|
DROP
|
|
JMP ("L89")
|
|
LABEL ("L90")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DROP
|
|
SLABEL ("L94")
|
|
LINE (27)
|
|
CONST (1)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L95")
|
|
JMP ("L72")
|
|
SLABEL ("L93")
|
|
SLABEL ("L101")
|
|
LABEL ("L89")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 2)
|
|
CJMP ("nz", "L99")
|
|
LABEL ("L100")
|
|
DROP
|
|
JMP ("L98")
|
|
LABEL ("L99")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DROP
|
|
SLABEL ("L103")
|
|
LINE (28)
|
|
CONST (2)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L104")
|
|
JMP ("L72")
|
|
SLABEL ("L102")
|
|
SLABEL ("L110")
|
|
LABEL ("L98")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 3)
|
|
CJMP ("nz", "L108")
|
|
LABEL ("L109")
|
|
DROP
|
|
JMP ("L107")
|
|
LABEL ("L108")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DROP
|
|
SLABEL ("L112")
|
|
LINE (29)
|
|
CONST (3)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L113")
|
|
JMP ("L72")
|
|
SLABEL ("L111")
|
|
SLABEL ("L119")
|
|
LABEL ("L107")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 4)
|
|
CJMP ("nz", "L117")
|
|
LABEL ("L118")
|
|
DROP
|
|
JMP ("L116")
|
|
LABEL ("L117")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (3)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DROP
|
|
SLABEL ("L121")
|
|
LINE (30)
|
|
CONST (4)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L122")
|
|
JMP ("L72")
|
|
SLABEL ("L120")
|
|
SLABEL ("L127")
|
|
LABEL ("L116")
|
|
DUP
|
|
DUP
|
|
TAG ("A", 5)
|
|
CJMP ("nz", "L125")
|
|
LABEL ("L126")
|
|
DROP
|
|
JMP ("L73")
|
|
LABEL ("L125")
|
|
DUP
|
|
CONST (0)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (1)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (2)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (3)
|
|
ELEM
|
|
DROP
|
|
DUP
|
|
CONST (4)
|
|
ELEM
|
|
DROP
|
|
DROP
|
|
DROP
|
|
SLABEL ("L129")
|
|
LINE (31)
|
|
CONST (5)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
SLABEL ("L130")
|
|
SLABEL ("L128")
|
|
JMP ("L72")
|
|
LABEL ("L73")
|
|
FAIL ((25, 5), false)
|
|
JMP ("L72")
|
|
LABEL ("L72")
|
|
LINE (32)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CALL ("Llength", 1, false)
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LINE (34)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CONST (0)
|
|
ELEM
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LINE (36)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CONST (1)
|
|
ELEM
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LINE (37)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CONST (2)
|
|
ELEM
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LINE (38)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CONST (3)
|
|
ELEM
|
|
CALL ("Lwrite", 1, false)
|
|
DROP
|
|
LINE (39)
|
|
CONST (1)
|
|
CONST (2)
|
|
CONST (3)
|
|
CONST (4)
|
|
CONST (5)
|
|
SEXP ("A", 5)
|
|
CONST (4)
|
|
ELEM
|
|
CALL ("Lwrite", 1, false)
|
|
SLABEL ("L2")
|
|
END
|