Jump to content

Lets do some Lex Systems!


danilo2

Recommended Posts

Hi!

I dont know If I'm posting it in the right place, so if it's wrong, please move it to the right one :)

A year ago I was writing my Bachelor of Science Thesis "Lex Systems - specification of high-level character processing language".

I have been working for a long time on this programming language, which could very efficiently generate L-Systems and is a lot more powerful than standard L-Systems processors.

Technically, it allows for definition of almost all languages of Chomsky's Type-2 and 3 grammars.

Results I get were really good. I was planning that I would post them in a couple of months, because I wanted to start off with my blog or small website. But the reality was horrible. I am working as technical director in one of the film studios in Poland and in parallel I'm developing several open and closed source projects, so I've got so much work, that probably this website will not be alive for log time

The following results are a year old, but this really does not matter

Lex Systems is a variant of formal gramma, but more universal, than L-Systems. It even allows for writing standalone programs performing some computation, make some complex algorithms and of course generate L-Systems. The most powerfull feature is its syntax, which is very easy to learn (a lot more straightfoward than L-Systems syntax, but it is simmilar) and gives users a lot more control over the execution and data flow. This syntax is powerful and simple - rules in Lex-Systems could be as short as in L-Systems.

What is really interesting is that my compiler of Lex-Systems is a LOT faster than Houdini's one (I tested it against Houdini 9,10,11,12 and 12.1 - almost the same results). It is written in C and it is optimized to get really good results and be stable even for large files.

It seems, that my solution have a lot lower computational complexity, that Houdini's solution.

I and a lot of people, that were reading and rating my work, have tested if results are correct. They are (we were testing if the resulting geometry is the same. Because of the size of the geometry, the tests were executed on dells workstation with 2*3.2GHz Xeon and 64 Gb of RAM).

So lets put some facts in this post!

I was testing the generation of L-Systems, not the drawing process in viewport! The tests are running against houdini batch and houdini master (fx) without displaying the results in viewport (for example by telling only the node to cook)

some tests:

premise: FFFA

rules:

A -> !"////////B

B -> &FFFA

for the first 14 generations results are similar, but next generations give us real feedback about whats going on:

generation 17 - houdini: 0.84s, Lex-Systems: 0.29s

generation 18 - houdini: 10.65s, Lex-Systems: 0.53s

generation 19 - houdini: 24.25s, Lex-Systems: 0.87s

generation 20 - houdini: 144.61s, Lex-Systems: 1.58s

generation 17 - houdini: 345.49s, Lex-Systems: 2.58s

generation 21 - houdini: 2,013.52s, Lex-Systems: 4.76s

generation 22 - houdini: 3,887.33s, Lex-Systems: 7.28s

generation 23 - houdini: crash, Lex-Systems: 14.28s

Please notice, that the 22th generation took about 1 hour Houdini to process and only about 7 second L-Systems to get the same results!

another example:

premise: F+F+F+F

rules:

F -> F-F+F+F-F+F-F-F+F

generation 3 - houdini: ~2*10^(−3)s, Lex-Systems ~2*10^(-3)s

generation 4 - houdini: 2.7*10^(−2)s, Lex-Systems 4*10^(-3)s

generation 5 - houdini: 1.01s, Lex-Systems 2.4*10^(-2)s

generation 6 - houdini: 371.5s, Lex-Systems 0.2s

generation 7 - houdini: after 7 hours we get 80% of generation process, Lex-Systems: 1.76s

generation 8 - houdini: impossible, Lex-Systems: 15.97s

generation 9 - houdini: impossible, Lex-Systems: 145.77s

-------------------------------

Additional I created 2 more tools: a plugin for houdini, and pythons translator of L-System language to Lex-Systems language (it has less than 100 lines of code, because the basics of Lex-Systems are simmilar to L-Systems)

As a result - all my previous tools that were using L-systems now work A LOT faster and allow for making animation of L-Systems parameters really fast.

Due to some limitations in license of my thesis I cannot make it public (I have to talk about it with my university, but I've got not so much time).

I would be happy to hear some feedback!

If you would like, I will post some more info!

Thank you,

Wojciech Daniło

Edited by danilo2
  • Like 2
  • Downvote 1
Link to comment
Share on other sites

Hi! Thank you for replies! :)

I'm very happy of such positive feedback :)

Currently you can not test the compiler, because I cannot (like the thesis) make it public. But I'm planning to rewrite this software and then I'll publish it :)

I don't understand how LEX and L-Systems are related. My understanding of LEX is that it's mainly a tokenizer [...]

Lex Systems and lex / flex are not related in any way :) The name Lex Systems stands for "L(Extended) Systems" or "Lexical Systems" (because it is a lot more than simple extension to L-Systems). One of the features that is better could be for example the fact, that you can describe wider range of context L-Systems. In standard implementations, the context of L-Systems could be only one character of an alfphabet, where in Lex Systems you could use an regular expression for context specification :)

Link to comment
Share on other sites

Lex Systems and lex / flex are not related in any way :) The name Lex Systems stands for "L(Extended) Systems" or "Lexical Systems" (because it is a lot more than simple extension to L-Systems). One of the features that is better could be for example the fact, that you can describe wider range of context L-Systems. In standard implementations, the context of L-Systems could be only one character of an alfphabet, where in Lex Systems you could use an regular expression for context specification :)

Now that sounds cool.

Sidefx should hire you to write a new system for Houdini, because their L-System is kind of difficult to use. I've tried it, but honestly it would be easier to learn an ancient aztec dialect.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...