codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
// Example from // http://scientopia.org/blogs/goodmath/2011/04/26/the-next-step-in-computation-level-2-languages/#comments #include <stack> #include <cstring> #include <cstdio> #include <cstdlib> #include <cassert> using namespace std; bool parse(const char *input) { int len = strlen(input); stack<char> myStack; for (int i=0; i<len; i++) { if(input[i] == 'I') { // simply consume I continue; } else if(input[i] == '(') { myStack.push('('); } else if(input[i] == ')') { if(myStack.top() == '(') { myStack.pop(); } else { printf("No closing bracket found at %i.\n", i); return false; } } else { printf("Character %c not allowed.\n", input[i]); return false; } } if(myStack.size() == 0) { return true; } return false; } int main() { const char *valid1 = "()"; const char *valid2 = "((I)(((I)I)(II)))"; const char *valid3 = "IIII"; assert(parse(valid1)); assert(parse(valid2)); assert(parse(valid3)); const char *invalid1 = "("; const char *invalid2 = "((I)(((I)I)(II))"; assert(!parse(invalid1)); assert(!parse(invalid2)); return 0; }
Private
[
?
]
Run code
Submit