Lua? Kenn' ich! Wird in Ogre3D zum skripten verwendet.
Scripting Contest -- Aufgabe 3
Anmeldungsdatum: Beiträge: 724 Wohnort: Darmstadt |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 66 Wohnort: $HOME |
Jep, der Anlass der mich trieb und treibt ist ein ähnlicher (darf ich leider niemals nicht niemandem verraten). |
Anmeldungsdatum: Beiträge: 3396 Wohnort: Hermagor, Kärnten - Österreich |
Nachdem ich jetzt noch nie etwas brauchbares mit C++ gemacht habe, habe ich mit meinen bescheidenen Fähigkeiten folgendes gebastelt. #include <iostream> #include <sstream> #include <string> using namespace std; int accumulator = 0; int do_token(string str) { int result; if (str == "A") return accumulator; stringstream str_stream; str_stream << str; str_stream >> result; return result; } int main() { int lt, rt; string op, str_lt, str_rt; while (!cin.eof()) { cin >> op >> str_lt >> str_rt; if (!cin.fail()) { lt = do_token(str_lt); rt = do_token(str_rt); if (op == "ADD") accumulator = lt + rt; if (op == "SUB") accumulator = lt - rt; if (op == "MUL") accumulator = lt * rt; if (op == "DIV") accumulator = lt / rt; } } cout << "Stand des Akkumulators: " << accumulator << "\n"; return 0; } Bearbeitet von blackbird: Copy&Paste fehler behoben |
Anmeldungsdatum: Beiträge: 3396 Wohnort: Hermagor, Kärnten - Österreich |
drunkVoodoo hat geschrieben:
btw: Ich bin schon gespannt. Also, wann kommt die Aufgabe 8) |
Anmeldungsdatum: Beiträge: Zähle... |
hier eine lösung in ruby: class MiniAssemblyLanguage attr_accessor :STATE def ADD(a,b) a,b = a.to_i, b.to_i @STATE = a+b end def SUB(a,b) a,b = a.to_i, b.to_i @STATE = a-b end def MUL(a,b) a,b = a.to_i, b.to_i @STATE = a*b end def DIV(a,b) a,b = a.to_i, b.to_i @STATE = a/b end def PRINT(msg) puts msg.to_s end def RESET @STATE = 0 end protected def initialize() @STATE = 0 end private end class MiniAssemblyInterpreter public def initialize @language = MiniAssemblyLanguage.new end def evaluate_line(line) #fetch tokens operation, *operators = line.strip!.split(/ /) operators = operators.collect{|op| (op == "A" ? @language.STATE : op)} #all public methods of language allowed if operation && @language.public_methods.include?(operation) then @language.method(operation).call(*operators) end end def state @language.STATE end def reset @language.RESET end def evaluate(code) code.each_line{|line| evaluate_line line if line } end end engine = MiniAssemblyInterpreter.new while line = ARGF.gets do engine.evaluate_line line end puts engine.state |