Forum: C++ Skapa Script system ( Motor ) ?

Forum huvudsida -> Programmering -> C++ Skapa Script system ( Motor ) ?

Sidor: 1

Till botten

lord_slampa 16:41 - 31:a Oktober 2007 | Post #1
Medlem
Inlägg: 46


Skicka PM
Tja, undrar om någon som ligger och hänger på en bra sida på massa tutorials på hur man gör Script System ( motorer )
eller om någon kunde förklara eller skriva nått litet lätt på hur man gör!

Smiley

-------------------------
DirectX + Win32 Api For the win!



Slash 18:52 - 31:a Oktober 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
Ofta så har vi Lexning->Parsning->AST->Profit

  • Lexning
Bryter ner den inkommande texten i så kallade tokens. Varje token blir lite som en atom (t.ex. för C++ så är ''class'' ''return'' ''int'' ''3409'' och så vidare tokens). Hur lexningen ska gå till definieras ofta med regular language.

  • Parsning
Nästa steg är att utifrån token-strömmen från föregående steg bygga en slags betydelse av ordningen som dessa tokens kommer i. Detta brukar sluta i ett så kallat abstract syntax tree. Hur parsningen ska fungera representeras ofta av en CFG (context free grammar).

  • AST
När man väl har ett abstract syntax tree så kan t.ex. typcheckning och liknande lättare utföras (krävs dock fortfarande en massa arbete).

  • Profit
I teorin så går det nu att exekvera koden direkt med hjälp av AST:t direkt även om det också ofta görs om till någon annan form (i Java har vi ju t.ex. byte code).

Som ett exempel, ett AST uppbyggt av uttrycket "3*sin(5 + 2)".

Först har vi lexning, tokens är:
''3'' ''*'' ''sin'' ''('' ''5'' ''+'' ''2'' och '')''

Sedan med hjälp av de regler vi satt upp så kan vi bygga ett AST:
  1. ''*''
  2. / \
  3. ''3'' ''sin''
  4. |
  5. ''+''
  6. / \
  7. ''5'' ''2''


Läses som: "Gånger mellan 3 och sinus av plus mellan 5 och 2". Notera här att paranteserna inte längre behövs då trädet implicit kommer ihåg ordningen.

Det går självklart att variera detta i många olika varianter så ta det inte som absolut sanning, men detta sätt fungerar.

Har inga direkta online-referenser men du kan ju kolla runt lite på:
http://freecomputerbooks.com/compscCompilerBooksIndex.html

http://dinosaur.compilertools.net/


-------------------------
Ingen sigantur!

Senast redigerad 18:53 - 31:a Oktober 2007


Sidor: 1

Forum huvudsida -> Programmering -> C++ Skapa Script system ( Motor ) ?
Atom feed

Du får inte posta i den här tråden | Till toppen