1 Star 0 Fork 0

朱蓉蓉1062 / GLSLParser

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

GLSLParser

介绍

使用c++和递归下降法实现了GLSL的词法分析器和语法分析器

软件架构

由两部分组成,为Lexer(词法分析器)和Parser(语法分析器)
如果控制台输入的代码符合以下GLSL文法,则输出Accept,否则Reject

实现的GLSL文法

toplevel :=
version definition*

version :=
'#version' NUMBER

definition :=
function_definition
global_variable_definition

function_definition :=
function_prototype '{' sentence* '}'

function_prototype :=
TYPE identifier '(' ')'
TYPE identifier '(' TYPE identifier (',' TYPE identifier)* ')'

sentence :=
'{' sentence* '}' expression ';' variable_definition ';'
'if' '(' expression ')' sentence
'if' '(' expression ')' sentence 'else' sentence
'for' '(' expression ';' expression ';' expression ')' sentence
'for' '(' variable_definition ';' expression ';' expression ')' sentence
';'
'return' ';'
'return' expression ';'

variable_definition :=
TYPE identifier '=' expression
'const' TYPE identifier '=' expression

expression := expression '.x'
expression '.y'
expression '.z'
expression '.w'
TYPE '(' expression_list ')'
'{' expression_list '}'
'(' expression ')'
NUMBER
identifier
identifier '(' expression_list ')'
identifier '[' expression ']'
expression '++'
expression '--'
'++' expression
'--' expression
'+' expression
'-' expression
'~' expression
'!' expression
expression '' expression
expression '/' expression
expression '%' expression
expression '+' expression
expression '-' expression
expression '<<' expression
expression '>>' expression
expression '>=' expression
expression '<=' expression
expression '>' expression
expression '<' expression
expression '==' expression
expression '!=' expression
expression '&' expression
expression '^' expression
expression '|' expression
expression '&&' expression
expression '^' expression
expression '||' expression
expression '?' expression ':' expression
expression '=' expression
expression '+=' expression
expression '-=' expression
expression '
=' expression
expression '/=' expression
expression '%=' expression
expression '<<=' expression
expression '>>=' expression
expression '||=' expression
expression '&&=' expression
expression '|=' expression
expression '&=' expression
expression ',' expression

expression_list := expression (',' expression)* /* empty */

global_variable_definition := (为简化翻译,带有layout的全局变量,无论其相关数值如何,全部翻译为外部(external)全局变量即可)
layout_defaults TYPE identifier ';'

layout_defaults :=
layout_uniform_defaults
layout_in_defaults
layout_out_defaults

layout_uniform_defaults :=
layout_qualifier 'uniform'

layout_in_defaults :=
layout_qualifier 'in'

layout_out_defaults :=
layout_qualifier 'out'

layout_qualifier :=
'layout' '(' layout_qualifier_id_list ')'

layout_qualifier_id_list :=
layout_qualifier_id (',' layout_qualifier_id)*

layout_qualifier_id :=
layout_identidier
layout_identidier '=' NUMBER

layout_identidier :=
'location'
'binding'

TYPE包括以下类型: void bool int float double vec2 vec3 vec4 mat2 mat3 mat4

空文件

简介

使用c++和递归下降法实现了GLSL的词法分析器和语法分析器 展开 收起
C++
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/zhu-rongrong-1062/glslparser.git
git@gitee.com:zhu-rongrong-1062/glslparser.git
zhu-rongrong-1062
glslparser
GLSLParser
master

搜索帮助