Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

ssss

(setq a '(("operator" "(") ("keyword" "deffun") ("identifier" "checkcoord") ("operator" "(") ("identifier" "x") ("identifier" "y") ("operator" ")") ("operator" "(") ("keyword" "if") ("operator" "(") ("keyword" "and") ("operator" "(") ("keyword" "equal") ("identifier" "x") ("integer" "1") ("operator" ")") ("operator" "(") ("keyword" "equal") ("identifier" "y") ("integer" "2") ("operator" ")") ("operator" ")") ("integer" "1") ("integer" "0") ("operator" ")") ("operator" ")")))

(setq change (make-hash-table :test 'equalp)) 
(setf (gethash "identifier" change) "ID")
(setf (gethash "integer" change) "IntegerValue")
(setf (gethash "BinaryValue" change) "BinaryValue")

(defun parser (lexerlist)
	(setq lexerl (reverse (map 'list (lambda (x) (cond ((gethash (string (car x)) change) (gethash (string (car x)) change) )
	                  				(t (cadr x))) ) lexerlist)))
	(setq stack '()) 
	(return-from parser (parserHelper lexerl stack))
)

(defun parserHelper(lexerlist stack)
	(cond
		((null lexerlist) nil)
    		((and (not (null stack)) (not (equal(list-length stack) 2)) (check lexerlist stack))   
    		(setq stack (reducee lexerlist stack)) (append (list (append(reverse lexerlist) '("<") (list (car stack)) '(">")(cdr stack)'("******"))) (parserHelper (cdr lexerlist) stack)) 
    	) 
		( t (setq stack (append (list (car lexerlist)) stack )) (append (parserHelper (cdr lexerlist) stack)) )
	)
)

(defun check (lexerlist stack)
	(return-from check t)
)

(defun reducee (lexerlist stack)
	(return-from reducee stack)
)

(write (parser a))

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.