Skip to content

Commit

Permalink
add lookahead symbol
Browse files Browse the repository at this point in the history
  • Loading branch information
Encapsulateed committed Jan 23, 2024
1 parent c2f1df4 commit 10db805
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 49 deletions.
2 changes: 1 addition & 1 deletion lab5/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ void main(List<String> arguments) {
step_num = int.parse(match_step.group(1)!);
}
}

var cg = conjunctiveGrammar.fromFile('input.txt');
print(word);

List<bool> results = [];
for (var grammar in cg.possible_grammars) {
Expand Down
41 changes: 0 additions & 41 deletions lab5/result.txt

This file was deleted.

14 changes: 7 additions & 7 deletions lab5/src/lr0/lr0Parser.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ class LR0Parser {
_table = LR0Table(_grammar);
}

void Shift(GSSNode<List<String>> v, int state_id) {
nodes[node_id_next()] = stack
.push([(int.parse(v.value[0]) + 1).toString(), state_id.toString()], v);
void Shift(GSSNode<List<String>> v, int state_id, String x) {
nodes[node_id_next()] = stack.push(
[(int.parse(v.value[0]) + 1).toString(), state_id.toString(), x], v);
}

void Reduce(GSSNode<List<String>> v, int rule_id, String x,
Expand All @@ -39,7 +39,7 @@ class LR0Parser {
var i = int.parse(v.value[0]);
var v_ss_value = [i.toString(), s_ss.toString()]; // Индексация верная
var v_ss = stack.levels[i - 1].find(v_ss_value); // Индексация верная

v_ss_value.add(x);
if (v_ss != null) {
if (v_ss.prev.values.contains(v1_s)) {
continue;
Expand Down Expand Up @@ -87,7 +87,7 @@ class LR0Parser {

bool parse(List<String> word_tokens, int n) {
word_tokens.add("\$");
nodes[node_id_curr()] = stack.push(["0", "0"]);
nodes[node_id_curr()] = stack.push(["0", "0", word_tokens[0]]);
int i = 1;
var endcheck = 0;
while (i < word_tokens.length + 1) {
Expand All @@ -114,7 +114,7 @@ class LR0Parser {

for (var obj in act!) {
if (obj.actionTitle.startsWith("s")) {
Shift(v, obj.stateNumber!);
Shift(v, obj.stateNumber!, word_tokens[i]);
check = true;
continue;
}
Expand Down Expand Up @@ -147,7 +147,7 @@ class LR0Parser {

for (var obj in act!) {
if (obj.actionTitle.startsWith("s")) {
Shift(hidenode, obj.stateNumber!);
Shift(hidenode, obj.stateNumber!, word_tokens[i]);
check = true;
continue;
}
Expand Down

0 comments on commit 10db805

Please sign in to comment.