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:

  1. BAYANI – a comment initialization keyword.
  2. GOGE – a keyword to delete a file or to clear screen.
  3. KULA – a keyword to declare variable.
  4. TAFI – function call.
  5. KIRA – call of a function or sub module.
  6. JEKA – unconditional jump.
  7. SASSARFA – delays operation for specific amount of time.
  8. SAUTI – makes sound using the internal speaker of the computer.
  9. GIRMA – dimensioning an array.
  10. SAKEGIRMA – redimensioning of an array.
  11. SHIGARDA – receives input from the keyboard.
  12. RUBUTA – displays text or argument on the monitor.
  13. MUDDIN – declaring while loop.
  14. KARSHE – end of program.
  15. LISSAFTA - expression assignment.
  16. BUDE - opens a unit or aided file
  17. RUFE - closes a unit or aided file
  18. KASANCEWAR - switch case for an argument
  19. FITA - Exits from a module
  20. DAKATA - temporarily halts operation
  21. ZANA - draws an object on the screen
  22. KUSURWARSIN - gets the sine or arcsine of an argument
  23. KUSURWARCOS - gets the cosine or arccosine of an argument
  24. KUSURWARTAN - gets the tan or arctan of an argument
  25. TAKAITA - rounds up a floating number to a specified digits
  26. TSARIN - declares a function
  27. KARSHEN - ends of a module or function
  28. DAUKO - receives an argument from a function
  29. BISAKURE - initialises on error declaration
  30. CIREKURE - set off the on error mode
  31. LAUNI - Sets the colours of text and the monitor
  32. RUBUTACIKIN - writes an argument into a text file
  33. SHIGARDAGA - gets an argument from a text file
  34. ANINI - reads a keey pressed
  35. INHAR - if..then..else statement
  36. SANYA - assigns value to a declared variable
  37. YANKE - converts a floating number to an integer
  38. JUYA - changes the polarity of a number
  39. TSARASK - reposition a cursor on the screen

