forked from glen/fostr
Glen Whitney
804a00902a
Caveat: type is still not being assigned for the Sequence() constructor. Also fixes the parsing of literal strings (whitespace just after the opening quote was being ignored, and was ambiguous just before the opening quote).
33 lines
824 B
Plaintext
33 lines
824 B
Plaintext
module python
|
|
imports libstrategolib signatures/- util
|
|
rules
|
|
|
|
py: TopLevel(x) -> $[import sys
|
|
class StdioC:
|
|
def gets(self, v):
|
|
print(v, file=sys.stdout, end='')
|
|
return self
|
|
def to(data,strm):
|
|
strm.gets(data)
|
|
return data
|
|
Stdio = StdioC()
|
|
[x]]
|
|
|
|
py: Stream() -> $[Stdio]
|
|
py: Int(x) -> x
|
|
py: LitString(x) -> $[r[x]]
|
|
py: Sum(x,y) -> $[[x] + [y]]
|
|
py: Gets(x, y) -> $[[x].gets([y])]
|
|
py: To(x, y) -> $[to([x],[y])]
|
|
py: Terminate(x) -> $[[x];]
|
|
py: Sequence(l) -> <join(|"\n")>l
|
|
|
|
strategies
|
|
|
|
python = bottomup(try(py))
|
|
|
|
// Interface python code generation with editor services and file system
|
|
to-python: (selected, _, _, path, project-path) -> (filename, result)
|
|
with filename := <guarantee-extension(|"py")> path
|
|
; result := <python> selected
|