Skip to content

maplechori/pyblasv3

Repository files navigation

Simple recursive descent parser for Blaise like languages.

Multimode Interviewing Capability (MMIC) - RAND Corporation
Nubis - USC CESR
Blaise - Statistics Netherlands

Example Nubis.bla

// FOR FAM R
FLHC002.FILL
HC001[HCcnt]-
HC006
HC002
FOR HCcnt := 1 TO 10 DO
 IF HCcnt IN HC002 THEN
   HC003[HCcnt]-
   IF HC006 = 1 THEN
     IF HCcnt != 8 THEN  // dont ask for food eat...
       HC004[HCcnt] := 2
       IF HC004[HCcnt]  = 1 THEN
         HC005[HCcnt]
       ENDIF
     ENDIF
   ENDIF
 ENDIF
ENDDO
HC003
IF HC003 = 1 THEN
    HC004
ELSEIF HC004 = 2 THEN
    HC003
ELSEIF HC005 = 3 THEN
    HC006
ELSE
    HC005
ENDIF
HDD := 3 + 2 * 1 + 2


Parse tree output:

(MethodCall FLHC002 FILL)
 (ArrayAccess HC001 HCcnt)
 ASK Identifier: HC006 
 ASK Identifier: HC002 
 FOR Identifier: HCcnt   :=  1 TO 10  DO
				IF ExpressionNode: (IN HCcnt HC002)  THEN
								(ArrayAccess HC003 HCcnt)
								IF ExpressionNode: (= HC006 1)  THEN
												IF ExpressionNode: (!= HCcnt 8)  THEN
																(:= (ArrayAccess HC004 HCcnt) 2)
																IF ExpressionNode: (= (ArrayAccess HC004 HCcnt) 1)  THEN
																				(ArrayAccess HC005 HCcnt)
 ASK Identifier: HC003 
 IF ExpressionNode: (= HC003 1)  THEN
				ASK Identifier: HC004 
 ELSE
				IF ExpressionNode: (= HC004 2)  THEN
								ASK Identifier: HC003 
				ELSE
								IF ExpressionNode: (= HC005 3)  THEN
												ASK Identifier: HC006 
								ELSE
												ASK Identifier: HC005 
 (:= HDD (+ (+ 3 (* 2 1)) 2))

About

Experimental recursive descent parser for Blaise/Nubis/MMIC

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages