Download presentation
Presentation is loading. Please wait.
Published byAbner Hodge Modified over 6 years ago
1
Writing a scanner Module 05.5 COP4020 – Programming Language Concepts Dr. Manuel E. Bermudez
2
Topics Writing a scanner using DFA in table form.
Writing a hard-coded scanner. Writing a scanner for real, i.e. for a programming language.
3
Writing a scanner Table-driven Scanner: ST a b 2 3 2 4 2 5 1 2 3 4 5
2 3 2 4 2 5 Token scan() { Token t=empty(); S=1; while not (S in [5] && c = null) { if ST[S,c] = “_” { Error(c); c=getchar(); continue; } else {S=ST[S,c]; t=t+c; c=getchar(); } } return t; } // assume c is previously read; 1 2 3 4 5
4
Writing a scanner Hard-coded Scanner: Token scan() { Token t=empty();
while not (S in [5] && c = null) { case S of 1: case c of a: S=2; b: S=3; end; 2: case c of b: S=4; end; 3: case c of a: S=2; end; 4: case c of a: S=2; b: S=5; end; 5: case c of a: S=2; b: S=3; end; end; t=t+c; c=getchar(); } return t; } // assume c is previously read; b a 1 2 3 5 4 Hard-coded Scanner:
5
Writing a scanner (for real, i.e. PL’s)
<id> S L L+D+_ ℇ Id No DFA. Attempt alternatives “in order”. Each symbol from S goes into a sub-FSA. Must hard-code. D ℇ Int <int> <comm> any-{*}+eol * 〳 ℇ eol any <Punc:/=> = <Punc:/>
6
summary Writing a scanner using DFA in table form.
Writing a hard-coded scanner. Writing a scanner for real, i.e. for a programming language Attempt alternatives in order.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.