summaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorMike Buland <mike@xagasoft.com>2013-05-08 13:36:09 -0600
committerMike Buland <mike@xagasoft.com>2013-05-08 13:36:09 -0600
commitfc14c0f16e881607e55f04516934818091331bd3 (patch)
treea104a99bfec86501f7b71151004924f48cadaa6d /src/parser.cpp
parent69d9a257ba02c973da5708d9b6055e4ac5dc0ee2 (diff)
downloadclic-fc14c0f16e881607e55f04516934818091331bd3.tar.gz
clic-fc14c0f16e881607e55f04516934818091331bd3.tar.bz2
clic-fc14c0f16e881607e55f04516934818091331bd3.tar.xz
clic-fc14c0f16e881607e55f04516934818091331bd3.zip
Command parameters are taken as strings & decimal.0.06
You no longer need to set the radix in the current radix.
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 804e595..57144c2 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -31,9 +31,11 @@ void Parser::parse()
31 Bu::println( rOut, "%1").arg( deref( tsTerminal.peek() ) ); 31 Bu::println( rOut, "%1").arg( deref( tsTerminal.peek() ) );
32 } 32 }
33 tsTerminal.clear(); 33 tsTerminal.clear();
34 lex.setMode( Lexer::modeNormal );
34 break; 35 break;
35 36
36 case Token::tCommand: 37 case Token::tCommand:
38 lex.setMode( Lexer::modeCommand );
37 if( *t.sVal == "exit" || *t.sVal == "quit" ) 39 if( *t.sVal == "exit" || *t.sVal == "quit" )
38 return; 40 return;
39 else if( *t.sVal == "scale" ) 41 else if( *t.sVal == "scale" )
@@ -44,9 +46,9 @@ void Parser::parse()
44 Bu::println( rOut, "Current scale: %1"). 46 Bu::println( rOut, "Current scale: %1").
45 arg( lex.getScale() ); 47 arg( lex.getScale() );
46 } 48 }
47 else if( t2.eType == Token::tNumber ) 49 else if( t2.eType == Token::tString )
48 { 50 {
49 int32_t i = t2.nVal->toInt32(); 51 int32_t i = strtol( t2.sVal->getStr(), 0, 10 );
50 lex.setScale( i ); 52 lex.setScale( i );
51 if( i < 0 ) 53 if( i < 0 )
52 { 54 {
@@ -77,9 +79,9 @@ void Parser::parse()
77 Bu::println( rOut, "Current radix: %1"). 79 Bu::println( rOut, "Current radix: %1").
78 arg( lex.getRadix() ); 80 arg( lex.getRadix() );
79 } 81 }
80 else if( t2.eType == Token::tNumber ) 82 else if( t2.eType == Token::tString )
81 { 83 {
82 int32_t i = t2.nVal->toInt32(); 84 int32_t i = strtol( t2.sVal->getStr(), 0, 10 );
83 if( i < 2 || i > 36 ) 85 if( i < 2 || i > 36 )
84 Bu::println( rOut, "ERROR: Radix must be between " 86 Bu::println( rOut, "ERROR: Radix must be between "
85 "2 and 36 inclusive"); 87 "2 and 36 inclusive");
@@ -127,13 +129,9 @@ void Parser::parse()
127 "When using a radix greater than 10 all extended digits are lowercase letters\n" 129 "When using a radix greater than 10 all extended digits are lowercase letters\n"
128 "starting with 'a'. Upper case is not currently supported.\n" 130 "starting with 'a'. Upper case is not currently supported.\n"
129 "\n" 131 "\n"
130 "All numbers are interpreted in the current radix, this means that you need to\n" 132 "All numeric command parameters (i.e. \\scale, \\radix) are in base 10 no\n"
131 "set the radix using the current radix, even though the current value is aways\n" 133 "matter what radix is currently set. These are also displayed in base 10\n"
132 "displayed in decimal. That is, to go to base 8 and back to base 10 you would:\n" 134 "at all times.\n"
133 " \\radix 8\n"
134 " Radix changed to: 8\n"
135 " \\radix 12\n"
136 " Radix changed to: 10\n"
137 "\n" 135 "\n"
138 "Changing the radix always clears all variables.\n" 136 "Changing the radix always clears all variables.\n"
139 ); 137 );
@@ -144,6 +142,7 @@ void Parser::parse()
144 Bu::println( rOut, "ERROR: Unknown command '%1'"). 142 Bu::println( rOut, "ERROR: Unknown command '%1'").
145 arg( *t.sVal ); 143 arg( *t.sVal );
146 } 144 }
145 lex.setMode( Lexer::modeNormal );
147 break; 146 break;
148 147
149 case Token::tNumber: 148 case Token::tNumber:
@@ -292,6 +291,7 @@ void Parser::unwind()
292 case Token::tNumber: 291 case Token::tNumber:
293 case Token::tVariable: 292 case Token::tVariable:
294 case Token::tCommand: 293 case Token::tCommand:
294 case Token::tString:
295 case Token::tEndOfLine: 295 case Token::tEndOfLine:
296 case Token::tEndOfInput: 296 case Token::tEndOfInput:
297 // These should never show up at all 297 // These should never show up at all