Skip to content

PalAditya/JParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JParser: An easy-to-use library to quickly debug your work.

Currently supported parsers: LR0, SLR, LR1 and LALR parsers.
A basic usage of the library is as easy as follows:

LR1Parser obj=new LR1Parser();//Create an instance of the desired parser-In this case LR1 type parser
obj.read_grammar("Path_to_grammar");//Read the grammar file
obj.buildDFA();//Build a dfa from the file
System.out.println(obj.states);//Prints the transitions in all states
obj.print_transitions();//Print all the transitions
obj.getParsingTable(true);//Use false to avoid printing the table after creation
obj.parse("a c e",true);//Parse the string; use false to prevent the stack actions from displaying on screen

An example grammar files is included in the files directory.

  • The map of the states

map

  • The parse table

table

  • The actions taken by stack to parse the table

Stack_actions

Functions

Parser.java is the base class which all the other classes inherit from. It exposes the following methods:

Function Return Type Action
read_grammar void Reads the grammar, augments it and fills in the list of terminals and non-terminals
join String Utility method to join convert ArrayList to String
getClosure void Accepts a HashSet of type <Parser.Pair> and computes it's closure
getGoto HashSet<Parser.Pair>Computes Goto
augment, unaugment void,void Augments and unaugments the grammar
parse void Parses the string using the generated table
getIndex int Returns the index of the state, or -1 if a new state
pretty_it void Formatting
print_transitions void Prints all transitions

You can either clone the repository here for a minimal usage, or download it from maven, with full documentation and junit tests.

If you choose option 1, you can use mvn clean install on the files in src and pom.xml directly (don't use the files directory) to build the jar, javadoc and run tests.
The files in the files directory gives you all the source files, if you want to run them individually, with more verbose debugging options.

For option 2 and release build:

<dependency>
  <groupId>io.github.PalAditya</groupId>
  <artifactId>parser-library</artifactId>
  <version>0.1.1</version>
</dependency>

For snapshot build:

<dependency>
  <groupId>io.github.PalAditya</groupId>
  <artifactId>parser-library</artifactId>
  <version>0.1-SNAPSHOT</version>
</dependency>

In case you want the pre-release (latest) versions, you can download it manually from here

More documentation coming soon!