How to work with tokenized Bangla digits in Jison?

25 views Asked by At

I am newbie at jison, using the following grammer with jison:

/* lexical grammar */
%lex
%%

\s+                   /* skip whitespace */
[০-৯]+(?:\.[০-৯]+)? return 'NUMBER'
"*"                   return '*'
"/"                   return '/'
"-"                   return '-'
"+"                   return '+'
"^"                   return '^'
"("                   return '('
")"                   return ')'
"PI"                  return 'PI'
"E"                   return 'E'
.           return 'Invalid'
// EOF means "end of file"
<<EOF>>              return 'EOF'
// any other characters will throw an error

/lex

%left '+' '-'
%left '*' '/'
%left '^'
%left UMINUS

%start expressions

%% /* language grammar */


expressions
    : e EOF
    {return $1;}
    ;


e
: e '+' e
    {var bnte = {
'০': 0,
'১': 1,
'২': 2,
'৩': 3,
'৪': 4,
'৫': 5,
'৬': 6,
'৭': 7,
'৮': 8,
 '৯': 9
};
function bntex(input) {
 var output = [];
for (var i = 0; i < input.length; ++i) {
    if (bnte.hasOwnProperty(input[i])) {
    output.push(bnte[input[i]]);
} else {
  output.push(input[i]);
}
}
return output.join();
}

var n=parseInt(bntex($1));
var s=parseInt(bntex($3));
    | e '+' e
        {$$=n+s;}
    | e '-' e
        {$$ = n-s;}
    | e '*' e
        {$$ = n*s;}
    | e '/' e
        {$$ = n/s;}
    | e '^' e
        {$$ = Math.pow(n, s);}
    | '-' e %prec UMINUS
        {$$ = -s;}
    | '(' e ')'
     {$$ = $2;}
    | NUMBER
        {$$ = Number(yytext);}
    | E
     {$$ = Math.E;}
 | PI
     {$$ = Math.PI;}
    ;

The problem is: When I want to parse ৬৭+৮.৩ it can tokenize number and + operator but returning Null as answer

I am using js function to convert number digits but it's not working.

I hope you guys will help me to fix the problem ❤️ Please....

0

There are 0 answers