Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
typon-compiler
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
typon
typon-compiler
Commits
77130f16
Commit
77130f16
authored
Jul 07, 2023
by
Tom Niget
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add placeholder implementation for `try` block
parent
b23ce6e3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
0 deletions
+29
-0
trans/transpiler/phases/emit_cpp/function.py
trans/transpiler/phases/emit_cpp/function.py
+11
-0
trans/transpiler/phases/typing/block.py
trans/transpiler/phases/typing/block.py
+18
-0
No files found.
trans/transpiler/phases/emit_cpp/function.py
View file @
77130f16
...
...
@@ -81,3 +81,14 @@ class FunctionVisitor(BlockVisitor):
def
visit_Break
(
self
,
node
:
ast
.
Break
)
->
Iterable
[
str
]:
yield
"break;"
def
visit_Try
(
self
,
node
:
ast
.
Try
)
->
Iterable
[
str
]:
yield
from
self
.
emit_block
(
node
.
inner_scope
,
node
.
body
)
if
node
.
orelse
:
raise
NotImplementedError
(
node
,
"orelse"
)
if
node
.
finalbody
:
raise
NotImplementedError
(
node
,
"finalbody"
)
for
handler
in
node
.
handlers
:
#yield from self.visit(handler)
pass
# todo
trans/transpiler/phases/typing/block.py
View file @
77130f16
...
...
@@ -199,3 +199,21 @@ class ScoperBlockVisitor(ScoperVisitor):
def
visit_Break
(
self
,
node
:
ast
.
Break
):
pass
# TODO: check in loop
def
visit_Try
(
self
,
node
:
ast
.
Try
):
scope
=
self
.
scope
.
child
(
ScopeKind
.
FUNCTION_INNER
)
node
.
inner_scope
=
scope
body_scope
=
scope
.
child
(
ScopeKind
.
FUNCTION_INNER
)
body_visitor
=
ScoperBlockVisitor
(
body_scope
,
self
.
root_decls
)
body_visitor
.
visit_block
(
node
.
body
)
# todo
for
handler
in
node
.
handlers
:
handler_scope
=
scope
.
child
(
ScopeKind
.
FUNCTION_INNER
)
handler_visitor
=
ScoperBlockVisitor
(
handler_scope
,
self
.
root_decls
)
handler_visitor
.
visit_block
(
handler
.
body
)
if
node
.
orelse
:
else_scope
=
scope
.
child
(
ScopeKind
.
FUNCTION_INNER
)
else_visitor
=
ScoperBlockVisitor
(
else_scope
,
self
.
root_decls
)
else_visitor
.
visit_block
(
node
.
orelse
)
if
node
.
finalbody
:
raise
NotImplementedError
(
node
.
finalbody
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment