R/repetition1N.R

Defines functions repetition1N

Documented in repetition1N

#do not edit, edit noweb/qmrparser.nw
repetition1N <- function(rpa, 
                         action = function(s)   list(type="repetition1N",value=s  ),
                         error  = function(p,h) list(type="repetition1N",pos=p,h=h))

  
  function(stream) {
    cstream <- rpa(stream)
    
    if ( cstream$status == "fail" )  return(list(status="fail",node=error(streamParserPosition(stream),cstream$node),stream=stream))
    
    iinc        <- 1000
    value       <- rep(list(list()),iinc)
    imax        <- iinc
    i           <- 1    
    value[[i]]  <- cstream$node    
    stream      <- cstream$stream 
    
    while( TRUE ) {
      cstream <- rpa(stream)
      if ( cstream$status == "fail" ) break()
      i           <- i + 1
      if ( i >= imax ) { 
        value <- c(value, rep(list(list()),iinc))
        imax  <- imax + iinc
      }        
      value[[i]]  <- cstream$node
      stream      <- cstream$stream
    }
    return(list(status="ok",node=action(value[1:i]),stream=stream))
  }

Try the qmrparser package in your browser

Any scripts or data that you put into this service are public.

qmrparser documentation built on April 24, 2022, 1:05 a.m.