Author Topic: The dawn of a new OOPL  (Read 25858 times)

0 Members and 1 Guest are viewing this topic.

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #60 on: August 19, 2011, 12:33:08 pm »
UPDATE It's been 24 hours, so this double post is allowed
My scanner and parser are now done in a simple sense. By that I mean that they can recognize arithmatic operations, some keywords, the four current modifiers, and non-dimensional variable declarations (as well as errors!). I'm going to be changing the way arrays/matrices are setup, though, basing it off of HOMER's suggestion.

One step closer :D
« Last Edit: August 19, 2011, 04:20:07 pm by BlakPilar »

Offline Binder News

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 785
  • Rating: +46/-3
  • Zombie of Tomorrow
    • View Profile
Re: The dawn of a new OOPL
« Reply #61 on: August 19, 2011, 12:56:38 pm »
I didn't get much done as I spent the whole of yesterday evening making Mineopoly on my Minecraft server with my friend. Lol.
Spoiler For userbars:







Hacker-in-training!   Z80 Assembly Programmer     Axe Programmer
C++ H4X0R             Java Coder                           I <3 Python!

Perdidisti ludum     Cerebrum non habes

"We are humans first, no matter what."
"Fame is a vapor, popularity an accident, and riches take wings. Only one thing endures, and that is character."
Spoiler For Test Results:





Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #62 on: August 20, 2011, 11:50:44 pm »
UPDATE
Alright, I've been working on this for the last three hours because I dun goof'd a lot and I had many of the destructive "brain-farts", but classes definitions are now parsed correctly! :D By that I mean "global class hello {}" is now a valid statement.

Offline Binder News

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 785
  • Rating: +46/-3
  • Zombie of Tomorrow
    • View Profile
Re: The dawn of a new OOPL
« Reply #63 on: August 21, 2011, 02:59:09 am »
Oh. Yay. Well, I got a Tokenizer done, which I can use, and a Logger framework started, which will llow for variable level of debug information to be displayed, depending on a command line flag probably.

EDIT: Uploaded Finished tokenizer and unfinished Logger framework.
« Last Edit: August 21, 2011, 03:02:00 am by Binder News »
Spoiler For userbars:







Hacker-in-training!   Z80 Assembly Programmer     Axe Programmer
C++ H4X0R             Java Coder                           I <3 Python!

Perdidisti ludum     Cerebrum non habes

"We are humans first, no matter what."
"Fame is a vapor, popularity an accident, and riches take wings. Only one thing endures, and that is character."
Spoiler For Test Results:





Offline Scipi

  • Omni Kitten Meow~ =^ω^=
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1547
  • Rating: +192/-3
  • Meow :3
    • View Profile
    • ScipiSoftware
Re: The dawn of a new OOPL
« Reply #64 on: September 18, 2011, 01:18:56 pm »
What's the progress on this? Is this still alive?

