52 lines
		
	
	
	
		
			830 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			830 B
		
	
	
	
		
			Text
		
	
	
	
	
	
 | 
						|
ws		([ \t\n]*)
 | 
						|
arrow		("==>")
 | 
						|
letter		([a-zA-Z_])
 | 
						|
digit		([0-9])
 | 
						|
identifier	({letter}({letter}|{digit})*)
 | 
						|
 | 
						|
%start COM CAL CON
 | 
						|
 | 
						|
%{
 | 
						|
 | 
						|
#include "Lpars.h"
 | 
						|
#include "decl.h"
 | 
						|
int special, n_haakjes;
 | 
						|
 | 
						|
%}
 | 
						|
 | 
						|
 | 
						|
%%
 | 
						|
 | 
						|
"/*"			BEGIN COM;
 | 
						|
<COM>[^\n\*]*"*"+"/"	BEGIN 0;
 | 
						|
<COM>[^\n^\*]*"*"+	;
 | 
						|
<COM>[^\n\*]*"\n"	;
 | 
						|
 | 
						|
";"			return( ';');
 | 
						|
"."			return( '.');
 | 
						|
","			return( ',');
 | 
						|
":"			return( ':');
 | 
						|
"@"			return( '@');
 | 
						|
"@if"{ws}		return( IF);
 | 
						|
"@elsif"{ws}		return( ELSIF);
 | 
						|
"@else"{ws}		return( ELSE);
 | 
						|
"@fi"{ws}		return( FI);
 | 
						|
"..."			return( MORE);
 | 
						|
{arrow}			return( ARROW);
 | 
						|
{identifier}		return( IDENTIFIER);
 | 
						|
 | 
						|
 | 
						|
<CON>[^()]*"("  	{ n_haakjes++; yymore();}
 | 
						|
"("			{ BEGIN CON; n_haakjes = 1; yymore();}
 | 
						|
<CON>[^()]*")"  	{ if ( n_haakjes == 1) {
 | 
						|
				BEGIN 0;
 | 
						|
				return( CONDITION);
 | 
						|
		  	  }
 | 
						|
		  	  else {
 | 
						|
				n_haakjes--;
 | 
						|
				yymore();
 | 
						|
		  	  }
 | 
						|
			}
 | 
						|
 | 
						|
{ws}			;
 |