Skip to content

Commit 6762a2b

Browse files
stabilized
1 parent 1f81ec7 commit 6762a2b

File tree

8 files changed

+60
-50
lines changed

8 files changed

+60
-50
lines changed

PRODUCTION/stack.lm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,5 +232,12 @@ stack-define-destructure := λ ctx lhs offset . (match lhs (
232232
(set return (expr::set-offset( return (expr::get-offset more-e) )))
233233
return
234234
)))
235+
( Nil (tail(
236+
(local return)
237+
(set return (expr::new()))
238+
(set return (expr::set-context( return ctx )))
239+
(set return (expr::set-offset( return offset )))
240+
return
241+
)))
235242
( u (fail (UnknownStackArg lhs)))
236243
));

STRICT/ast.lm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
3+
type AST ASTNil;
4+
5+
ast-tokenized-program := (: EOF Tokens);
6+
ast-parsed-program := (: ASTNil AST);

STRICT/cli.lm

Lines changed: 20 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import STDLIB/default-primitives.lm;
44
import STDLIB/default-rules.lm;
55
import STDLIB/default-stdlib.lm;
66

7+
import STRICT/ast.lm;
78
import STRICT/utility.lm;
89
import STRICT/tokenize.lm;
910
import STRICT/parse.lm;
@@ -60,61 +61,30 @@ main := λ(: argc U64)(: argv U8[][]).(tail(
6061
()
6162
( SNil (set continue Falseu8) )
6263
( (SCons( rst SNil )) (set input rst) )
63-
( (SCons( rst (SAtom( fp )) )) (tail( (cli-intake fp) (set input rst) )))
64-
( (SAtom( fp )) (tail( (cli-intake fp) (set continue Falseu8) )))
64+
( (SCons( rst (SAtom( fp )) )) (tail( (tokenize fp) (set input rst) )))
65+
( (SAtom( fp )) (tail( (tokenize fp) (set continue Falseu8) )))
6566
)))
6667

67-
68-
# (Compile (
69-
# (parse-program (tokenize-file (head inputs)))
70-
# (set inputs (tail inputs))
71-
# ))
72-
# (Parse (
73-
# (parse-program (tokenize-file (head inputs)))
74-
# (set inputs (tail inputs))
75-
# ))
76-
# (Typecheck (
77-
# (parse-program (tokenize-file (head inputs)))
78-
# (set inputs (tail inputs))
79-
# ))
80-
# (ParseExpression (
81-
# (print-s (parse-expression (tokenize-file (head inputs))))
82-
# (set inputs (tail inputs))
83-
# ))
84-
# (Tokenize (
85-
# (print-s (tokenize-file (head inputs)))
86-
# (set inputs (tail inputs))
87-
# ))
88-
));
89-
90-
cli-intake := λ(: fp U8[]) . (: (tail(
9168
(match config-mode (
9269
()
93-
(ModeTokenize (tail(
94-
(print 'Tokenize:\s_s)
95-
(print fp)
96-
(print '\n_s)
97-
)))
98-
(ModeParse (tail(
99-
(print 'Parse:\s_s)
100-
(print fp)
101-
(print '\n_s)
70+
( ModeTokenize () )
71+
( ModeParse (parse ast-tokenized-program) )
72+
( ModePreprocess (tail(
73+
(parse ast-tokenized-program)
74+
(preprocess ast-parsed-program)
10275
)))
103-
(ModePreprocess (tail(
104-
(print 'Preprocess:\s_s)
105-
(print fp)
106-
(print '\n_s)
76+
( ModeTypecheck (tail(
77+
(parse ast-tokenized-program)
78+
(preprocess ast-parsed-program)
79+
(typecheck())
10780
)))
108-
(ModeTypecheck (tail(
109-
(print 'Typecheck:\s_s)
110-
(print fp)
111-
(print '\n_s)
112-
)))
113-
(ModeCompile (tail(
114-
(print 'Compile:\s_s)
115-
(print fp)
116-
(print '\n_s)
81+
( ModeCompile (tail(
82+
(parse ast-tokenized-program)
83+
(preprocess ast-parsed-program)
84+
(typecheck())
85+
(compile())
11786
)))
11887
))
119-
()
120-
)) Nil);
88+
89+
));
90+

STRICT/codegen.lm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
compile := λ. (: (tail(
3+
()
4+
()
5+
)) Nil);

STRICT/parse.lm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
parse := λ(: fp Tokens). (: (tail(
3+
()
4+
()
5+
)) Nil);

STRICT/preprocess.lm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
preprocess := λ(: program AST). (: (tail(
3+
()
4+
()
5+
)) Nil);

STRICT/tokenize.lm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
type Tokens EOF;
3+
4+
tokenize := λ(: fp U8[]). (: (tail(
5+
()
6+
()
7+
)) Nil);

STRICT/typecheck.lm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
typecheck := λ. (: (tail(
3+
()
4+
()
5+
)) Nil);

0 commit comments

Comments
 (0)