Download presentation
Presentation is loading. Please wait.
1
By: Bahman Ravaei 790649 Farhad Rad 116703 81-82-2 نیمسال
SNOBOL 4 By: Bahman Ravaei Farhad Rad نیمسال
2
Introduction to the snobol 4 P.L
Developed at BELL laboratories in 1962 Is a string of characters (character oriented) Define other data type Consist of a sequence of statement Array and Table have more flexibility Function calls can be made recursively Link list node and complex number are possible programmer define data type
3
four basic type of statements:
i) the Assignment statement ii) the Pattern matching statements iii) the Replacement statement iv) the End statement
4
Assignment statements :
the simple type of assignment: variable = value example: v = 5 the value may be given an experssion example: W = ( ) which assigns the value 20 to the variable w
5
“BLANK are required around arithmetic operators”
The value may be string of characters example: v = ‘dog’
6
Arithmetic: i) Integers ii) Real arithmetic operation is “addition +” ,”subtraction -” ,”multiplication * ” ,”division / ” and “exponentiation ** or !” blanks are required between the binary operators and their operands ,Unary operator such as the minus sign must be adjacent to their operands. example: Q2 = -P / -N
7
Predicates of arithmetic operations :
-Unary operators -Exponentiation -Multiplication and Division -Addition and Subtraction All arithmetic operations associate to the left except exponentiation . example : ** 3 ** 5 is equivalent to : ** (3 ** 5)
8
Example : m = 4 n = 5 p = n * m / (n - 1) assign the value 5 to p
Example : pi = mul = 2. * pi * assign Real value to pi and mul
9
Pattern matching statements:
Define : The operation of examining for occurrence of specified substring Pattern matching have two type: i ) the pattern matching statement ii ) the replacement statement
10
the pattern matching statement :
the pattern matching statement has the form : subject pattern two fields separated by at least one blank example: trade = ‘programmer ’ trade ‘gram’ Pattern can an expression row = ‘k’ no. = ‘kk2429’ row no pattern is equivalent by ‘k24’
11
Replacement statements
The replacement statement has the form subject pattern = object If the pattern matching operation succeeds the subject string is modified by replacing the matched substring by the object . example: WORD = “GRID” WORD ‘I’ = ‘OU’ thus WORD is equivalent GROUD
12
If pattern not found the statement failed example:
If pattern not found the statement failed example: WORD ‘AB’ = ‘OU’ example: HAND = ‘AC4DAHDKS’ RANK = 4 SUIT = ‘D’ HAND RANK SUIT = ‘AS’ first RANK and SUIT concatenate that it’s 4D and later HAND ‘4D’ = ‘AS’ example : HAND RANK SUIT =
13
Patterns Two operation available for constructing complex patterns: i) alternation ii) concatenation alternation is indicated by expression of the form: P1 | P2 example: KEYWORD = ‘COMPUTER’ | ‘PROGRAM’ KEYWORD = KEYWORD | ‘ALGORITM’
14
can use KEYWORD to pattern field:
TEXT = ‘PROGRAMMING ALGORITM FOR COMPUTERS ‘ TEXT KEYWORD = after matching: TEXT = ‘MING ALGORITM FOR COMPUTERS’
15
Concatenation Concatenation of two patterns ,P1 and P2 ,is specified in the same way as the concatenation of two strings: P1 P2 example: BASE = ‘BINARY’ | ‘DECIMAL’ | ‘HEX’ SCALE = ‘FIXED’ | ‘FLOAT’ ATTRIBUTE = SCALE BASE
16
Array : Arrays are created by function ARRAY . ARRAY (p , e) example : board = ARRAY (‘3,3’ , ‘x’) x X
17
Example : A1 = ARRAY ( 5 ) A2 = ARRAY (5 , A1) A A1
18
Flow of control A SNOBOL program is a sequence of statements terminated by an end statement . labels and goto provide to control the flow of the program. Example of label: START TEXT = INPUT the end statement is distinguished by the label END
19
Transfer to a labelled statement is specified in the goto field which may appear at the end of a statement and is separated from the rest of the statement by a colon ‘ : ’. Two types of transfers can be specified in the goto field : i ) conditional ii ) unconditional
20
conditional A conditional transfer consists of a label enclosed within parentheses preceded by an F or S corresponding to Failure or Success. example : TEXT = INPUT :F(DONE) example : LOOP PUNCH = INPUT S:LOOP END
21
we can use F and S in one statement example:
we can use F and S in one statement example: COLOR = ‘RED’ | ‘GREEN’ | ‘BLUE’ BRIGHT TEXT COLOR = :S(BRIGHT)F(BLAND) BLAND …….
22
unconditional An unconditional transfer is indicated by the absence of an F or S before the enclosing parentheses . example: LOOP PUNCH = INPUT :F(END) OUTPUT = PUNCH :(LOOP) END
23
Indirect reference Indirect referencing is indicated by the unary operator $. examples: i) MONTH = ‘APRIL’ $MONTH = ‘CRUEL’ is equivalent: APRIL = ‘CRUEL’ ii) WORD = ‘RUN’ $(WORD ‘:’) = $(WORD ‘:’) iii) $(‘A’ | ‘B’) iv) N = N :($(‘PHASE’ N))
24
Functions: i) primitive functions ii) predicates iii) defined functions
25
Primitive function Many snobol procedure are invoked by function built into the system ,called primitive functions. Few example of primitive function: i) SIZE (string) APE = ‘SIMIAN’ OUTPUT = SIZE(APE) ii) DUPL (string ,integer) DUPL(‘/*’,5) iii) REPLACE( TEXT,CH1,CH2) STATEMENT = ‘A(I,J) = A(I,J) + 3’ OUTPUT = REPLACE(STATEMENT,’()’,’<>’) print the line : A<I,J> = A<I,J> + 3
26
Predicate: A function or operation that returns the NULL string if a given condition is satisfied. Example: i) LE(n1 , n2 ) PUNCH = LE( SIZE(TEXT),80) TEXT ii) LT( n1 , n2 ) ADD N = LT( N , 50 ) N+1 iii) DIFFER ( st1 , st2 ) OUTPUT = DIFFER ( FIRST , SECOND ) FIRST SECOND iv) LGT ( st1 , st2 )
27
Defined function: A function defined by Programmer.
The primitive function DEFINE to specify the function name , formal arguments , local variables, and the entry point of the function. Example: DEFINE ( ‘ DELETE ( STRING , CHAR )’ , ‘D1’ ) D STRING CHAR = :S ( D1 ) DELETE = STRING : ( RETURN )
28
Example: DEFINE ( ‘ DELETE ( STRING , CHAR )’ ) DELETE STRING CHAR = :F ( FRETURN) D2 STRING CHAR = :S ( D1 ) DELETE = STRING : ( RETURN )
29
Programmer define data type:
The primitive function DATA can be used to difine the new data type. Example: DATA( ‘ NODE ( VALUE , LINK)’) P = NODE (‘ S ‘ , ) P = NODE (‘ T ‘ , P ) P = LINK ( P ) P ‘ T ‘ ‘ S’ NULL
30
Program format: Example:
OUTPUT = ‘ THE TOTAL NUMBER OF OCCURRENCE IS’ + SUM< N > X = 2 ; Y = 3 ; Z = 10 * : THIS IS A COMMENT
31
End
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.