[antlr-interest] ANTLR 3.0.1: invalid character column in a mismatch character error message.

Francis ANDRE francis.andre.kampbell at orange.fr
Mon Aug 11 06:22:34 PDT 2008


Hi Kay

 >>Enough babbling, however.
 >> This is an argument neither side can "win", simply because there's 
no correct answer.
Think so... the correct answer is the closest to the common sense and 
natural location: that is the (1,1) based coordinate...

BTW, in PL/1, you can declare an vector/array with fixed lower bound and 
higher bound as

DECLARE FOO (10::20) FIXED BIN(15);

and while the FOO vector is allocated from address 0 up to address 9, 
all the references as FOO(NO) will be checked against 10 <= NO <= 20)


 >>For the reason given above, I think ANTLR should not change its 
behavior at this point.
ANTLR has already changed... ANTLR v2 column/line is (1,1) based...  (so 
think about all people moving their grammar from V2 to V3...) So I would 
like ANTLR v3 to use also the (1,1) coordinate...


Kay Röpke a écrit :
>
> Hi!
>
> On Aug 10, 2008, at 10:33 PM, Francis ANDRE wrote:
>
>> >> column (charPositionInLine). does that sound helpful?
>> Yes, indeed... but my request was more a change request to ANTLR than 
>> a user fix..
>
> I don't think it should change, because it would be an incompatible 
> change, in the sense that it would directly affect user code (esp. for 
> syntax highlighters etc, and of course error handling).
> Since it's very easy to override, my vote would be to leave it alone.
> As for the inconsistency argument, yes, it's inconsistent, but I 
> frankly I don't think it makes that much of a difference.
>
>> >> off the top of my head, i know two languages that start counting 
>> at 1: pascal and lua. since i've forced myself to forget all the 
>> cobol i ever knew, i simply accept that cobol is among those.
>>
>> This has little to do with language or array definition and 
>> references... It is more related to literature in general. In books, 
>> there is no page 0, no line 0 and no column 0....  All coordinates 
>> are (1,1) based..and when producing a listing reporting errors, it 
>> should use also (1,1) coordinate for the common sense....
>
> In computer science the majority of systems are 0-based. Although that 
> stems from a time which is long in the past, it has carried over, so 
> we simply have to deal with it. At least that's my opinion.
>
>> By the way... I think there is overusage of (0,0) based coordinate in 
>> computer language... In effect, array indices should always start at 
>> 1. It is an implementor's problem to adjust the indice by -1 to get 
>> an indexes... because the first element of a vector is located at the 
>> address 0... So to avoid this adjustment, computer language's 
>> designer choose the easiest way for them (which is IMHO a bad side 
>> side effect between the langage definitionand its implementation)!
>>
>> So, IMHO, Pascal, Cobol, LUA, Algol, PL/1 are all using the right 
>> indices way...
>
>
> I didn't know that this helpful page existed: 
> http://en.wikipedia.org/wiki/Comparison_of_programming_languages_%28array%29#Array_system_cross-reference_list 
>
> Clearly, the languages in major use today are favoring 0-based 
> indices. And since I have to switch between 0 and 1-based languages 
> very often, I'd wish Lua would just do away with the 1-based approach. 
> It might be more "intuitive" if you read it as "the first element of 
> the array" but I always think of a[n] as the "element n places from 
> the beginning", so that's "intuitive" for me. Call me rotten by C ;)
>
> Enough babbling, however. This is an argument neither side can "win", 
> simply because there's no correct answer. For the reason given above, 
> I think ANTLR should not change its behavior at this point.
>
> cheers,
> -k




More information about the antlr-interest mailing list