Scala パーサーのコンビネーターに少し混乱しています。Reader のカスタム実装を使用して、トークンのリストを直接読み取ります。
private class Token_Reader(tokens: List[Token], val pos: Token_Pos) extends Reader
{
def first = if(atEnd) null else tokens.head
def rest = if(atEnd) this else new Token_Reader(tokens.tail, new Token_Pos(pos.p + 1))
def atEnd = tokens.isEmpty
}
私を困惑させているのは、実際のパーサーによって完全に無視されているように見え、 /atEnd
を使用すると無限ループ/無限再帰が発生することです。*
rep