Skip to content

akvnn/prolog-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

prolog-parser

prolog-parser is a recursive-descent parser (syntax analyzer and lexical analyzer) for a simplified version of prolog, it determines whether a given prolog program is correct, or whether it contains errors.
The simplified grammar is shown below

Grammar in BNF (Backus-Naur Form)

  • <program> -> <clause-list> <query> | <query>
  • <clause-list> -> <clause> | <clause> <clause-list>
  • <clause> -> <predicate> . | <predicate> :- <predicate-list> .
  • <query> -> ?- <predicate-list> .
  • <predicate-list> -> <predicate> | <predicate> , <predicate-list>
  • <predicate> -> <atom> | <atom> ( <term-list> )
  • <term-list> -> <term> | <term> , <term-list>
  • <term> -> <atom> | <variable> | <structure> | <numeral>
  • <structure> -> <atom> ( <term-list> )
  • <atom> -> <small-atom> | ' <string> '
  • <small-atom> -> <lowercase-char> | <lowercase-char> <character-list>
  • <variable> -> <uppercase-char> | <uppercase-char> <character-list>
  • <character-list> -> <alphanumeric> | <alphanumeric> <character-list>
  • <alphanumeric> -> <lowercase-char> | <uppercase-char> | <digit>
  • <lowercase-char> -> a | b | c | ... | x | y | z
  • <uppercase-char> -> A | B | C | ... | X | Y | Z | _
  • <numeral> -> <digit> | <digit> <numeral>
  • <digit> -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  • <string> -> <character> | <character> <string>
  • <character> -> <alphanumeric> | <special>
  • <special> -> + | - | * | / | \ | ^ | ~ | : | . | ? | | # | $ | &

Prerequisites

Input: Code Files to be parsed must be in the same directory named "1.txt", "2.txt".. (any number of files)
Output: Output of the parser will be in a text file called parser_output.txt

Credits

This has been developed by myself Ak, Yasir , and Muath as part of our Programming Languages Course Project for Fall 2023

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages