January 26, 2021, 06:15:57 AM

Author Topic: [bmx] Simple Parser & Executer by daaan [ 1+ years ago ]  (Read 438 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Simple Parser & Executer by daaan [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Simple Parser & Executer
Author : daaan
Posted : 1+ years ago

Description : I was drunk browsing the beginner forums and found someone asking for a solution. Well hub, here it is.

Code :
Code: BlitzMax
  1. Rem
  2.        
  3.         Simple Parser & Executer for hub
  4.        
  5.         Sample Program:
  6.                
  7.                 Local a:String = "v=1.0,a=100,t=120,a=200,t=180,r=200,t=30,r=200"
  8.                 runString( a )
  9.        
  10. EndRem
  11.  
  12. Function runString( line:String )
  13.        
  14.         line = line.Replace( " ", "" )
  15.         line = line.Replace( ",", "" )
  16.         line = line.Replace( "=", "" )
  17.        
  18.         Local instructionChars:String   = "artv"
  19.         Local instruction:String
  20.         Local value:String
  21.        
  22.         For i = 0 To line.length-1
  23.                
  24.                 Select Chr( line[ i ] )
  25.                        
  26.                         Case "a", "r", "t", "v"
  27.                                
  28.                                 instruction = Chr( line[ i ] ).ToLower()
  29.                                
  30.                         Case "0", ".", "1", "2", "3", "4", "5", "6", "7", "8", "9"
  31.                                
  32.                                 value :+ Chr( line[ i ] )
  33.                                
  34.                                 If instructionChars.contains( Chr( line[ i+1 ] ) ) Then
  35.                                        
  36.                                         Select instruction
  37.                                                
  38.                                                 Case "a"
  39.                                                         acceleration( value.ToDouble() )
  40.                                                
  41.                                                 Case "r"
  42.                                                         Print "r( " + value.ToDouble() + " )"
  43.                                                
  44.                                                 Case "t"
  45.                                                         turn( value.ToDouble() )
  46.                                                
  47.                                                 Case "v"
  48.                                                         Print "v( " + value.ToDouble() + " )"
  49.                                                
  50.                                         End Select
  51.                                        
  52.                                         value = ""
  53.                                        
  54.                                 End If
  55.                        
  56.                 End Select
  57.                
  58.         Next
  59.        
  60. End Function
  61.  
  62. Function acceleration( val:Double )
  63.         Print "acceleration( " + val + " )"
  64. End Function
  65.  
  66. Function turn( val:Double )
  67.         Print "turn( " + val + " )"
  68. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal