10
votes

Outil pour la syntaxe C sensible aux espaces sans haqueels

J'écris du C pour le moment et parce que j'aime que j'aime la syntaxe sensible aux espaces blanche, je voudrais l'écrire comme ceci: xxx

au lieu de ceci: < pré> xxx

est-ce que quelqu'un connaît-il d'un outil qui convertira l'ancien en ce dernier?

EDIT: Je n'ai vraiment aucun intérêt à discuter avec ceux qui pensent que c'est un mauvais idée. Par tous, continuez de penser que vous avez vos raisons. Mais au moins le savoir: je suis au courant de Python est une langue sensible aux espaces blanche mais je ne l'ai pas utilisée. Pourquoi aurais-je? Je sais déjà Ruby. Savoir aussi: Je ne suis pas seulement apprendre C pour la première fois et j'ai utilisé PHP et JavaScript depuis plus de quatre ans, je ne le demande donc pas de certaines difficultés personnelles, manque de familiarité avec la syntaxe de bloc ou une affiliation dogmatique. Je suis également conscient de ce qui serait impliqué dans l'écrit l'un d'entre eux et ce n'est pas au-delà de mes capacités, mais je ne veux pas que cela suffit de justifier de dépenser le temps à écrire un.


13 commentaires

Il suffit d'écrire un outil en python :)


Alors ce ne serait plus c plus. Tout comme si je voulais parler anglais, mais mettre tous les verbes d'abord parce que je veux. Pas plus anglais.


WOW-WOW-WOW, vient de voir quelque chose de similaire d'un jour ou deux il y a deux fois s'il était spécifique au C # ou en C, mais l'outil existe.


forme libre est le meilleur, embrasse-le :)


Python est assez facile à apprendre et je pense que vous serez beaucoup plus heureux avec cela, si vous aimez mieux cette syntaxe.


signifie c'est ce que tu n'es-tu plus anglais? Parlez que j'aime ça tout le temps!


C'est une idée terrible.


Ollie: Il n'y a aucune raison de faire cela et de nombreuses raisons de ne pas le faire. Si vous êtes parti de l'utilisation de la syntaxe sans haqueel, apprenez Go ou Python ou Haskell.


Nous n'avons aucune idée de la raison pour laquelle l'OP veut faire cela. Iv, l'OP est à l'aise avec la syntaxe de style C étant donné toutes ses questions et réponses PHP + JS. C'est une question intéressante, je veux un peu de voir ce que la réponse finit par être. Je ne peux penser à aucune circonstance où les informations syntaxiques seraient perdues (ou indisponible à un analyseur) si c était sur la base des espaces.


Dites-vous quoi, je vais vous échanger le blancheur en python pour les accolades dans C. :-)


Je me demande comment vous positionnez l'erreur de compilation, car les numéros de ligne ne correspondent pas au fichier source sans brouillage ...


@Catalin: Vous venez de mettre les accolades sur la même ligne.


