I am trying to differentiate if a user's input is a float or an integer. However, when a user enters a float, the whole input is considered a float but the decimal part of it is considered an integer, too. I don't want the decimal part to be considered an integer.
The user's input are added to a table.
We are making an interpreter for LOLCode. We are having a hard time on how to do the variable declaration and initialization.
if(/(I\sHAS\sA)\s[a-zA-Z_$][0-9a-zA-Z_$]*\sITZ\s.*/i.test(entry)){
if(/(I\sHAS\sA)\s[a-zA-Z_$][0-9a-zA-Z_$]*\sITZ\s.*/i.test(entry)){
var desc = "Variable Declaration";
var lex = /I\sHAS\sA/i.exec(entry);
addToLexer(lex, desc);
}
if(/(I\sHAS\sA)\s[a-zA-Z_$][0-9a-zA-Z_$]*\sITZ\s.*/i.test(entry)){
var string = /(I\sHAS\sA)\s[a-zA-Z_$][0-9a-zA-Z_$]*\sITZ\s.*/i.exec(entry);
var desc = "Variable name";
var lex = /[^(I\sHAS\sA)\s]+/.exec(string);
addToLexer(lex, desc);
}
if(/.+ITZ\s.*/i.test(entry)){
var string = /.+ITZ\s.*/i.exec(entry);
var desc = "Initialization";
var lex = /ITZ/i.exec(string);
addToLexer(lex, desc);
}
}
if(/^[-+]?\d+$/i.test(entry)){
var desc = "Integer Literal";
var lex = /[-+]?\d+$/i.exec(entry);
addToLexer(lex, desc);
}
if(/^[-+]?\d*\.\d*$/i.test(entry)){
var desc = "Float Literal";
var lex = /[-+]?[0-9]*\.?[0-9]+$/i.exec(entry);
addToLexer(lex, desc);
}
[EDITED] After doing one of the suggestions, the whole number part of the float is the one considered as another integer now.