BAYANI

  1. BAYANI ::= <TEXT STRING>/;
  2. GOGE

  3. GOGE ::= <FILESPECIFICATION>/<DRIVE>/;

  4. GOGE ::= ;
  5. KULA

  6. KULA ::= <VARIABLE NAME>/ HARAFI/;

  7. KULA ::= <VARIABLE NAME>/ ALKALAMI/;
  8. KULA ::=<VARIABLE NAME>/<0..9>/;
  9. KULA ::=<VARIABLE NAME>/ AMD/;
  10. KULA ::=<VARIABLE NAME>/ ZABI/;
  11. TAFI

  12. TAFI ::= <FUNCTION CALL ARGUMENT>/;

  13. KIRA

  14. KIRA ::=MTK NA/<FUNCTION NAME>/;

  15. KIRA ::=MTK NA/<FUNCTION NAME>/#/1/;
  16. KIRA ::=MTK NA/<FUNCTION NAME>/#/2/;
  17. JEKA

  18. JEKA ::=<LABEL>/DAWO/;

  19. JEKA ::=<LABEL>/CIGABA/;
  20. SASSARFA

  21. SASSARFA ::=<1..60>/;

  22. SAUTI

  23. SAUTI ::=<FREQUENCY>/<1..60>/;

  24. GIRMA

  25. GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / HARAFI/;

  26. GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / ALKALAMI/;
  27. GIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / AMD/;
  28. GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / HARAFI/;
  29. GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / ALKALAMI/;
  30. GIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / AMD/;
  31. SAKEGIRMA

  32. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / HARAFI/;

  33. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / ALKALAMI/;
  34. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/ ] / AMD/;
  35. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / HARAFI/;
  36. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / ALKALAMI/;
  37. SAKEGIRMA ::=<ARRAY NAME>/ [ / 1..100/,/1..100/ ] / AMD/;
  38. SHIGARDA

  39. SHIGARDA ::=<VARIABLE>/;

  40. RUBUTA

  41. RUBUTA ::= **/"/<TEXT STRING>/"/;

  42. RUBUTA ::=*/ /"/<TEXT STRING>/"/,/<VARIABLE>/;
  43. RUBUTA ::=*/ /"/<TEXT STRING>/"/,/<0..9>/;
  44. RUBUTA ::=/* /<VARIABLE>/,/"/<TEXT STRING>/"/;
  45. RUBUTA ::=/* /<0..9>/,/"/<TEXT STRING>/"/;
  46. RUBUTA ::=// /<VARIABLE>/;
  47. MUDDIN

  48. MUDDIN ::= <VARIABLE>/</<VARIABLE>/;

  49. MUDDIN ::= <VARIABLE>/>/<VARIABLE>/;
  50. MUDDIN ::= <VARIABLE>/=/<VARIABLE>/;
  51. MUDDIN ::= <VARIABLE>/<>/<VARIABLE>/;
  52. MUDDIN ::= <VARIABLE>/<=/<VARIABLE>/;
  53. MUDDIN ::= <VARIABLE>/>=/<VARIABLE>/;
  54. MAIMAITA

  55. MAIMAITA ::=<LABEL>/;

  56. KARSHE

  57. KARSHE ::= ;

  58. LISSAFTA

  59. LISSAFTA ::= **/<VARIABLE>/+/<VARIABLE>/<VARIABLE>/;

  60. LISSAFTA ::= **/<VARIABLE>/*/<VARIABLE>/<VARIABLE>/;
  61. LISSAFTA ::= **/<VARIABLE>/ / /<VARIABLE>/<VARIABLE>/;
  62. LISSAFTA ::= **/<VARIABLE>/-/<VARIABLE>/<VARIABLE>/;
  63. LISSAFTA ::= **/<VARIABLE>/%/<VARIABLE>/<VARIABLE>/;
  64. LISSAFTA ::= */ /<VARIABLE>/+/<0..9>/<VARIABLE>/;
  65. LISSAFTA ::= */ /<VARIABLE>/*/<0..9>/<VARIABLE>/;
  66. LISSAFTA ::= */ /<VARIABLE>/ / /<0..9>/<VARIABLE>/;
  67. LISSAFTA ::= */ /<VARIABLE>/-/<0..9>/<VARIABLE>/;
  68. LISSAFTA ::= */ /<VARIABLE>/%/<0..9>/<VARIABLE>/;
  69. LISSAFTA ::= /*/<0..9>/+/<VARIABLE>/<VARIABLE>/;
  70. LISSAFTA ::= /*/<0..9>/*/<VARIABLE>/<VARIABLE>/;
  71. LISSAFTA ::= /*/<0..9>/ / /<VARIABLE>/<VARIABLE>/;
  72. LISSAFTA ::= /*/<0..9>/-/<VARIABLE>/<VARIABLE>/;
  73. LISSAFTA ::=/*/<0..9>/%/<VARIABLE>/<VARIABLE>/;
  74. LISSAFTA ::= // /<0..9>/+/<0..9>/<VARIABLE>/;
  75. LISSAFTA ::= // /<0..9>/*/<0..9>/<VARIABLE>/;
  76. LISSAFTA ::= // /<0..9>/ / /<0..9>/<VARIABLE>/;
  77. LISSAFTA ::= // /<0..9>/-/<0..9>/<VARIABLE>/;
  78. LISSAFTA ::=// /<0..9>/%/<0..9>/<VARIABLE>/;
  79. BUDE

  80. BUDE ::= TAGANKUSURWA/<LABEL>/;

  81. BUDE ::= TAGANLAUNI/<LABEL>/;
  82. BUDE ::= TAGANRAGOWA/<LABEL>/;
  83. BUDE ::= TAGANKALMA/<LABEL>/;
  84. >RUFE

  85. RUFE ::= TAGANKUSURWA/;

  86. RUFE ::= TAGANLAUNI/;
  87. RUFE ::= TAGANRAGOWA/;
  88. RUFE ::= TAGANKALMA/;
  89. KASANCEWAR

  90. KASANCEWAR ::=<VARIABLE>

  91. /<CASE1>/:/<STATEMENT 1>/;

    .

    .

    /<CASE n>/:/<STATEMENT n/;

    / SAURAN/:/DEFAULT STATEMENT/;

    <LABEL>/FITA/<LABEL>/;

    FITA

  92. FITA ::=FITA/<LABEL>/;

  93. DAKATA

  94. DAKATA ::=;

  95. ZANA

  96. ZANA ::=<ANGLE>/<LENGTH OF DRAWING>/<TINTING COEFFICIENT>/;

  97. KUSURWARSIN

  98. KUSURWARSIN ::=<0..360>/<VARIABLE>/;
  99. KUSURWARSIN ::=<VARIABLE>/<VARIABLE>/;
  100. KUSURWARCOS

  101. KUSURWARCOS ::=<0..360>/<VARIABLE>/;

  102. KUSURWARCOS ::=<VARIABLE>/<VARIABLE>/;
  103. KUSURWARTAN

  104. KUSURWARTAN ::=<0..360>/<VARIABLE>/;

  105. KUSURWARTAN ::=<VARIABLE>/<VARIABLE>/;
  106. TAKAITA

  107. TAKAITA ::=<VARIABLE>/<DECIMAL PLACES>/;

  108. TSARIN

  109. TSARIN :;=<FUNCTION NAME>/(/<VARIABLE>/)/(/<VARIABLE>/)/<LABEL>/;

  110. KARSHEN

  111. KARSHEN ::=<FUNCTION NAME>/;

  112. DAUKO

  113. DAUKO/(/<VARIABLE/)/(/<VARIABLE>/)/DAGA/<FUNCTION NAME>/;

  114. BISAKURE

  115. BISAKURE ::=<LABEL>/<LABEL>/;

  116. CIREKURE

  117. CIREKURE ::=;

  118. LAUNI

  119. LAUNI ::=<COLOUR>/<COLOUR>/;

  120. DA

  121. <VARIABLE>/&/<VARIABLE>

  122. KO

  123. <VARIABLE>/ /<VARIABLE>

  124. BABU

  125. !<VARIABLE>

  126. RUBUTACIKIN

  127. RUBUTACIKIN ::=<PATH>/*/"/<TEXT STRING>/"/;

  128. RUBUTACIKIN ::=<PATH>/ / /"/<VARIABLE>/"/;
  129. RUBUTACIKIN ::=<PATH>/ / /"/<VARIABLE>/"/;
  130. SHIGARDAGA

  131. SHIGARDAGA ::=<PATH>/*/;

  132. SHIGARDAGA ::=<PATH>/ / /;
  133. ANINI

  134. ANINI ::=;

  135. INHAR..TO..KOKUMA

  136. INHAR ::=<CONDITION>/TO/<STATEMENT1>/;

  137. INHAR ::=<CONDITION>/TO/<STATEMENT 1>/KOKUMA/<STATEMENT 2>/;
  138. SANYA

  139. SANYA ::=<VARIABLE>/=/<CONSTANT>/;

  140. YANKE

  141. YANKE ::=<VARIABLE>/;

  142. JUYA

  143. JUYA ::=<VARIABLE>/;

  144. TSARASK

  145. TSARASK ::=<1..24>/<1..78>/;

Sayi takardar da ke koyar da rubuta aiki cikin Gwani bugi nan
Hosted by www.Geocities.ws

1