Navigation

    Fuze Arena Logo
    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Help
    • Discord

    The first look of the interpretor

    Work In Progress
    9
    79
    16223
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      petermeisenstein F last edited by

      Hello Guys you may remember I was the guy who thought he could write an interpretor for python in fuze. I dont posted something since a loooooooong time you may ask yourself why. So my interests changed I didnt code much in fuze. I coded much in Python. Whats the problem with this project ? First my main problem is the lexical analyziz how do the interpretor now when a variable will be declared ? Where do i store the variable and the name of the variable. I have a new Idea a programminglanguage that will be written in python first the syntax is like this

      declare
      a

      23444

      So the positive point would be that i dont have to do lexical analyzez like this

      print(1+3)

      In token

      FUNC_PRINT , TOK_1 ,OPERATOR_PLUS ,TOK_3

      with the stuff in online you can see you have to go trough the entire string. But if you split everything in multiple lines you dont have to do this. Sure everything must be in an correct order.
      Lets take for example fuze how would some easy fuze code broken up in to tokens ?

      A = 1
      VAR_NAME= A ; VAR_VALUE=1

      lets do a bit more

      if A==1 then
      print ("hello world")
      Endif

      Now i will explain why fuze uses ENDIF and THEN so if is a statement with THEN you say what will the programm do now the interpretor knows which is the part who will be executed in case of a succesfull if statement the END is for showing the compiler where the if condition ends some programming languages use iditations for this like python but many use {} those brackets.

      So what I want to show you with this is what acctually happens when code gets executed and yes for example C++ has to be compiled to binary code. What makes C++ so fast is the fact that you can really get in touch with the hardware. You can say where your stuff is saved in the RAM. Fuze for example is interpreted. The Fuzeinterpretor it self is probably written in C++ because otherwise Fuze wouldnt be so incredible fast. The Fuze interpretor is written in C++ probably and then compiled to ARM Machinecode. So what is about languages like Java where everyone says java can run everywhere? On the one Hand this is great because developers dont have to deal with specifying everything for other hardware. But Java is pushed trough an VM The JVM Java Virtual Machine. And this takes then runtime or speed because its not directly executed in machine code. With every Abstraction layer you build your programm gets slower. So this was a quick excurse in my world lets go again back to my python interpretor. Will I give up ? Maybe for the moment I wish fuze would get some more interesting features for me. And sure fuze is not the right tool to write a programminglanguage. Sorry in the moment its not the right tool but the team of fuze is putting lots of work in there language. And yes there are some points what i disslike about fuze. But on other points I really see how good this language is. In 5 years fuze defnitly will be a total different software. The language will have so much new features especially for you game coder people. So lets see where the way will bring me. Something what I also want to mention. In this times of covid 19 everything is a bit different I hope you all are doing well. And your family to. I saw many of you making incredible projects very cool games. Keep doing this. And what I want to say to the team Thank you. You very very patiente with me. Sometimes i was disturbing yeah i know. But we all make mistakes or how programmers would say we all are making errors 😁 So if i will bring out a new fupy version you will know it when observing this thread. Hope you have a great evening david

      1 Reply Last reply Reply Quote 3
      • PickleCatStars
        PickleCatStars F last edited by

        It’s interesting when people use tools in unusual ways, even if I don’t understand the how or why. I hope you are well too :)

        P 1 Reply Last reply Reply Quote 3
        • P
          petermeisenstein F @PickleCatStars last edited by

          @toxibunny thanks for the kind words if you want to have a deeper understanding feel free to contact me

          1 Reply Last reply Reply Quote 1
          • L
            LucasJG25 last edited by

            This is a very interesting project you have here. I too am working on a similar project. May I ask your method of approach? Are you translating your code to the FUZE4 language? Or are you building a Virtual Machine that will run your code?

            P 1 Reply Last reply Reply Quote 0
            • P
              petermeisenstein F @LucasJG25 last edited by

              @LucasJG25 so you go trough the entire code and then you can call fuze code. I mean i didnt finished it quite well

              1 Reply Last reply Reply Quote 0
              • L
                LucasJG25 last edited by

                So then you are interpreting to fuze code. I see, i chose to compile mine to bytecode. Which is then run on the vm.

                P 2 Replies Last reply Reply Quote 3
                • P
                  petermeisenstein F @LucasJG25 last edited by

                  @LucasJG25 I mean you can go trough the code and then decide what to do without building an vm over it. Because a vm takes runtime. As i said with every abstraction layer you take away runtime

                  1 Reply Last reply Reply Quote 0
                  • P
                    petermeisenstein F @LucasJG25 last edited by

                    @LucasJG25 how do you built the lexer ?

                    1 Reply Last reply Reply Quote 0
                    • L
                      LucasJG25 last edited by

                      The lexer only has a couple of functions. Scan the source code, check each character char by char, combine characters to form keywords that it recognizes and if it encounters a character it does not recognize throw an error, the lexer also needs to look ahead without consuming the character or moving the scanner. Then spit out tokens which can be keywords or terminals (single characters).

                      I have a small Recursive Descent Parser that I recently made in FUZE4 where I used a lexer to scan a string containing math expressions such as "4+5-2+5"
                      Here's the program: NXVWBDND9K

                      Hopefully this helps. And if you want more info. I'd suggest looking up BNF (Backus Naur Form), I use this for parsing and creating a Recursive Descent Parser, also check out crafting interpreters which can be found on google.

                      P 2 Replies Last reply Reply Quote 2
                      • P
                        petermeisenstein F @LucasJG25 last edited by

                        @LucasJG25 how do you deal with saving variables do you make them in 2 arrays
                        One is name
                        And one is value

                        And the postion is equal

                        1 Reply Last reply Reply Quote 0
                        • L
                          LucasJG25 last edited by

                          Well, my method wouldn't really be of any use since I'm focusing on a vm implementation. You see if I were to make a Python interpreter I'd compile it to my vm's assembly code. So for example

                          Python:
                          var = 1

                          My assembly code:
                          var:
                          .word #0x1

                          main:
                          LDA (var)

                          So that's how I would do it in my case. This delves into code generation which is the last step of a compiler.

                          P 1 Reply Last reply Reply Quote 4
                          • P
                            petermeisenstein F last edited by

                            Thats interesting

                            1 Reply Last reply Reply Quote 1
                            • P
                              petermeisenstein F @LucasJG25 last edited by

                              @LucasJG25 thanks I am trying to understand your code I downloaded your program

                              L 1 Reply Last reply Reply Quote 0
                              • L
                                LucasJG25 @petermeisenstein last edited by

                                @petermeisenstein Nice, no problem at all. I'm also currently working on the assembler for the VM which I already made in FUZE. I can post the download code for it when I'm done.

                                P 1 Reply Last reply Reply Quote 1
                                • P
                                  petermeisenstein F @LucasJG25 last edited by

                                  @LucasJG25 !15964820676682495057371688133642.jpg

                                  So this is the concept for my new programming language everything seperated by line i just write the interpretor in python and then maybe in fuze

                                  Translation:

                                  Great Man

                                  You are so cool

                                  I mean this for real

                                  1 Reply Last reply Reply Quote 1
                                  • L
                                    LucasJG25 last edited by

                                    No problem. Glad I could help.

                                    P 1 Reply Last reply Reply Quote 0
                                    • P
                                      petermeisenstein F @LucasJG25 last edited by

                                      @LucasJG25

                                      This were just example texts but you are real cool dude.
                                      So why i choose a programming language where i have to interprete everything line by line
                                      ?

                                      Because its making writing the parser much more easier

                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        LucasJG25 last edited by

                                        Interesting. I'm actually wrtiing the same thing in FUZE. Where the user can only write one line of code at a time.

                                        P 2 Replies Last reply Reply Quote 0
                                        • P
                                          petermeisenstein F @LucasJG25 last edited by

                                          @LucasJG25 !15964832658395516373321992406780.jpg

                                          With this code you declare a variable called a
                                          With the value 100

                                          And after this you print Hello There

                                          The end keyword is for stoping endless loops its more for the interpretor

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            petermeisenstein F @LucasJG25 last edited by

                                            @LucasJG25 I dont want to go through an entire input and then deciding what its actual is

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post