Giter Club home page Giter Club logo

regex's Introduction

			  #### README ####
_______________________________________________________________________________

author : Arjun Krishna

_______________________________________________________________________________
# the following looks good when viewed from the vi editor #
_______________________________________________________________________________
file_structure:
 a) main.cpp	: Main code compiled as match (executable) 
 
 b) grammer.cnf	: Grammer which generates valid regular expressions

 c) cnf.h 	: Library for converting a cnf grammer containing file
		  i.e grammer.cnf ( which is required in a described format )

 d) regex.h	: Library for constructing an NFA for a regular expression
		  and for matching strings (i.e to check if string belongs
		  to the language represented by the regular expression.
_______________________________________________________________________________

FORMAT FOR GRAMMER ( for grammer.cnf ):

 ____________________________________________________________________________
|				FORMAT					     |
|									     |
|<A>=<B><C>							 	     |
|<A>=$a$								     |
|____________________________________________________________________________|

meaning,
grammer has productions
A -> BC
A -> a

<B> -- indicates non terminal symbol
$B$ -- indicates a terminal symbol

_______________________________________________________________________________

cnf.h:

class CNF:
 constructor : CNF(file_name) 	# file_name contains the grammer in CNF
 
 functions:
 1) print_productions()		# prints the productions in the grammer
 2) CYK(s)			# run the CYK algorithm on string s
				# returns 1 if s is in language of the Grammer

_______________________________________________________________________________

regex.h:

class automaton:
 public variables:
	vector <int> S	# Start states
	vector <int> F	# Final states
	adj		# The di-graph representation of automaton
	Q		# The number of states in automaton

 constructor: automaton(char a)	# automaton that accepts only string a

functions:	{Not part of the class}

nfa_union(A,B)		# return NFA of union of A and B
dot(A,B)		# return NFA of concatenation of A and B
astrix(A)		# return NFA of A* 

create_automaton(regex)	# returns automaton that accepts L(regex)

run_NFA(M,s)	# run's the string s on NFA M

match_string(M,s)	# returns 1 if s is accepted by 1 else 0
_______________________________________________________________________________

main.cpp :
 # code when compiled requires input of the format

N is a integer
|regex|  <= 100
|string| <= 100000

input:
	regex
	N
	{followed by N strings to be tested}

output:
	{ Yes/No N times }
	
	# Yes if the string is accepted by L(regex)
	# No otherwise
_______________________________________________________________________________

--------------------------------- END -----------------------------------------




regex's People

Contributors

arjun-krishna avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.