Greetings!

(very sorry, I have broken the mail list threading. I deleted the
original message and then now decided to reply. Sorry. I could not find
a way to reply from the archive. Sorry)

Original message:

> Here's a problem I am having and can't figure out: I am trying to parse a 
> hexadecimal string and zeroes
> 
> I build a very small example to highlight what the problem is.
> 
> Suppose an elemental log file for your check account. It just has credits and 
> debits. Debits are identified by
> a prelude of '0001' and credits by '0002' Then comes the amount, up to $ 
> 65535.
> 
> 
> We make a modest start with a $100 credit and a $50 debit. So our log is 
> '0001006400020030'

__________________________________________________^^^___________________________________^^^^

$48 debit right? anyway, does not really matter i think.

> 
> But the input window shows 0001064000103, some zeroes are missing - which of 
> course is not what we want.
____________________________________^^^^ huh? 0002 right?

I assume by `input window` you mean some interaction dialog from within 
ANTLRWorks? if so, maybe the
problem is with ANTLRWorks? and not the generated parser/lexer?

> 
> If we try with a $ 4369 deposit, the log is 0001111100020030.
> 
> Now the input window shows 0001111100010030. The credit is not altered, the 
> debit is still losing zeroes.
_____________________________________^^^^ huh? ... and where is the loss of 
zeroes?

if this is really what you are seeing, I suggest that there is some issue 
outside of the ANTLR generated parser
and lexer, because the Tool generated code does not display any "input window" 
dialog.

> 
> My question is ¿Why do the zeroes get this "special treatment"? ¿How can I 
> avoid it or work around it?
> 
> 
> I would really appreciate either an explanation or some pointers to learn 
> what is wrong here.
....remainder snipped....

Have you tried running your generated code from the command line? As indicated 
above I think your problem is
outside of any ANTLR generated parser/lexer.

To prove that, please find attached a grammar that just works when Tool'd, 
compiled, and executed from the
command line. The linux command line I used is: java org.antlr.Tool Test.g ; 
javac *.java ; java TestParser

Hope this helps....
   -jbb
grammar Test;

options {
   output = AST;
   ASTLabelType = CommonTree;
}

@members {
   private static final String [] x = new String[] {
      "0001006400020030"
   };

   public static void main(String [] args) {
      for( int i = 0; i < x.length; ++i ) {
         try {
            System.out.println("about to parse:`"+x[i]+"`");
            TestLexer lexer = new TestLexer(new ANTLRStringStream(x[i]));
            CommonTokenStream tokens = new CommonTokenStream(lexer);

            TestParser parser = new TestParser(tokens);
            TestParser.start_return p_result = parser.start();

            CommonTree ast = p_result.tree;
            if( ast == null ) {
               System.out.println("resultant tree: is NULL");
            } else {
               System.out.println("resultant tree: " + ast.toStringTree());
            }
            System.out.println();
         } catch(Exception e) {
            e.printStackTrace();
         }
      }
   }
}

start : (credit | debit)+ EOF!;

credit : '0001'^ HEX ;
debit  : '0002'^ HEX ;

fragment HEXIT : ('0'..'9') | ('a'..'f') | ('A'..'F') ;
HEX : HEXIT HEXIT HEXIT HEXIT ;
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to