Здравствуйте. Я пишу(для практики) лексер на JS, но столкнулся с проблемой, я не знаю как реализовать парсинг всего кода, а не одного токена.
p.s. Код на всякий случай прилагается.
// То, что мне надо распарсить
var code = "fn main() { \n \
...\n \
end";
// Регулярки
var rules = [
[/[0-9abcdefABCDEF]+x[0-9abcdefABCDEF]+/, "int"],
[/[0-9abcdefABCDEF]+/, "int"],
[/[0-9]+\.[0-9]+/, "int"],
[/[0-9]+/, "int"],
[/[ \t\n]/, null],
]
// Функция для генерации токена
function genToken(token, rules) {
for (i=0; i < rules.length; i++) {
match = token.match(rules[i][0]);
console.log(rules[i][0].exec(token));
if (match != null) {
return [
token.match(match, rules[i][1])
];
}
}
throw Error("No match found!");
}
// И как это использовать
// console.log(genToken("0x10f"));