Imma Cat! =^_^= :3 (It's an emoticon now!)
Spoiler For Things I find interesting:
Spoiler For AI Programming:
Spoiler For Shameless advertising:

Spoiler For OldSig:





Spoiler For IMPORTANT NEWS!:
Late last night, Quebec was invaded by a group calling themselves, "Omnimaga". Not much is known about these mysterious people except that they all carried calculators of some kind and they all seemed to converge on one house in particular. Experts estimate that the combined power of their fabled calculators is greater than all the worlds super computers put together. The group seems to be holding out in the home of a certain DJ_O, who the Omnimagians claim to be their founder. Such power has put the world at a standstill with everyone waiting to see what the Omnimagians will do...

Wait... This just in, the Omnimagians have sent the UN a list of demands that must be met or else the world will be "submitted to the wrath of Netham45's Lobster Army". Such demands include >9001 crates of peanuts, sacrificial blue lobsters, and a wide assortment of cherry flavored items. With such computing power stored in the hands of such people, we can only hope these demands are met.

In the wake of these events, we can only ask, Why? Why do these people make these demands, what caused them to gather, and what are their future plans...

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #65 on: September 18, 2011, 01:28:48 pm »
Yeah, it's still being worked on on my part, but I haven't really had much time to do much what with school starting and everything. Plus we had a movie theater open near me sooo... lol

I ran into a snag with strings not processing correctly the last time I worked on it, but integers work for the most part.

Offline Binder News

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 785
  • Rating: +46/-3
  • Zombie of Tomorrow
    • View Profile
Re: The dawn of a new OOPL
« Reply #66 on: September 24, 2011, 10:34:12 am »
Here. I've been busy as well, but I could still take a look at it.
Spoiler For userbars:







Hacker-in-training!   Z80 Assembly Programmer     Axe Programmer
C++ H4X0R             Java Coder                           I <3 Python!

Perdidisti ludum     Cerebrum non habes

"We are humans first, no matter what."
"Fame is a vapor, popularity an accident, and riches take wings. Only one thing endures, and that is character."
Spoiler For Test Results:





Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #67 on: September 24, 2011, 01:16:32 pm »
Alright. I've attached what I have so far and a sample code file I've been working with. Strings are fine until you throw in an escape character (i.e. \n, \t, etc.) and integers don't register for some reason. I haven't really gone in-depth with the debugging, so I'm not entirely sure what it is. I might be able to work on it for a bit later today/tonight.

Offline Binder News

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 785
  • Rating: +46/-3
  • Zombie of Tomorrow
    • View Profile
Re: The dawn of a new OOPL
« Reply #68 on: September 24, 2011, 04:14:32 pm »
BlakPilar, in the file Scanner.cs, line 108. Change input.Read() to input.Peek(). With the read, you were consuming it twice (meaning that you ended up consuming the character after it as well, without reading it).

EDIT: Post 701! I'm an Addict! Oh, that kinda sounds weird, doesn't it? Well, I'm Level 8!
« Last Edit: September 24, 2011, 04:18:06 pm by Binder News »
Spoiler For userbars:







Hacker-in-training!   Z80 Assembly Programmer     Axe Programmer
C++ H4X0R             Java Coder                           I <3 Python!

Perdidisti ludum     Cerebrum non habes

"We are humans first, no matter what."
"Fame is a vapor, popularity an accident, and riches take wings. Only one thing endures, and that is character."
Spoiler For Test Results:





Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #69 on: September 24, 2011, 04:19:49 pm »
Oh, duh haha. And maybe it was bytes not getting read correctly... I'll check it later and see if I have any more .Read()/.Peek() errors. (That is, unless you beat me to it ;))

EDIT: Yeah, I know the difference between Read and Peek lol. I was probably just not thinking at the time. And congrats! :)
« Last Edit: September 24, 2011, 04:21:31 pm by BlakPilar »

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #70 on: November 29, 2011, 05:18:54 pm »
Okay, so, I'm starting to work on this again, but it's not going to be getting my full attention. I'm thinking about possible syntax changes to make it a little easier to code in, because I want this to be an easy and powerful language. I'll be going through all of the suggestions mentioned before in this post and will listen to any future ones. I'll also need to brush up on my System.Reflection.Emit, so that will take some time, but hopefully not much. So yeah... this is the announcement of a slow reboot, I guess!

EDIT: In my spare time, and when I get frustrated with BexIDE, I'll be working on an EBNF definition for the language. I'll upload it when it is sufficiently complete for my liking.
« Last Edit: November 30, 2011, 06:18:33 pm by BlakPilar »

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #71 on: December 03, 2011, 06:53:54 pm »
UPDATE
First thing's first: I've decided on a name change. The new name for this OOPL is now Alpha.NET. HOMER-16 and I have also written a complete (well, mostly complete) EBNF which will help with understanding syntax. I might change one or two things, maybe some keywords (I just realized I need to define all reserved words...), but otherwise this will stay the same. I'm going to be rewriting what I had from my previous compiler because I'm pretty sure I did some things wrong, and it was very... static. So I guess this is becoming my second primary project. :)

