HEX
Server: nginx/1.22.1
System: Linux VM-16-9-centos 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64
User: www (1001)
PHP: 7.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //usr/share/doc/slang-2.2.4/grammar.txt
This grammar was derived from slparse.c --- it is out-dated.

statement:
	 compound-statement
	 if ( expression ) statement
	 if ( expression ) statement else statement
	 !if ( expression ) statement
	 loop ( expression ) statement
	 _for ( expression ) statement
	 while ( expression ) statement
	 do statement while (expression) ;
	 for ( expressionopt ; expressionopt ; expressionopt ) statement
	 ERROR_BLOCK statement
	 EXIT_BLOCK statement
	 USER_BLOCK0 statement
	 USER_BLOCK1 statement
	 USER_BLOCK2 statement
	 USER_BLOCK3 statement
	 USER_BLOCK4 statement
	 forever statement
	 break ;
	 continue ;
	 return expressionopt ;
	 variable variable-list ;
	 struct struct-decl ;
	 define identifier function-args ;
	 define identifier function-args compound-statement
	 switch ( expression ) statement
	 rpn-line
	 at-line
	 push ( expression )
	 ( expression ) = expression ;
	 expression ;
	 expression :

statement-list:
	 statement
	 statement-list statement

compound-statement:
	 { statement-list }

variable-list:
	variable-decl
	variable-decl variable-list

variable-decl:
	identifier
	identifier = simple-expression

struct-declaration:
	struct { struct-field-list };

struct-field-list:
	struct-field-name , struct-field-list
	struct-field-name

struct-declaration:
	typedef struct { struct-field-list } Type_Name;

struct-field-list:
	struct-field-name , struct-field-list
	struct-field-name

function-args:
	( args-dec-opt )

args-decl-opt:
	identifier
	args-decl , identifier

expression:
	 simple_expression
	 simple-expression , expression
      <none>

% Note: simple-expression groups operators OP1 at same level.  The
% actual implementation will not do this.
simple-expression:
	 unary-expression
	 binary-expression BINARY-OP unary-expression
	 andelse xxelse-expression-list
	 orelse xxelse-expression-list

xxelse-expression-list:
	{ expression }
	xxelse-expression-list { expression }
binary-expression:
        unary-expression
	unary-expression BINARY-OP binary-expression

unary-expression:
	 postfix-expression
	 ++ postfix-expression
	 -- postfix-expression
	 case unary-expression
	 OP3 unary-expression
	 (OP3: + - ~ & not @)

postfix-expression:
	 primary-expression
	 postfix-expression [ expression ]
	 postfix-expression ( function-args-expression )
	 postfix-expression . identifier
	 postfix-expression ^ unary-expression
	 postfix-expression ++
	 postfix-expression --
	 postfix-expression = simple-expression
	 postfix-expression += simple-expression
	 postfix-expression -= simple-expression

primary-expression:
	literal
	identifier
	( expression_opt )
	[ inline-array-expression ]
	&identifier
	struct-definition
	__tmp(literal)

inline-array-expression:
        expression
	expression : expression
	expression : expression : expression