Il y a Cython ou Rpython qui est C avec la syntaxe de Python. Aussi, vous pouvez utiliser ces cs dans les choses Lisp avec Parinfer ( shaunlebron.github.io/parinfer ) ( Ce qui vous permet d'éditer le code LISP comme le code Python, il met automatiquement le) comme si elle utilise la règle hors côté de Python, puis vous pouvez atténuer la parenthèse). Avec un petit peaufinage, vous pouvez également ajouter le: pour les expressions multilignes.


8 Réponses :


1
votes

oui, il y en a un que j'aime vraiment. Ils l'appellent Python .


4 commentaires

Appartient à smartassoverflow.com


@Robert Cul Dépendre? ewwwwww.


Je suis déchiré en deux. Je veux vous voter pour Trolling Python et je veux vous voter pour claquer C, donc aucun vote c'est: D


Je ne suis en aucun cas claquant C. Juste le gars qui veut que C soit python.



0
votes

Je ne crois pas qu'un tel outil existe. Des outils existent pour nettoyer le formatage, mais le code doit déjà être formaté.

Je pense vraiment que vous devriez utiliser la langue comme conçue et apprendre à utiliser des accolades.


0 commentaires

2
votes

aucun outil, mais pseudocode: xxx


1 commentaires

Merci d'avoir essayé d'aider. Je vous en suis reconnaissant.



28
votes

Même s'il y avait un tel outil, je vous encourage vivement à reconsidérer cette idée. Voici quelques problèmes, je pense que vous trouverez avec cela:

  1. Votre code ne sera plus standard c.
  2. Cela signifie que vous aurez un problème avec d'autres programmeurs de lecture de votre code.
  3. Vous ne pourrez également utiliser aucun outil d'analyse de code, car ils ne comprendront pas votre syntaxe.
  4. Si vous avez une sorte d'outil qui convertira, dites, chaque compilé, cela signifie toujours que vous écrirez un code différent de votre lecture. Je détesterais utiliser un outil qui change mon code pour moi tout le temps.

    Cela semble vraiment être un cas où l'adaptation de vos habitudes à tout le monde est l'approche plus intelligente.

    J'espère que cela vous amène à reconsidérer.


7 commentaires

L'outil existant ne supprime pas les bretelles qu'il crée plutôt des blocs d'indentation spéciaux. Je viens de ressentir du mal à le trouver :(


J'avais évoqué cela deux fois si je pouvais. Je blesse à traiter avec un collègue une fois qui avait un fichier d'en-tête où il a défini des versions latines de tous les mots-clés, il pouvait donc écrire son code C à l'aide de mots-clés latins. Il a également remplacé les accolades avec des mots latins correspondants. Je rêve encore des cauchemars à propos de ce code.


@Jesper Droite, mais pour cette question, il n'y a aucune preuve qu'il y ait des collègues. Ou que ce sera n'importe quoi.


-1. (1) et (2): op ne mentionne rien d'autres programmeurs. Semble être un projet personnel. (3) OP ne mentionne pas de vouloir faire une analyse. (4) UM, les compilateurs changent de code tout le temps . Ils sont censés. GCC convertit le code en intermédiaire, puis optimise et crée enfin binaire, qui "regarde" rien comme votre code. Il n'y a aucune preuve que BRACE-SYNTAX est une syntaxe "plus intelligente" que la syntaxe de WhitSpace. Être en désaccord!


@rascher: Juste pour clarifier ce que je voulais dire: 3) par analyse de code, j'inclus tout ce qu'un IDE peut généralement faire du code comme l'achèvement automatique (évidemment, cela ne concerne pas seulement les ides. Tout programme de marquage va probablement avoir le même problème de comprendre le code). Quant au point 4), j'ai peut-être pu être incertain. Je parlais d'un cas où la conversion est effectuée sur le fichier source lui-même (ne produisant pas de nouveau fichier), chaque fois que vous compilez.


Autant que je ne suis pas d'accord avec l'idée dans la question, je suis également en désaccord avec cette réponse. Tout processus de construction décent peut automatiser la "génération de code" et la sortie de la "génération de code" est standard C. donc à tout moment, un outil (ou d'autres codeurs) doit examiner la norme C, vous les signalez simplement à la sortie de l'outil. . En outre, il s'agit d'un cas rare d'un générateur de code qui devrait (en principe) être capable de générer une source parfaitement bonne source d'un code d'objet modifié - c'est-à-dire à une jolie imprimée tout en éliminant les bretelles. En ce qui concerne "votre code ne sera plus standard c" - non plus mon C ++, alors quoi?


Pourquoi suis-je en désaccord avec l'idée dans la question alors? Pendant que je suis parfaitement correct avec l'idée de code source standard C comme code d'objet (c'est ce que Lex, Yacc et le reste font après tout), il s'agit d'un cas d'une langue spécifique de domaine dans laquelle le domaine est "Heure inutile".



3
votes

indentation de style Python pour C .

