package xtc.parser; header { import xtc.util.Utilities; import xtc.tree.Attribute; } class PParser; body { public static void main (String [] args) { PParser parser; String filename = null; long initTime = 0; long parseTime = 0; long startTime = 0; long stopTime = 0; if (args.length == 1) { filename = args[0]; System.out.println("Java Parser Version 1.1 (for Java1.4 code): Reading from file " + filename + " . . ."); try { startTime = System.currentTimeMillis(); parser = new PParser(new java.io.FileReader(filename), filename); stopTime = System.currentTimeMillis(); initTime = stopTime - startTime; } catch (java.io.FileNotFoundException e) { System.out.println("Java Parser Version 1.1 (for Java1.4 code): File " + filename + " not found."); return; } } else { System.out.println("Java Parser Version 1.1 (for Java1.4 code): Usage is one of:"); System.out.println(" java Parser inputfile"); return; } try { startTime = System.currentTimeMillis(); Result result = parser.ptext(); if (! result.hasValue()) { ParseError err = (ParseError)result; System.err.println(); //Utilities.msg(err.msg, err.parser.location(), source); return; } stopTime = System.currentTimeMillis(); parseTime = stopTime - startTime; System.out.println(" Lojban parser parsed " + filename + " successfully in " + (initTime + parseTime) + " ms."); System.out.println(" parser initialization time was " + initTime + " ms."); System.out.println(" parser parse time was " + parseTime + " ms."); System.out.println("Value: " + result.semanticValue()); } catch (Throwable x) { while (null != x.getCause()) { x = x.getCause(); } } } } footer { } option location,debug; top text; //String text = spacesNotY* yyValue:Word spacesNotY*; //String Word = "word"; //String spacesNotY = '.' / ' ' / '\n' / '\t' / '\r'; String text = yyValue:ZO; String sumti = free+; String tanruUnit1 = tanruUnit2+; String tanruUnit2 = free tanruUnit1; String mex2 = operand; String operand = free sumti / free mex2; String free = ZO text; String ZO = "zo";