INT(1,50,r) SPACE INT(1,50,c) NEWLINE REP(r) REGEX("[O0]+", line) ASSERT(STRLEN(line) == c) NEWLINE END # https://github.com/DOMjudge/checktestdata # https://github.com/DOMjudge/checktestdata/blob/main/doc/format-spec.md # # Quick reference: # # integer := 0|-?[1-9][0-9]* # float := -?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)? # string := ".*" # varname := [a-z][a-z0-9]* # variable := | '[' [',' ...] ']' # value := | | | | # compare := '<' | '>' | '<=' | '>=' | '==' | '!=' # logical := '&&' | '||' # expr := | [+-] # term := | [*%/] # factor := | '-' | '(' ')' | '^' # test := '!' | | '(' ')' | | # # Commands: # # MATCH( str) # ISEOF # UNIQUE( a [, b ...]) # INARRAY( val, var) # STRLEN( str) # SPACE / NEWLINE # EOF # INT( min, max [, name]) # FLOAT( min, max [, name [, option]]) # FLOATP( min, max, mindecimals, maxdecimals, [, name [, option]]) # STRING( str) # REGEX( str [, name]) # ASSERT( condition) # SET( name '=' value[, ...]) # UNSET( a [, b ...]) # REP( count [, separator]) [...] END # REPI( i, count [, separator]) [...] END # WHILE( condition [, separator]) [...] END # WHILEI( i, condition [, separator]) [...] END # IF( cond) [ cmds1...] [ELSE [ cmds2...]] END