final class OpenListToken
final class CommaToken
final class CloseListToken
final class NumberToken // Has a public final property "value" that contains the int
나는 또한 구현 tokenizers :
[1,2, 3]
[ 3, 4]
[3 ,4,56, 7 ]
[]
내가 구현 한 몇 가지 클래스는 토큰을 표현하기 위해 (내 Token
인터페이스에서 상속) :
static final Parser<OpenListToken> openListTokenParser
static final Parser<CommaToken> commaTokenParser
static final Parser<CloseListToken> closeListTokenParser
static final Parser<NumberToken> numberTokenParser
이러한 모든 문자 수준에서 작동합니다. 예를 들어 :
final NumberToken t = numberTokenParser.parse("123");
// t.value == 123
final OpenListToken u = openListToken.parse("[");
// Succeeds
는 지금은 번호 목록을 나타냅니다보다 클래스입니다 ListExpression
의 파서를 만들기 위해 그들을 결합하고 싶습니다. 이 [1,2,3]
같은 문자열하지만 분명하지 [ 1, 2 ]
같은 문자열에 대한 작동
openListTokenParser
.next(numberTokenParser.sepBy(commaTokenParser))
.followedBy(closeListTokenParser)
: 내가 좋아하는 뭔가를 시도했다.
일부 파서를 가져 와서 whitespace*
사이에 연산자가 있습니까?
또는 문자 대신 Token
인터페이스 인스턴스의 스트림에서 내 ListExpression
파서가 작동하도록 할 수 있습니까?
당신이 공백을 무시하려는 –
이 @Mohsen_Fatemi 올바른 – sdgfsdh
이 시도 :'정적 = Parsers.or 무시한 최종 파서은 ( Scanners.JAVA_LINE_COMMENT, Scanners.JAVA_BLOCK_COMMENT, Scanners.WHITESPACES) .skipMany(); ' –