Spoiler For EBNF:

<stmt>  := [<modifier>] <type> <ident> [ = <expr> | (<expr>)]
      |  <ident> = <expr>
      |  <compound_stmt>
      |  <jump_stmt>
                |  <stmt> ; <stmt>
      |  <ident> (<expr>);
      |  [<ident> = ] <ident>, ‘.’, <method>() [, ‘.’ <method>() ...]
      |  <ident> = <ident>[, ‘.’, <ident>]
      |  <ident_block_call>
<expr>  := <type.value>
      | <arith_expr>
      | <ident>
<type>  := str | int | dbl | flt | byte | bool | char | class | enum | struct |  void | auto
<arith_expr>    := <expr> <arith_op> <expr>
<arith_op>      := + | - | * | / | % | ^ | ++ | -- | += | -= | *= | /= | %=
                |  ^= | >> | << | <bool> ? <stmt> : <stmt>
<ident> := <letter> [,<alpha_numeric>*]
<alpha_numeric> := <letter> | <digit> | ‘_’
<int>   := <digit>+
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<dbl>   := <digit>.<digit>*[d | D] - 15 max
<flt>   := <digit>.<digit>*[f | F] - 7  max
<byte>  := 0x<hex> | $<hex> | <hex>h | <binary>b
<hex>    := ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’ | ‘A’ |
           ‘B’ | ‘C’ | ‘D’ | ‘E’ | ‘F’ | ‘a’ | ‘b’ | ‘c’ | ‘d’ | ‘e’ | ‘f’ |
<binary>:= ‘0’ | ‘1’
<bool>  := true | !0 | false | 0
<char>  := <any ASCII equivalent: 0 - 255>
<str>     := “ <string_elem>* “
<string_elem>   := <any char including escape chars>
<escape_chars>  := \a | \b | \f | \n | \r | \t | \x | \\ | \” | \’ | \0
<class> := [<modifier>] class <name> [: <class>* | <struct>*, <interface>*] <compound_stmt>
<struct>:= [<modifier>] struct <name> [: <class>* | <struct>*, <interface>*] <compound_stmt>
<modifier>      := public | private | static | sealed | abstract | virtual
<loop>  := for [<ident>] (<numeric_ident>; <numeric_ident> <comparison> - '==' <numeric_ident>; <numeric_ident> <arith_op>) { <stmt> }
      | do [<ident>] { <stmt> } while (true)
      | while [<ident>] (true) { <stmt> }
<numeric_ident>:= int | flt | dbl | byte
<comparison>   := < | > | <= | >= | == | !=
<enum>  := [<modifier>] enum <name> { <enum_list> }
<enum_list>    := <ident> [‘,’] | <ident> = <expr> [‘,’]
<name>  := ident
<letter>:= ‘A’ | ‘a’ | ‘B’ | ‘b’ | ‘C’ | ‘c’ | ‘D’ | ‘d’ | ‘E’ | ‘e’ | ‘F’
      |  ‘f’ | ‘G’ | ‘g’ | ‘H’ | ‘h’ | ‘I’ | ‘i’ | ‘J’ | ‘j’ | ‘K’ | ‘k’
      |  ‘L’ | ‘l’ | ‘M’ | ‘m’ | ‘N’ | ‘n’ | ‘O’ | ‘o’ | ‘P’ | ‘p’ | ‘Q’
      |  ‘q’ | ‘R’ | ‘r’ | ‘S’ | ‘s’ | ‘T’ | ‘t’ | ‘U’ | ‘u’ | ‘V’ | ‘v’
      |  ‘W’ | ‘w’ | ‘X’ | ‘x’ | ‘Y’ | ‘y’ | ‘Z’ | ‘z’
