如何有一个数字的范围
How to have a range for a number
我正在使用 javaCC 生成我的解析器。
但我想有一个这种格式的日期:“01/02”或“05/12”或“30/11”
TOKEN :
{
< CONSTANT : (< DIGIT >)+ >
| < STRING : ( ["A"-"Z","a"-"z"] )+ >
| < #DIGIT : [ "0"-"9" ] >
| < SLASH: "/" >
}
我有类似的东西:
(< CONSTANT > <SLASH > < CONSTANT >)
但是它接受 999/888 ...
我怎样才能只接受斜线左侧的 0-31 和斜线右侧的 0-12
非常感谢您的帮助
我可能会在解析器中大致如下处理这个问题
void date() throws AnException : {
Token t ;
int m;
int d ;
}{
t=<CONSTANT> { d = Integer.parse(t.image) ; }
<SLASH>
t=<CONSTANT> { m = Integer.parse(t.image) ; }
{ if( m > 12 ) throw AnException() ;
if( d > 31 ) throw AnException() ;
}
}
我正在使用 javaCC 生成我的解析器。 但我想有一个这种格式的日期:“01/02”或“05/12”或“30/11”
TOKEN :
{
< CONSTANT : (< DIGIT >)+ >
| < STRING : ( ["A"-"Z","a"-"z"] )+ >
| < #DIGIT : [ "0"-"9" ] >
| < SLASH: "/" >
}
我有类似的东西:
(< CONSTANT > <SLASH > < CONSTANT >)
但是它接受 999/888 ... 我怎样才能只接受斜线左侧的 0-31 和斜线右侧的 0-12
非常感谢您的帮助
我可能会在解析器中大致如下处理这个问题
void date() throws AnException : {
Token t ;
int m;
int d ;
}{
t=<CONSTANT> { d = Integer.parse(t.image) ; }
<SLASH>
t=<CONSTANT> { m = Integer.parse(t.image) ; }
{ if( m > 12 ) throw AnException() ;
if( d > 31 ) throw AnException() ;
}
}