CONTEXT FREE GRAMMAR FOR GWANI PROGRAMMING LANGUAGE VERSION 1
Gwani programming language was developed by Qadi Abubakar Muhammad in 1423 A.H. (2002). The language was developed in order to provide a programming language in Hausa. The language belongs to the third generation of programmiung languages. There is a book written by the developer of the language on the language titled,’ Gwani a saukake, jagoran koyon Gwani’, which will soon be out.
Our company has embarked on the design of an interpreter for the language and the interpreter will soon be out in a disk with tutorials on learning how to program in Gwani.
There are thirty-nine reserve keywords in the language, by reserved means that a programmer cannot give them any other meaning apart from the one defined by the interpreter.
These reserved words are:
- BAYANI – a comment initialization keyword.
- GOGE – a keyword to delete a file or to clear screen.
- KULA – a keyword to declare variable.
- TAFI – function call.
- KIRA – call of a function or sub module.
- JEKA – unconditional jump.
- SASSARFA – delays operation for specific amount of time.
- SAUTI – makes sound using the internal speaker of the computer.
- GIRMA – dimensioning an array.
- SAKEGIRMA – redimensioning of an array.
- SHIGARDA – receives input from the keyboard.
- RUBUTA – displays text or argument on the monitor.
- MUDDIN – declaring while loop.
- KARSHE – end of program.
- LISSAFTA - expression assignment.
- BUDE - opens a unit or aided file
- RUFE - closes a unit or aided file
- KASANCEWAR - switch case for an argument
- FITA - Exits from a module
- DAKATA - temporarily halts operation
- ZANA - draws an object on the screen
- KUSURWARSIN - gets the sine or arcsine of an argument
- KUSURWARCOS - gets the cosine or arccosine of an argument
- KUSURWARTAN - gets the tan or arctan of an argument
- TAKAITA - rounds up a floating number to a specified digits
- TSARIN - declares a function
- KARSHEN - ends of a module or function
- DAUKO - receives an argument from a function
- BISAKURE - initialises on error declaration
- CIREKURE - set off the on error mode
- LAUNI - Sets the colours of text and the monitor
- RUBUTACIKIN - writes an argument into a text file
- SHIGARDAGA - gets an argument from a text file
- ANINI - reads a keey pressed
- INHAR - if..then..else statement
- SANYA - assigns value to a declared variable
- YANKE - converts a floating number to an integer
- JUYA - changes the polarity of a number
- TSARASK - reposition a cursor on the screen
BAYANI
- BAYANI ::= <TEXT STRING>/;
GOGE
GOGE ::= <FILESPECIFICATION>/<DRIVE>/;
- GOGE ::= ;
KULA
KULA ::= <VARIABLE NAME>/ HARAFI/;
- KULA ::= <VARIABLE NAME>/ ALKALAMI/;
- KULA ::=<VARIABLE NAME>/<0..9>/;
- KULA ::=<VARIABLE NAME>/ AMD/;
- KULA ::=<VARIABLE NAME>/ ZABI/;
TAFI
TAFI ::= <FUNCTION CALL ARGUMENT>/;
KIRA
KIRA ::=MTK NA/<FUNCTION NAME>/;
- KIRA ::=MTK NA/<FUNCTION NAME>/#/1/;
- KIRA ::=MTK NA/<FUNCTION NAME>/#/2/;
JEKA
JEKA ::=<LABEL>/DAWO/;
- JEKA ::=<LABEL>/CIGABA/;
SASSARFA
SASSARFA ::=<1..60>/;
SAUTI
SAUTI ::=<FREQUENCY>/<1..60>/;
GIRMA
GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / HARAFI/;
- GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / ALKALAMI/;
- GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / AMD/;
- GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / HARAFI/;
- GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / ALKALAMI/;
- GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / AMD/;
SAKEGIRMA
SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / HARAFI/;
- SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / ALKALAMI/;
- SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / AMD/;
- SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / HARAFI/;
- SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / ALKALAMI/;
- SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / AMD/;
SHIGARDA
SHIGARDA ::=<VARIABLE>/;
RUBUTA
RUBUTA ::= **/"/<TEXT STRING>/"/;
- RUBUTA ::=*/ /"/<TEXT STRING>/"/,/<VARIABLE>/;
- RUBUTA ::=*/ /"/<TEXT STRING>/"/,/<0..9>/;
- RUBUTA ::=/* /<VARIABLE>/,/"/<TEXT STRING>/"/;
- RUBUTA ::=/* /<0..9>/,/"/<TEXT STRING>/"/;
- RUBUTA ::=// /<VARIABLE>/;
MUDDIN
MUDDIN ::= <VARIABLE>/</<VARIABLE>/;
- MUDDIN ::= <VARIABLE>/>/<VARIABLE>/;
- MUDDIN ::= <VARIABLE>/=/<VARIABLE>/;
- MUDDIN ::= <VARIABLE>/<>/<VARIABLE>/;
- MUDDIN ::= <VARIABLE>/<=/<VARIABLE>/;
- MUDDIN ::= <VARIABLE>/>=/<VARIABLE>/;
MAIMAITA
MAIMAITA ::=<LABEL>/;
KARSHE
KARSHE ::= ;
LISSAFTA
LISSAFTA ::= **/<VARIABLE>/+/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= **/<VARIABLE>/*/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= **/<VARIABLE>/ / /<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= **/<VARIABLE>/-/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= **/<VARIABLE>/%/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= */ /<VARIABLE>/+/<0..9>/<VARIABLE>/;
- LISSAFTA ::= */ /<VARIABLE>/*/<0..9>/<VARIABLE>/;
- LISSAFTA ::= */ /<VARIABLE>/ / /<0..9>/<VARIABLE>/;
- LISSAFTA ::= */ /<VARIABLE>/-/<0..9>/<VARIABLE>/;
- LISSAFTA ::= */ /<VARIABLE>/%/<0..9>/<VARIABLE>/;
- LISSAFTA ::= /*/<0..9>/+/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= /*/<0..9>/*/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= /*/<0..9>/ / /<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= /*/<0..9>/-/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::=/*/<0..9>/%/<VARIABLE>/<VARIABLE>/;
- LISSAFTA ::= // /<0..9>/+/<0..9>/<VARIABLE>/;
- LISSAFTA ::= // /<0..9>/*/<0..9>/<VARIABLE>/;
- LISSAFTA ::= // /<0..9>/ / /<0..9>/<VARIABLE>/;
- LISSAFTA ::= // /<0..9>/-/<0..9>/<VARIABLE>/;
- LISSAFTA ::=// /<0..9>/%/<0..9>/<VARIABLE>/;
BUDE
BUDE ::= TAGANKUSURWA/<LABEL>/;
- BUDE ::= TAGANLAUNI/<LABEL>/;
- BUDE ::= TAGANRAGOWA/<LABEL>/;
- BUDE ::= TAGANKALMA/<LABEL>/;
>RUFE
RUFE ::= TAGANKUSURWA/;
- RUFE ::= TAGANLAUNI/;
- RUFE ::= TAGANRAGOWA/;
- RUFE ::= TAGANKALMA/;
KASANCEWAR
KASANCEWAR ::=<VARIABLE>
/<CASE1>/:/<STATEMENT 1>/;
.
.
/<CASE n>/:/<STATEMENT n/;
/ SAURAN/:/DEFAULT STATEMENT/;
<LABEL>/FITA/<LABEL>/;
FITA
FITA ::=FITA/<LABEL>/;
DAKATA
DAKATA ::=;
ZANA
ZANA ::=<ANGLE>/<LENGTH OF DRAWING>/<TINTING COEFFICIENT>/;
KUSURWARSIN
- KUSURWARSIN ::=<0..360>/<VARIABLE>/;
- KUSURWARSIN ::=<VARIABLE>/<VARIABLE>/;
KUSURWARCOS
KUSURWARCOS ::=<0..360>/<VARIABLE>/;
- KUSURWARCOS ::=<VARIABLE>/<VARIABLE>/;
KUSURWARTAN
KUSURWARTAN ::=<0..360>/<VARIABLE>/;
- KUSURWARTAN ::=<VARIABLE>/<VARIABLE>/;
TAKAITA
TAKAITA ::=<VARIABLE>/<DECIMAL PLACES>/;
TSARIN
TSARIN :;=<FUNCTION NAME>/(/<VARIABLE>/)/(/<VARIABLE>/)/<LABEL>/;
KARSHEN
KARSHEN ::=<FUNCTION NAME>/;
DAUKO
DAUKO/(/<VARIABLE/)/(/<VARIABLE>/)/DAGA/<FUNCTION NAME>/;
BISAKURE
BISAKURE ::=<LABEL>/<LABEL>/;
CIREKURE
CIREKURE ::=;
LAUNI
LAUNI ::=<COLOUR>/<COLOUR>/;
DA
<VARIABLE>/&/<VARIABLE>
KO
<VARIABLE>/ /<VARIABLE>
BABU
!<VARIABLE>
RUBUTACIKIN
RUBUTACIKIN ::=<PATH>/*/"/<TEXT STRING>/"/;
- RUBUTACIKIN ::=<PATH>/ / /"/<VARIABLE>/"/;
- RUBUTACIKIN ::=<PATH>/ / /"/<VARIABLE>/"/;
SHIGARDAGA
SHIGARDAGA ::=<PATH>/*/;
- SHIGARDAGA ::=<PATH>/ / /;
ANINI
ANINI ::=;
INHAR..TO..KOKUMA
INHAR ::=<CONDITION>/TO/<STATEMENT1>/;
- INHAR ::=<CONDITION>/TO/<STATEMENT 1>/KOKUMA/<STATEMENT 2>/;
SANYA
SANYA ::=<VARIABLE>/=/<CONSTANT>/;
YANKE
YANKE ::=<VARIABLE>/;
JUYA
JUYA ::=<VARIABLE>/;
TSARASK
TSARASK ::=<1..24>/<1..78>/;
Sayi takardar da ke koyar da rubuta aiki cikin Gwani bugi nan