<compound_stmt>:= ‘{’, <stmt>*, ‘}’
<control_line> := ‘#’, ‘def ’, <ident>
          |  ‘#’, ‘undef ’, <ident>
          |  ‘#’, ‘if ’, <ident> (* ident must have been declared using #def *)
          |  ‘#’, ‘if ’, <const_expr>
          |  ‘#’, ‘elif ’ <ident>
          |  ‘#’, ‘elif ’ <const_expr>
               |  ‘#’, ‘else ’ <ident>
               |  ‘#’, ‘endif’
               |  ‘#’, ‘bldt ’, <build_type>
<build_type>   := console | form | lib
<const_expr>   := any “hard coded” expression resulting in <bool>
<jump_stmt>    := break | cont | ret | lbl | goto
<switch_block> := case <ident> {<type>: <stmt>}
<if>    := if [<ident>] (true) {<stmt>}
<logic_expr>   := && | ‘||’ | ‘!|’ | !
<self>  := this
<void>  := NULL
<ident_block_call>   := <ident>,'<',<numeric_ident>,'>'
<method>:= [<ident>,'.' | <self>,'.'] <name>(<params>)
<params>:= <type> <ident>*


Project Summary
AST.............90%
Scanner.........10%
Validator........0%
Parser...........0%
IL Generator.....0%
IDE..............0%
=-=-=-=-=-=-=-=-=-=
Overall.........17%
« Last Edit: December 06, 2011, 04:26:49 pm by BlakPilar »

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #72 on: December 06, 2011, 04:35:20 pm »
Well, nothing really to update as of yet, but I have a question. Would it help to have something like $428F automatically converted to an array like {$42, $8F} or an integer/double (17,039 in this case)? So you could do something like byte[] arr = $428F; //arr == {$42, $8F} or int b = $428F; //b == 17039. It's not a guarantee that it'll work, but I figured it'd be helpful. Also, possible minor syntax changes so I can call the language my own.

But thanks to anyone still following this :) I have yet to go through this topic again, but if you have one, please share suggestions with me!

EDIT: Also, when I have everything but the IL Generator done, I'll be uploading my source. Hopefully by then I'll have my website all setup and running.


Project Summary
AST............100%
Scanner........100%
Validator........5%
Parser...........0%
IL Generator.....0%
IDE..............0%
=-=-=-=-=-=-=-=-=-=
Overall.........34%
« Last Edit: December 06, 2011, 04:38:25 pm by BlakPilar »

Offline Scipi

  • Omni Kitten Meow~ =^ω^=
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1547
  • Rating: +192/-3
  • Meow :3
    • View Profile
    • ScipiSoftware
Re: The dawn of a new OOPL
« Reply #73 on: December 06, 2011, 07:21:32 pm »
For '{}' could they be "[[]]" instead? So:
Code: [Select]
while(Arg)
[[
//Code
]]

Imma Cat! =^_^= :3 (It's an emoticon now!)
Spoiler For Things I find interesting:
Spoiler For AI Programming:
Spoiler For Shameless advertising:

Spoiler For OldSig:





Spoiler For IMPORTANT NEWS!:
Late last night, Quebec was invaded by a group calling themselves, "Omnimaga". Not much is known about these mysterious people except that they all carried calculators of some kind and they all seemed to converge on one house in particular. Experts estimate that the combined power of their fabled calculators is greater than all the worlds super computers put together. The group seems to be holding out in the home of a certain DJ_O, who the Omnimagians claim to be their founder. Such power has put the world at a standstill with everyone waiting to see what the Omnimagians will do...

Wait... This just in, the Omnimagians have sent the UN a list of demands that must be met or else the world will be "submitted to the wrath of Netham45's Lobster Army". Such demands include >9001 crates of peanuts, sacrificial blue lobsters, and a wide assortment of cherry flavored items. With such computing power stored in the hands of such people, we can only hope these demands are met.

In the wake of these events, we can only ask, Why? Why do these people make these demands, what caused them to gather, and what are their future plans...

Offline BlakPilar

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 734
  • Rating: +44/-1
    • View Profile
Re: The dawn of a new OOPL
« Reply #74 on: December 06, 2011, 07:25:51 pm »
Of course! Easily done! :)