Why is there no or or and ?

F i L witte2008 at gmail.com
Fri Feb 17 12:52:55 PST 2012


H. S. Teoh wrote:
> Are you referring to:
>
> 	int x = 10;
>
> vs.
>
> 	x = 10;
>
> ?
>
> In that case I would still prefer :=, since the first can be 
> thought of
> as shorthand for "int x; x := 10".

I'm not sure what you're asking/saying here. What I mean is that 
there needs to be some distinction between variable declarations 
and variable assignment.

     Foo: class
     {
         x: int

         // lots of code

         bar: void()
         {
             x := 0 // set Foo.x or create a local 'x' variable?
         }
     }


>> I don't think lines need ending marks at all.
>
> This leads to ambiguity problems if it's unclear whether two 
> adjacent
> lines are a single statement or two. It also makes the grammar 
> much
> harder to implement in a parser, because it can't easily tell 
> between
> the end of a statement and a wrapped line.  Having a statement 
> separator
> is a good thing.

I don't think this leads to ambiguity problems, I've thought 
about this before and can't come up with any that aren't easily 
addressed. Also, I don't think is much harder to parse at all, 
just when the statement is determined to stop needs to be 
slightly more intelligent. If we can understand the code without 
ending-marks, a compiler should be able to understand it as well. 
This is something I'm experimenting with at the moment with LLVM.


> Wait, you're trying to reimplement D syntax??

Nothing so robust. Mostly I'm playing around with compiler design 
while refreshing my C++ abilities (which it's been awhile). My 
main focus is to try and build a simplistic compiler around the 
concept of having an AST designed to stay in memory and be 
dynamically submitted changes and on-demand compilation (like 
NRefactory, or MS Roslyn). Kinda like and interrupter only 
designed with the goal of 1) Non-text forms of manipulation and 
logic construction, and 2) modularized AST libraries as 
development reflection tools (think objects overview, 
code-completion, etc).

I'm thinking of textual syntax as more of "commands" to submit 
AST nodes, so there's no real "syntax" beyond what's saved in a 
file, which isn't really suppose to be humanly read/written 
though a traditional text editor. I think "standard tools" (+ 
modularized to used by other tools) are as important as standard 
libraries.

Just a hobby :)


More information about the Digitalmars-d mailing list