Skip to content

Instantly share code, notes, and snippets.

@Salomon-MH
Created April 15, 2018 13:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Salomon-MH/55a6648ab52955e64188bf4061ca5393 to your computer and use it in GitHub Desktop.
Save Salomon-MH/55a6648ab52955e64188bf4061ca5393 to your computer and use it in GitHub Desktop.
Klausur 15 Task 7
// S -> b {T.A = S.A -1} T {U.A = T.B} U {S.B = U.B}
// T -> {S.A = T.A } S {U.A = S.B} U {T.B = U.B}
// T -> e {T.B = T.A}
// U -> a {S.A = U.A +2} S {U.A = S.B} U {U.B = U.B}
int X;
main() {
SCANNER(X);
S(S_A);
}
// S -> b {T.A = S.A -1} T {U.A = T.B} U {S.B = U.B}
int S (int S_A) {
if (X != "b") return;
SCANNER(X);
T_B = T(S_A - 1);
SCANNER(X);
U_B = U(T_B);
S_B = U_B;
return S_B;
}
// T -> {S.A = T.A } S {U.A = S.B} U {T.B = U.B}
// T -> e {T.B = T.A}
int T (int T_A) {
if ( X == "e" ) {
T_B = T_A;
return T_B;
} else {
S_A = T_A;
S_B = S(S_A);
U_A = S_B;
SCANNER(X);
U_B = U(U_A);
T_B = U_B;
return T_B;
}
}
// U -> a {S.A = U.A +2} S {U.A = S.B} U {U.B = U.B}
// U -> e {U.B = U.A}
int U (int U_A) {
if (X == "a") {
S_A = U_A + 2;
SCANNER(X);
S_B = S ( S_A );
U_A = S_B;
SCANNER(X);
U_B = U(U_A);
U_B = U_B;
return U_B;
} else if (X == "e") {
U_B = U_A;
return U_B;
} else return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment