<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Débuter</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C]]></description>
		<language>fr</language>
		<lastBuildDate>Fri, 17 Apr 2026 06:55:38 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Débuter</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Question passage de pointeur sur tableau de structures</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180593&amp;goto=newpost</link>
			<pubDate>Sun, 23 Nov 2025 16:37:33 GMT</pubDate>
			<description>Hello, je refais du C (avec...</description>
			<content:encoded><![CDATA[<div>Hello, je refais du C (avec SDCC) et évidemment je perds les pédales (et la tête un peu). Si des pro du C peuvent m'aider… J'explique :<br />
<br />
Je crée une structure (pour un point 2D, avec son adresse dans la mémoire vidéo, pour ne pas la recalculer plus tard), je crée un tableau de cette structure (une quarantaine de « points » pour me faire un <i>starfield</i> basique). je fais une fonction pour créer mes 40 points et les remplir. Je lui passe le tableau sous forme de pointeur, car j'aimerais bidouiller le contenu du tableau plus tard, en dehors de cette fonction. <i>A priori</i>, tout semble marcher mais en réalité, si j'essaie de lire le tableau après le passage dans la fonction, les valeurs ne sont pas là. donc en gros, il n'a pas modifié le tableau (malgré le pointeur) mais sans doute une copie ?<br />
<br />
Bref, je mets le code (juste les bouts concernés). Si quelqu'un peut me dire où ça coince pour passer un tableau de <i>struct</i> en paramètre et non une copie ?<br />
MERCI  !<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">struct</span> _point2D
<span style="color: black;">&#123;</span>
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> X;
   <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> Y;
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> *Adress;
<span style="color: black;">&#125;</span>;
<span style="color: #0000ff;">struct</span> _point2D TAB_stars<span style="color: black;">&#91;</span>STARS_NUM<span style="color: black;">&#93;</span>;
<span style="color: #0000ff;">void</span> Stars_Create<span style="color: black;">&#40;</span><span style="color: #0000ff;">struct</span> _point2D *TAB_stars_init<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> i = <span style="color: #cc66cc;">0</span>;
 <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span>i = <span style="color: #cc66cc;">0</span>; i &lt; STARS_NUM; i++<span style="color: black;">&#41;</span>
 <span style="color: black;">&#123;</span>
 <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.X = rand<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> % <span style="color: black;">&#40;</span>MAX_X+<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
 ...
     <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.Adress = Mode0_Pixel_Compute_Adress<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.X, <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.Y,<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span><span style="color: #cc66cc;">0xC000</span><span style="color: black;">&#41;</span>;
 *<span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.Adress|=<span style="color: #cc66cc;">0b10000000</span>;
...
<span style="color: black;">&#125;</span>
Stars_Create<span style="color: black;">&#40;</span>&amp;TAB_stars<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
ici si je veux lire dans TAB_stars[x].Adress je n'ai pas les bonnes valeurs créés dans la fonction (j'ai mis un print dans la fonction et un en dehors et les valeurs ne correspondent pas... j'en déduis que ce qui est modifié dans la fonction est &quot;resté&quot; dans la fonction... HELP !<br />
<br />
ps : je travaille sur SDCC pour une machine 8 bits.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>henri_b</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180593/c-cpp/c/debuter/question-passage-pointeur-tableau-structures/</guid>
		</item>
		<item>
			<title>C création de fichier 16 bits *.COM sous DOS (Question: Hexadecimal)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179038&amp;goto=newpost</link>
			<pubDate>Thu, 04 Sep 2025 14:13:46 GMT</pubDate>
			<description>Bonjour, 
 
Je viens de faire...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je viens de faire un petit programme en C qui crée un fichier COM pour MS-DOS / peut qu'il marche sur d'autre système DOS (testé sous MS-DOS 6.22).<br />
<br />
En premier lieu j'ai créé un programme COM minimal en assembleur qui s'ouvre et se ferme directement sous DOS sans rien faire d'autre.<br />
<br />
En visionnant le code hexadecimal de ce programme ça se résume à ceci:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">B8 <span style="color: #cc66cc;">00</span> <span style="color: #cc66cc;">4</span>C CD <span style="color: #cc66cc;">21</span></code><hr />
</div>J'ai voullu pour étude créer un logiciel en C capable de générer ce même programme en se lancant.<br />
<br />
J'ai réussi au final a avoir un code similaire généré par mon programme C, cependant il y a 2 '0' en plus à la fin du fichier COM c.a.d ceci:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">B8 <span style="color: #cc66cc;">00</span> <span style="color: #cc66cc;">4</span>C CD <span style="color: #cc66cc;">21</span> <span style="color: #cc66cc;">00</span></code><hr />
</div>A savoir j'utilise la fonction C fwrite() pour générer du code dans mon fichier en mode binaire.<br />
<br />
Voici le code source du programme en C capable de générer le fichier COM éxecutable.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdio.h&gt;</span>
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">int</span> a=<span style="color: #cc66cc;">0</span>;
        <span style="color: #0000ff;">FILE</span> *fp;
        <span style="color: #0000ff;">char</span> str<span style="color: black;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: black;">&#93;</span>;
        fp=fopen<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;file.com&quot;</span>,<span style="color: #FF0000;">&quot;wb&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>fp==<span style="color: #0080ff;">NULL</span><span style="color: black;">&#41;</span>
                <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">-1</span>;
        a=<span style="color: #cc66cc;">184</span>; <span style="color: #808080;">/*org 100*/</span>
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        a=<span style="color: #cc66cc;">52556</span>;
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        a=<span style="color: #cc66cc;">33</span>;
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        fclose<span style="color: black;">&#40;</span>fp<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Dans l'exemple ici j'ai du faire quelques calcule pour tomber sur les chiffres en mode décimal pour correspondre aux chiffres hexadécimaux.<br />
Ce concernant je n'ai pas vraiment tout compris car j'ai du inverser les lettre  4C CD en C4 DC pour effectuer mon calcul final<br />
<br />
C*16^0  +   4*16^1  +    D*16^2  +   C*16^3  = 4CCD (C'est ce que je n'ai pas compris car c'est inversé par paire)<br />
12+64+3328+49152=52556<br />
<br />
21h = 33<br />
<br />
Si vous pouvez m'explique la raison pour laquelle j'ai du inverser les lettres pour le calcul de 4CCD?<br />
<br />
Aussi pourquoi fwrite() place 00 à la fin de mon fichier COM? Est-ce impossible d'omettre ce '00'? <br />
<br />
Cependant le fichier COM final s'execute correctement.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>Kitsune64</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179038/c-cpp/c/debuter/c-creation-fichier-16-bits-com-sous-dos-question-hexadecimal/</guid>
		</item>
		<item>
			<title>Flex Bison C, erreur de noob</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178325&amp;goto=newpost</link>
			<pubDate>Wed, 30 Jul 2025 05:28:31 GMT</pubDate>
			<description>Bonjour à tous et à toutes, 
...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous et à toutes,<br />
<br />
J'essaye de me mettre au C avec Flex et Bison. (ce qui n'est pas une mince affaire pour moi...)<br />
Je rencontre un problème, que je pense être une erreur de noob.<br />
Mais je n'arrive pas à la corriger.<br />
<br />
Auriez-vous l'aimabilité de bien vouloir m'aider, svp ? Je souffre depuis presque deux jours.<br />
Merci de votre aide.<br />
<br />
L'erreur:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			utils.c: In function 'ExecuteLine':<br />
utils.c:34:16: error: implicit declaration of function 'parse_string' [-Wimplicit-function-declaration]<br />
   34 |         return parse_string(line);
			
		<hr />
	</div>
</div>Le fichier C concerné:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;utils.h&quot;</span>
&nbsp;
<span style="color: #808080;">// get the red tint from a palette color</span>
Uint8 GetPaletteRed<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> palette_color<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">return</span> CPC_palette<span style="color: black;">&#91;</span>palette_color<span style="color: black;">&#93;</span>.r;
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// get the green tint from a palette color</span>
Uint8 GetPaletteGreen<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> palette_color<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">return</span> CPC_palette<span style="color: black;">&#91;</span>palette_color<span style="color: black;">&#93;</span>.g;
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// get the blue tint from a palette color</span>
Uint8 GetPaletteBlue<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> palette_color<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">return</span> CPC_palette<span style="color: black;">&#91;</span>palette_color<span style="color: black;">&#93;</span>.b;
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #808080;">// read a line of code in the full source code</span>
<span style="color: #0000ff;">void</span> ReadSourceCodeLine<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> line<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt;= CPC_SCREEN_MATRIX_WIDTH + <span style="color: #cc66cc;">1</span>; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
		CPC_current_line<span style="color: black;">&#91;</span>line<span style="color: black;">&#93;</span> = <span style="color: #cc66cc;">0</span>;
	<span style="color: black;">&#125;</span>
&nbsp;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>line &gt;= <span style="color: #cc66cc;">1</span> &amp;&amp; line &lt; CPC_MAX_LINES_OF_CODE<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
		<span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> i = <span style="color: #cc66cc;">0</span>; i &lt; CPC_SCREEN_MATRIX_WIDTH; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
			CPC_current_line<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = CPC_source_code<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>line<span style="color: black;">&#93;</span>.letter;
		<span style="color: black;">&#125;</span>
	<span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// execute a line of code</span>
<span style="color: #0000ff;">int</span> ExecuteLine<span style="color: black;">&#40;</span><span style="color: #0000ff;">char</span> *line<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">return</span> parse_string<span style="color: black;">&#40;</span>line<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Le fichier Flex:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">/* lexer for CPC++ */</span>
&nbsp;
%<span style="color: black;">&#123;</span>
<span style="color: #339933;">#ifndef _LEXER_L_</span>
<span style="color: #339933;">#define _LEXER_L_</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;parser.tab.h&quot;</span>
&nbsp;
<span style="color: #339933;">#endif</span>
%<span style="color: black;">&#125;</span>
&nbsp;
%option yylineno
%option noinput
%option nounput
%option noyywrap
%option caseless
&nbsp;
%%
&nbsp;
<span style="color: #FF0000;">&quot;ABS&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> FN_ABS; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;INT&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> FN_INT; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;SGN&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> FN_SGN; <span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #FF0000;">&quot;CLG&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_CLG; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;CLS&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_CLS; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;DRAWR&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_DRAWR; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;DRAW&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_DRAW; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;FILL&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_FILL; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;GPAPER&quot;</span>					<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_GPAPER; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;GPEN&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_GPEN; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;INK&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_INK; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;LOCATE&quot;</span>					<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_LOCATE; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;MODE&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_MODE; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;MOVER&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_MOVER; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;MOVE&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_MOVE; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;ORIGIN&quot;</span>					<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_ORIGIN; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;PAPER&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_PAPER; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;PEN&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_PEN; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;PLOTR&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_PLOTR; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;PLOT&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_PLOT; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;PRINT&quot;</span>						<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> KW_PRINT; <span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #FF0000;">&quot;(&quot;</span>							<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> OP; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;)&quot;</span>							<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> CP; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;,&quot;</span>							<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> COMMA; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;:&quot;</span>							<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> COLON; <span style="color: black;">&#125;</span>
<span style="color: #FF0000;">&quot;;&quot;</span>							<span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> SEMICOLON; <span style="color: black;">&#125;</span>
<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span>-<span style="color: #cc66cc;">9</span><span style="color: black;">&#93;</span>+\.<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span>-<span style="color: #cc66cc;">9</span><span style="color: black;">&#93;</span>+ 				<span style="color: black;">&#123;</span> yylval.dval = atof<span style="color: black;">&#40;</span>yytext<span style="color: black;">&#41;</span>; <span style="color: #0000ff;">return</span> NUMFLOAT; <span style="color: black;">&#125;</span>
<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span>-<span style="color: #cc66cc;">9</span><span style="color: black;">&#93;</span>+						<span style="color: black;">&#123;</span> yylval.ival = atoi<span style="color: black;">&#40;</span>yytext<span style="color: black;">&#41;</span>; <span style="color: #0000ff;">return</span> NUMINT; <span style="color: black;">&#125;</span>
\<span style="color: #FF0000;">&quot;[^&quot;</span><span style="color: black;">&#93;</span>*\<span style="color: #FF0000;">&quot;					{ yylval.sval = yytext; return ALPHANUM; }</span>
<span style="color: #FF0000;">&quot;</span>+<span style="color: #FF0000;">&quot;							{ return PLUS; }</span>
<span style="color: #FF0000;">&quot;</span>-<span style="color: #FF0000;">&quot;							{ return MINUS; }</span>
<span style="color: #FF0000;">&quot;</span>*<span style="color: #FF0000;">&quot;							{ return MUL; }</span>
<span style="color: #FF0000;">&quot;</span>/<span style="color: #FF0000;">&quot;							{ return DIV; }</span>
<span style="color: #FF0000;">&quot;</span><span style="color: #800000;">\\</span><span style="color: #FF0000;">&quot;						{ return EDIV; }</span>
<span style="color: #FF0000;">&quot;</span>MOD<span style="color: #FF0000;">&quot;						{ return MOD; }</span>
<span style="color: #FF0000;">[ <span style="color: #800000;">\t</span>]						{ /* ignore spaces */ }</span>
<span style="color: #FF0000;"><span style="color: #800000;">\n</span>							{ return EOL; }</span>
<span style="color: #FF0000;">.							{ return GARBAGE; }</span>
&nbsp;
<span style="color: #FF0000;">%%</span>
&nbsp;
<span style="color: #FF0000;">void set_input_string(const char* s) {</span>
<span style="color: #FF0000;">  yy_scan_string(s);</span>
<span style="color: #FF0000;">}</span>
&nbsp;
<span style="color: #FF0000;">void end_lexical_scan(void) {</span>
<span style="color: #FF0000;">  yy_delete_buffer(YY_CURRENT_BUFFER);</span>
<span style="color: #FF0000;">}</span></pre></td></tr></table></code><hr />
</div>Le fichier Bison:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">/* parser for CPC++ */</span>
%<span style="color: black;">&#123;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;math.h&gt;</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;functions.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">char</span> st<span style="color: black;">&#91;</span><span style="color: #cc66cc;">1024</span><span style="color: black;">&#93;</span>;
&nbsp;
<span style="color: #0000ff;">int</span> yylex<span style="color: black;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: black;">&#41;</span>;
<span style="color: #0000ff;">int</span> yyerror<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* s<span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">extern</span> <span style="color: #0000ff;">int</span> yylineno;
&nbsp;
<span style="color: #0000ff;">void</span> set_input_string<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* s<span style="color: black;">&#41;</span>;
<span style="color: #0000ff;">void</span> end_lexical_scan<span style="color: black;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: black;">&#41;</span>;
&nbsp;
%<span style="color: black;">&#125;</span>
&nbsp;
%<span style="color: #0000ff;">union</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">int</span> ival;
	<span style="color: #0000ff;">double</span> dval;
	<span style="color: #0000ff;">char</span> *sval;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #808080;">// function tokens</span>
%token FN_ABS
%token FN_INT
%token FN_SGN
&nbsp;
<span style="color: #808080;">// keywords tokens</span>
%token KW_CLG
%token KW_CLS
%token KW_DRAWR
%token KW_DRAW
%token KW_FILL
%token KW_GPAPER <span style="color: #808080;">// also used as function</span>
%token KW_GPEN <span style="color: #808080;">// also used as function</span>
%token KW_INK
%token KW_LOCATE
%token KW_MODE <span style="color: #808080;">// also used as function</span>
%token KW_MOVER
%token KW_MOVE
%token KW_ORIGIN
%token KW_PAPER <span style="color: #808080;">// also used as function</span>
%token KW_PEN <span style="color: #808080;">// also used as function</span>
%token KW_PLOTR
%token KW_PLOT
%token KW_PRINT
&nbsp;
<span style="color: #808080;">// additionnals tokens</span>
%token OP
%token CP
%token COMMA
%token COLON
%token SEMICOLON
%token &lt;dval&gt; NUMFLOAT
%token &lt;ival&gt; NUMINT
%token &lt;sval&gt; ALPHANUM
%token PLUS
%token MINUS
%token MUL
%token DIV
%token EDIV
%token MOD
%token EOL
%token GARBAGE
&nbsp;
%type &lt;dval&gt; func param exp factor term
%type &lt;ival&gt; iparam
%type &lt;sval&gt; sparamlist sparam numstringparam strings2 strings1 string
&nbsp;
%%
&nbsp;
execute: <span style="color: #808080;">/* nothing here */</span>
 | execute line EOL
 | execute EOL
;
&nbsp;
line: colons
 | command
 | command colons
 | line command
 | line command colons
;
&nbsp;
colons: COLON
 | colons COLON
;
&nbsp;
command: KW_CLG <span style="color: black;">&#123;</span> CPC_CLG<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_CLS <span style="color: black;">&#123;</span> CPC_CLS<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_DRAWR iparam COMMA iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_DRAWR3<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span>, $<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_DRAWR iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_DRAWR2<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_DRAW iparam COMMA iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_DRAW3<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span>, $<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_DRAW iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_DRAW2<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_FILL iparam COMMA iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_FILL3<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span>, $<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_FILL iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_FILL2<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_GPAPER iparam <span style="color: black;">&#123;</span> CPC_GRAPHIC_PAPER<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_GPEN iparam <span style="color: black;">&#123;</span> CPC_GRAPHIC_PEN<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_MOVER iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_MOVER<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_MOVE iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_MOVE<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_ORIGIN iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_ORIGIN<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_INK iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_INK<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_LOCATE iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_LOCATE<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_MODE iparam <span style="color: black;">&#123;</span> CPC_MODE<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PAPER iparam <span style="color: black;">&#123;</span> CPC_PAPER<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PEN iparam <span style="color: black;">&#123;</span> CPC_PEN<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PLOTR iparam COMMA iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_PLOTR3<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span>, $<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PLOTR iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_PLOTR2<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PLOT iparam COMMA iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_PLOT3<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span>, $<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PLOT iparam COMMA iparam <span style="color: black;">&#123;</span> CPC_PLOT2<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">2</span>, $<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PRINT sparamlist <span style="color: black;">&#123;</span> CPC_PRINT<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">char</span>*<span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
sparamlist: sparam <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span>; <span style="color: black;">&#125;</span>
 | sparamlist COMMA sparam <span style="color: black;">&#123;</span> $$ = strcat<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span>, $<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
sparam: strings1
 | strings2
 | numstringparam
;
&nbsp;
numstringparam: param <span style="color: black;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>round<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> != $<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> sprintf<span style="color: black;">&#40;</span>st, <span style="color: #FF0000;">&quot;%f&quot;</span>, $<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span> sprintf<span style="color: black;">&#40;</span>st, <span style="color: #FF0000;">&quot;%d&quot;</span>, <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">char</span>*<span style="color: black;">&#41;</span>st; <span style="color: black;">&#125;</span>
;
&nbsp;
func: FN_ABS OP param CP <span style="color: black;">&#123;</span> $$ = fabs<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_MODE OP CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_GET_MODE<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_GPAPER OP CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_GET_GRAPHIC_PAPER<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_GPEN OP CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_GET_GRAPHIC_PEN<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | FN_INT OP param CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_INT<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PAPER OP CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_GET_PAPER<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | KW_PEN OP CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_GET_PEN<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | FN_SGN OP param CP <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>CPC_SGN<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
iparam: param <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>round<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
param: exp
 | PLUS exp <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">2</span>; <span style="color: black;">&#125;</span>
 | MINUS exp <span style="color: black;">&#123;</span> $$ = -$<span style="color: #cc66cc;">2</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
exp: factor
 | exp PLUS factor <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span> + $<span style="color: #cc66cc;">3</span>; <span style="color: black;">&#125;</span>
 | exp MINUS factor <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span> - $<span style="color: #cc66cc;">3</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
factor: term
 | factor MUL term <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span> * $<span style="color: #cc66cc;">3</span>; <span style="color: black;">&#125;</span>
 | factor DIV term <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span> / $<span style="color: #cc66cc;">3</span>; <span style="color: black;">&#125;</span>
 | factor EDIV term <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">1</span> / <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
 | factor MOD term <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> % <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: black;">&#125;</span>
;
&nbsp;
term: NUMINT <span style="color: black;">&#123;</span> $$ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: black;">&#41;</span>$<span style="color: #cc66cc;">1</span>; <span style="color: black;">&#125;</span>
 | NUMFLOAT
 | func;
;
&nbsp;
strings2: string SEMICOLON <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span>;<span style="color: black;">&#125;</span>
 | strings2 string <span style="color: black;">&#123;</span> $$ = strcat<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span>, $<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;<span style="color: black;">&#125;</span>
 | strings2 string SEMICOLON <span style="color: black;">&#123;</span> $$ = strcat<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span>, $<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span>;<span style="color: black;">&#125;</span>
;
&nbsp;
strings1: string <span style="color: black;">&#123;</span> $$ = $<span style="color: #cc66cc;">1</span>;<span style="color: black;">&#125;</span>
 | strings1 PLUS string <span style="color: black;">&#123;</span> $$ = strcat<span style="color: black;">&#40;</span>$<span style="color: #cc66cc;">1</span>, $<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>;<span style="color: black;">&#125;</span>
;
&nbsp;
string: ALPHANUM <span style="color: black;">&#123;</span> <span style="color: #0000ff;">char</span>* p = $$; p++; p<span style="color: black;">&#91;</span>strlen<span style="color: black;">&#40;</span>p<span style="color: black;">&#41;</span> - <span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span> = <span style="color: #cc66cc;">0</span>; $$ = p; <span style="color: black;">&#125;</span>
;
&nbsp;
%%
&nbsp;
<span style="color: #0000ff;">int</span> yyerror<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *s<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #808080;">// show syntax error at line</span>
	<span style="color: #808080;">//ed-&gt;SetError(ERR_SYNTAX_ERROR, &quot;Syntax error&quot;, yylineno);</span>
	<span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">1</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #808080;">// parses a string</span>
<span style="color: #0000ff;">int</span> parse_string<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span>* s<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	set_input_string<span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">int</span> ret = yyparse<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
	end_lexical_scan<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">return</span> ret;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>DjPoke</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178325/c-cpp/c/debuter/flex-bison-c-erreur-noob/</guid>
		</item>
		<item>
			<title>pb type passage argument fonction pointeur</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178282&amp;goto=newpost</link>
			<pubDate>Sun, 27 Jul 2025 17:14:33 GMT</pubDate>
			<description>Bonjour, 
je me remets...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
je me remets doucement au c (avec le compilateur SDCC) sur du vieux matériel (des années 80) et ça pique un peu... Bref, j'ai une fonction à laquelle je passe un tableau de int et que j'utilise dans la fonction pour écrire dedans. Aucun problème . En gros mon code :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">void</span> fonction1<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
<span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> x<span style="color: black;">&#91;</span><span style="color: #cc66cc;">200</span><span style="color: black;">&#93;</span>;
&nbsp;
fonction <span style="color: #cc66cc;">2</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>;
&nbsp;
...
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> fonction2<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> px<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
...
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> toto=<span style="color: #cc66cc;">0</span>;
...
px<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> = <span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span><span style="color: black;">&#41;</span> toto;
...
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Aucun problème. Sauf que mon tableau x contient des <b>unsigned char</b>, donc j'essaie de gagner de la place (car je bosse sur une machine très limitée).<br />
donc si je mets :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">void</span> fonction1<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
<span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> x<span style="color: black;">&#91;</span><span style="color: #cc66cc;">200</span><span style="color: black;">&#93;</span>;
&nbsp;
fonction <span style="color: #cc66cc;">2</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>;
&nbsp;
...
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> fonction2<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> px<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
...
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> toto=<span style="color: #cc66cc;">0</span>;
...
px<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> = <span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span><span style="color: black;">&#41;</span> toto;
...
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Là ça ne marche plus... pas d'erreur de compil, mais visiblement l'écriture dans le tableau perd les pédales et écrit n'importe où (au point de faire rebooter la machine).<br />
<br />
Bref je ne comprends pas où je me plante...<br />
<br />
ps : si je mets dans la declaration de f2 &quot;unsigned char *px&quot; à la place de &quot;unsigned char px[]&quot;, c'est pareil...<br />
<br />
MERCI</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>henri_b</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178282/c-cpp/c/debuter/pb-type-passage-argument-fonction-pointeur/</guid>
		</item>
		<item>
			<title><![CDATA[avertissement passage d'argument]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176483&amp;goto=newpost</link>
			<pubDate>Mon, 28 Apr 2025 10:55:05 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je code...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je code actuellement sur STM32 en C . Afin de gérer un écran j'utilise des fonctions et depuis le début je m'obstine à n'avoir aucun avertissement par le compilateur.<br />
<br />
Sauf que là, je n'arrive pas résoudre ce cas de figure précis, certainement par manque de connaissance de ma part.<br />
<br />
Je souhaite dessiner un triangle. Pour ce faire, j'utilise une fonction qui accepte ceci en argument :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">void</span> ili9341_Draw_Filled_Shape<span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> corners, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int16_t</span> *xArray, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int16_t</span> *yArray, <span style="color: #0000ff;">int16_t</span> x, <span style="color: #0000ff;">int16_t</span> y, colour_t colour<span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
--code
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Dans mon main j'appelle donc cette fonction avec ce code:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">	<span style="color: #0000ff;">uint16_t</span> xArray_UP<span style="color: black;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#93;</span>=<span style="color: black;">&#123;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">10</span><span style="color: black;">&#125;</span>;
	<span style="color: #0000ff;">uint16_t</span> yArray_UP<span style="color: black;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#93;</span>=<span style="color: black;">&#123;</span><span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">0</span><span style="color: black;">&#125;</span>;
ili9341_Draw_Filled_Shape<span style="color: black;">&#40;</span><span style="color: #cc66cc;">3</span>, xArray_UP, yArray_UP, <span style="color: #cc66cc;">187</span>, <span style="color: #cc66cc;">40</span>, ORANGE<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div>Le compilateur me souligne la fonction pour me signaler un problème, même si ce code compile bien, et fonctionne parfaitement. <br />
Je souhaiterais comprendre et résoudre cette erreur.<br />
<br />
Voici l'erreur indiquée: <div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			pointer targets in passing argument 2 of 'ili9341_Draw_Filled_Shape' differ in signedness [-Wpointer-sign]
			
		<hr />
	</div>
</div>J'ai essayé de caster mais sans succès. <br />
<br />
Merci de m'avoir lu.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>dje8269</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176483/c-cpp/c/debuter/avertissement-passage-d-argument/</guid>
		</item>
	</channel>
</rss>
