PDA

View Full Version : گرامر زبان C



fateme.gh
سه شنبه 21 خرداد 1387, 00:39 صبح
سلام
واسه انجام يه پروژه احتياج دارم به گرامر زبان c از كجا مي تونم پيدا كنم؟

Accidentboy
سه شنبه 21 خرداد 1387, 22:36 عصر
Token ها شو می خوایی یا سینتکسشو برنامه شو ؟

fateme.gh
چهارشنبه 22 خرداد 1387, 00:01 صبح
token هاشو مي خوام

vbprogrammerx
سه شنبه 28 خرداد 1387, 18:28 عصر
////////////////////////////////////////////////////////////////////////////////////////////////
%{
#include "myparser.h"
#include <string>

%}
////////////////////////////////////////////////////////////////////////////////////////////////
%name mylexer
///////////////////// Members /////////////////////
{
//////////////////////////////////////
ifstream in;
ofstream out;
//////////////////////////////////////
int yygetchar(){
char ch;
ch = in.get();
if (!ch )return -1;
else return ch;
}
//////////////////////////////////////
void lexical_error(char* text) {
cout << "\n" << text << " at line no: " << yylineno << ", Unknown character " << yytext[0] << "\n";
}
/////////////////////////////////////
}
///////////////////// Constructor /////////////////////
{
in.open("in.txt");
out.open("out.txt");
}
///////////////////// Destructor /////////////////////
{
in.close();
out.close();
}
////////////////////////////////////////////////////////////////////////////////////////////////
delim [ \t\n]
ws {delim}+
op [\+\-\*\/%!=;,\[\]\{\}\(\)]
id [A-Za-z][A-Za-z0-9]*
num [0-9]+
////////////////////////////////////////////////////////////////////////////////////////////////
%%
{ws} {
int i;
for (i = 0; i <strlen(yytext); i++) if (yytext[i] == '\n') line++;
}
{op} {return(yytext[0]);}
"<" {return (LT); }
"<=" {return (LE); }
">" {return (GT); }
">=" {return (GE); }
"==" {return (EQ); }
"!=" {return (NE); }
"if" {return(IF);}
"else" {return(ELSE);}
"switch" {return(SWITCH);}
"case" {return(CASE);}
"while" {return(WHILE);}
"do" {return(DO);}
"for" {return(FOR);}
"continue" {return(CONTINUE);}
"brerak" {return(BREAK);}
"return" {return(RETURN);}
"default" {return(DEFAULT);}
"float" {return(FLOAT);}
"int" {return(INT);}
"void" {return(VOID);}
"++" {return(INC_OP);}
"--" {return(DEC_OP);}
"&&" {return(AND);}
"||" {return(OR);}
"char" {return(CHAR);}
{num} {return(NUM);}
{id} {return(ID);}
. {
lexical_error("Lexical error");
return(ERROR);
}
%%
/////////////////////////////////////////////////////////////////////////////
// programs section

این پروزه ی lexش هست ولی مال تموم گرامرش نیست در واقع مال قسمتی از زبانش هست.
اگه اطلاعات بیشتری بهم بدی شاید بتونم بیشتر کمکت کنم.

fateme.gh
چهارشنبه 29 خرداد 1387, 00:22 صبح
سلام
ممنون كه راهنماييم كردين.
من ميخوام bnf زبان c رو بنويسم
براي اين كار به token هاش احتياج دارم

fateme.gh
چهارشنبه 29 خرداد 1387, 00:23 صبح
سلام
ممنون كه راهنماييم كردين.
من ميخوام bnf زبان c رو بنويسم
براي اين كار به token هاش احتياج دارم
در

fateme.gh
چهارشنبه 29 خرداد 1387, 00:29 صبح
سلام
من ميخوام bnf گرامر زبان c رو بنويسم
احتياج دارم به اصل گرامر زبان.
مثل اينا

type-qualifier: ("const" | "volatile")
assignment-expression: (
unary-expression (
"=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | "&=" |
"^=" | "|="
)
)* conditional-expression

narges.me
چهارشنبه 23 اردیبهشت 1394, 10:19 صبح
سلام من به یک گرامر ساده به زبان c احتیاج دارم , داخل سایت های مختلف چیزی پیدا نکردم , فقط یک نمونه است که خیلی گنگه , ممنون میشم کمکم کنید.