Asking Help for Basic ICTL (IndianCoder3/abhinu-dev_basic-ictl) #190925
Replies: 4 comments 9 replies
-
|
Good afternoon! Nice project for a hobby build. GUI library: For a simple interpreter GUI, Pygame or Arcade are solid choices. Pygame has more tutorials and community support. Arcade is cleaner and more modern if you want object-oriented design. Avoid Turtle; it is too slow and limited for anything beyond basic demos. Web editor improvements: |
Beta Was this translation helpful? Give feedback.
-
|
For the GUI library, Pygame is the strongest choice for an interpreter like this since you can map your ICTL commands directly to Pygame draw calls, so users get simple drawing commands while you get full control underneath. Arcade works too and has a cleaner API but Pygame's community is much bigger so finding help is easier. If you want zero extra installs, Tkinter canvas is built into Python and works fine for basic drawing commands, just slower for anything animated. For Monaco specifically since you already have it set up, one thing worth adding is keyboard shortcuts — editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, () => {
runCode();
});Small thing but it makes the editor feel much more polished. |
Beta Was this translation helpful? Give feedback.
-
|
Well, if you do correct it, I am grateful if you do make corrections,like litreally if someone goes to search IndianCoder3 on google the article ranks up... also if they dont know if the info is real it makes a bad impression like you can say
…________________________________
From: ytax ***@***.***>
Sent: Saturday, March 28, 2026 3:31 PM
To: community/community ***@***.***>
Cc: IndianCoder3 ***@***.***>; Author ***@***.***>
Subject: Re: [community/community] Asking Help for Basic ICTL (IndianCoder3/abhinu-dev_basic-ictl) (Discussion #190925)
My mistake! I should have checked more carefully before suggesting Monaco.
Since you already have Monaco, here are better targeted improvements:
Monaco specific upgrades:
* Enable IntelliSense/autocomplete for your custom language using Monarch tokenizer
* Add error squiggles by connecting your interpreter's parser to Monaco's marker system
* Implement F5 to run keybinding with visual output panel
* Add line numbers to error messages so Monaco can jump to the problem line
Web editor priorities:
* Actual execution - The editor looks good but does it run the code? I do not see output integration
* Save to GitHub - Since you have the repo, add "Publish to Gist" or commit directly
* Shareable links - Encode programs in URL hash so users can share code snippets
What is your current execution flow? Does the Monaco editor send code to a backend, or is it purely frontend right now?
—
Reply to this email directly, view it on GitHub<#190925?email_source=notifications&email_token=B33EL4OCJSUHKRZSIPLJTN34S6PHLA5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNRTGU2DSMRUUZZGKYLTN5XKMYLVORUG64VFMV3GK3TUVRTG633UMVZF6Y3MNFRWW#discussioncomment-16354924>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/B33EL4OHV2RRTKGMECGNWRL4S6PHLAVCNFSM6AAAAACXC3J72CVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTMMZVGQ4TENA>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
@blaze Thank you for pointing out the issue, would you like to collaborate?
…________________________________
From: Blaze ***@***.***>
Sent: Tuesday, May 12, 2026 12:47 AM
To: community/community ***@***.***>
Cc: IndianCoder3 ***@***.***>; Author ***@***.***>
Subject: Re: [community/community] Asking Help for Basic ICTL (IndianCoder3/abhinu-dev_basic-ictl) (Discussion #190925)
________________________________
Actually went through the source code properly this time so this is based on what's actually in there.
First the impressive stuff — the math engine in math.py is genuinely well built. You implemented a full shunting-yard algorithm with a tokenizer and RPN evaluator from scratch. That's not beginner work at all, most hobby interpreters just call eval() and call it a day. The expression caching with CACHE = {} is a nice touch too.
Found one real bug though in runtime.py. The _last_if_executed variable is a single global which breaks with nested If/Else blocks. Try this:
Program.If(True) {
Program.If(False) {
Terminal.Echo("inner if")
}
Program.Else {
Terminal.Echo("inner else")
}
}
Program.Else {
Terminal.Echo("this should NOT print but it will")
}
The inner Program.If(False) sets _last_if_executed = False, so by the time the outer Program.Else runs it sees False and executes when it shouldn't. The fix is swapping the global for a stack:
_if_stack = []
# in Program.If handler:
_if_stack.append(bool(result))
# in Program.Else handler:
if _if_stack and not _if_stack[-1]:
for item in lines:
run_item(item)
if _if_stack:
_if_stack.pop()
One other small thing in app.py — you're writing all user code to the same temp.ictl file. That works fine for a single user but if two people hit run at the same time they'll overwrite each other. Easy fix is using Python's tempfile module:
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.ictl', delete=False, encoding='utf-8') as f:
f.write(code)
tmp_path = f.name
Overall the project is way more solid than most hobby interpreters. The error handler with caret pointers, the WebSocket streaming, the custom Monaco language definition — all of that is genuinely good work.
________________________________
—
Reply to this email directly, view it on GitHub<#190925 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/B33EL4OLTDAGI7FDCCQUWZD42IRMJAVCNFSM6AAAAACXC3J72CVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTMOBYGMZTGMQ>.
Triage notifications on the go with GitHub Mobile for iOS<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
🏷️ Discussion Type
Question
Body
Good Afternoon, I am IndianCoder3. I have recently made a hobby project: Abhinu.Dev Basic ICTL (Link is https://github.com/IndianCoder3/abhinu-dev_basic-ictl ). So, you can read the README, it's just a basic interpreter I made. What Python Library should I use for making a GUI command category? Like, turtle, or arcade, or anything else. Also, please rate it from 0-10. Also, please help me improve the web editor: https://basic-ictl-web-studio.onrender.com/
Thank you
Guidelines
Beta Was this translation helpful? Give feedback.
All reactions