what base language is used in OpenSCAD

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

what base language is used in OpenSCAD

khackbarth

I’d like to be able to convert a string to an integer in OpenSCAD.  For example:

 

string = “11”;

number = xxx(string);

 

echo(number);

 

… produces:  ECHO: 11

 

What is xxx()?  I have a suspicion that there are more functions available in OpenSCAD than appear on the Cheat Sheet.  Functions that just come with the language that OpenSCAD is built on.  Am I hallucinating or is there such a language?

 

Ken


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

JordanBrown
On 4/26/2018 2:51 PM, [hidden email] wrote:

I’d like to be able to convert a string to an integer in OpenSCAD.  For example:

 

string = “11”;

number = xxx(string);

 

echo(number);

 

… produces:  ECHO: 11

 

What is xxx()?  I have a suspicion that there are more functions available in OpenSCAD than appear on the Cheat Sheet.  Functions that just come with the language that OpenSCAD is built on.  Am I hallucinating or is there such a language?


I don't know anything about the internals, but based on what I've seen of the externals... no, there isn't such a language; it's a completely unique design.

And indeed some quick source inspection strongly suggests that what you see is what you get.
https://github.com/openscad/openscad/blob/620ae8a8aa4ad6610aa3cdae8d1aedb828ed55cb/src/scadlexer.cpp#L14
https://github.com/openscad/openscad/blob/e99ec0ff4e89344da3c3709f381decc9fb95b9fd/src/func.cc#L939


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

woferry
In reply to this post by khackbarth
AFAIK, OpenSCAD isn't *built* on any other languages, it's its own unique language.  I mean it's written in C++, but the language parser is unique to OpenSCAD.

There are certainly libraries out there that include functions to do string to number conversions, for example relativity.scad (<https://github.com/davidson16807/relativity.scad/blob/master>, in "relativity.scad" see the "parse_int" function, it's also in the separate "strings.scad" file in the same repo).  - Will



> On Apr 26, 2018, at 2:51 PM, [hidden email] wrote:
>
> I’d like to be able to convert a string to an integer in OpenSCAD.  For example:
>  
> string = “11”;
> number = xxx(string);
>  
> echo(number);
>  
> … produces:  ECHO: 11
>  
> What is xxx()?  I have a suspicion that there are more functions available in OpenSCAD than appear on the Cheat Sheet.  Functions that just come with the language that OpenSCAD is built on.  Am I hallucinating or is there such a language?
>  
> Ken
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

MichaelAtOz
Administrator
In reply to this post by khackbarth
khackbarth wrote
> I'd like to be able to convert a string to an integer in OpenSCAD.  For
> example:
>
> string = "11";
> number = xxx(string);
> echo(number);
>
>
> . produces:  ECHO: 11

In the production release there is no built-in for that.
There is a  WIP <https://github.com/openscad/openscad/pull/1380>  .

Here is a recursive function for this: hex-dec.scad
<http://forum.openscad.org/file/t359/hex-dec.scad>  





-----
Admin - PM me if you need anything, or if I've done something stupid...

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above.

The TPP is no simple “trade agreement.”   Fight it! http://www.ourfairdeal.org/   time is running out!
--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Admin - PM me if you need anything,
or if I've done something stupid...

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work.
Obviously inclusion of works of previous authors is not included in the above.


The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out!
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

Troberg
In reply to this post by khackbarth
As far as I can see, you can't convert string to number, not even implicitly.

Consider this small example:

a="1";
b="2";
c=a+b;
echo(c);

It will return undef.

I think you should look into customization instead.

http://www.openscad.org/news.html#20160714

It makes it very simple to make parameterized designs, I use it all the
time.



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

JordanBrown
In reply to this post by khackbarth
On 4/26/2018 2:51 PM, [hidden email] wrote:

I’d like to be able to convert a string to an integer in OpenSCAD.  For example:

 

string = “11”;

number = xxx(string);



Here's what I come up with:
function atoi1(s, n) = n < 0 ? 0 : atoi1(s, n-1)*10 + search (s[n], "0123456789")[0];
function atoi(s) = atoi1(s, len(s)-1);
echo(atoi("123"));
It seems like it could be simplified a bit.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: what base language is used in OpenSCAD

khackbarth

Cool, thanks!

Ken

 

From: Jordan Brown [mailto:[hidden email]]
Sent: Friday, April 27, 2018 6:12 PM
To: OpenSCAD general discussion; [hidden email]
Subject: Re: [OpenSCAD] what base language is used in OpenSCAD

 

On 4/26/2018 2:51 PM, [hidden email] wrote:

I’d like to be able to convert a string to an integer in OpenSCAD.  For example:

 

string = “11”;

number = xxx(string);



Here's what I come up with:

function atoi1(s, n) = n < 0 ? 0 : atoi1(s, n-1)*10 + search (s[n], "0123456789")[0];
function atoi(s) = atoi1(s, len(s)-1);
echo(atoi("123"));

It seems like it could be simplified a bit.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org