version 1.2, 1999/11/04 19:36:41 |
version 1.3, 1999/11/12 07:46:37 |
|
|
/** |
/** |
* $OpenXM$ |
* $OpenXM: OpenXM/src/OpenMath/OM2OXM.java,v 1.2 1999/11/04 19:36:41 tam Exp $ |
* |
* |
* $B$3$N%/%i%9$G$O0J2<$N(B BNF $B$GI=$5$l$k9=J82r@O$r<BAu$7$F$$$k(B |
* $B$3$N%/%i%9$G$O0J2<$N(B BNF $B$GI=$5$l$k9=J82r@O$r<BAu$7$F$$$k(B |
* expr -> stag [expr | immediate]* etag |
* expr -> stag [expr | immediate]* etag |
Line 39 final class OM2OXM implements Runnable{ |
|
Line 39 final class OM2OXM implements Runnable{ |
|
private int token = TT_NULL; |
private int token = TT_NULL; |
private boolean lexPushbackFlag = false; |
private boolean lexPushbackFlag = false; |
private OpenXM asir; // for debug |
private OpenXM asir; // for debug |
|
private boolean debug = true; |
|
|
// Token Type for lexical analyzer |
// Token Type for lexical analyzer |
final static int TT_NULL = 0; |
final static int TT_NULL = 0; |
Line 220 final class OM2OXM implements Runnable{ |
|
Line 221 final class OM2OXM implements Runnable{ |
|
}else if(ch != -1){ |
}else if(ch != -1){ |
is.unread(ch); |
is.unread(ch); |
while((ch = is.read()) != '<' && ch != -1){ |
while((ch = is.read()) != '<' && ch != -1){ |
System.out.println("debug: "+ch); |
debug("debug: "+ch); |
if(isSpace(ch)){ |
if(isSpace(ch)){ |
String spaces = String.valueOf(ch); |
String spaces = String.valueOf(ch); |
|
|
Line 250 final class OM2OXM implements Runnable{ |
|
Line 251 final class OM2OXM implements Runnable{ |
|
parse_error("We expect type :'"+ type |
parse_error("We expect type :'"+ type |
+"', but we got type :'"+ token +"'("+ attribute +")."); |
+"', but we got type :'"+ token +"'("+ attribute +")."); |
} |
} |
//System.out.println(":"+token+":"+attribute+":"+type); |
//debug(":"+token+":"+attribute+":"+type); |
return true; |
return true; |
} |
} |
|
|
Line 266 final class OM2OXM implements Runnable{ |
|
Line 267 final class OM2OXM implements Runnable{ |
|
} |
} |
|
|
ret = parse_object(); |
ret = parse_object(); |
|
|
exceptTokenTypeInParse(TT_EndTag); |
exceptTokenTypeInParse(TT_EndTag); |
if(!attribute.equals("OMOBJ")){ |
if(!attribute.equals("OMOBJ")){ |
parse_error("We expect '</OMOBJ>'."); |
parse_error("We expect '</OMOBJ>'."); |
Line 278 final class OM2OXM implements Runnable{ |
|
Line 279 final class OM2OXM implements Runnable{ |
|
private CMO parse_object() throws IOException{ |
private CMO parse_object() throws IOException{ |
// object -> variable |
// object -> variable |
// | '<OMI>' S? integer S? '</OMI>' |
// | '<OMI>' S? integer S? '</OMI>' |
|
// | '<OMSTR>' S? utf7 S? '</OMSTR>' |
// | '<OMA>' S? symbol S? objects S? '</OMA>' |
// | '<OMA>' S? symbol S? objects S? '</OMA>' |
CMO ret; |
CMO ret; |
|
|
Line 291 final class OM2OXM implements Runnable{ |
|
Line 293 final class OM2OXM implements Runnable{ |
|
}else if(attribute.equals("OMI")){ |
}else if(attribute.equals("OMI")){ |
pushbackLex(); |
pushbackLex(); |
ret = parse_OMI(); |
ret = parse_OMI(); |
|
}else if(attribute.equals("OMSTR")){ |
|
pushbackLex(); |
|
ret = parse_OMSTR(); |
}else if(attribute.equals("OMA")){ |
}else if(attribute.equals("OMA")){ |
String name,cdname; |
String name,cdname; |
int argnum = 0; |
int argnum = 0; |
Line 333 final class OM2OXM implements Runnable{ |
|
Line 338 final class OM2OXM implements Runnable{ |
|
return ret; |
return ret; |
} |
} |
|
|
|
private CMO_STRING parse_OMSTR() throws IOException{ |
|
CMO_STRING ret; |
|
|
|
exceptTokenTypeInParse(TT_StartTag); |
|
if(!attribute.equals("OMSTR")){ |
|
parse_error("We expect '<OMSTR>'."); |
|
} |
|
|
|
if(readNextToken() == TT_String){ |
|
//ret = (CMO_STRING)parse_utf7(); |
|
ret = new CMO_STRING(attribute); |
|
}else{ |
|
ret = new CMO_STRING(""); |
|
pushbackLex(); |
|
} |
|
|
|
exceptTokenTypeInParse(TT_EndTag); |
|
if(!attribute.equals("OMSTR")){ |
|
parse_error("We expect '</OMSTR>'."); |
|
} |
|
|
|
return ret; |
|
} |
|
|
private CMO parse_symb_DMP() throws IOException{ |
private CMO parse_symb_DMP() throws IOException{ |
parse_object(); |
parse_object(); |
return new CMO_DISTRIBUTED_POLYNOMIAL(new CMO_DMS_GENERIC(), |
return new CMO_DISTRIBUTED_POLYNOMIAL(new CMO_DMS_GENERIC(), |
Line 630 final class OM2OXM implements Runnable{ |
|
Line 659 final class OM2OXM implements Runnable{ |
|
System.err.println((char)is.read()); |
System.err.println((char)is.read()); |
}catch(IOException e){} |
}catch(IOException e){} |
System.exit(1); |
System.exit(1); |
|
} |
|
|
|
private void debug(String str){ |
|
if(debug){ |
|
System.err.println(str); |
|
} |
} |
} |
|
|
public static void main(String[] argv) throws IOException{ |
public static void main(String[] argv) throws IOException{ |