Skip to content

dmhd6219/FSA_Validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

FSA_Validator

Implementation of FSA validator. Was created as homework for Theoretical Computer Science course at Innopolis University.

Given an FSA description in the fsa.txt (see input file format) program should output the result.txt containing an error description (see validation result) or a report, indicating if FSA is complete (or incomplete) and warning (see warning messages) if any. Warnings should be sorted according to their code.

Validation result

Errors:

  • E1: A state 's' is not in the set of states
  • E2: Some states are disjoint
  • E3: A transition 'a' is not represented in the alphabet
  • E4: Initial state is not defined
  • E5: Input file is malformed

Report:

  • FSA is complete/incomplete

Warnings:

  • W1: Accepting state is not defined
  • W2: Some states are not reachable from the initial state
  • W3: FSA is nondeterministic

Input file format

states=[s1,s2,...]	  // s1 , s2, ... ∈ latin letters, words and numbers
alpha=[a1,a2, ...]	  // a1 , a2, ... ∈ latin letters, words, numbers and character '_’(underscore)
init.st=[s]	          // s ∈ states
fin.st=[s1,s2,...]	  // s1, s2 ∈ states
trans=[s1>a>s2,... ]  // s1,s2,...∈ states; a ∈ alpha

Example 1

fsa.txt
states=[on,off]
alpha=[turn_on,turn_off]    
init.st=[off]
fin.st=[]
trans=[off>turn_on>off,on>turn_off>on]
result.txt
Error:
E2: Some states are disjoint

Example 2

states=[on,off]
alpha=[turn_on,turn_off]    
init.st=[off]
fin.st=[]
trans=[off>turn_on>on,on>turn_off>off]
result.txt
FSA is incomplete
Warning:
W1: Accepting state is not defined