[antlr-interest] Pie and simple expression calculator

Kyle Ferrio kferrio at gmail.com
Mon Jan 2 14:17:50 PST 2012


Thanks for the details.  The comparison to R is apt.  I didn't mean to
discourage you from whitespace languages so much as just suggest that it
might be a distraction you can deal with later, perhaps more efficiently
once you've climbed the "core"  learning curve.

You're quite right to notice the wealth of examples available for antlr.
It can be daunting, but much better than no examples.  The important thing
for me was just to get started.  I found that the fastest start for me came
by actually planning on throwing out my first few grammars.

Just an observation...your notes go pretty deep into implementation
details.   I tend to do the same and find that forcing myself to write out
EBNF on paper and code up decent test coverage first helps me get my
grammar right first and thereby minimize "churn" when I do the
implementation.

Anyway, your mileage may and likely will vary.  You'll figure out what
works for you.  As usual, just starting is the biggest step.

Kyle
 On Jan 2, 2012 1:31 PM, "goodwin" <goodwin at essence-property.com> wrote:

>  Yes, I looked at MATLAB, i also looked at GDL (which is much too big and
> complex to start with, and is in C rather than Java). I have just looked at
> the Cminus example also.
>
>  My problem is that there are so many example starting points, i don't
> know where to start.
>
>  I thought maybe Pie was the best starting point, but maybe it is not, if
> it is more complex than necessary because of the problems with white space.
>
>  I am OK with starting with a simple language, and then waiting for v4
> before doing the full language. I need a prototype which works reliably in
> the next few weeks, and then a longer term solution next year (2013).
>
>  An example of the language:
>
>  function myFunction() {
>     a = 3.7
>     b = get("myAttr")
>     return a + b
>  end
>
>  x = 1.2
>  y = {0.0, 1.0, 2.3,......}
>  x[4] = 1.5
>
>  z = x ^ y + myFunction
>  z = z + data("myData")
>
>  if (x > 0.0 ) then
>     z = sin(z) * 1.1
>  else
>     z = 0
>  endif
>
>  h = integrate(z)
>  print (h)
>
>  Notes:
>
>  - all variables are float arrays (let's assume for the moment they are
> all the same length, 100).
>  - the integrate function integrates the array and returns a new array
> e.g. h[5] is z[0] + ... + z[5]
>  - the if block is done on an element by element basis (so there is an
> implied loop around it), similar to R concepts
>  - functions normally do not take any parameters, but could do so in future
>  - the 'get' function retrieves a special scalar value from a hashmap or
> database, which may be different on each invocation.
>  - data("myData") retrieves a preexisting scalar held in a Hashmap, which
> is used to initialise an array.
>  - the language operates on a preexisting Java database and Java memory -
> it is used to derive new data from pre-existing data.
>  - I would rather have something a little verbose and readable - error
> handling is also essential as the language is to be used by engineers, not
> software engineers. They often forget to put in ';' for example, so the
> above language does not need it.
>  - the whole concept is based on something which an old colleague did
> using Antlr v2 back in 2003 - all his work has since been lost.
>
>
>
> -----Original Message-----
> From: Kyle Ferrio <kferrio at gmail.com>
> To: goodwin at essence-property.com
> Cc: antlr-interest at antlr.org
> Date: Mon, 2 Jan 2012 11:10:51 -0700
> Subject: Re: [antlr-interest] Pie and simple expression calculator
>
>  Your language ounds a little like MATLAB. Someone posted an approximate
> MATLAB grammar a few months ago for antlr 3.x.
>  If you are familiar with classic "calculator" examples for flex/bison,
> then you might really like how Honey Badger (antlr 4) makes short work of
> expression parsing.
>  If you want to get going quickly, you might want to avoid things like
> pythonesque significant whitespace.  And strongly visual scope delimiters
> may make it easier to get started.  Your resulting language would not be
> the first to be accused of being "noisy."  :)
>  Kyle
>  On Jan 2, 2012 10:45 AM, "goodwin" <goodwin at essence-property.com > wrote:
>
>>
>> I am new to ANTLR, and want some capabilities similar to Pie and the
>> expression calculator, as extended with functions. I work with floating
>> point data, and want to extend the intrinsic functions (e.g. Sin, Cos
>> etc.)
>> and all calculations will actually be done on float arrays.
>>
>>
>> I want a simple grammar suitable for engineers - not too sure whether
>> Python
>> is the best starting point...I myself prefer a few brackets and endif etc.
>>
>>
>> However, the implementations of Pie and the simple expression calculator
>> are
>> very different.
>>
>>
>> Do you think it is best for me to start with Pie and adapt it for my
>> needs,
>> or look at both approaches and learn from them both?
>>
>>
>> My main purpose is to progress rapidly, not to become an expert in ANTLR.
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe:
>> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
>


More information about the antlr-interest mailing list