On dirait que c'est ce que vous recherchez.


2 commentaires

Bien que, ne peut toujours pas trouver l'outil que j'ai vu il y a quelque temps :(


On dirait que cela n'a pas encore été mis en œuvre - mais c'est le même exercice.



1
votes

http://www.cyclon.org/

Mais c'est une langue différente ... c'est fondamentalement un dialecte python avec les propriétés de performance C.

Ne roule pas de votre propre langue, utilisez quelque chose de standard.


0 commentaires

11
votes

Si vous vraiment em> veux faire cela, cela ne sera pas possible sans mettre en œuvre un analyseur de langue, et même alors, je ne sais pas comment la Convention de codage sera pour certains des cas Dans votre "nouvelle langue qui ressemble à c mais n'a pas d'accolades". Par exemple, prenez le code C suivant: xxx pré>

Vous pouvez l'écrire comme p> xxx pré>

mais il doit être converti au code d'origine , non: p> xxx pré>

aussi, étant donné les extraits ci-dessous: P> xxx pré>

Comment allez-vous les spécifier dans votre langue ? P>

Vous semblez ne pas vouloir utiliser des points-virgules dans votre langue non plus. Cela limite un peu votre code un peu et rend l'outil de conversion compliqué également, car vous ne pouvez pas avoir de lignes de continuation sans effort supplémentaire: p> xxx pré>

est légal c, mais

i = j + ;
k;


6 commentaires

J'apprécierais une raison de la descente.


Vous le savez peut-être déjà mais vous n'avez pas besoin d'un analyseur complet. Vous avez besoin d'une lexère partielle et d'une logique d'insertion. Vous avez peut-être pu vouloir dire tout ce que lorsque vous avez dit "analyseur" mais aboutit la réponse à mon avantage.


Lire certains de vos points ultérieurs: une mise en œuvre de cela dans un langage de script pourrait renoncer à une grammaire formelle. Je suis conscient que la fabrication de cales-respecteurs significatives signifie que les choses ne peuvent pas être espacées sur plusieurs lignes (c'est vrai par la définition) et je suis également conscient que tous les blocs ne constituent pas tous les demi-couples requis. Ce sont des détails sur la question mais pas les raisons pour lesquelles une mise en œuvre n'est pas réalisable. Cependant, ils identifient pourquoi écrire quelque chose comme cela prendrait un peu de temps.


Ok, je vois tes points. Je n'ai pas "stupide" ma réponse pour vous, c'était une terminologie lâche de ma part. Si vous souhaitez implémenter un sous-ensemble de la langue et restreindre votre formatage, la rédaction d'un tel outil est plus facile. Je pense toujours que ce n'est pas une si bonne idée, cependant.


Analyse intéressante: voir aussi la langue Go - qui a subi quelques modifications. Il éloigne les parenthèses autour des conditions, mais nécessite des accolades autour des blocs de code.


@Jonathan: Merci. Je suis signé de vérifier. Je ne suis pas sûr de savoir si j'aime les "parenthèses parfois nécessaires" d'aller, mais que tout se demande de toute façon.



10
votes

Pythoidc est un langage C sans brise http://pythoidc.googlecode.com xxx

Pythoidc génère automatiquement le code C suivant: xxx


4 commentaires

Vraisemblablement, il génère également #include et #include ; Vous les avez probablement laissés parce qu'ils ressemblaient à d'énormes en-têtes (et le ' # ' était manquant). Apprenez à indenter le code de 4 espaces et la majorité des problèmes disparaissent. Notez également que lorsque vous éditerez, il y a un bouton avec une séquence binaire 101010. ce code indice pour vous.


Que signifie un bouton avec une séquence binaire? Voulez-vous dire un bouton à bascule?


C'est exactement ce que l'on chercherait, mais l'outil semble assez terrible. Le code source est également assez primitif et désordonné. :(


+1 Avez-vous créé le projet et écriviez-vous les codes pour répondre à cette question? : P pas d'infraction ..