Skip to content

bakkdoor/fsm.fy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fsm.fy

Finite State Machine library for Fancy

Example usage:

require: "fsm"

numbers_only = FSM new: {
  non_digit = /[^0-9]/
  digit     = /[0-9]/
  done      = /\s/ >< ""

  start: @{
    + digit -> parse_num
  }

  final parse_num: @{
    + digit -> parse_num
    + "."   -> parse_decimal
    + done  -> end
    + _     -> fail
  }

  final parse_decimal: @{
    + digit -> parse_decimal
    + done  -> end
    + _     -> fail
  }

  loop fail
}

numbers_only <- "a"     # raises FSM ParseFailure
numbers_only <- "123"   # => true
numbers_only <- "a123"  # raises FSM ParseFailure
numbers_only <- "123a"  # => false

About

Finite State Machine library for Fancy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages