Jump to content
Sign in to follow this  
Mat

AutoIt3 Interpreter.

Recommended Posts

Mat

Posted Image

Current version 1.0.2.9 released 09/12/2010 [ view changelog ] [ ]

Beta version 2.0.0.0 released 03/12/2010 [ No changelog ] [ ]

I recently decided to try out ruby, and was very surprised when I saw how they they set out the many advantages of being an interpreted language. Along with the usual reasons, they mentioned how it was shipped with 'interactive ruby', an interpreter. When they gave all the benefits of having an interpreter like this I couldn't resist the oppertunity to make AutoIt one. The result? The AutoIt3 Interpreter, Au3Int for short.

There are lots of things that were a bit of a pain to build in, and so the code is (although short) a bit more long and complex than I would've liked, but there are still a few useful tidbits in there... For example there is finally a good example of using _WinApi_OpenFile and CON, as well as setting the console window title which i've always wanted to do. The screenshot is a few versions out, I had to fix a few bugs, and build a few things in making it a nice and round 1.0.0.20 for the initial release (not least because it still takes a few tries before compiling :idea: )

Posted Image

Project page

Changelog

Downloads

Bug tracker

Mat

Edited by Mat

Share this post


Link to post
Share on other sites
wraithdu

This does what... like a shell for AutoIt (like cmd or PowerShell)? So would let you execute single lines of AutoIt code?

Share this post


Link to post
Share on other sites
MvGulik
whatever Edited by MvGulik

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

Share this post


Link to post
Share on other sites
monoceres

Nice!

However, isn't autoit supposed to be a dynamic language?

This works:

Local $a=10

While does generates some warnign and then gives subscript error:

$a=10

Too bad autoit doesn't support multiline statements in execute.. doesn't make any sense that it doesn't.

I actually made something similar like this with the public autoit source, it wasn't well received :idea:

Ps.

Python have this too!


Broken link? PM me and I'll send you the file!

Share this post


Link to post
Share on other sites
Mat

This does what... like a shell for AutoIt (like cmd or PowerShell)? So would let you execute single lines of AutoIt code?

Yes. But it also does other stuff like allow you to have variables which are kept in memory. Technically you could build a GUI using this (I tried :idea: ).

Any change you got a lingering Au3Int.chm file laying around over there? (just checking)

Not quite yet... I'm working on it. Docs was never my strength.

Nice!

However, isn't autoit supposed to be a dynamic language?

This works:

Local $a=10

While does generates some warnign and then gives subscript error:

$a=10

Too bad autoit doesn't support multiline statements in execute.. doesn't make any sense that it doesn't.

I actually made something similar like this with the public autoit source, it wasn't well received :)

The warning is me unsure you want to test if a=10 or if you want a=10... the default was for an bool to be returned so a built a bit more in as It was annoying, and I'd already told it to throw a warning if you tried to redeclare a variable (although it would reassign it).

You can use the '_' to continue lines if you want... Loops and functions will probably never be there.

The subscript error is the last thing I expected... I will look into it.

Share this post


Link to post
Share on other sites
Mat

Nice!

However, isn't autoit supposed to be a dynamic language?

This works:

Local $a=10

While does generates some warnign and then gives subscript error:

$a=10

Too bad autoit doesn't support multiline statements in execute.. doesn't make any sense that it doesn't.

I actually made something similar like this with the public autoit source, it wasn't well received :idea:

Ps.

Python have this too!

HAHAHAHAHAHA You just hit the jackpot. I was using $a in the script... There I was looking for a bug.

Share this post


Link to post
Share on other sites
monoceres

HAHAHAHAHAHA You just hit the jackpot. I was using $a in the script... There I was looking for a bug.

Heh :idea:

Enforce a name mangling scheme, so this tragedy won't happen again!


Broken link? PM me and I'll send you the file!

Share this post


Link to post
Share on other sites
Mat

Heh :idea:

Enforce a name mangling scheme, so this tragedy won't happen again!

I was going to but never got round to it. Maybe I will now :)

Google code says:

Uploads are temporarily disabled. Please try again Later.

perfect timing.

Share this post


Link to post
Share on other sites
ValeryVal

Fine.

HAHAHAHAHAHA You just hit the jackpot.

I'm too. Try this:

msgbox(0,"",$sInput)

BTW {Up} key allows to get previous command. {Alt-Space} menu is also working and you can insert command from outside very easy.


The point of world view

Share this post


Link to post
Share on other sites
Mat

Download updated. Helpfile is minimal, but has what you need.

A few bugs fixed:

  • 'local $a = 10' will now show a return value of '10' as it should.
  • Variables names are now long and complex so no-one will mess with them.

Edit: That should fix yours too Valery.

Edited by Mat

Share this post


Link to post
Share on other sites
Fire

Awesome!! Thank you very Much Mat


[size="5"] [/size]

Share this post


Link to post
Share on other sites
Mat

Awesome!! Thank you very Much Mat

Fire,

Thanks for the reply, but if you want to post a link to a user just use:

[member='Mat']

and you get:

Mat

Which is much easier than finding out what my user ID is (and it shows the tooltip as 'Member profile' rather than 'External link').

Edited by Mat

Share this post


Link to post
Share on other sites
ValeryVal

What are the advantages of this over normal .au3 scripts?

You can use this

Au3Automation on fly...

:idea:


The point of world view

Share this post


Link to post
Share on other sites
monoceres

What are the advantages of this over normal .au3 scripts?

Usually debugging.


Broken link? PM me and I'll send you the file!

Share this post


Link to post
Share on other sites
JRowe

Share this post


Link to post
Share on other sites
Mat

What are the advantages of this over normal .au3 scripts?

This you can see what's happening step by step, and hence test code without having to do too much.

I hate having to make lots of au3's, as I am not very tidy, and so I have last years ideas that never worked hidden all over the place. With this, I can test a theory without having to have any ode first.

Share this post


Link to post
Share on other sites
Mat

Also, it makes learning some things a more hands-on experience. Very cool, Mat!

hands-on is a good way of putting it. I wish i'd thought of that :)

Thanks for all the comments... It's nice to have lots of comments but only a few bugs :idea:

I was also thinking of a new tutorial based on this page as I find that is a great way to learn.

Share this post


Link to post
Share on other sites
Mat

Google has now officially screwed up big time. The bugs I said have been fixed (which have been) are not fixed in the download. Google code has taken the decision to ignore my new uploads, so the old zip is still there, and the only reason I found out is because I tried the download... :idea::):(

files should be downloaded from here until I get that fixed.

Share this post


Link to post
Share on other sites
wraithdu

I had an idea for executing multi-line code this morning while driving to work. It would be kind of a one shot deal, but... the idea is to have a line continuation character that your interpreter would process, then write out a temp script in @TempDir or something, then execute the script. I would think that ; (semicolon) would work, since a shell has no use for comments. Then you could do something like this:

> Func _MyMsg();MsgBox(0, "Function", "Hi there.");EndFunc;_MyMsg()

You'd have to watch out for ; in literal strings, but you get the idea.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.