syntax analysis l.
Skip this Video
Loading SlideShow in 5 Seconds..
Syntax analysis PowerPoint Presentation
Download Presentation
Syntax analysis

Loading in 2 Seconds...

play fullscreen
1 / 24

Syntax analysis - PowerPoint PPT Presentation

  • Uploaded on

Syntax analysis. How ScriptBasic performs Syntax analysis. What is the role of syntax analysis What is the assumed syntax of a program What tables drive syntax analysis Creating the tables Pseudo terminals. Contents. Who this presentation is for. Curious (why things happen?)

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Syntax analysis' - armani

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
syntax analysis

Syntax analysis

How ScriptBasic performs Syntax analysis

What is the role of syntax analysis

What is the assumed syntax of a program

What tables drive syntax analysis

Creating the tables

Pseudo terminals

who this presentation is for
Who this presentation is for
  • Curious (why things happen?)
  • Want to learn and understand how ScriptBasic works
  • Want to modify ScriptBasic

NOT for those, who just

  • want to program in scriba
role of syntax analysis
Role of syntax analysis
  • Reader
  • Lexer
  • Builder
  • Execution
general purpose
General purpose
  • The syntax analyzer is a general purpose table driven syntax analyzer that could be used for other syntaxes not hard coded for ScriptBasic
  • The first definition that fits is used.
  • Easy to maintain but slower than special purpose analyzer
syntax assumed
Syntax assumed
  • Program is series of lines
  • Lines are (usually) terminated by new line
  • A line is series of terminal and pseudo-terminal symbols
  • No block of code { } or BEGIN END
    • handled by go|come_forward|backward pseudo terminals
  • Predefined pseudo terminal symbols, like ‘expression’
tables defining syntax
Tables defining syntax
  • Binary operators
  • Unary operators
  • Built-in functions
  • Commands
    • List of commands in the order syntax analyzer checks them against the lines
creating the tables
Creating the tables
  • syntax.def is a readable format
  • creates the syntax.c
  • creates the syntax.h files.
terminals and pseudo terminals
Terminals and pseudo terminals
  • ‘module’ is a terminal symbol (keyword)
  • nl is terminal symbol (character)
  • float is terminal symbol
  • lval, expression are pseudo terminals
    • can create complex code (one way street with dead end effect!)
    • can have side effect
code generated
Code generated
  • Code is array of nodes
  • A node contains OpCode
    • list of command parameters (each is a node)
    • operands list (operators or function)
    • value (constant node)
    • Serial number (variable node)
    • start point and arguments (user defined function)
    • car and cdr values for list head nodes
  • See builder.c struct _cNODE;
  • GOTO: 'goto' label nl
  • OpCode: CMD_GOTO
    • Parameter.CommandArgument.Argument.pNodecontains the node id of the line for label
  • ELSIF: 'else' 'if' * expression 'then' come_forward(IF) go_forward(IF) nl
  • OpCode: CMD_ELSIF
    • Parameter.CommandArgument.Argument.pNodecontains the node id of the expression
    • next paremeter node:
      • Parameter.CommandArgument.Argument.pNode where to go if expression fails
pseudo terminals 1 10
Pseudo terminals 1/10
  • nl
  • tab

These are the simplest pseudo-terminal symbols, because they are real terminals, just hard to write into a text file.

pseudo terminals 2 10
Pseudo terminals 2/10
  • expression
  • expression_list

Handles an expression or a comma separated list of expressions and creates nodes.


pseudo terminals 3 10
Pseudo terminals 3/10
  • string
  • integer
  • float

These are simple terminals.

pseudo terminals 4 10
Pseudo terminals 4/10
  • symbol a symbol (in name space)
  • absolute_symbol an absolute symbol
  • name_space an absolute symbol that sets the name space (no code)
  • end_name_space end a name space (no code)
pseudo terminals 5 10
Pseudo terminals 5/10
  • lval a left value
  • lval_list a left value list separated by commas
  • local local variable
  • local_list list of local variables
pseudo terminals 6 10
Pseudo terminals 6/10
  • function a function name where it is defined
  • thisfn the name of the currently defined function or procedure
  • arg_num placeholder to store the number of arguments
  • local_start starts a local scope
  • local_end ends of local scope
pseudo terminals 7 10
Pseudo terminals 7/10
  • label a label used in goto
  • label_def a label when defined
pseudo terminals 8 10
Pseudo terminals 8/10
  • cname constant name
  • cval constant value correspondingtoconstant name

These do not generate code, have only side effects defining a constant. (cval defines a constant for the name last appeared for cname)

pseudo terminals 9 10
Pseudo terminals 9/10
  • go_backcreates code
  • go_forwardcreates code
  • come_backhas side effect
  • come_forwardhas side effect

These are used instead of code bracketing. There is a jump stack where node pointers are pushed and taken from.

pseudo terminals 10 10
Pseudo terminals 10/10
  • * star character OWSWDE
  • noexec no code is generated from the line
special commands
Special commands
  • All lines are analyzed by the C functionex_IsCommandThisexcept those defining special analysis function
  • CALL/CALL (ex_IsCommandCALL)
  • OPEN/OPEN (ex_IsCommandOPEN)