Add Lexer class

This commit is contained in:
josh committed 2021-07-05 19:13:41 -04:00
1 parent 2f1cb47bea
commit 91d6ee25ea
1 file changed
+6 -3
+6 -3
View File
@@ -69,6 +69,8 @@ class <%= classname %>
}
}
class Lexer
{
enum
{
<% @grammar.tokens.each_with_index do |token, index| %>
@@ -95,7 +97,7 @@ class <%= classname %>
uint destination;
}
private struct LexerState
private struct State
{
uint transition_table_index;
uint n_transitions;
@@ -109,9 +111,9 @@ class <%= classname %>
<% end %>
];
private static const LexerState lexer_states[] = [
private static const State states[] = [
<% state_table.each do |state_table_entry| %>
LexerState(<%= state_table_entry[:transition_table_index] %>u, <%= state_table_entry[:n_transitions] %>u, <%= state_table_entry[:accepts] %>u),
State(<%= state_table_entry[:transition_table_index] %>u, <%= state_table_entry[:n_transitions] %>u, <%= state_table_entry[:accepts] %>u),
<% end %>
];
@@ -132,4 +134,5 @@ class <%= classname %>
uint code_point = Decoder.decode_code_point(input, input_length, &code_point_length);
return null;
}
}
}